uncrustify-trinity: updated based on upstream version 0.74.0

Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
pull/5/head
Michele Calgaro 3 years ago
parent f312c235ea
commit e6ba08c3b2
Signed by: MicheleC
GPG Key ID: 2A75B7CA8ADED5CF

@ -1,14 +0,0 @@
Backported commit cb1a42dd from upstream git repository. This fixes FTBFS when building with RelWithDebInfo.
--- a/tests/cli/test_cli_options.py
+++ b/tests/cli/test_cli_options.py
@@ -705,8 +705,8 @@
#
# Test --tracking_space FILE
#
- if parsed_args.config == 'Release':
- eprint("Release")
+ if parsed_args.config == 'Release' or parsed_args.config == 'RelWithDebInfo':
+ eprint(parsed_args.config)
if not check_uncrustify_output(
uncr_bin,
parsed_args,

@ -1,22 +0,0 @@
Fix Python detection on CMake < 3.12.
===================================================================
--- uncrustify-trinity-0.73.0.orig/CMakeLists.txt
+++ uncrustify-trinity-0.73.0/CMakeLists.txt
@@ -17,8 +17,15 @@ include(CheckCXXSymbolExists)
include(CheckTypeSize)
include(CTest)
-find_package(Python3 REQUIRED)
-set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
+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

@ -1,63 +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_list.h"
#include "uncrustify.h"
using namespace uncrustify;
#if defined DEBUG
#define log_rule(rule) \
do { \
log_rule2(__func__, __LINE__, (rule), first, second); \
log_rule4((rule), first); \
\
} while (0)
#else
#define log_rule(rule) \
do { \
log_rule2(__func__, __LINE__, (rule), first, second); \
} while (0)
#endif
#define log_rule_short(rule) \
do { \
log_rule2(__func__, __LINE__, (rule), first, second); \
} while (0)
// if you need more debug informations, remove the comment at the next line
#define SUPER_LOG 1
#ifdef SUPER_LOG
#define log_rule_B(rule) \
do { \
log_rule3(LCURRENT, __func__, __LINE__, (rule)); \
} while (0)
#else
#define log_rule_B(rule) \
do { \
log_rule3(LCURRENT, __func__, (rule)); \
} while (0)
#endif
void log_rule2(const char *func, size_t line, const char *rule, chunk_t *first, chunk_t *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_t *first);
#endif /* LOG_RULES_H_INCLUDED */

@ -1,144 +0,0 @@
#
# Test cases specifically for the C# language.
#
# Range: 10000 - 19999
# test.name config.file input.file
10000 mono.cfg cs/simple.cs
10001 getset.cfg cs/getset.cs
10002 ben_032.cfg cs/simple.cs
10003 ben_033.cfg cs/region.cs
10010 ben_034.cfg cs/var-member.cs
10011 indent_columns-3.cfg cs/strings.cs
10013 625_where-constraints.cfg cs/625_where-constraints.cs
10020 region-0.cfg cs/region.cs
10021 region-1.cfg cs/region.cs
10022 region-2.cfg cs/region.cs
10023 region-3.cfg cs/region.cs
10030 sort_imports.cfg cs/sort_using.cs
10031 mod_sort_using-t.cfg cs/bug_i_935.cs
10032 sort_using_categ.cfg cs/sort_using_categ.cs
10040 tcf.cfg cs/tcf.cs
10041 tcf.cfg cs/gs.cs
10042 ben_036.cfg cs/exception-filters.cs
10050 cs_generics.cfg cs/generics.cs
10060 ben_037.cfg cs/unsafe.cs
10065 UNI-1975.cfg cs/UNI-1975.cs
10070 ben_038.cfg cs/utf16le.cs
10071 ben_038.cfg cs/utf16be.cs
10072 ben_038.cfg cs/utf16le_no_bom.cs
10073 ben_038.cfg cs/utf16be_no_bom.cs
10074 UNI-2020.cfg cs/UNI-2020.cs
10080 ben_042.cfg cs/property.cs
10090 ben_043.cfg cs/string_multi.cs
10100 empty.cfg cs/bug_600.cs
10101 sf607.cfg cs/sf607.cs
10110 mda_space_a.cfg cs/mdarray_space.cs
10111 sp_after_comma-a.cfg cs/mdarray_space.cs
10112 mda_space_c.cfg cs/mdarray_space.cs
10119 empty.cfg cs/preserveTabs.cs
10120 empty.cfg cs/cmt_backslash_eol.cs
10130 sp_between_new_paren.cfg cs/sp_between_new_paren.cs
10140 ben_044.cfg cs/remove_semi.cs
10150 ben_045.cfg cs/operator-null-conditional.cs
10151 sp_assign-a.cfg cs/operator_null-coalescing-assignment.cs
10200 empty.cfg cs/logger.cs
10300 empty.cfg cs/1822.cs
10628 empty.cfg cs/sf628.cs
10160 empty.cfg cs/delegate.cs
10161 indent_cs_delegate_brace-t.cfg cs/delegate.cs
12001 bug_620.cfg cs/bug_620.cs
12002 empty.cfg cs/nullable_prop.cs
12003 ben_043.cfg cs/fncall_as_ctor_in_attr.cs
12004 verbatim_strings.cfg cs/verbatim_strings.cs
12005 empty.cfg cs/bug_1591.cs
12101 indent_using_block-f.cfg cs/bug_i_679.cs
12102 mod_full_brace_nl_block_rem_mlcond-0.cfg cs/mod_full_brace_nl_block_rem_mlcond.cs
12103 mod_full_brace_nl_block_rem_mlcond-1.cfg cs/mod_full_brace_nl_block_rem_mlcond.cs
12104 bug_1637.cfg cs/bug_1637.cs
12105 bug_1650.cfg cs/bug_1650.cs
12106 bug_1650.cfg cs/UNI-40685.cs
12107 mod_full_paren_if_bool.cfg cs/mod_full_paren_if_bool.cs
12108 Issue_2705.cfg cs/Issue_2705.cs
# Adopt some UT tests
10012 empty.cfg cs/621_this-spacing.cs
10014 empty.cfg cs/630_bad-new-init-semicolon-removal.cs
10015 misc-failures.cfg cs/misc-failures.cs
10016 new-constraint-paren-space.cfg cs/new-constraint-paren-space.cs
10018 empty.cfg cs/delete-space-oc.mm
10019 empty.cfg cs/func-param-wrap-oc.mm
10027 U01-Cs.cfg cs/oneline_property.cs
10028 U02-Cs.cfg cs/ifcolalign.cs
10029 U03-Cs.cfg cs/when.cs
10033 U11-Cpp.cfg cs/objc.mm
10034 U12-Cpp.cfg cs/asm.h.mm
10035 U13-Cpp.cfg cs/definesalign.h.mm
10036 U14-Cpp.cfg cs/inttypes.h.mm
10039 615_nested_usings.cfg cs/615_nested-usings.cs
10044 U04-Cs.cfg cs/ifcomment.cs
10045 UNI-1288.cfg cs/UNI-1288.cs
10046 U15-Cpp.cfg cs/UNI-1333.mm
10051 UNI-1338.cfg cs/UNI-1338.cs
10055 U06-Cs.cfg cs/UNI-1345.cs
10066 UNI-1977.cfg cs/UNI-1977.cs
10067 UNI-1978.cfg cs/UNI-1978.cs
10075 UNI-2021.cfg cs/UNI-2021.cs
10076 UNI-1343.cfg cs/UNI-1343.cs
10077 U09-Cs.cfg cs/UNI-1919.cs
10078 U10-Cs.cfg cs/UNI-3484.cs
10102 U24-Cpp.cfg cs/pp-ignore.mm
10103 U11-Cs.cfg cs/UNI-2506.cs
10104 empty.cfg cs/UNI-2505.cs
11011 620_getset-brace.cfg cs/620_getset-brace.cs
11030 U08-Cpp.cfg cs/argtypes.mm
11031 U09-Cpp.cfg cs/casting.mm
11032 U10-Cpp.cfg cs/newlines.mm
11072 U07-Cs.cfg cs/UNI-2007.cs
11073 U08-Cs.cfg cs/UNI-2008.cs
20010 UNI-32658.cfg cs/UNI-32658.cs
20011 bug_1620.cfg cs/bug_1620.cs
60004 UNI-2684.cfg cs/UNI-2684.cs
60005 UNI-2685.cfg cs/UNI-2685.cs
60007 UNI-3083.cfg cs/UNI-3083.cs
60008 U-J.cfg cs/UNI-17253.cs
60009 UNI-9917.cfg cs/UNI-9917.cs
60011 UNI-11095.cfg cs/UNI-11095.mm
60012 U13-Cs.cfg cs/UNI-12303.cs
60013 UNI-13955.cfg cs/UNI-13955.cs
60015 UNI-14131.cfg cs/UNI-14131.cs
60016 UNI-11662.cfg cs/UNI-11662.cs
60018 UNI-18777.cfg cs/UNI-18777.cs
60019 empty.cfg cs/UNI-18780.cs
60020 UNI-18829.cfg cs/UNI-18829.cs
60023 UNI-18437.cfg cs/UNI-18437.cs
60024 U15-Cs.cfg cs/UNI-19644.cs
60026 UNI-19895.cfg cs/UNI-19895.cs
60033 UNI-21730.cfg cs/UNI-21730.cs
60036 UNI-11993.cfg cs/UNI-11993.cs
60037 UNI-29933.cfg cs/UNI-29933.cs
60040 UNI-30498_2.cfg cs/UNI-30498_2.cs
60041 squeeze-paren-close-Option.cfg cs/squeeze-paren-close-Option.cs
60042 indent-multistring-coulmn1.cfg cs/indent-multistring-coulmn1.cs
60044 UNI-37241.cfg cs/UNI-37241.cs
60045 nl_before_after.cfg cs/add-nl-before-namespace.cs

@ -1,397 +0,0 @@
#
# Test cases specifically for the C language.
#
# Range: 00000 - 09999
# test.name config.file input.file
# little general tests ====================================================
00000 indent_columns-3.cfg c/comment-indent.c
00001 cpp_to_c-1.cfg c/comment-indent.c
00002 cpp_to_c-2.cfg c/comment-indent.c
00003 cpp_to_c-3.cfg c/comment-indent.c
00004 indent-1.cfg c/switch.c
00005 ben_047.cfg c/cmt-align.c
00006 indent_columns-3.cfg c/comment-convert.c
00007 cpp_to_c-1.cfg c/comment-convert.c
00008 cpp_to_c-2.cfg c/comment-convert.c
00009 cpp_to_c-3.cfg c/comment-convert.c
# brace styles
00010 ben_048.cfg c/braces.c
00011 brace-allman.cfg c/braces.c
00012! brace-banner.cfg c/braces.c
00013 brace-gnu.cfg c/braces.c
00014 brace-kr.cfg c/braces.c
00015 brace-ws.cfg c/braces.c
00016 brace-ws2.cfg c/braces.c
00020 ben_049.cfg c/define-if-indent.c
00050 brace-remove-2.cfg c/brace-remove.c
00051 brace-remove-all.cfg c/brace-remove.c
00052 brace-remove-all.cfg c/brace-remove2.c
00053 nl_brace_test.cfg c/brace.c
00054 if_chain.cfg c/if_chain.c
00055 cgal.cfg c/braces-2.c
00056 brace-remove-all.cfg c/brace-remove3.c
00057 if_chain.cfg c/brace-remove3.c
00058 brace-kr-nobr.cfg c/if_chain.c
00060 ben_050.cfg c/braces-2.c
00061 ben_051.cfg c/braces-3.c
00062 ben_052.cfg c/braces-4.c
00065 ben_053.cfg c/braces-5.c
00066 ben_054.cfg c/vb-while.c
00067 ben_055.cfg c/vb-do.c
00068 ben_056.cfg c/bsnl.c
00069 ben_057.cfg c/vb-pp.c
00070 ben_058.cfg c/return-multi.c
00071 ben_042.cfg c/include_define.h
00072 star_pos-0.cfg c/align-proto.c
00073 empty.cfg c/nl_proto_endif.c
00074 clang-has_include.cfg c/clang-has_include.h
00076 1225.cfg c/1225.c
00081 else-if-1.cfg c/else-if.c
00082 else-if-2.cfg c/else-if.c
00091 cond-1.cfg c/cond.c
00092 indent_columns-3.cfg c/cond.c
00093 sp_cond_colon.cfg c/cond.c
00101 ben_061.cfg c/bugs-1.c
00102 space_indent_columns-3.cfg c/bugs-2.c
00103 ben_063.cfg c/bugs-3.c
00104 ben_064.cfg c/bugs-4.c
00105 ben_065.cfg c/bugs-5.c
00106 ben_011.cfg c/bugs-6.c
00107 ben_011.cfg c/bugs-7.c
00108 indent_columns-3.cfg c/bugs-8.c
00110 ben_069.cfg c/misc.c
00111 brace-kr-br.cfg c/misc.c
00120 sp_cmt_cpp_start-r.cfg c/sp_cmt_cpp_start.c
00121 sp_cmt_cpp_start-a.cfg c/sp_cmt_cpp_start.c
00122 sp_cmt_cpp_start_force.cfg c/sp_cmt_cpp_start.c
00123 cmt_reflow.cfg c/cmt_reflow.c
00130 ben_070.cfg c/minus-minus.c
00135 nepenthes.cfg c/br_cmt.c
00140 ben_071.cfg c/global-vars.c
00141 ben_072.cfg c/deref.c
00142 ben_073.cfg c/type-cast.c
00143 ben_074.cfg c/t3.in.c
00144 ben_075.cfg c/align-proto-vars.c
00145 ben_076.cfg c/vardefcol.c
# casts
00150 ben_077.cfg c/casts.c
00151 cast-sp-r.cfg c/casts.c
00152 cast-sp-a.cfg c/casts.c
00153 cast-type.cfg c/casts.c
00154 sp_after_cast.cfg c/casts.c
00155 ben_078.cfg c/cast_brace.c
# fcn indents
00160 indent_func_param.cfg c/fcn_indent.c
00161 indent_func_call_param.cfg c/fcn_indent.c
00162 indent_func_def_param.cfg c/fcn_indent.c
00163 indent_func_proto_param.cfg c/fcn_indent.c
00164 rdan.cfg c/fcn_indent_func_def_col1.c
00165 sp_func_call_user_inside_fparen.cfg c/sp_func_call_user_inside_fparen.c
00170 empty.cfg c/beautifier-off.c
00180 sf538.cfg c/lvalue.c
# switch & case stuff
00201 case-1.cfg c/case.c
00202 case-2.cfg c/case.c
00203 case-3.cfg c/case.c
00204 bug_1718.cfg c/bug_1718.c
00205 nl_before_return_false.cfg c/case-nl_before_return.c
00206 nl_before_return_true.cfg c/case-nl_before_return.c
# structure initializers
00301 ben_079.cfg c/align-struct-init.c
00302 ben_080.cfg c/one-liner-init.c
00303 1liner-split.cfg c/one-liner-init.c
00304 1liner-no-split.cfg c/one-liner-init.c
00305 ben_081.cfg c/one-liner-define.c
00310 empty.cfg c/sp_embed_comment.c
00320 rdan.cfg c/indent_first_bool_expr.c
# aligning tresholds
00401 align-1.cfg c/align-equ.c
00402 align-1.cfg c/align-var.c
00403 align-2.cfg c/align-var.c
00404 align-3.cfg c/align-var.c
00405 align-3.cfg c/bits.c
00406 bug_i_771.cfg c/bug_i_771.c
00411 align_typedef_gap-3_span-5.cfg c/align-typedef.c
00412 align_typedef_gap-3_span-5.cfg c/align-typedef.c
00413 align_typedef_func-1.cfg c/align-typedef.c
00414 align_typedef_func-2.cfg c/align-typedef.c
00415 align_stack.cfg c/align_stack.c
00416 align_sf_call_thresh_416.cfg c/align_sf_call_thresh_416.c
00417 align_sf_call_thresh_417.cfg c/align_sf_call_thresh_417.c
00418 align_sf_call_span_418.cfg c/align_sf_call_span_418.c
00419 align_sf_call_span_419.cfg c/align_sf_call_span_419.c
00420 Issue-2278.cfg c/Issue-2278.c
00421 nl_ds_struct_enum_cmt-t.cfg c/nl_ds_struct_enum.c
00422 nl_ds_struct_enum-2.cfg c/nl_ds_struct_enum.c
00423 bug_1702.cfg c/bug_1702.c
00430 empty.cfg c/paren-indent.c
00431 indent_paren_close-1.cfg c/paren-indent.c
00432 indent_paren_close-2.cfg c/paren-indent.c
00440 bug_489.cfg c/bug_489.c
00451 code_width-80.cfg c/enum_gallery.c
00452 nl_enum_own_lines-a.cfg c/enum_gallery.c
00453! nl_enum_own_lines-3.cfg c/enum_gallery.c
00454 nl_enum_own_lines-4.cfg c/enum_gallery.c
# boolean and comma positioning
00501 bool-pos-eol.cfg c/bool-pos.c
00502 bool-pos-sol.cfg c/bool-pos.c
00503 pos_compare-sol.cfg c/pos_compare.c
00504 pos_compare-eol.cfg c/pos_compare.c
00505 pos_conditional-l.cfg c/pos_conditional.c
00506 pos_conditional-t.cfg c/pos_conditional.c
00510 bool-pos-eol-break.cfg c/bool-pos.c
00511 bool-pos-sol-break.cfg c/bool-pos.c
00512 bool-pos-eol-force.cfg c/bool-pos.c
00513 bool-pos-sol-force.cfg c/bool-pos.c
00514 my_conf.cfg c/my_infile.c
00600 indent_columns-3.cfg c/dos.c
00601 indent_columns-3.cfg c/mac.c
00611 empty.cfg c/pp-space.c
00612 pp-indent-2.cfg c/pp-space.c
00613 pp_indent-a.cfg c/pp-space.c
00614 pp-space.cfg c/pp-space.c
00615 pp-indent-2.cfg c/pp-nest.c
00616 pp_if_indent-1.cfg c/pp-if-indent.c
00617 rdan.cfg c/pp-if-indent.c
00618 pp_if_indent-4.cfg c/pp-if-indent.c
00620 ben_083.cfg c/indent-assign.c
00621 nl_endif.cfg c/nl_endif.c
00622 indent_assign.cfg c/indent-off-after-assign.c
00631 nl_assign1.cfg c/nl_assign.c
00632 nl_assign2.cfg c/nl_assign.c
00633 nl_assign1.cfg c/bug_3156.c
# function def newlines
00701 func-def-1.cfg c/function-def.c
00702 func-def-2.cfg c/function-def.c
00703 func-def-3.cfg c/function-def.c
00710 add_long_closebrace_comment_1.cfg c/add_long_comment.c
# nl_after_semicolon and nl_after_open_brace
00721 nl_semicolon.cfg c/nl-semicolon.c
# function types
00801 ben_084.cfg c/fcn_type.c
00802 ben_085.cfg c/funcfunc.c
00803 sf537.cfg c/fcn_type.c
# code width
00901 width.cfg c/code_width.c
00902 width-2.cfg c/code_width.c
00903 width-3.cfg c/code_width.c
# pascal ptr_type
00910 pascal_ptr.cfg c/pascal_ptr.c
00911 empty_body.cfg c/pascal_ptr.c
01000 mod-paren.cfg c/mod-paren.c
01001 nl-comment.cfg c/nl-comment.c
01002 mod-paren2.cfg c/mod-paren.c
01005 mod_case_brace_add.cfg c/mod_case_brace.c
01006 mod_case_brace_rm.cfg c/mod_case_brace.c
01007 mod_move_case_brace.cfg c/mod_case_brace.c
01011 del_semicolon.cfg c/semicolons.c
01012 ben_086.cfg c/semicolons.c
01015 empty.cfg c/paren_indent.c
01016 align_attr.cfg c/align_attr.c
01020 kw_subst.cfg c/kw_subst.c
01021 kw_subst3.cfg c/hello.c
01022 kw_subst3.cfg c/kw_subst.c
01030 cmt_indent_multi-f.cfg c/multi.h
01035 empty.cfg c/func_wrap.c
01036 sp_inside_fparen-f.cfg c/func_wrap.c
01037 type_wrap.cfg c/type_wrap.c
01040 newline_after_endif.cfg c/newline_after_endif.c
01050 func_call_user.cfg c/func_call_user.c
01060 empty.cfg c/backslash-newline-lex.c
01070 label_colon_nl_1.cfg c/various_colons.c
01071 label_colon_nl_2.cfg c/various_colons.c
01080 empty.cfg c/bug_1196.c
# big general tests
02000 ben_087.cfg c/i2c-core.c
02001 preproc-cleanup.cfg c/directfb.h
02002 ben2.cfg c/i2c-core.c
# clark's style - blank lines before and after flow control, indented comments
02100 clark.cfg c/i2c-core.c
02101 clark.cfg c/comment-indent.c
02200 xml-str.cfg c/xml.c
02201 xml-str.cfg c/align-string.c
02300 ben_088.cfg c/preproc-if.c
02301 d.cfg c/preproc-if.c
02302 cpp_to_c-1.cfg c/nl-cont.c
02303 cpp_to_c-1.cfg c/nl-cont2.c
02310 ben_089.cfg c/empty-for.c
02311 ben_090.cfg c/pragma.c
02315 pp_ret.cfg c/pp_ret.c
02320 nl_create_one_liner.cfg c/nl_create_one_liner.c
02325 sort_imports.cfg c/sort_include.c
02330 leave_one_liners.cfg c/one_liners.c
# some embedded sql stuff
02400 ben_091.cfg sql/mysql.sqc C
02401 ben_092.cfg sql/sta-select.sqc C
02402 issue_527.cfg sql/issue_527.sqc C
02410 pp_if_indent-0.cfg c/ifdef-indent.c
02411 pp_if_indent-1.cfg c/ifdef-indent.c
02412 pp_if_indent-2.cfg c/ifdef-indent.c
02413 pp_if_indent-3.cfg c/ifdef-indent.c
02414 nl_whole_file_ifdef.cfg c/whole_file_ifdef.c
02415 endif.cfg c/endif.c
02416 cmt_nl_end.cfg c/cmt_nl_end.c
02421 cmt_multi_check_last-f.cfg c/cmt_multi.c
02422 empty.cfg c/cmt_multi.c
02423 empty.cfg c/cmt_multi_utf8.c
02431 align_right_cmt_gap-1.cfg c/cmt_right_align.c
02432 space_indent_columns-3.cfg c/cmt_right_align.c
02440 empty.cfg c/string_utf8.c
02441 empty.cfg c/utf8-identifiers.c
02451 return-1.cfg c/nl_return_expr.c
02452 return-2.cfg c/nl_return_expr.c
02453 return-3.cfg c/nl_return_expr.c
02454 return-4.cfg c/nl_return_expr.c
02455 mod_paren_on_return-a.cfg c/macro-returns.c
02456 mod_paren_on_return-r.cfg c/macro-returns.c
02457 nl_before_return_true.cfg c/nl_before_return.c
02460 freebsd.cfg c/freebsd.c
02486 doxy-comment-no.cfg c/doxy-comment.c
02487 doxy-comment-yes.cfg c/doxy-comment.c
02501 ger.cfg c/custom_types_ssl.c
02502 custom_types_ssl.cfg c/custom_types_ssl.c
#02503 ger.cfg c/pp_concat_asn1.h
02504 align_keep_extra.cfg c/align_keep_extra.c
02510 ben_093.cfg c/asm.c
10004 ben_094.cfg c/pragma_asm.c
07630 indent-vbrace.cfg c/indent-vbrace.c
08399 ben_095.cfg c/gh399.c
09594 indent_columns-3.cfg c/sf594.c
09588 empty.cfg c/sf588.c
09601 sp_after_sparen.cfg c/sp_after_sparen.c
09602 bug_671.cfg c/bug_671.c
09603 indent_ternary_operator-1.cfg c/indent_ternary-1.c
09604 indent_ternary_operator-2.cfg c/indent_ternary-2.c
09605 sp_arith-f.cfg c/negative_value.c
09606 ptr-arith.cfg c/extern.c
09607 ptr-arith.cfg c/attribute.c
09608 aet-func_call_user.cfg c/func_call_user2.c
09609 Issue_2279.cfg c/Issue_2279.c
09610 force_tab_after_define-t.cfg c/bug_i_876.c
09611 space_indent_columns-4.cfg c/bug_i_222.c
09612 empty.cfg c/bug_1041.c
09613 empty.cfg c/i1413.c
09614 empty.cfg c/string_prefixes.c
09615 i1564.cfg c/i1564.c
09616 enum_comma_ifdef.cfg c/enum_comma_ifdef.c
09617 Issue_2360-a.cfg c/Issue_2360.c
09618 Issue_2360-b.cfg c/Issue_2360.c
09619 Issue_2411.cfg c/Issue_2411.c
09620 Issue_2640.cfg c/Issue_2640.c
09621 preproc-cleanup.cfg c/pp-before-func-def.c
10005 empty.cfg c/i1270.c
10006 bug_2331.cfg c/bug_2331.c
10007 indent_macro_brace-true.cfg c/indent-macro-brace.c
10008 indent_macro_brace-false.cfg c/indent-macro-brace.c
10009 empty.cfg c/return-compound-literal.c
10010 indent_compound_literal_return-false.cfg c/return-compound-literal.c
10011 indent_compound_literal_return-true.cfg c/return-compound-literal.c
10012 indent_sparen_extra-8.cfg c/sparen-indent.c
10013 empty.cfg c/sparen-indent.c
10014 indent_continue-8.cfg c/sparen-indent.c
10015 empty.cfg c/Issue_2845.h

@ -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<a title="1,sp_assign"><font color="red">M</font></a>=<a title="2,69,sp_assign"><font color="red">M</font></a>b<a title="3,70,75,sp_arith"><font color="red">M</font></a>+<a title="4,71,76,80,sp_arith"><font color="red">M</font></a>111<a title="5,72,77,81,84,sp_arith"><font color="red">M</font></a>-<a title="6,73,78,82,85,87,sp_arith"><font color="red">M</font></a>55<a title="7,74,79,83,86,88,89,sp_before_semi"><font color="red">M</font></a>;
}
template<a title="8,sp_before_angle"><font color="red">M</font></a>&lt;<a title="9,90,sp_inside_angle"><font color="red">M</font></a>typename<a title="10,91,96,ADD from add_space_table"><font color="red">M</font></a>... A<a title="11,92,97,101,sp_before_comma"><font color="red">M</font></a>,<a title="12,93,98,102,105,sp_after_comma"><font color="red">M</font></a>int<a title="13,94,99,103,106,108,sp_type_ellipsis"><font color="red">M</font></a>... B<a title="14,95,100,104,107,109,110,sp_inside_angle"><font color="red">M</font></a>&gt;
struct<a title="15,ADD from add_space_table"><font color="red">M</font></a>foo1<a title="16,111,sp_after_type"><font color="red">M</font></a>:<a title="17,112,128,ADD from add_space_table"><font color="red">M</font></a>foo1<a title="18,113,129,144,sp_before_angle"><font color="red">M</font></a>&lt;<a title="19,114,130,145,159,sp_inside_angle"><font color="red">M</font></a>A<a title="20,115,131,146,160,173,sp_type_ellipsis"><font color="red">M</font></a>...<a title="21,116,132,147,161,174,186,sp_before_comma"><font color="red">M</font></a>,<a title="22,117,133,148,162,175,187,198,sp_after_comma"><font color="red">M</font></a>(<a title="23,118,134,149,163,176,188,199,209,sp_inside_paren"><font color="red">M</font></a>sizeof<a title="24,119,135,150,164,177,189,200,210,219,sp_sizeof_ellipsis"><font color="red">M</font></a>...<a title="25,120,136,151,165,178,190,201,211,220,228,sp_sizeof_ellipsis_paren"><font color="red">M</font></a>(<a title="26,121,137,152,166,179,191,202,212,221,229,236,sp_inside_paren"><font color="red">M</font></a>A<a title="27,122,138,153,167,180,192,203,213,222,230,237,243,sp_inside_paren"><font color="red">M</font></a>)<a title="28,123,139,154,168,181,193,204,214,223,231,238,244,249,sp_arith"><font color="red">M</font></a>+<a title="29,124,140,155,169,182,194,205,215,224,232,239,245,250,254,sp_arith"><font color="red">M</font></a>B<a title="30,125,141,156,170,183,195,206,216,225,233,240,246,251,255,258,sp_inside_paren"><font color="red">M</font></a>)<a title="31,126,142,157,171,184,196,207,217,226,234,241,247,252,256,259,261,sp_paren_ellipsis"><font color="red">M</font></a>...<a title="32,127,143,158,172,185,197,208,218,227,235,242,248,253,257,260,262,263,sp_inside_angle"><font color="red">M</font></a>&gt;
{
foo1<a title="33,51,sp_func_class_paren"><font color="red">M</font></a>(<a title="34,52,264,sp_inside_fparens"><font color="red">M</font></a>)<a title="35,53,265,266,sp_fparen_brace"><font color="red">M</font></a>{
int<a title="36,54,sp_after_type"><font color="red">M</font></a>x<a title="37,55,267,sp_assign"><font color="red">M</font></a>=<a title="38,56,268,274,sp_assign"><font color="red">M</font></a>sizeof<a title="39,57,269,275,280,sp_sizeof_ellipsis"><font color="red">M</font></a>...<a title="40,58,270,276,281,285,sp_sizeof_ellipsis_paren"><font color="red">M</font></a>(<a title="41,59,271,277,282,286,289,sp_inside_paren"><font color="red">M</font></a>A<a title="42,60,272,278,283,287,290,292,sp_inside_paren"><font color="red">M</font></a>)<a title="43,61,273,279,284,288,291,293,294,sp_before_semi"><font color="red">M</font></a>;
bool<a title="44,62,sp_after_type"><font color="red">M</font></a>b<a title="45,63,295,sp_assign"><font color="red">M</font></a>=<a title="46,64,296,300,sp_assign"><font color="red">M</font></a>x<a title="47,65,297,301,304,sp_compare"><font color="red">M</font></a>><a title="48,66,298,302,305,307,sp_compare"><font color="red">M</font></a>1<a title="49,67,299,303,306,308,309,sp_before_semi"><font color="red">M</font></a>;
}
}<a title="50,sp_before_semi"><font color="red">M</font></a>;
</pre>
</body>
</html>

@ -1 +0,0 @@
config/mini_d.cfg:2: unknown option 'not_existing_option'

@ -1,756 +0,0 @@
newlines = auto
input_tab_size = 8
output_tab_size = 8
string_escape_char = 92
string_escape_char2 = 0
string_replace_tab_chars = false
tok_split_gte = false
disable_processing_nl_cont = false
disable_processing_cmt = " *INDENT-OFF*"
enable_processing_cmt = " *INDENT-ON*"
enable_digraphs = false
processing_cmt_as_regex = false
utf8_bom = ignore
utf8_byte = false
utf8_force = false
sp_arith = ignore
sp_arith_additive = ignore
sp_assign = ignore
sp_cpp_lambda_assign = ignore
sp_cpp_lambda_square_paren = ignore
sp_cpp_lambda_square_brace = ignore
sp_cpp_lambda_argument_list = ignore
sp_cpp_lambda_paren_brace = ignore
sp_cpp_lambda_fparen = ignore
sp_assign_default = ignore
sp_before_assign = ignore
sp_after_assign = ignore
sp_enum_paren = ignore
sp_enum_assign = ignore
sp_enum_before_assign = ignore
sp_enum_after_assign = ignore
sp_enum_colon = ignore
sp_pp_concat = add
sp_pp_stringify = ignore
sp_before_pp_stringify = ignore
sp_bool = ignore
sp_compare = ignore
sp_inside_paren = ignore
sp_paren_paren = ignore
sp_cparen_oparen = ignore
sp_balance_nested_parens = false
sp_paren_brace = ignore
sp_brace_brace = ignore
sp_before_ptr_star = ignore
sp_before_unnamed_ptr_star = ignore
sp_between_ptr_star = ignore
sp_after_ptr_star = ignore
sp_after_ptr_block_caret = ignore
sp_after_ptr_star_qualifier = ignore
sp_after_ptr_star_func = ignore
sp_ptr_star_paren = ignore
sp_before_ptr_star_func = ignore
sp_before_byref = ignore
sp_before_unnamed_byref = ignore
sp_after_byref = ignore
sp_after_byref_func = ignore
sp_before_byref_func = ignore
sp_after_type = force
sp_after_decltype = ignore
sp_before_template_paren = ignore
sp_template_angle = ignore
sp_before_angle = ignore
sp_inside_angle = ignore
sp_inside_angle_empty = ignore
sp_angle_colon = ignore
sp_after_angle = ignore
sp_angle_paren = ignore
sp_angle_paren_empty = ignore
sp_angle_word = ignore
sp_angle_shift = add
sp_permit_cpp11_shift = false
sp_before_sparen = ignore
sp_inside_sparen = ignore
sp_inside_sparen_open = ignore
sp_inside_sparen_close = ignore
sp_after_sparen = ignore
sp_sparen_brace = ignore
sp_do_brace_open = ignore
sp_brace_close_while = ignore
sp_while_paren_open = ignore
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 = ignore
sp_after_semi = add
sp_after_semi_for = force
sp_after_semi_for_empty = ignore
sp_before_square = ignore
sp_before_vardef_square = remove
sp_before_square_asm_block = ignore
sp_before_squares = ignore
sp_cpp_before_struct_binding = ignore
sp_inside_square = ignore
sp_inside_square_empty = ignore
sp_inside_square_oc_array = ignore
sp_after_comma = ignore
sp_before_comma = remove
sp_after_mdatype_commas = ignore
sp_before_mdatype_commas = ignore
sp_between_mdatype_commas = ignore
sp_paren_comma = force
sp_before_ellipsis = ignore
sp_type_ellipsis = ignore
sp_type_question = ignore
sp_paren_ellipsis = ignore
sp_paren_qualifier = ignore
sp_paren_noexcept = ignore
sp_after_class_colon = ignore
sp_before_class_colon = ignore
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_operator_sym_empty = ignore
sp_after_cast = ignore
sp_inside_paren_cast = ignore
sp_cpp_cast_paren = ignore
sp_sizeof_paren = ignore
sp_sizeof_ellipsis = ignore
sp_sizeof_ellipsis_paren = ignore
sp_decltype_paren = ignore
sp_after_tag = ignore
sp_inside_braces_enum = ignore
sp_inside_braces_struct = ignore
sp_inside_braces_oc_dict = ignore
sp_after_type_brace_init_lst_open = ignore
sp_before_type_brace_init_lst_close = ignore
sp_inside_type_brace_init_lst = ignore
sp_inside_braces = ignore
sp_inside_braces_empty = ignore
sp_trailing_return = ignore
sp_type_func = ignore
sp_type_brace_init_lst = ignore
sp_func_proto_paren = ignore
sp_func_proto_paren_empty = ignore
sp_func_type_paren = ignore
sp_func_def_paren = ignore
sp_func_def_paren_empty = ignore
sp_inside_fparens = ignore
sp_inside_fparen = ignore
sp_inside_tparen = ignore
sp_after_tparen_close = ignore
sp_square_fparen = ignore
sp_fparen_brace = ignore
sp_fparen_brace_initializer = ignore
sp_fparen_dbrace = ignore
sp_func_call_paren = ignore
sp_func_call_paren_empty = ignore
sp_func_call_user_paren = ignore
sp_func_call_user_inside_fparen = ignore
sp_func_call_user_paren_paren = ignore
sp_func_class_paren = ignore
sp_func_class_paren_empty = ignore
sp_return_paren = ignore
sp_return_brace = ignore
sp_attribute_paren = ignore
sp_defined_paren = ignore
sp_throw_paren = ignore
sp_after_throw = ignore
sp_catch_paren = ignore
sp_oc_catch_paren = ignore
sp_before_oc_proto_list = ignore
sp_oc_classname_paren = ignore
sp_version_paren = ignore
sp_scope_paren = ignore
sp_super_paren = remove
sp_this_paren = remove
sp_macro = ignore
sp_macro_func = ignore
sp_else_brace = ignore
sp_brace_else = ignore
sp_brace_typedef = ignore
sp_catch_brace = ignore
sp_oc_catch_brace = ignore
sp_brace_catch = ignore
sp_oc_brace_catch = ignore
sp_finally_brace = ignore
sp_brace_finally = ignore
sp_try_brace = ignore
sp_getset_brace = ignore
sp_word_brace_init_lst = ignore
sp_word_brace_ns = add
sp_before_dc = ignore
sp_after_dc = ignore
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_oc_dict_colon = ignore
sp_before_oc_dict_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_after_oc_at_sel_parens = ignore
sp_inside_oc_at_sel_parens = ignore
sp_before_oc_block_caret = ignore
sp_after_oc_block_caret = ignore
sp_after_oc_msg_receiver = ignore
sp_after_oc_property = ignore
sp_after_oc_synchronized = ignore
sp_cond_colon = ignore
sp_cond_colon_before = ignore
sp_cond_colon_after = ignore
sp_cond_question = ignore
sp_cond_question_before = ignore
sp_cond_question_after = ignore
sp_cond_ternary_short = ignore
sp_case_label = ignore
sp_range = ignore
sp_after_for_colon = ignore
sp_before_for_colon = ignore
sp_extern_paren = ignore
sp_cmt_cpp_start = ignore
sp_cmt_cpp_region = ignore
sp_cmt_cpp_doxygen = false
sp_cmt_cpp_qttr = false
sp_endif_cmt = ignore
sp_after_new = ignore
sp_between_new_paren = ignore
sp_after_newop_paren = ignore
sp_inside_newop_paren = ignore
sp_inside_newop_paren_open = ignore
sp_inside_newop_paren_close = ignore
sp_before_tr_emb_cmt = ignore
sp_num_before_tr_emb_cmt = 0
sp_annotation_paren = ignore
sp_skip_vbrace_tokens = false
sp_after_noexcept = ignore
sp_vala_after_translation = ignore
force_tab_after_define = false
indent_columns = 8
indent_continue = 0
indent_continue_class_head = 0
indent_single_newlines = false
indent_param = 0
indent_with_tabs = 1
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_cs_delegate_brace = false
indent_cs_delegate_body = false
indent_namespace = false
indent_namespace_single_indent = false
indent_namespace_level = 0
indent_namespace_limit = 0
indent_extern = false
indent_class = false
indent_before_class_colon = 0
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 = false
indent_func_def_force_col1 = false
indent_func_call_param = false
indent_func_def_param = false
indent_func_def_param_paren_pos_threshold = 0
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_macro_brace = true
indent_member = 0
indent_member_single = false
indent_sing_line_comments = 0
indent_sparen_extra = 0
indent_relative_single_line_comments = false
indent_switch_case = 0
indent_case_brace = 0
indent_switch_break_with_case = false
indent_switch_pp = true
indent_case_shift = 0
indent_col1_comment = false
indent_col1_multi_string_literal = false
indent_label = 1
indent_access_spec = 1
indent_access_spec_body = false
indent_paren_nl = false
indent_paren_close = 0
indent_paren_after_func_def = false
indent_paren_after_func_decl = false
indent_paren_after_func_call = false
indent_comma_brace = false
indent_comma_paren = false
indent_bool_paren = false
indent_semicolon_for_paren = false
indent_first_bool_expr = false
indent_first_for_expr = false
indent_square_nl = false
indent_preserve_sql = false
indent_align_assign = true
indent_off_after_assign = false
indent_align_paren = true
indent_oc_inside_msg_sel = 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 = false
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
indent_token_after_brace = true
indent_cpp_lambda_body = false
indent_compound_literal_return = true
indent_using_block = true
indent_ternary_operator = 0
indent_inside_ternary_operator = false
indent_off_after_return = false
indent_off_after_return_new = false
indent_single_after_return = false
indent_ignore_asm_block = false
donot_indent_func_def_close_paren = false
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_cs_property_leave_one_liners = false
nl_func_leave_one_liners = false
nl_cpp_lambda_leave_one_liners = false
nl_if_leave_one_liners = false
nl_while_leave_one_liners = false
nl_do_leave_one_liners = false
nl_for_leave_one_liners = false
nl_oc_msg_leave_one_liner = false
nl_oc_mdef_brace = ignore
nl_oc_block_brace = ignore
nl_oc_before_interface = ignore
nl_oc_before_implementation = ignore
nl_oc_before_end = ignore
nl_oc_interface_brace = ignore
nl_oc_implementation_brace = ignore
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_tsquare_brace = ignore
nl_after_square_assign = ignore
nl_fcall_brace = ignore
nl_enum_brace = ignore
nl_enum_class = ignore
nl_enum_class_identifier = ignore
nl_enum_identifier_colon = ignore
nl_enum_colon_type = ignore
nl_struct_brace = ignore
nl_union_brace = ignore
nl_if_brace = ignore
nl_brace_else = ignore
nl_elseif_brace = ignore
nl_else_brace = ignore
nl_else_if = ignore
nl_before_opening_brace_func_class_def = ignore
nl_before_if_closing_paren = ignore
nl_brace_finally = ignore
nl_finally_brace = ignore
nl_try_brace = ignore
nl_getset_brace = ignore
nl_for_brace = ignore
nl_catch_brace = ignore
nl_oc_catch_brace = ignore
nl_brace_catch = ignore
nl_oc_brace_catch = ignore
nl_brace_square = ignore
nl_brace_fparen = ignore
nl_while_brace = ignore
nl_scope_brace = ignore
nl_unittest_brace = ignore
nl_version_brace = ignore
nl_using_brace = ignore
nl_brace_brace = ignore
nl_do_brace = ignore
nl_brace_while = ignore
nl_switch_brace = ignore
nl_synchronized_brace = ignore
nl_multi_line_cond = false
nl_multi_line_sparen_open = ignore
nl_multi_line_sparen_close = ignore
nl_multi_line_define = false
nl_before_case = false
nl_after_case = false
nl_case_colon_brace = ignore
nl_before_throw = ignore
nl_namespace_brace = ignore
nl_template_class = ignore
nl_template_class_decl = ignore
nl_template_class_decl_special = ignore
nl_template_class_def = ignore
nl_template_class_def_special = ignore
nl_template_func = ignore
nl_template_func_decl = ignore
nl_template_func_decl_special = ignore
nl_template_func_def = ignore
nl_template_func_def_special = ignore
nl_template_var = ignore
nl_template_using = ignore
nl_class_brace = ignore
nl_class_init_args = ignore
nl_constr_init_args = ignore
nl_enum_own_lines = ignore
nl_func_type_name = ignore
nl_func_type_name_class = ignore
nl_func_class_scope = ignore
nl_func_scope_name = ignore
nl_func_proto_type_name = ignore
nl_func_paren = ignore
nl_func_paren_empty = ignore
nl_func_def_paren = ignore
nl_func_def_paren_empty = ignore
nl_func_call_paren = ignore
nl_func_call_paren_empty = 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_start_multi_line = false
nl_func_def_start_multi_line = false
nl_func_decl_args = ignore
nl_func_def_args = ignore
nl_func_call_args = ignore
nl_func_decl_args_multi_line = false
nl_func_def_args_multi_line = false
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_end_multi_line = false
nl_func_def_end_multi_line = false
nl_func_decl_empty = ignore
nl_func_def_empty = ignore
nl_func_call_empty = ignore
nl_func_call_start = ignore
nl_func_call_end = ignore
nl_func_call_start_multi_line = false
nl_func_call_args_multi_line = false
nl_func_call_end_multi_line = false
nl_func_call_args_multi_line_ignore_closures = false
nl_template_start = false
nl_template_args = false
nl_template_end = false
nl_oc_msg_args = false
nl_fdef_brace = ignore
nl_fdef_brace_cond = ignore
nl_cpp_ldef_brace = ignore
nl_return_expr = ignore
nl_after_semicolon = false
nl_paren_dbrace_open = ignore
nl_type_brace_init_lst = ignore
nl_type_brace_init_lst_open = ignore
nl_type_brace_init_lst_close = 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_paren_close = false
nl_squeeze_ifdef = false
nl_squeeze_ifdef_top_level = 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_synchronized = ignore
nl_after_synchronized = ignore
nl_before_do = ignore
nl_after_do = ignore
nl_before_return = false
nl_after_return = false
nl_before_member = ignore
nl_after_member = ignore
nl_ds_struct_enum_cmt = false
nl_ds_struct_enum_close_brace = false
nl_class_colon = ignore
nl_constr_colon = ignore
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
nl_create_list_one_liner = false
nl_split_if_one_liner = false
nl_split_for_one_liner = false
nl_split_while_one_liner = false
donot_add_nl_before_cpp_comment = false
nl_max = 0
nl_max_blank_in_func = 0
nl_inside_empty_func = 0
nl_before_func_body_proto = 0
nl_before_func_body_def = 0
nl_before_func_class_proto = 0
nl_before_func_class_def = 0
nl_after_func_proto = 0
nl_after_func_proto_group = 0
nl_after_func_class_proto = 0
nl_after_func_class_proto_group = 0
nl_class_leave_one_liner_groups = false
nl_after_func_body = 0
nl_after_func_body_class = 0
nl_after_func_body_one_liner = 0
nl_func_var_def_blk = 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_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_before_class = 0
nl_after_class = 0
nl_before_namespace = 0
nl_inside_namespace = 0
nl_after_namespace = 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 = ignore
eat_blanks_after_open_brace = false
eat_blanks_before_close_brace = false
nl_remove_extra_newlines = 0
nl_after_annotation = ignore
nl_between_annotation = ignore
nl_before_whole_file_ifdef = 0
nl_after_whole_file_ifdef = 0
nl_before_whole_file_endif = 0
nl_after_whole_file_endif = 0
pos_arith = ignore
pos_assign = ignore
pos_bool = ignore
pos_compare = ignore
pos_conditional = ignore
pos_comma = ignore
pos_enum_comma = ignore
pos_class_comma = ignore
pos_constr_comma = ignore
pos_class_colon = ignore
pos_constr_colon = ignore
pos_shift = ignore
code_width = 0
ls_for_split_full = false
ls_func_split_full = false
ls_code_width = false
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_func_params_span = 0
align_func_params_thresh = 0
align_func_params_gap = 0
align_constr_value_span = 0
align_constr_value_thresh = 0
align_constr_value_gap = 0
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_colon_gap = 0
align_var_def_attribute = false
align_var_def_inline = false
align_assign_span = 0
align_assign_func_proto_span = 0
align_assign_thresh = 0
align_assign_decl_func = 0
align_enum_equ_span = 0
align_enum_equ_thresh = 0
align_var_class_span = 0
align_var_class_thresh = 0
align_var_class_gap = 0
align_var_struct_span = 0
align_var_struct_thresh = 0
align_var_struct_gap = 0
align_struct_init_span = 0
align_typedef_span = 0
align_typedef_gap = 0
align_typedef_func = 0
align_typedef_star_style = 0
align_typedef_amp_style = 0
align_right_cmt_span = 0
align_right_cmt_gap = 0
align_right_cmt_mix = false
align_right_cmt_same_level = false
align_right_cmt_at_col = 0
align_func_proto_span = 0
align_func_proto_thresh = 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_span = 0
align_pp_define_gap = 0
align_left_shift = true
align_eigen_comma_init = false
align_asm_colon = false
align_oc_msg_colon_span = 0
align_oc_msg_colon_first = false
align_oc_decl_colon = false
align_oc_msg_colon_xcode_like = false
cmt_width = 0
cmt_reflow_mode = 0
cmt_reflow_fold_regex_file = ""
cmt_reflow_indent_to_paragraph_start = false
cmt_convert_tab_to_spaces = false
cmt_indent_multi = true
cmt_align_doxygen_javadoc_tags = false
cmt_sp_before_doxygen_javadoc_tags = 1
cmt_c_group = false
cmt_c_nl_start = false
cmt_c_nl_end = false
cmt_cpp_to_c = false
cmt_cpp_group = false
cmt_cpp_nl_start = false
cmt_cpp_nl_end = false
cmt_star_cont = false
cmt_sp_before_star_cont = 0
cmt_sp_after_star_cont = 0
cmt_multi_check_last = true
cmt_multi_first_len_minimum = 4
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
cmt_insert_before_inlines = true
cmt_insert_before_ctor_dtor = false
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 = false
mod_full_brace_if_chain_only = false
mod_full_brace_while = ignore
mod_full_brace_using = ignore
mod_full_brace_nl = 0
mod_full_brace_nl_block_rem_mlcond = false
mod_paren_on_return = ignore
mod_pawn_semicolon = false
mod_full_paren_if_bool = false
mod_remove_extra_semicolon = false
mod_add_long_function_closebrace_comment = 0
mod_add_long_namespace_closebrace_comment = 0
mod_add_long_class_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_case_sensitive = false
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 = ignore
mod_remove_empty_return = false
mod_enum_last_comma = ignore
mod_sort_oc_properties = false
mod_sort_oc_property_class_weight = 0
mod_sort_oc_property_thread_safe_weight = 0
mod_sort_oc_property_readwrite_weight = 0
mod_sort_oc_property_reference_weight = 0
mod_sort_oc_property_getter_weight = 0
mod_sort_oc_property_setter_weight = 0
mod_sort_oc_property_nullability_weight = 0
pp_indent = ignore
pp_indent_at_level = false
pp_indent_count = 1
pp_space = 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_ignore_define_body = false
pp_indent_case = true
pp_indent_func_def = true
pp_indent_extern = true
pp_indent_brace = true
include_category_0 = ""
include_category_1 = ""
include_category_2 = ""
use_indent_func_call_param = true
use_indent_continue_only_once = false
indent_cpp_lambda_only_once = false
use_sp_after_angle_always = false
use_options_overriding_for_qt_macros = true
use_form_feed_no_more_as_whitespace_character = false
warn_level_tabs_found_in_verbatim_string_literals = 2
debug_max_number_of_loops = 0
debug_line_number_to_protocol = 0
debug_timeout = 0
debug_truncate = 0
# option(s) with 'not default' value: 0
#

@ -1,756 +0,0 @@
newlines = crlf
input_tab_size = 8
output_tab_size = 8
string_escape_char = 92
string_escape_char2 = 0
string_replace_tab_chars = false
tok_split_gte = false
disable_processing_nl_cont = false
disable_processing_cmt = " *INDENT-OFF*"
enable_processing_cmt = " *INDENT-ON*"
enable_digraphs = false
processing_cmt_as_regex = false
utf8_bom = ignore
utf8_byte = false
utf8_force = false
sp_arith = ignore
sp_arith_additive = ignore
sp_assign = ignore
sp_cpp_lambda_assign = ignore
sp_cpp_lambda_square_paren = ignore
sp_cpp_lambda_square_brace = ignore
sp_cpp_lambda_argument_list = ignore
sp_cpp_lambda_paren_brace = ignore
sp_cpp_lambda_fparen = ignore
sp_assign_default = ignore
sp_before_assign = ignore
sp_after_assign = ignore
sp_enum_paren = ignore
sp_enum_assign = ignore
sp_enum_before_assign = ignore
sp_enum_after_assign = ignore
sp_enum_colon = ignore
sp_pp_concat = add
sp_pp_stringify = ignore
sp_before_pp_stringify = ignore
sp_bool = ignore
sp_compare = ignore
sp_inside_paren = ignore
sp_paren_paren = ignore
sp_cparen_oparen = ignore
sp_balance_nested_parens = false
sp_paren_brace = ignore
sp_brace_brace = ignore
sp_before_ptr_star = ignore
sp_before_unnamed_ptr_star = ignore
sp_between_ptr_star = ignore
sp_after_ptr_star = ignore
sp_after_ptr_block_caret = ignore
sp_after_ptr_star_qualifier = ignore
sp_after_ptr_star_func = ignore
sp_ptr_star_paren = ignore
sp_before_ptr_star_func = ignore
sp_before_byref = ignore
sp_before_unnamed_byref = ignore
sp_after_byref = ignore
sp_after_byref_func = ignore
sp_before_byref_func = ignore
sp_after_type = force
sp_after_decltype = ignore
sp_before_template_paren = ignore
sp_template_angle = ignore
sp_before_angle = ignore
sp_inside_angle = ignore
sp_inside_angle_empty = ignore
sp_angle_colon = ignore
sp_after_angle = ignore
sp_angle_paren = ignore
sp_angle_paren_empty = ignore
sp_angle_word = ignore
sp_angle_shift = add
sp_permit_cpp11_shift = false
sp_before_sparen = ignore
sp_inside_sparen = ignore
sp_inside_sparen_open = ignore
sp_inside_sparen_close = ignore
sp_after_sparen = ignore
sp_sparen_brace = ignore
sp_do_brace_open = ignore
sp_brace_close_while = ignore
sp_while_paren_open = ignore
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 = ignore
sp_after_semi = add
sp_after_semi_for = force
sp_after_semi_for_empty = ignore
sp_before_square = ignore
sp_before_vardef_square = remove
sp_before_square_asm_block = ignore
sp_before_squares = ignore
sp_cpp_before_struct_binding = ignore
sp_inside_square = ignore
sp_inside_square_empty = ignore
sp_inside_square_oc_array = ignore
sp_after_comma = ignore
sp_before_comma = remove
sp_after_mdatype_commas = ignore
sp_before_mdatype_commas = ignore
sp_between_mdatype_commas = ignore
sp_paren_comma = force
sp_before_ellipsis = ignore
sp_type_ellipsis = ignore
sp_type_question = ignore
sp_paren_ellipsis = ignore
sp_paren_qualifier = ignore
sp_paren_noexcept = ignore
sp_after_class_colon = ignore
sp_before_class_colon = ignore
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_operator_sym_empty = ignore
sp_after_cast = ignore
sp_inside_paren_cast = ignore
sp_cpp_cast_paren = ignore
sp_sizeof_paren = ignore
sp_sizeof_ellipsis = ignore
sp_sizeof_ellipsis_paren = ignore
sp_decltype_paren = ignore
sp_after_tag = ignore
sp_inside_braces_enum = ignore
sp_inside_braces_struct = ignore
sp_inside_braces_oc_dict = ignore
sp_after_type_brace_init_lst_open = ignore
sp_before_type_brace_init_lst_close = ignore
sp_inside_type_brace_init_lst = ignore
sp_inside_braces = ignore
sp_inside_braces_empty = ignore
sp_trailing_return = ignore
sp_type_func = ignore
sp_type_brace_init_lst = ignore
sp_func_proto_paren = ignore
sp_func_proto_paren_empty = ignore
sp_func_type_paren = ignore
sp_func_def_paren = ignore
sp_func_def_paren_empty = ignore
sp_inside_fparens = ignore
sp_inside_fparen = ignore
sp_inside_tparen = ignore
sp_after_tparen_close = ignore
sp_square_fparen = ignore
sp_fparen_brace = ignore
sp_fparen_brace_initializer = ignore
sp_fparen_dbrace = ignore
sp_func_call_paren = ignore
sp_func_call_paren_empty = ignore
sp_func_call_user_paren = ignore
sp_func_call_user_inside_fparen = ignore
sp_func_call_user_paren_paren = ignore
sp_func_class_paren = ignore
sp_func_class_paren_empty = ignore
sp_return_paren = ignore
sp_return_brace = ignore
sp_attribute_paren = ignore
sp_defined_paren = ignore
sp_throw_paren = ignore
sp_after_throw = ignore
sp_catch_paren = ignore
sp_oc_catch_paren = ignore
sp_before_oc_proto_list = ignore
sp_oc_classname_paren = ignore
sp_version_paren = ignore
sp_scope_paren = ignore
sp_super_paren = remove
sp_this_paren = remove
sp_macro = ignore
sp_macro_func = ignore
sp_else_brace = ignore
sp_brace_else = ignore
sp_brace_typedef = ignore
sp_catch_brace = ignore
sp_oc_catch_brace = ignore
sp_brace_catch = ignore
sp_oc_brace_catch = ignore
sp_finally_brace = ignore
sp_brace_finally = ignore
sp_try_brace = ignore
sp_getset_brace = ignore
sp_word_brace_init_lst = ignore
sp_word_brace_ns = add
sp_before_dc = ignore
sp_after_dc = ignore
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_oc_dict_colon = ignore
sp_before_oc_dict_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_after_oc_at_sel_parens = ignore
sp_inside_oc_at_sel_parens = ignore
sp_before_oc_block_caret = ignore
sp_after_oc_block_caret = ignore
sp_after_oc_msg_receiver = ignore
sp_after_oc_property = ignore
sp_after_oc_synchronized = ignore
sp_cond_colon = ignore
sp_cond_colon_before = ignore
sp_cond_colon_after = ignore
sp_cond_question = ignore
sp_cond_question_before = ignore
sp_cond_question_after = ignore
sp_cond_ternary_short = ignore
sp_case_label = ignore
sp_range = ignore
sp_after_for_colon = ignore
sp_before_for_colon = ignore
sp_extern_paren = ignore
sp_cmt_cpp_start = ignore
sp_cmt_cpp_region = ignore
sp_cmt_cpp_doxygen = false
sp_cmt_cpp_qttr = false
sp_endif_cmt = ignore
sp_after_new = ignore
sp_between_new_paren = ignore
sp_after_newop_paren = ignore
sp_inside_newop_paren = ignore
sp_inside_newop_paren_open = ignore
sp_inside_newop_paren_close = ignore
sp_before_tr_emb_cmt = ignore
sp_num_before_tr_emb_cmt = 0
sp_annotation_paren = ignore
sp_skip_vbrace_tokens = false
sp_after_noexcept = ignore
sp_vala_after_translation = ignore
force_tab_after_define = false
indent_columns = 8
indent_continue = 0
indent_continue_class_head = 0
indent_single_newlines = false
indent_param = 0
indent_with_tabs = 1
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_cs_delegate_brace = false
indent_cs_delegate_body = false
indent_namespace = false
indent_namespace_single_indent = false
indent_namespace_level = 0
indent_namespace_limit = 0
indent_extern = false
indent_class = false
indent_before_class_colon = 0
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 = false
indent_func_def_force_col1 = false
indent_func_call_param = false
indent_func_def_param = false
indent_func_def_param_paren_pos_threshold = 0
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_macro_brace = true
indent_member = 0
indent_member_single = false
indent_sing_line_comments = 0
indent_sparen_extra = 0
indent_relative_single_line_comments = false
indent_switch_case = 0
indent_case_brace = 0
indent_switch_break_with_case = false
indent_switch_pp = true
indent_case_shift = 0
indent_col1_comment = false
indent_col1_multi_string_literal = false
indent_label = 1
indent_access_spec = 1
indent_access_spec_body = false
indent_paren_nl = false
indent_paren_close = 0
indent_paren_after_func_def = false
indent_paren_after_func_decl = false
indent_paren_after_func_call = false
indent_comma_brace = false
indent_comma_paren = false
indent_bool_paren = false
indent_semicolon_for_paren = false
indent_first_bool_expr = false
indent_first_for_expr = false
indent_square_nl = false
indent_preserve_sql = false
indent_align_assign = true
indent_off_after_assign = false
indent_align_paren = true
indent_oc_inside_msg_sel = 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 = false
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
indent_token_after_brace = true
indent_cpp_lambda_body = false
indent_compound_literal_return = true
indent_using_block = true
indent_ternary_operator = 0
indent_inside_ternary_operator = false
indent_off_after_return = false
indent_off_after_return_new = false
indent_single_after_return = false
indent_ignore_asm_block = false
donot_indent_func_def_close_paren = false
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_cs_property_leave_one_liners = false
nl_func_leave_one_liners = false
nl_cpp_lambda_leave_one_liners = false
nl_if_leave_one_liners = false
nl_while_leave_one_liners = false
nl_do_leave_one_liners = false
nl_for_leave_one_liners = false
nl_oc_msg_leave_one_liner = false
nl_oc_mdef_brace = ignore
nl_oc_block_brace = ignore
nl_oc_before_interface = ignore
nl_oc_before_implementation = ignore
nl_oc_before_end = ignore
nl_oc_interface_brace = ignore
nl_oc_implementation_brace = ignore
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_tsquare_brace = ignore
nl_after_square_assign = ignore
nl_fcall_brace = ignore
nl_enum_brace = ignore
nl_enum_class = ignore
nl_enum_class_identifier = ignore
nl_enum_identifier_colon = ignore
nl_enum_colon_type = ignore
nl_struct_brace = ignore
nl_union_brace = ignore
nl_if_brace = ignore
nl_brace_else = ignore
nl_elseif_brace = ignore
nl_else_brace = ignore
nl_else_if = ignore
nl_before_opening_brace_func_class_def = ignore
nl_before_if_closing_paren = ignore
nl_brace_finally = ignore
nl_finally_brace = ignore
nl_try_brace = ignore
nl_getset_brace = ignore
nl_for_brace = ignore
nl_catch_brace = ignore
nl_oc_catch_brace = ignore
nl_brace_catch = ignore
nl_oc_brace_catch = ignore
nl_brace_square = ignore
nl_brace_fparen = ignore
nl_while_brace = ignore
nl_scope_brace = ignore
nl_unittest_brace = ignore
nl_version_brace = ignore
nl_using_brace = ignore
nl_brace_brace = ignore
nl_do_brace = ignore
nl_brace_while = ignore
nl_switch_brace = ignore
nl_synchronized_brace = ignore
nl_multi_line_cond = false
nl_multi_line_sparen_open = ignore
nl_multi_line_sparen_close = ignore
nl_multi_line_define = false
nl_before_case = false
nl_after_case = false
nl_case_colon_brace = ignore
nl_before_throw = ignore
nl_namespace_brace = ignore
nl_template_class = ignore
nl_template_class_decl = ignore
nl_template_class_decl_special = ignore
nl_template_class_def = ignore
nl_template_class_def_special = ignore
nl_template_func = ignore
nl_template_func_decl = ignore
nl_template_func_decl_special = ignore
nl_template_func_def = ignore
nl_template_func_def_special = ignore
nl_template_var = ignore
nl_template_using = ignore
nl_class_brace = ignore
nl_class_init_args = ignore
nl_constr_init_args = ignore
nl_enum_own_lines = ignore
nl_func_type_name = ignore
nl_func_type_name_class = ignore
nl_func_class_scope = ignore
nl_func_scope_name = ignore
nl_func_proto_type_name = ignore
nl_func_paren = ignore
nl_func_paren_empty = ignore
nl_func_def_paren = ignore
nl_func_def_paren_empty = ignore
nl_func_call_paren = ignore
nl_func_call_paren_empty = 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_start_multi_line = false
nl_func_def_start_multi_line = false
nl_func_decl_args = ignore
nl_func_def_args = ignore
nl_func_call_args = ignore
nl_func_decl_args_multi_line = false
nl_func_def_args_multi_line = false
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_end_multi_line = false
nl_func_def_end_multi_line = false
nl_func_decl_empty = ignore
nl_func_def_empty = ignore
nl_func_call_empty = ignore
nl_func_call_start = ignore
nl_func_call_end = ignore
nl_func_call_start_multi_line = false
nl_func_call_args_multi_line = false
nl_func_call_end_multi_line = false
nl_func_call_args_multi_line_ignore_closures = false
nl_template_start = false
nl_template_args = false
nl_template_end = false
nl_oc_msg_args = false
nl_fdef_brace = ignore
nl_fdef_brace_cond = ignore
nl_cpp_ldef_brace = ignore
nl_return_expr = ignore
nl_after_semicolon = false
nl_paren_dbrace_open = ignore
nl_type_brace_init_lst = ignore
nl_type_brace_init_lst_open = ignore
nl_type_brace_init_lst_close = 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_paren_close = false
nl_squeeze_ifdef = false
nl_squeeze_ifdef_top_level = 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_synchronized = ignore
nl_after_synchronized = ignore
nl_before_do = ignore
nl_after_do = ignore
nl_before_return = false
nl_after_return = false
nl_before_member = ignore
nl_after_member = ignore
nl_ds_struct_enum_cmt = false
nl_ds_struct_enum_close_brace = false
nl_class_colon = ignore
nl_constr_colon = ignore
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
nl_create_list_one_liner = false
nl_split_if_one_liner = false
nl_split_for_one_liner = false
nl_split_while_one_liner = false
donot_add_nl_before_cpp_comment = false
nl_max = 0
nl_max_blank_in_func = 0
nl_inside_empty_func = 0
nl_before_func_body_proto = 0
nl_before_func_body_def = 0
nl_before_func_class_proto = 0
nl_before_func_class_def = 0
nl_after_func_proto = 0
nl_after_func_proto_group = 0
nl_after_func_class_proto = 0
nl_after_func_class_proto_group = 0
nl_class_leave_one_liner_groups = false
nl_after_func_body = 0
nl_after_func_body_class = 0
nl_after_func_body_one_liner = 0
nl_func_var_def_blk = 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_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_before_class = 0
nl_after_class = 0
nl_before_namespace = 0
nl_inside_namespace = 0
nl_after_namespace = 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 = ignore
eat_blanks_after_open_brace = false
eat_blanks_before_close_brace = false
nl_remove_extra_newlines = 0
nl_after_annotation = ignore
nl_between_annotation = ignore
nl_before_whole_file_ifdef = 0
nl_after_whole_file_ifdef = 0
nl_before_whole_file_endif = 0
nl_after_whole_file_endif = 0
pos_arith = ignore
pos_assign = ignore
pos_bool = ignore
pos_compare = ignore
pos_conditional = ignore
pos_comma = ignore
pos_enum_comma = ignore
pos_class_comma = ignore
pos_constr_comma = ignore
pos_class_colon = ignore
pos_constr_colon = ignore
pos_shift = ignore
code_width = 0
ls_for_split_full = false
ls_func_split_full = false
ls_code_width = false
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_func_params_span = 0
align_func_params_thresh = 0
align_func_params_gap = 0
align_constr_value_span = 0
align_constr_value_thresh = 0
align_constr_value_gap = 0
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_colon_gap = 0
align_var_def_attribute = false
align_var_def_inline = false
align_assign_span = 0
align_assign_func_proto_span = 0
align_assign_thresh = 0
align_assign_decl_func = 0
align_enum_equ_span = 0
align_enum_equ_thresh = 0
align_var_class_span = 0
align_var_class_thresh = 0
align_var_class_gap = 0
align_var_struct_span = 0
align_var_struct_thresh = 0
align_var_struct_gap = 0
align_struct_init_span = 0
align_typedef_span = 0
align_typedef_gap = 0
align_typedef_func = 0
align_typedef_star_style = 0
align_typedef_amp_style = 0
align_right_cmt_span = 0
align_right_cmt_gap = 0
align_right_cmt_mix = false
align_right_cmt_same_level = false
align_right_cmt_at_col = 0
align_func_proto_span = 0
align_func_proto_thresh = 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_span = 0
align_pp_define_gap = 0
align_left_shift = true
align_eigen_comma_init = false
align_asm_colon = false
align_oc_msg_colon_span = 0
align_oc_msg_colon_first = false
align_oc_decl_colon = false
align_oc_msg_colon_xcode_like = false
cmt_width = 0
cmt_reflow_mode = 0
cmt_reflow_fold_regex_file = ""
cmt_reflow_indent_to_paragraph_start = false
cmt_convert_tab_to_spaces = false
cmt_indent_multi = true
cmt_align_doxygen_javadoc_tags = false
cmt_sp_before_doxygen_javadoc_tags = 1
cmt_c_group = false
cmt_c_nl_start = false
cmt_c_nl_end = false
cmt_cpp_to_c = false
cmt_cpp_group = false
cmt_cpp_nl_start = false
cmt_cpp_nl_end = false
cmt_star_cont = false
cmt_sp_before_star_cont = 0
cmt_sp_after_star_cont = 0
cmt_multi_check_last = true
cmt_multi_first_len_minimum = 4
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
cmt_insert_before_inlines = true
cmt_insert_before_ctor_dtor = false
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 = false
mod_full_brace_if_chain_only = false
mod_full_brace_while = ignore
mod_full_brace_using = ignore
mod_full_brace_nl = 0
mod_full_brace_nl_block_rem_mlcond = false
mod_paren_on_return = ignore
mod_pawn_semicolon = false
mod_full_paren_if_bool = false
mod_remove_extra_semicolon = false
mod_add_long_function_closebrace_comment = 0
mod_add_long_namespace_closebrace_comment = 0
mod_add_long_class_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_case_sensitive = false
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 = ignore
mod_remove_empty_return = false
mod_enum_last_comma = ignore
mod_sort_oc_properties = false
mod_sort_oc_property_class_weight = 0
mod_sort_oc_property_thread_safe_weight = 0
mod_sort_oc_property_readwrite_weight = 0
mod_sort_oc_property_reference_weight = 0
mod_sort_oc_property_getter_weight = 0
mod_sort_oc_property_setter_weight = 0
mod_sort_oc_property_nullability_weight = 0
pp_indent = ignore
pp_indent_at_level = false
pp_indent_count = 1
pp_space = 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_ignore_define_body = false
pp_indent_case = true
pp_indent_func_def = true
pp_indent_extern = true
pp_indent_brace = true
include_category_0 = ""
include_category_1 = ""
include_category_2 = ""
use_indent_func_call_param = true
use_indent_continue_only_once = false
indent_cpp_lambda_only_once = false
use_sp_after_angle_always = false
use_options_overriding_for_qt_macros = true
use_form_feed_no_more_as_whitespace_character = false
warn_level_tabs_found_in_verbatim_string_literals = 2
debug_max_number_of_loops = 0
debug_line_number_to_protocol = 0
debug_timeout = 0
debug_truncate = 0
# option(s) with 'not default' value: 1
#

@ -1,2 +0,0 @@
indent_columns = 2
indent_align_assign = false

@ -1,4 +0,0 @@
sp_func_call_paren = remove
indent_columns = 4
indent_with_tabs = 0
indent_off_after_return_new = true

@ -1,13 +0,0 @@
sp_before_byref = remove
sp_before_square = force
sp_func_proto_paren = remove
sp_func_def_paren = remove
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
sp_before_vardef_square = force

@ -1,12 +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
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

@ -1,12 +0,0 @@
sp_arith = force
sp_before_ptr_star = force
sp_after_ptr_star = remove
sp_before_byref = remove
sp_inside_angle = remove
sp_after_angle = force
indent_columns = 3
indent_class = true
indent_access_spec = 2
nl_func_var_def_blk = 1
nl_fdef_brace = add
mod_paren_on_return = add

@ -1,4 +0,0 @@
sp_before_ptr_star = force
sp_after_ptr_star = remove
indent_columns = 3
align_var_struct_span = 3

@ -1,10 +0,0 @@
sp_inside_paren = remove
sp_before_ptr_star = force
sp_between_ptr_star = remove
sp_after_ptr_star = remove
indent_columns = 3
indent_class = true
nl_fdef_brace = add
align_var_def_span = 2
align_var_def_star_style = 1
mod_paren_on_return = add

@ -1,2 +0,0 @@
indent_columns = 3
align_right_cmt_span = 3

@ -1,3 +0,0 @@
sp_before_ptr_star = force
sp_after_ptr_star = remove
indent_columns = 3

@ -1,5 +0,0 @@
sp_before_tr_emb_cmt = force
sp_num_before_tr_emb_cmt = 4
indent_columns = 4
indent_with_tabs = 0
nl_end_of_file = remove

@ -1,3 +0,0 @@
sp_before_byref = force
sp_after_byref = force
sp_addr = force

@ -1,4 +0,0 @@
# Places the byref as follows: "int & foo"
sp_before_byref = force
indent_columns = 3
indent_class = true

@ -1,4 +0,0 @@
# Places the byref as follows: "int& foo"
sp_before_byref = remove
indent_columns = 3
indent_class = true

@ -1,28 +0,0 @@
#
# a simple list of stuff that should be detected as a CT_TYPE
# this usually isn't necessary because types are detected from the context.
#
# In the future, I may allow arbitrary CT_xxx stuff to be specified, as
# well as a language
#
INT8
UINT8
INT16
UINT16
INT32
UINT32
INT64
UINT64
FLOAT
CHAR
DOUBLE
TRUE
FALSE
BOOL
FILE
DIR
# this is for the type-cast.c test
bat

@ -1,5 +0,0 @@
sp_arith = force
sp_before_ptr_star = remove
sp_after_ptr_star = force
indent_columns = 4
nl_collapse_empty_body = true

@ -1,8 +0,0 @@
# Forces a space after an operator
sp_before_byref = remove
sp_after_byref = force
sp_after_operator = force
sp_after_operator_sym = force
indent_columns = 3
indent_class = true
align_right_cmt_span = 2

@ -1,11 +0,0 @@
# Removes a space after an operator
sp_before_byref = remove
sp_after_byref = force
sp_after_operator = remove
sp_after_operator_sym = remove
indent_columns = 3
indent_class = true
align_var_def_span = 2
align_var_class_span = 2
align_right_cmt_span = 2
align_mix_var_proto = true

@ -1,12 +0,0 @@
# Removes a space after an operator
sp_before_byref = remove
sp_after_byref = force
sp_after_operator = remove
sp_after_operator_sym = remove
indent_columns = 3
indent_class = true
align_var_def_span = 2
align_var_class_span = 2
align_right_cmt_span = 2
align_on_operator = true
align_mix_var_proto = true

@ -1,7 +0,0 @@
# Removes a space after an operator
sp_before_byref = remove
sp_after_byref = force
sp_after_operator = remove
sp_after_operator_sym = remove
indent_columns = 3
indent_class = true

@ -1,4 +0,0 @@
sp_arith = force
sp_before_ptr_star = remove
sp_after_ptr_star = force
indent_columns = 4

@ -1,3 +0,0 @@
sp_arith = add # keep
sp_before_ptr_star = force
sp_after_ptr_star = remove

@ -1,2 +0,0 @@
sp_before_ptr_star = remove
sp_after_ptr_star = force

@ -1,9 +0,0 @@
sp_before_ptr_star = force
sp_between_ptr_star = remove
sp_after_ptr_star = remove
sp_before_byref = force
sp_after_byref = remove
macro-close NS_SWIFT_NAME
macro-close VIEW_CONTROLLER_MACRO
macro-close MACRO_FUNCTION

@ -1,5 +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

@ -1,11 +0,0 @@
sp_before_byref = force
sp_after_byref = remove
sp_after_operator_sym = remove
sp_func_proto_paren = force
sp_inside_fparen = force
nl_max = 2
align_var_def_amp_style = 1
align_right_cmt_span = 15
align_func_proto_span = 100
align_func_proto_gap = 5
align_on_operator = true

@ -1,5 +0,0 @@
sp_before_tr_emb_cmt = add
sp_num_before_tr_emb_cmt = 2
indent_columns = 2
nl_end_of_file = force
nl_end_of_file_min = 1

@ -1,5 +0,0 @@
sp_before_tr_emb_cmt = force
sp_num_before_tr_emb_cmt = 2
indent_columns = 2
nl_end_of_file = force
nl_end_of_file_min = 1

@ -1,12 +0,0 @@
sp_before_byref = remove
sp_after_comma = force
sp_func_call_paren = force
sp_func_call_paren_empty = remove
sp_return_paren = remove
indent_columns = 3
nl_func_var_def_blk = 1
nl_fcall_brace = add
nl_fdef_brace = add
align_func_params = true
align_var_def_star_style = 1
mod_paren_on_return = add

@ -1,13 +0,0 @@
sp_before_byref = remove
sp_after_comma = force
sp_func_call_paren = force
sp_func_call_paren_empty = remove
sp_func_class_paren_empty = force
sp_return_paren = remove
indent_columns = 3
nl_func_var_def_blk = 1
nl_fcall_brace = add
nl_fdef_brace = add
align_func_params = true
align_var_def_star_style = 1
mod_paren_on_return = add

@ -1,13 +0,0 @@
sp_before_byref = remove
sp_after_comma = force
sp_func_def_paren_empty = force
sp_func_call_paren = force
sp_func_call_paren_empty = remove
sp_return_paren = remove
indent_columns = 3
nl_func_var_def_blk = 1
nl_fcall_brace = add
nl_fdef_brace = add
align_func_params = true
align_var_def_star_style = 1
mod_paren_on_return = add

@ -1,13 +0,0 @@
sp_before_byref = remove
sp_after_comma = force
sp_func_proto_paren_empty = force
sp_func_call_paren = force
sp_func_call_paren_empty = remove
sp_return_paren = remove
indent_columns = 3
nl_func_var_def_blk = 1
nl_fcall_brace = add
nl_fdef_brace = add
align_func_params = true
align_var_def_star_style = 1
mod_paren_on_return = add

@ -1,5 +0,0 @@
# Add or remove space between an open paren and comma: '(,' vs. '( ,'. Default=Force.
sp_paren_comma = remove
# should not be used
sp_before_comma = force

@ -1,17 +0,0 @@
# remove spaces around template defs
tok_split_gte = true
sp_arith = force
sp_compare = force
sp_before_byref = remove
sp_after_byref = force
sp_before_angle = remove
sp_inside_angle = remove
sp_inside_angle_empty = remove
sp_after_angle = remove
sp_angle_paren_empty = remove
sp_inside_braces_struct = force
sp_inside_braces = force
sp_func_proto_paren = remove
sp_func_call_paren = remove
indent_columns = 3
indent_class = true

@ -1,961 +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 clark.cfg cpp/indent-c.cpp
02103 clark.cfg cpp/output.cpp
30000 ben_001.cfg cpp/cout.cpp
30001 sp_angle_colon.cfg cpp/alt_tokens.cpp
30002 ben_003.cfg cpp/constructor.cpp
30003 ben_004.cfg cpp/strings.cpp
30010 ben_005.cfg cpp/class.h
30011 ben_006.cfg cpp/misc.cpp
30012 avalon2.cfg cpp/misc2.cpp
30013 sim.cfg cpp/sim.h
30014 indent_columns-3.cfg cpp/ctor-var.cpp
30015 ben_008.cfg cpp/exception.cpp
30016 custom-open.cfg cpp/custom-open.cpp
30017 custom-open2.cfg cpp/custom-open.cpp
30018 ben_009.cfg cpp/class-addr.h
30019 ben_010.cfg cpp/wacky-template.cpp
30020 ben_011.cfg cpp/bool.cpp
30021 ben_012.cfg cpp/byref.cpp
30022 ben_013.cfg cpp/extern_c.h
30023 ben_014.cfg cpp/templates.cpp
30024 class-nl_func-add.cfg cpp/class-init.cpp
30025 class-nl_func-del.cfg cpp/class-init.cpp
30026 byref-left.cfg cpp/byref.cpp
30027 byref-right.cfg cpp/byref.cpp
30028 byref-center.cfg cpp/byref.cpp
30029 ben_015.cfg cpp/init_align.h
30030 avalon.cfg cpp/Timestamp.h
30031 avalon.cfg cpp/operator.cpp
30032 op-space-force.cfg cpp/operator.cpp
30033 op-space-remove.cfg cpp/operator.cpp
30034 op-space-force.cfg cpp/operator_proto.cpp
30035 op-space-remove.cfg cpp/operator_proto.cpp
30036 op-space-remove-align-1.cfg cpp/operator.cpp
30037 op-space-remove-align-1.cfg cpp/operator_proto.cpp
30038 op-space-remove-align-2.cfg cpp/operator.cpp
30039 op-space-remove-align-2.cfg cpp/operator_proto.cpp
30040 nl_class-r.cfg cpp/nl-class.h
30041 nl_class-a.cfg cpp/nl-class.h
30042 Issue_2020.cfg cpp/Issue_2020.cpp
30043 nl_func_call_empty-r.cfg cpp/nl_func_call_empty.cpp
30044 nl_func_call_paren_empty-r.cfg cpp/nl_func_call_paren_empty.cpp
30045 nl_func_decl_1.cfg cpp/nl_func_decl.cpp
30046 nl_func_decl_2.cfg cpp/nl_func_decl.cpp
30047 nl_func_paren_empty.cfg cpp/nl_func_paren_empty.cpp
30048 nl_func_def_paren_empty-r.cfg cpp/nl_func_def_paren_empty.cpp
30049 nl_func_call_paren-f.cfg cpp/nl_func_call_paren.cpp
30050 nl_namespace-r.cfg cpp/nl-namespace.h
30051 nl_namespace-a.cfg cpp/nl-namespace.h
30052 nl_try-a.cfg cpp/try-catch-nl.cpp
30053 sp_catch_brace.cfg cpp/exception.cpp
30054 Issue_2091.cfg cpp/Issue_2091.cpp
30055 nl_after_func_body.cfg cpp/nl_func.cpp
30056 nl_after_func_body-2.cfg cpp/nl_func.cpp
30057 nl_inside_namespace_1.cfg cpp/nl_inside_namespace.cpp
30058 nl_inside_namespace_2.cfg cpp/nl_inside_namespace.cpp
30059 Issue_2186.cfg cpp/Issue_2186.cpp
30060 Issue_1734.cfg cpp/Issue_1734.cpp
# Class colon positioning
30061 class-colon-pos-eol.cfg cpp/class-init.cpp
30062 class-colon-pos-sol.cfg cpp/class-init.cpp
30063 class-colon-pos-eol-add.cfg cpp/class-init.cpp
30064 class-colon-pos-sol-add.cfg cpp/class-init.cpp
30065 class-colon-pos-sol.cfg cpp/Example.h
30066 class-on-colon-indent.cfg cpp/class-init.cpp
30067 nl_func_class_scope-a.cfg cpp/nl_func_type_name.cpp
30068 nl_func_class_scope-a.cfg cpp/nl_func_scope_name.cpp
30069 nl_func_class_scope-a.cfg cpp/class-implementation.cpp
30070 nl_func_scope_name-a.cfg cpp/nl_func_scope_name.cpp
30071 lineEndings-to-Win.cfg cpp/lineEndings-Mac.cpp
30072 lineEndings-to-Unix.cfg cpp/lineEndings-Win.cpp
30073 lineEndings-to-Mac.cfg cpp/lineEndings-Unix.cpp
30074 empty.cfg cpp/bom.cpp
30075 empty.cfg cpp/goto.cpp
30076 Issue_2594.cfg cpp/Issue_2594.cpp
30077 Issue_2596.cfg cpp/Issue_2596.cpp
30078 empty.cfg cpp/Issue_2672-a.cpp
30079 empty.cfg cpp/Issue_2672-b.cpp
30080 nl_brace_brace-a.cfg cpp/nl_brace_brace.cpp
30081 Issue_2383.cfg cpp/Issue_2383.cpp
30082 Issue_931.cfg cpp/Issue_931.cpp
30083 Issue_995-do.cfg cpp/Issue_995-do.cpp
30084 Issue_1184.cfg cpp/Issue_1184.cpp
30085 nSolve.cfg cpp/align_class.cpp
30086 align_class-constr.cfg cpp/align_class-constr.cpp
30087 Issue_1511.cfg cpp/Issue_1511.cpp
30088 Issue_2561.cfg cpp/Issue_2561.cpp
30089 Issue_2281.cfg cpp/Issue_2281.cpp
30090 bug_488.cfg cpp/bug_488.cpp
30091 bug_472.cfg cpp/bug_472.cpp
30092 ben_016.cfg cpp/bug_481.cpp
30093 sp_after_cast.cfg cpp/bug_484.cpp
30094 align-1.cfg cpp/bug_495.cpp
30095 ben_017.cfg cpp/bug_485.cpp
30096 bug_1854.cfg cpp/bug_1854.cpp
30097 align-1.cfg cpp/issue_1946.cpp
30098 Issue_2692.cfg cpp/Issue_2692.cpp
30099 sp_arith-f.cfg cpp/bug_1127.cpp
30100 nl_template-f.cfg cpp/templates.cpp
30101 nl_template-r.cfg cpp/templates.cpp
30102 template_sp-force.cfg cpp/templates.cpp
30103 template_sp-remove.cfg cpp/templates.cpp
30104 avalon3.cfg cpp/templ_class.h
30105 avalon4.cfg cpp/av.h
30106 nl_template-f.cfg cpp/templates2.cpp
30107 nl_template-r.cfg cpp/templates2.cpp
30108 nl_template-r.cfg cpp/templates3.cpp
30109 empty.cfg cpp/templates4.cpp
30110 class-nl_func-add2.cfg cpp/class-init.cpp
30111 indent_columns-4.cfg cpp/bug_1346.h
30112 bug_1432.cfg cpp/bug_1432.cpp
30113 bug_1452.cfg cpp/bug_1452.cpp
30114 template_sp-remove.cfg cpp/bug_1462.cpp
30115 empty.cfg cpp/Issue_1704.cpp
30116 Issue_1052.cfg cpp/Issue_1052.cpp
30117 Issue_2343.cfg cpp/Issue_2343.cpp
30118 Issue_2758.cfg cpp/Issue_2758.cpp
30119 Issue_2879.cfg cpp/Issue_2879.cpp
30120 template_sp-force.cfg cpp/sp_after_angle.cpp
30121 template_sp-remove.cfg cpp/sp_after_angle.cpp
30122 sp_inside_fparen-f.cfg cpp/sp_after_angle.cpp
30123 sp_inside_fparen-r.cfg cpp/sp_after_angle.cpp
30124 sp_after_angle-1.cfg cpp/sp_after_angle.cpp
30125 sp_after_angle-2.cfg cpp/sp_after_angle.cpp
30126 sp_after_angle-3.cfg cpp/sp_after_angle.cpp
30127 empty.cfg cpp/Issue_2565.cpp
30128 Issue_2873.cfg cpp/Issue_2873.cpp
30129 Issue_2890.cfg cpp/Issue_2890.cpp
30130 brace-allman.cfg cpp/if-constexpr.cpp
30131 Issue_3010.cfg cpp/Issue_3010.cpp
30132 sp_brace_catch.cfg cpp/sp_brace_catch.cpp
30200 bug_1862.cfg cpp/bug_1862.cpp
30201 cmt_indent-1.cfg cpp/cmt_indent.cpp
30202 cmt_indent-2.cfg cpp/cmt_indent.cpp
30203 cmt_indent-3.cfg cpp/cmt_indent.cpp
30204 indent_columns-4.cfg cpp/comment-align.cpp
30205 indent_columns-4.cfg cpp/cmt_right.cpp
30206 empty.cfg cpp/cmt_backslash_eol.cpp
30207 indent_class-t_columns-4.cfg cpp/cmt_indent_pp.h
30208 bug_1108.cfg cpp/bug_1108.cpp
30209 empty.cfg cpp/bug_1134.cpp
30210 empty.cfg cpp/bug_1338.cpp
30211 space_indent_class-t_columns-4.cfg cpp/indent_comment_align_thresh.cpp
30212 indent_comment_align_thresh_2.cfg cpp/indent_comment_align_thresh.cpp
30213 align_right_comment.cfg cpp/align_right_comment.cpp
30214 issue_1887.cfg cpp/align_across_braces.cpp
30215 empty.cfg cpp/Issue_2099.cpp
30216 Issue_2302.cfg cpp/Issue_2302.cpp
30217 empty.cfg cpp/2138.cpp
30218 sp_trailing_return-f.cfg cpp/trailing_return.cpp
30219 sp_trailing_return-r.cfg cpp/trailing_return.cpp
30220 bug_1340.cfg cpp/bug_1340.cpp
30221 Issue_2914.cfg cpp/Issue_2914.cpp
30222 sp_assign_default.cfg cpp/trailing_return.cpp
30223 sp_enum_colon.cfg cpp/sp_enum_colon.cpp
30224 sp_enum_colon-r.cfg cpp/sp_enum_colon.cpp
30230 sp_type_func-r.cfg cpp/sp_type_func.cpp
30231 sp_type_func-f.cfg cpp/sp_type_func.cpp
30232 sp_type_func-1.cfg cpp/sp_type_func.cpp
30233 sp_type_func-2.cfg cpp/sp_type_func.cpp
30234 functype_param-r.cfg cpp/functype_param.cpp
30235 functype_param-f.cfg cpp/functype_param.cpp
30240 align_func_params-t.cfg cpp/align_func_params.cpp
30241 align_func_params_span-1.cfg cpp/align_func_params.cpp
30242 align_func_params_gap.cfg cpp/align_func_params.cpp
30243 align_func_params_thresh_1.cfg cpp/align_func_params.cpp
30244 align_func_params_thresh_2.cfg cpp/align_func_params.cpp
30245 align_func_params_thresh_3.cfg cpp/align_func_params.cpp
30246 align_func_params_thresh_4.cfg cpp/align_func_params.cpp
30247 empty.cfg cpp/Issue_2332.cpp
30248 Issue_2831.cfg cpp/Issue_2831.cpp
30249 align-330.cfg cpp/align-330.cpp
30250 align_fcall.cfg cpp/align_fcall.cpp
30251 align_fcall-2.cfg cpp/align_fcall.cpp
30253 empty.cfg cpp/align_left_shift.cpp
30254 empty.cfg cpp/align_left_shift2.cpp
30255 ben_018.cfg cpp/align_constr.cpp
30256 empty.cfg cpp/func_call.cpp
30257 indent_columns-4.cfg cpp/func_call_chain.cpp
30258 indent_columns-3.cfg cpp/casts.cpp
30259 sp_after_constr_colon.cfg cpp/sp_after_constr_colon.cpp
30260 var_def_gap.cfg cpp/var_def_gap.cpp
30261 align_var_def_thresh_1.cfg cpp/align_var_def_thresh.cpp
30262 align_var_def_thresh_2.cfg cpp/align_var_def_thresh.cpp
30263 align_var_def_thresh_3.cfg cpp/align_var_def_thresh.cpp
30264 Issue_2668.cfg cpp/Issue_2668.cpp
30265 long_br_cmt.cfg cpp/long_br_cmt.cpp
30266 Issue_2921.cfg cpp/Issue_2921.cpp
30267 Issue_2930.cfg cpp/Issue_2930.cpp
30268 Issue_2692.cfg cpp/Issue_3018.cpp
30270 const_throw.cfg cpp/const_throw.cpp
30271 sp_throw_paren-r.cfg cpp/sp_throw_paren.cpp
30272 sp_throw_paren-f.cfg cpp/sp_throw_paren.cpp
30273 sp_cparen_oparen-f.cfg cpp/sp_cparen_oparen.cpp
30274 sp_cparen_oparen-r.cfg cpp/sp_cparen_oparen.cpp
30275 empty.cfg cpp/bug_1321.cpp
30278 bug_1439.cfg cpp/bug_1439.cpp
30279 indent_inside_ternary_operator.cfg cpp/indent-inside-ternary-operator.cpp
30280 sp_dc.cfg cpp/sf557.cpp
30281 Issue_2478.cfg cpp/Issue_2478.cpp
30282 Issue_2703.cfg cpp/Issue_2703.cpp
30290 indent_shift.cfg cpp/align_left_shift.cpp
30291 indent_shift.cfg cpp/indent_shift.cpp
30292 align_eigen_comma_init.cfg cpp/eigen.cpp
30293 pos_shift-lead.cfg cpp/pos_shift.cpp
30294 pos_shift-trail.cfg cpp/pos_shift.cpp
30295 pos_shift-join.cfg cpp/pos_shift.cpp
30300 ben_020.cfg cpp/enum_shr.cpp
30301 al.cfg cpp/enum_class.h
30302 bug_1315.cfg cpp/bug_1315.cpp
30303 Issue_2902.cfg cpp/Issue_2902.cpp
# TODO: Make a tests for a braced_init_list. See also 34153-34166.
30310 sp_word_brace_force.cfg cpp/braced_init_list.cpp
30311 sp_word_brace_remove.cfg cpp/uniform_initialization.cpp
30312 sp_inside_type_brace_init_lst-f.cfg cpp/return_init_list.cpp
30313 sp_brace_brace-r.cfg cpp/sp_brace_brace.cpp
30314 sp_brace_brace-f.cfg cpp/sp_brace_brace.cpp
30315 issue_1997.cfg cpp/return_braced_init.cpp
30316 Issue_2428.cfg cpp/Issue_2428.cpp
30317 pos_comma-tb.cfg cpp/braced_init_template_decltype.cpp
30318 Issue_2949.cfg cpp/Issue_2949.cpp
30319 Issue_2886.cfg cpp/Issue_2886.cpp
30320 sp_return_paren-r.cfg cpp/returns.cpp
30321 sp_return_paren-f.cfg cpp/returns.cpp
30322 sp_return_brace-r.cfg cpp/returns.cpp
30323 sp_return_brace-f.cfg cpp/returns.cpp
30324 mod_paren_on_return-a.cfg cpp/returns.cpp
30325 mod_paren_on_return-r.cfg cpp/returns.cpp
30326 indent_off_after_return.cfg cpp/indent_off_after_return.cpp
30327 indent_off_after_return.cfg cpp/indent_off_after_return.cpp
30328 nl_type_brace_init_lst-f.cfg cpp/call_brace_init_lst.cpp
30329 nl_type_brace_init_lst-r.cfg cpp/call_brace_init_lst.cpp
30330 Issue_3080.cfg cpp/Issue_3080.cpp
30400 attribute_specifier_seqs.cfg cpp/attribute_specifier_seqs.cpp
30401 Issue_2570.cfg cpp/Issue_2570.cpp
# function def newlines
30701 func-def-1.cfg cpp/function-def.cpp
30702 func-def-2.cfg cpp/function-def.cpp
30703 func-def-3.cfg cpp/function-def.cpp
30705 func_param.cfg cpp/func_param.cpp
30706 bug_1020.cfg cpp/bug_1020.cpp
30711 del_semicolon.cfg cpp/semicolons.cpp
30712 empty.cfg cpp/bug_1158.cpp
30713 empty.cfg cpp/fix_for_relational_operators.cpp
30714 empty.cfg cpp/Issue_1733.cpp
30715 Issue_2942.cfg cpp/Issue_2942.cpp
30720 wessex.cfg cpp/custom-open-2.cpp
30721 Issue_2386.cfg cpp/Issue_2386.cpp
30730 qt-1.cfg cpp/qt-1.cpp
30731 nl_access_spec.cfg cpp/qt-1.cpp
30732 Issue_2734.cfg cpp/Issue_2734.cpp
30740 sef.cfg cpp/sef.cpp
30741 al.cfg cpp/al.cpp
30742 indent_columns-2.cfg cpp/delete.cpp
30745 Issue_2170.cfg cpp/Issue_2170.cpp
30746 DefaultAndDelete-0.cfg cpp/DefaultAndDelete.cpp
30747 DefaultAndDelete-1.cfg cpp/DefaultAndDelete.cpp
30748 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 ben_021.cfg cpp/lambda.cpp
30751 lambda1.cfg cpp/lambda.cpp
30752 lambda2.cfg cpp/lambda.cpp
30753 lambda3.cfg cpp/lambda2.cpp
30754 indent_with_tabs-0.cfg cpp/bug_i_682.h
30755 empty.cfg cpp/bug_i_938.h
30756 bug_1296.cfg cpp/bug_1296.cpp
30757 Issue_3054.cfg cpp/Issue_3054.cpp
30758 Issue_3054-2.cfg cpp/Issue_3054-2.cpp
30761 out-668-F.cfg cpp/out-668.cpp
30762 out-668-T.cfg cpp/out-668.cpp
30763 Issue_2166.cfg cpp/Issue_2166.cpp
30764 Issue_2591.cfg cpp/Issue_2591.cpp
30770 sp_cpp_lambda_square_paren-r.cfg cpp/lambda.cpp
30771 sp_cpp_lambda_square_paren-f.cfg cpp/lambda.cpp
30772 sp_cpp_lambda_square_brace-r.cfg cpp/lambda.cpp
30773 sp_cpp_lambda_square_brace-f.cfg cpp/lambda.cpp
30774 sp_cpp_lambda_paren_brace-r.cfg cpp/lambda.cpp
30775 sp_cpp_lambda_paren_brace-f.cfg cpp/lambda.cpp
30776 sp_cpp_lambda_fparen-r.cfg cpp/sp_cpp_lambda_fparen.cpp
30777 sp_cpp_lambda_fparen-f.cfg cpp/sp_cpp_lambda_fparen.cpp
30780 lambda_in_one_liner.cfg cpp/lambda_in_one_liner.cpp
30781 lambda_in_one_liner.cfg cpp/lambda_brace_list.cpp
30790 Issue_2795.cfg cpp/Issue_2795.cpp
30800 star_pos-0.cfg cpp/align-star-amp-pos.cpp
30801 star_pos-1.cfg cpp/align-star-amp-pos.cpp
30802 star_pos-2.cfg cpp/align-star-amp-pos.cpp
30803 bug_1403.cfg cpp/bug_1403.cpp
30804 block_pointer.cfg cpp/block_pointer.cpp
30805 ptr_star-1.cfg cpp/ptr-star.cpp
30806 ptr_star-2.cfg cpp/ptr-star.cpp
30807 ptr_star-3.cfg cpp/ptr-star.cpp
30808 sp_after_ptr_star_qualifier-f.cfg cpp/ptr-star.cpp
30809 empty.cfg cpp/bug_1289.cpp
30810 ben_022.cfg cpp/ptr-star.cpp
30811 avalon4.cfg cpp/misc3.cpp
30812 ben_023.cfg cpp/misc4.cpp
30813 ben_024.cfg cpp/misc5.cpp
30814 empty.cfg cpp/misc6.cpp
30815 width-2.cfg cpp/cmt-reflow.cpp
30816 cu.cfg cpp/for_long.cpp
30817 indent_columns-3.cfg cpp/cmt-cpp-cont.cpp
30818 bug_1169.cfg cpp/bug_1169.cpp
30819 bug_1170.cfg cpp/bug_1170.cpp
30820 pp_define_at_level-1.cfg cpp/pp-define-indent.cpp
30821 empty.cfg cpp/pp_indent_case.cpp
30822 empty.cfg cpp/pp_indent_brace.cpp
30823 empty.cfg cpp/pp_indent_func_def.cpp
30824 empty.cfg cpp/pp_indent_extern.cpp
30825 Issue_1966.cfg cpp/Issue_1966.cpp
30826 Issue_2319.cfg cpp/Issue_2319.cpp
30827 Issue_1167.cfg cpp/Issue_1167.cpp
30828 bug_1691.cfg cpp/bug_1691.cpp
30829 ptr_star-2.cfg cpp/Issue_2726.cpp
30830 kw_subst2.cfg cpp/kw_subst.cpp
30831 kw_subst.cfg cpp/kw_subst2.cpp
30832 kw_subst4.cfg cpp/kw_subst.cpp
30840 nl_func_type_name_remove.cfg cpp/nl_func_type_name.cpp
30841 nl_func_type_name_force.cfg cpp/nl_func_type_name.cpp
30842 nl_func_type_name_class.cfg cpp/nl_func_type_name.cpp
30843 nl_func_type_name_mixed.cfg cpp/nl_func_type_name.cpp
30844 Issue_2771.cfg cpp/Issue_2771.cpp
30845 ben_026.cfg cpp/deref.cpp
30850 sp_cmt_cpp_start_force.cfg cpp/sp_cmt_cpp_start.cc
30852 sp_paren_qualifier-f.cfg cpp/Issue_2138.cpp
30853 sp_paren_noexcept-f.cfg cpp/noexcept.cpp
30854 Issue_1703.cfg cpp/Issue_1703.cpp
30855 empty.cfg cpp/cpp_move.cpp
30856 sp_cmt_cpp_region-f.cfg cpp/sp_cmt_cpp_region.cpp
30857 sp_cmt_cpp_region-r.cfg cpp/sp_cmt_cpp_region.cpp
30860 sf574.cfg cpp/sf574.cpp
30870 cmt_insert-0.cfg cpp/cmt_insert.cpp
30871 cmt_insert-1.cfg cpp/cmt_insert.cpp
30872 Issue_2752.cfg cpp/Issue_2752.cpp
# will also use the file footer.txt
30880 empty.cfg cpp/bug_1758.cpp
30881 bug_1758-f.cfg cpp/bug_1758-f.cpp
30900 region-0.cfg cpp/region.cpp
30901 region-1.cfg cpp/region.cpp
30902 region-2.cfg cpp/region.cpp
30903 region-3.cfg cpp/region.cpp
30907 Issue_1813.cfg cpp/Issue_1813.cpp
30908 Issue_1813.cfg cpp/Issue_1813-2.cpp
30909 Issue_1813.cfg cpp/Issue_1813-3.cpp
30910 indent_namespace-t.cfg cpp/indent_namespace.h
30911 indent_class-t.cfg cpp/indent_namespace.h
30912 long_namespace.cfg cpp/long_namespace.cpp
30913 indent_namespace-t.cfg cpp/indent_namespace2.h
30914 indent_namespace_single_indent.cfg cpp/indent_namespace_single_indent.h
30915 empty.cfg cpp/bug_1235.cpp
30916 empty.cfg cpp/Issue_1737.cpp
30917 Issue_2345.cfg cpp/Issue_2345-3.cpp
30918 Issue_2345.cfg cpp/Issue_2345-4.cpp
30919 empty.cfg cpp/Issue_2387.cpp
30920 ben_027.cfg cpp/indent-off.cpp
30921 ben_028.cfg cpp/variadic-template.h
30922 sp_before_ellipsis-f.cfg cpp/variadic-template.h
30923 sf.2886991-f.cfg cpp/sf.2886991.cpp
30924 sf.2886991-r.cfg cpp/sf.2886991.cpp
30925 sp_func_call_empty.cfg cpp/function-def.cpp
30926 sp_func_class_empty.cfg cpp/function-def.cpp
30927 sp_func_def_empty.cfg cpp/function-def.cpp
30928 sp_func_proto_empty.cfg cpp/function-def.cpp
30929 bug_1324.cfg cpp/bug_1324.cpp
30930 indent_var_def.cfg cpp/indent_var_def.cpp
30931 indent_var_def_cont-t.cfg cpp/indent_var_def_cont.cpp
30932 empty.cfg cpp/indent_var_def_cont.cpp
30933 indent_paren_after_func_def-t.cfg cpp/indent_paren_after_func_def.cpp
30934 indent_paren_after_func_decl-t.cfg cpp/indent_paren_after_func_decl.cpp
30935 ben_029.cfg cpp/indent-misc.cpp
30936 indent_braces_no.cfg cpp/indent_braces_no.h
30937 indent_param.cfg cpp/indent_param.cpp
30938 empty.cfg cpp/indent_switch_pp.cpp
30939 indent_paren_after_func_call-t.cfg cpp/indent_paren_after_func_call.cpp
30940 mod_case_brace_rm.cfg cpp/case-brace-remove.cpp
30941 Issue_2150.cfg cpp/Issue_2150.cpp
30942 Issue_1692.cfg cpp/Issue_1692.cpp
30943 Issue_2735.cfg cpp/Issue_2735.cpp
30944 sp_paren_comma.cfg cpp/sp_paren_comma.cpp
30945 sp_before_byref-r.cfg cpp/sf.3266678.cpp
30946 sf.3315874.cfg cpp/sf.3315874.h
30947 bug_1689.cfg cpp/bug_1689.cpp
30948 sp_before_byref_func.cfg cpp/sp_before_byref_func.cpp
30949 Issue_2757.cfg cpp/Issue_2757.cpp
30950 sp_before_tr_emb_cmt-f.cfg cpp/sp_before_tr_emb_cmt_input.cpp
30951 sp_before_tr_emb_cmt-a.cfg cpp/sp_before_tr_emb_cmt_input.cpp
30952 sp_before_constr_colon.cfg cpp/sp_before_constr_colon.cpp
30953 constr_colon.cfg cpp/constr_colon.cpp
30954 Issue_2305.cfg cpp/Issue_2305.cpp
30955 indent_ctor_init.cfg cpp/indent_ctor_init.cpp
30956 indent_ctor_init_leading.cfg cpp/indent_ctor_init.cpp
30957 negative_indent.cfg cpp/class-init.cpp
30958 nl_for_leave_one_liners-f.cfg cpp/nl_for_leave_one_liners.cpp
30959 nl_for_leave_one_liners-t.cfg cpp/nl_for_leave_one_liners.cpp
30960 Issue_2151.cfg cpp/Issue_2151.cpp
30961 Issue_2232.cfg cpp/Issue_2232.cpp
30962 nl_assign_leave_one_liners.cfg cpp/nl_assign_leave_one_liners.cpp
30963 Issue_2907.cfg cpp/Issue_2907.cpp
30964 Issue_2823.cfg cpp/Issue_2823.cpp
30970 Issue_2219.cfg cpp/Issue_2219.cpp
30971 Issue_2224.cfg cpp/Issue_2224.cpp
30972 Issue_2229.cfg cpp/Issue_2229.cpp
30973 Issue_2236.cfg cpp/Issue_2236.cpp
30974 empty.cfg cpp/using-alias-in-define.cpp
31000 empty.cfg cpp/digraph.cpp
31001 ben_030.cfg cpp/digraph.cpp
31562 space_indent_class-t_columns-4.cfg cpp/sf562.cpp
31567 align_same_func_call_params-t.cfg cpp/sf567.cpp
31568 Issue_2368.cfg cpp/Issue_2368.cpp
31583 empty.cfg cpp/sf583.cpp
31593 indent_continue-8.cfg cpp/sf593.cpp
31594 issue_672.cfg cpp/issue_672.cpp
31595 issue_1778.cfg cpp/issue_1778.cpp
31596 issue_1782.cfg cpp/issue_1782.cpp
31597 issue_1804.cfg cpp/issue_1804.cpp
31598 Issue_1753.cfg cpp/Issue_1753.cpp
31600 sp_paren_ellipsis-f.cfg cpp/parameter-packs.cpp
31601 sp_paren_ellipsis-r.cfg cpp/parameter-packs.cpp
31602 sp_sizeof_ellipsis-f.cfg cpp/parameter-packs.cpp
31603 sp_sizeof_ellipsis-r.cfg cpp/parameter-packs.cpp
31604 sp_before_ellipsis-f.cfg cpp/parameter-packs.cpp
31605 sp_before_ellipsis-r.cfg cpp/parameter-packs.cpp
31606 sp_type_ellipsis-f.cfg cpp/parameter-packs.cpp
31607 sp_type_ellipsis-r.cfg cpp/parameter-packs.cpp
31608 sp_sizeof_ellipsis_paren-f.cfg cpp/parameter-packs.cpp
31609 sp_sizeof_ellipsis_paren-r.cfg cpp/parameter-packs.cpp
31610 Issue_2085.cfg cpp/Issue_2085.cpp
31620 sp_after_type-f.cfg cpp/sp_after_type.cpp
31621 sp_after_type-i.cfg cpp/sp_after_type.cpp
31622 sp_after_cast-f.cfg cpp/sp_after_type.cpp
31623 sp_after_cast-r.cfg cpp/sp_after_type.cpp
31624 sp_before_ptr_star-f.cfg cpp/sp_after_type.cpp
31625 sp_before_ptr_star-r.cfg cpp/sp_after_type.cpp
31626 sp_decltype_paren-f.cfg cpp/issue_1916.cpp
31627 sp_decltype_paren-r.cfg cpp/issue_1916.cpp
31628 sp_after_decltype-f.cfg cpp/issue_1916.cpp
31629 sp_after_decltype-r.cfg cpp/issue_1916.cpp
31630 sp_after_type-f.cfg cpp/issue_1916.cpp
31631 sp_after_type-r.cfg cpp/issue_1916.cpp
31632 issue_1916.cfg cpp/issue_1916.cpp
31633 sp_after_decltype-f.cfg cpp/sp_after_decltype.cpp
31634 sp_after_decltype-r.cfg cpp/sp_after_decltype.cpp
31635 empty.cfg cpp/sp_decltype.cpp
31636 Issue_1923.cfg cpp/Issue_1923.cpp
31660 nl_func_var_def_blk-1.cfg cpp/issue_1919.cpp
31661 Issue_3097.cfg cpp/Issue_3097.cpp
31700 toggle_processing_cmt.cfg cpp/toggle_processing_cmt.cpp
31701 toggle_processing_cmt2.cfg cpp/toggle_processing_cmt2.cpp
31702 toggle_processing_cmt3.cfg cpp/toggle_processing_cmt.cpp
31703 toggle_processing_cmt4.cfg cpp/toggle_processing_cmt.cpp
31710 empty.cfg cpp/string_replace_tab_chars.cpp
31711 string_replace_tab_chars-t.cfg cpp/string_replace_tab_chars.cpp
31720 ben_031.cfg cpp/bit-colon.cpp
31721 Issue_2689.cfg cpp/Issue_2689.cpp
31730 sp_arith-a.cfg cpp/ms-style-ref.cpp
31740 empty.cfg cpp/I2102.cpp
32000 sp_skip_vbrace_tokens.cfg cpp/sp_skip_vbrace_tokens.cpp
32001 empty.cfg cpp/issue_547_for_each.cpp
32002 empty.cfg cpp/proto-wrap.cpp
32003 align_var_class_span-1.cfg cpp/issue_633_typename.cpp
32004 empty.cfg cpp/issue_624_angle.cpp
32005 align_var_class_span-1.cfg cpp/issue_633_typename.cpp
32006 space_indent_columns-4.cfg cpp/bug_i_687.cpp
32007 Issue_3052.cfg cpp/Issue_3052.cpp
32008 Issue_3034.cfg cpp/Issue_3034.cpp
32100 cpp17.cfg cpp/cpp17.cpp
32105 I2103.cfg cpp/I2103.cpp
32115 2185.cfg cpp/2185.cpp
33000 tab-0-11.cfg cpp/tab-0.cpp
33001 indent_columns-11.cfg cpp/tab-1.cpp
33002 empty.cfg cpp/cmt_convert_tab_to_spaces.cpp
33003 cmt_convert_tab_to_spaces-t.cfg cpp/cmt_convert_tab_to_spaces.cpp
33004 sp_cmt_cpp_start-a.cfg cpp/DoxygenComments.cpp
33005 sp_cmt.cfg cpp/DoxygenComments.cpp
33006 empty.cfg cpp/string_replace_tab_chars.cpp
33007 empty.cfg cpp/NewLine.cpp
33008 NewLine-r.cfg cpp/NewLine.cpp
33009 NewLine-f.cfg cpp/NewLine0.cpp
33010 indent_columns-4.cfg cpp/Q_EMIT.cpp
33011 indent_class-t_columns-4.cfg cpp/static.h
33012 kdepim2.cfg cpp/Q_SIGNAL_SLOT.cpp
33013 kdepim3.cfg cpp/Q_2.cpp
33014 indent_columns-4.cfg cpp/DB.cpp
33015 kdepim5.cfg cpp/Q_FOREACH.cpp
33016 indent_once.cfg cpp/indent.cpp
33017 bug_1160.cfg cpp/bug_1160.cpp
33018 byref-2.cfg cpp/byref-2.cpp
33019 bug_657.cfg cpp/bug_657.cpp
33020 sp_cmt.cfg cpp/bug_662.cpp
33021 bug_633.cfg cpp/bug_633.cpp
33022 empty.cfg cpp/bug_634.cpp
33023 indent_once.cfg cpp/bug_651.cpp
33024 empty.cfg cpp/bug_653.cpp
33025 empty.cfg cpp/bug_654.cpp
33026 empty.cfg cpp/bug_631.cpp
33027 bug_664.cfg cpp/bug_664.cpp
33028 sp_inside_braces_empty-r.cfg cpp/braces_empty.cpp
33029 cast.cfg cpp/cast.cpp
33030 space_indent_columns-4.cfg cpp/Q_FOREVER.cpp
33031 align_assign_span-1.cfg cpp/bug_612.cpp
33032 bug_670.cfg cpp/bug_670.cpp
33033 bug_670.cfg cpp/bug_670.h
33034 bug_671.cfg cpp/bug_671.h
33035 cmt_cpp_to_c-t.cfg cpp/patch_32.cpp
33036 empty.cfg cpp/bug_663.cpp
33037 func_class.cfg cpp/func_class.cpp
33038 func_class.cfg cpp/func_class.h
33039 mod_remove_empty_return-t.cfg cpp/mod_remove_empty_return.cpp
33040 nl_after_func_proto_group-3.cfg cpp/bug_i_411.cpp
33041 nl_after_func_proto-3.cfg cpp/bug_i_411.cpp
33042 nl_after_func_class_proto-3.cfg cpp/bug_i_411.cpp
33043 bug_i_478.cfg cpp/bug_i_478.cpp
33044 sp_before_comma-f.cfg cpp/bug_i_481.cpp
33045 indent_columns-4.cfg cpp/bug_i_width.cpp
33046 bug_i_409-split.cfg cpp/bug_i_409.cpp
33047 bug_i_409-create.cfg cpp/bug_i_409.cpp
33048 bug_i_405.cfg cpp/bug_i_405.cpp
33049 pp-pragma.cfg cpp/pp-pragma.cpp
33050 empty.cfg cpp/issue_523.cpp
33051 empty.cfg cpp/bug_i_503.cpp
33052 empty.cfg cpp/bug_i_512.cpp
33053 space_indent_columns-4.cfg cpp/for_auto.cpp
33054 indent_columns-3.cfg cpp/bug_i_825.cpp
33056 empty.cfg cpp/bug_33056.cpp
33057 bug_1349.cfg cpp/bug_1349.cpp
#33058 sp_arith-a.cfg cpp/stdcall.cpp
33059 mod_remove_empty_return-t.cfg cpp/mod_remove_empty_return-2.cpp
33060 empty.cfg cpp/if_constexpr.cpp
33061 empty.cfg cpp/if_chain_braces.cpp
33062 mod_full_brace_if_chain-t.cfg cpp/if_chain_braces.cpp
33063 mod_full_brace_if_chain_only-t.cfg cpp/if_chain_braces.cpp
33064 if_chain_braces_2.cfg cpp/if_chain_braces.cpp
33069 Issue_2195.cfg cpp/Issue_2195.cpp
33070 code_width-70.cfg cpp/multi_line.cpp
33071 multi_line_1.cfg cpp/multi_line.cpp
33072 multi_line_2.cfg cpp/multi_line.cpp
33073 multi_line_3.cfg cpp/multi_line.cpp
33074 multi_line_4.cfg cpp/multi_line.cpp
33075 multi_line_5.cfg cpp/multi_line.cpp
33076 multi_line_6.cfg cpp/multi_line.cpp
33077 multi_line_7.cfg cpp/multi_line.cpp
33078 multi_line_8.cfg cpp/multi_line.cpp
33079 multi_line_9.cfg cpp/multi_line.cpp
33080 multi_line_10.cfg cpp/multi_line.cpp
33081 space_indent_columns-4.cfg cpp/bug_i_552.cpp
33082 empty.cfg cpp/namespace_namespace.cpp
33083 bug_i_359.cfg cpp/bug_i_359.cpp
33084 op_sym_empty.cfg cpp/op_sym_empty.cpp
33085 indent_with_tabs-0.cfg cpp/bug_i_323.cpp
33086 indent_class-t.cfg cpp/bug_i_568.cpp
33087 space_indent_columns-4.cfg cpp/bug_i_596.cpp
33088 empty.cfg cpp/bug_i_197.cpp
33089 indent_class-t_columns-4.cfg cpp/bug_643.cpp
33090 empty.cfg cpp/gh555.cpp
33091 no_squeeze_ifdef.cfg cpp/squeeze_ifdef.cpp
33092 squeeze_ifdef.cfg cpp/squeeze_ifdef.cpp
33093 sp_angle_paren-f.cfg cpp/sp_angle_paren.cpp
33094 sp_angle_paren_empty.cfg cpp/sp_angle_paren.cpp
33095 bug_i_322.cfg cpp/bug_i_322.cpp
33096 squeeze_ifdef_top.cfg cpp/squeeze_ifdef.cpp
33097 pos_enum_comma-tf.cfg cpp/enum_comma.h
33098 pos_comma-lf.cfg cpp/enum_comma.h
33099 enum_comma-3.cfg cpp/enum_comma.h
33100 enum_comma-4.cfg cpp/enum_comma.h
33101 pos_comma-tb.cfg cpp/enum_comma.h
33102 enum_comma-6.cfg cpp/enum_comma.h
33103 bug_858-f.cfg cpp/bug_858.cpp
33104 bug_858-r.cfg cpp/bug_858.cpp
33105 bug_1001.cfg cpp/bug_1001.cpp
33106 bool-pos-eol-force.cfg cpp/pos_bool_in_template.h
33107 Issue_2688.cfg cpp/Issue_2688.cpp
33108 Issue_2045.cfg cpp/Issue_2045.cpp
33110 enum.cfg cpp/enum.cpp
33120 Issue_2149.cfg cpp/Issue_2149.cpp
33150 indent_columns-4.cfg cpp/bug_i_753.cpp
33151 bug_i_752.cfg cpp/bug_i_752.cpp
33152 bug_1004.cfg cpp/bug_1004.cpp
33160 sp_before_byref-r.cfg cpp/bug_1112.cpp
33161 sp_before_byref-r.cfg cpp/byref-3.cpp
33180 pp_multi_comment.cfg cpp/pp_multi_comment.cpp
33181 Issue_2759.cfg cpp/Issue_2759.cpp
33182 Issue_2794.cfg cpp/Issue_2794.cpp
33200 cmt_multi_first_len_minimum-1.cfg cpp/first_len_minimum.cpp
33201 indent_ctor_members_twice.cfg cpp/indent_ctor_members_twice.cpp
33202 initlist_leading_commas.cfg cpp/initlist_leading_commas.cpp
33203 Issue_2574.cfg cpp/Issue_2574.cpp
33204 Issue_2582.cfg cpp/Issue_2582.cpp
33210 disable_nl_cont.cfg cpp/templates4.cpp
33211 disable_nl_cont.cfg cpp/pp_multi_comment.cpp
33212 disable_nl_cont.cfg cpp/pp-define-indent.cpp
33213 disable_nl_cont.cfg cpp/disable_macro.cpp
33214 Issue_2742.cfg cpp/Issue_2742.cpp
33215 Issue_3055.cfg cpp/Issue_3055.cpp
33216 Issue_3055.cfg cpp/Issue_3055-a.cpp
33217 empty.cfg cpp/Issue_3113.cpp
34001 nl_before_after.cfg cpp/nl_before_after.h
34002 indent_columns-3.cfg cpp/bug_i_793.cpp
34003 nl_max_blank_in_func-1.cfg cpp/nl_max_blank_in_func.cpp
34004 nl_max_blank_in_func-4.cfg cpp/nl_max_blank_in_func.cpp
34005 empty.cfg cpp/nl_max_blank_in_func.cpp
34006 empty.cfg cpp/bug_i_575.cpp
34007 indent_with_tabs-0.cfg cpp/bug_i_928.cpp
34100 empty.cfg cpp/bug_i_525.cpp
34101 empty.cfg cpp/bug_i_646.cpp
34105 bug_i_663.cfg cpp/bug_i_663.cpp
34108 bug_i_666.cfg cpp/bug_i_666.cpp
34112 sp_after_cast-r.cfg cpp/bug_i_889.cpp
34113 nl_before_func_body_def-1.cfg cpp/bug_902.cpp
34114 nl_before_func_body_def-2.cfg cpp/bug_902.cpp
34115 nl_before_func_body_def-2.cfg cpp/nl_before_func_body_def.cpp
34116 nl_before_func_body_def-2.cfg cpp/issue_2000.cpp
34117 extern_func.cfg cpp/extern_func.cpp
34118 Issue_2163.cfg cpp/Issue_2163.cpp
34120 align_assign_span-1.cfg cpp/bug_i_999.cpp
34121 bug_1717.cfg cpp/bug_1717.cpp
34122 Issue_2440.cfg cpp/Issue_2440.cpp
34123 Issue_2440_nl.cfg cpp/Issue_2440_nl.cpp
34130 nl_brace_fparen-f.cfg cpp/bug_i_1000.cpp
34131 nl_brace_fparen-r.cfg cpp/bug_i_1000.cpp
34132 new_op_a.cfg cpp/new_op.cpp
34133 new_op_f.cfg cpp/new_op.cpp
34134 new_op_r.cfg cpp/new_op.cpp
34135 new_op_paren_open_close.cfg cpp/new_op.cpp
34136 sp_balance_nested_parens.cfg cpp/sp_balance_nested_parens.cpp
34140 empty.cfg cpp/bug_1027.cpp
34141 empty.cfg cpp/bug_1005.cpp
34142 sp_before_byref-r.cfg cpp/I1112-1.cpp
34143 I1112-2.cfg cpp/I1112-2.cpp
34144 sp_before_ptr_star-r.cfg cpp/I1112-3.cpp
34145 i683.cfg cpp/i683.cpp
34146 sp_bool-f.cfg cpp/bug_1002.cpp
34147 sp_bool-r.cfg cpp/bug_1002.cpp
34148 nl_before_if_closing_paren-f.cfg cpp/bug_1139.cpp
34149 nl_before_if_closing_paren-r.cfg cpp/bug_1139.cpp
34150 empty.cfg cpp/bug_1032.cpp
34151 indent_else_if-t.cfg cpp/bug_666.cpp
34152 empty.cfg cpp/bug_1068.cpp
34153 nl_type_brace_init_lst-f.cfg cpp/type_brace_init_lst.cpp
34154 nl_type_brace_init_lst-r.cfg cpp/type_brace_init_lst.cpp
34155 nl_type_brace_init_lst_open-f.cfg cpp/type_brace_init_lst.cpp
34156 nl_type_brace_init_lst_open-r.cfg cpp/type_brace_init_lst.cpp
34157 nl_type_brace_init_lst_close-f.cfg cpp/type_brace_init_lst.cpp
34158 nl_type_brace_init_lst_close-r.cfg cpp/type_brace_init_lst.cpp
34159 sp_type_brace_init_lst-f.cfg cpp/type_brace_init_lst.cpp
34160 sp_type_brace_init_lst-r.cfg cpp/type_brace_init_lst.cpp
34161 sp_inside_type_brace_init_lst-f.cfg cpp/type_brace_init_lst.cpp
34162 sp_inside_type_brace_init_lst-r.cfg cpp/type_brace_init_lst.cpp
34163 sp_after_type_brace_init_lst_open-f.cfg cpp/type_brace_init_lst.cpp
34164 sp_after_type_brace_init_lst_open-r.cfg cpp/type_brace_init_lst.cpp
34165 sp_before_type_brace_init_lst_close-f.cfg cpp/type_brace_init_lst.cpp
34166 sp_before_type_brace_init_lst_close-r.cfg cpp/type_brace_init_lst.cpp
34167 nl_func_call_args_multi_line_ignore_closures.cfg cpp/nl_func_call_args_multi_line_ignore_closures.cpp
34168 nl_type_brace_init_lst-r.cfg cpp/Issue_2910.cpp
34169 sp_inside_fparens-f.cfg cpp/init-list-call.cpp
34170 empty.cfg cpp/i1082.cpp
34171 empty.cfg cpp/i1181.cpp
34172 space_indent_columns-4.cfg cpp/i1165.cpp
34173 arith-vs-ptr.cfg cpp/i1464.cpp
34174 arith-vs-ptr.cfg cpp/i1466.cpp
34175 align_assign_span-1.cfg cpp/i1509.cpp
34176 align_assign_span-1.cfg cpp/i1509_bug_1112_correction.cpp
34177 sp_func_call_paren.cfg cpp/sp_func_call_paren.cpp
34180 bug_1402.cfg cpp/bug_1402.cpp
34190 bug_1003.cfg cpp/bug_1003.cpp
34191 empty.cfg cpp/comment-align-multiline.cpp
34192 mod_remove_extra_semicolon-t.cfg cpp/i1207.cpp
34193 empty.cfg cpp/i1218.cpp
34194 sp_arith_additive-f.cfg cpp/sp_arith_additive.cpp
34195 sp_arith_additive-r.cfg cpp/sp_arith_additive.cpp
34196 Issue_1460.cfg cpp/Issue_1460.h
34197 bug_1161.cfg cpp/bug_1161.cpp
34198 sp_dc.cfg cpp/bug_1249.cpp
34199 empty.cfg cpp/not_lambda.cpp
34200 i1536.cfg cpp/i1536.cpp
34201 mod_add_long_namespace_closebrace_comment-1.cfg cpp/i1565.cpp
34202 mod_add_long_namespace_closebrace_comment-1.cfg cpp/i1617.cpp
34203 i1516.cfg cpp/i1516.cpp
34204 align_func_params_span-1.cfg cpp/func_param_indent_leading_comma.cpp
34205 bug_1395.cfg cpp/bug_1395.cpp
34206 indent_semicolon_for_paren-t.cfg cpp/for_loop_head.cpp
34207 indent_first_for_expr-t.cfg cpp/for_loop_head.cpp
34208 nl_func_type_name-r.cfg cpp/conversion_operator.cpp
34209 nl-brAfter-fcallParen.cfg cpp/lambda_selfcalling.cpp
# TODO: Find relevant test cases for 'override'.
34210 empty.cfg cpp/override_virtual.cpp
34211 anonymous_enum.cfg cpp/anonymous_enum.cpp
34250 empty.cfg cpp/bug_1607.cpp
34251 bug_1649.cfg cpp/bug_1649.cpp
34252 nl_after_func_proto_group-3.cfg cpp/issue_2001.cpp
34253 nl_after_func_proto_group-3.cfg cpp/friends.cpp
34254 issue_1985.cfg cpp/issue_1985.cpp
34255 eat_blanks_after_codewidth.cfg cpp/eat_blanks_after_codewidth.cpp
34256 Issue_2836.cfg cpp/Issue_2836.cpp
34280 UNI-29935.cfg cpp/UNI-29935.cpp
34290 sp_type_brace_init_lst-f.cfg cpp/brace_brace_init_lst.cpp
34291 sp_type_brace_init_lst-r.cfg cpp/brace_brace_init_lst.cpp
34292 sp_inside_type_brace_init_lst-f.cfg cpp/brace_brace_init_lst.cpp
34293 sp_inside_type_brace_init_lst-r.cfg cpp/brace_brace_init_lst.cpp
34294 sp_after_type_brace_init_lst_open-f.cfg cpp/brace_brace_init_lst.cpp
34295 sp_after_type_brace_init_lst_open-r.cfg cpp/brace_brace_init_lst.cpp
34296 i1768.cfg cpp/i1768.cpp
34297 align_assign_decl_func-0.cfg cpp/align-assign-mixed.cpp
34298 align_assign_decl_func-1.cfg cpp/align-assign-mixed.cpp
34299 align_assign_decl_func-2.cfg cpp/align-assign-mixed.cpp
# __asm__
34300 bug_1236.cfg cpp/bug_1236.cpp
34301 nl_fdef_brace_cond-f.cfg cpp/nl_fdef_brace_cond-f.cpp
34302 nl_fdef_brace_cond-r.cfg cpp/nl_fdef_brace_cond-r.cpp
34303 nl_fdef_brace_cond-fr.cfg cpp/nl_fdef_brace_cond-fr.cpp
34304 nl_fdef_brace_cond-rf.cfg cpp/nl_fdef_brace_cond-rf.cpp
34305 issue_2124-1.cfg cpp/issue_2124-1.cpp
34306 issue_2124-2.cfg cpp/issue_2124-2.cpp
34307 2203.cfg cpp/2203.cpp
34308 enum_comment_wrap.cfg cpp/enum_comment_wrap.cpp
34309 issue_2209.cfg cpp/issue_2209-1.cpp
34310 issue_2209.cfg cpp/issue_2209-2.cpp
34311 Issue_2250.cfg cpp/Issue_2250.cpp
34312 Issue_2101.cfg cpp/Issue_2101.cpp
34313 Issue_2437.cfg cpp/Issue_2437.cpp
34314 Issue_2604.cfg cpp/Issue_2604.cpp
34315 align_func_proto_thresh_1.cfg cpp/align_func_proto_thresh.cpp
34316 align_func_proto_thresh_2.cfg cpp/align_func_proto_thresh.cpp
34317 align_func_proto_thresh_3.cfg cpp/align_func_proto_thresh.cpp
34318 align_assign_func_proto_1.cfg cpp/align_assign_func_proto.cpp
34319 align_func_proto_thresh_4.cfg cpp/align_func_proto_thresh2.cpp
34320 align_func_proto_thresh_5.cfg cpp/align_func_proto_thresh2.cpp
34321 bug_2285.cfg cpp/bug_2285.cpp
34322 issue_2623_1.cfg cpp/issue_2623.cpp
34323 issue_2623_2.cfg cpp/issue_2623.cpp
34324 issue_2623_3.cfg cpp/issue_2623.cpp
34325 Issue_3025.cfg cpp/Issue_3025.cpp
34326 Issue_3040.cfg cpp/Issue_3040.cpp
34327 Issue_3044.cfg cpp/Issue_3044.cpp
34328 Issue_3048.cfg cpp/Issue_3048.cpp
34330 Issue_3061_0nl.cfg cpp/Issue_3061_0nl.cpp
34331 Issue_3061_0nl.cfg cpp/Issue_3061_1nl.cpp
34332 Issue_3061_0nl.cfg cpp/Issue_3061_2nl.cpp
34333 Issue_3061_1nl.cfg cpp/Issue_3061_0nl.cpp
34334 Issue_3061_1nl.cfg cpp/Issue_3061_1nl.cpp
34335 Issue_3061_1nl.cfg cpp/Issue_3061_2nl.cpp
34336 Issue_3061_2nl.cfg cpp/Issue_3061_0nl.cpp
34337 Issue_3061_2nl.cfg cpp/Issue_3061_1nl.cpp
34338 Issue_3061_2nl.cfg cpp/Issue_3061_2nl.cpp
34339 Issue_3061_3nl.cfg cpp/Issue_3061_0nl.cpp
34340 Issue_3061_3nl.cfg cpp/Issue_3061_1nl.cpp
34341 Issue_3061_3nl.cfg cpp/Issue_3061_2nl.cpp
34350 indent_comma_brace.cfg cpp/indent_comma_brace_glob.cpp
34351 indent_comma_brace.cfg cpp/indent_comma_brace_func.cpp
# Adopt some UT tests
10000 empty.cfg cpp/621_this-spacing.cpp
10001 empty.cfg cpp/622_ifdef-indentation.cpp
10002 623_caret-spacing.cfg cpp/623_caret-spacing.cpp
10003 633_decl-in-func-typedef.cfg cpp/633_decl-in-func-typedef.cpp
10004 empty.cfg cpp/634_extern-c-no-block.cpp
10005 Uncrustify.Cpp.cfg cpp/define-indentation.cpp
10006 dont-detab-strings.cfg cpp/dont-detab-strings.cpp
10007 dont-process-defines.cfg cpp/dont-process-defines.cpp
10008 empty.cfg cpp/PR326_invalid-backslash-eol-csharp.cpp
10009 STUCK_macro-difficulties.cfg cpp/STUCK_macro-difficulties.cpp
10020 U02-Cpp.cfg cpp/macro_spaces.cpp
10021 U03-Cpp.cfg cpp/braces_align.cpp
10022 U04-Cpp.cfg cpp/foreach.cpp
10023 U05-Cpp.cfg cpp/for_auto.cpp
10024 U06-Cpp.cfg cpp/ifcomment.cpp
10025 U07-Cpp.cfg cpp/qtargs.cpp
10026 sp_before_ellipsis-r.cfg cpp/gcc_case_ellipsis.cpp
10027 Issue_3058.cfg cpp/Issue_3058.cpp
10047 U16-Cpp.cfg cpp/UNI-1334.cpp
10048 empty.cfg cpp/UNI-1335.cpp
10050 U18-Cpp.cfg cpp/UNI-1337.cpp
10052 empty.cfg cpp/UNI-1339.cpp
10053 UNI-1340.cfg cpp/UNI-1340.cpp
10054 UNI-1344.cfg cpp/UNI-1344.cpp
10056 UNI-1346.cfg cpp/UNI-1346.cpp
10057 UNI-1347.cfg cpp/UNI-1347.cpp
10060 UNI-1350.cfg cpp/UNI-1350.cpp
10062 UNI-1356.cfg cpp/UNI-1356.cpp
10063 UNI-1358.cfg cpp/UNI-1358.cpp
10069 empty.cfg cpp/UNI-1980.cpp
10070 U21-Cpp.cfg cpp/UNI-1981.cpp
10071 empty.cfg cpp/UNI-1983.cpp
10079 U23-Cpp.cfg cpp/UNI-9650.cpp
10080 UNI-10496.cfg cpp/UNI-10496.cpp
10100 issue_564.cfg cpp/issue_564.cpp
10101 issue_574.cfg cpp/issue_574.cpp
10102 issue_574-i-a.cfg cpp/issue_574.cpp
10103 issue_574-i-b.cfg cpp/issue_574.cpp
10566 empty.cfg cpp/issue_1752.cpp
11000 UNI-12046.cfg cpp/UNI-12046.cpp
20002 UNI-32657.cfg cpp/UNI-32657.cpp
20011 empty.cfg cpp/UNI-38381.cpp
60001 UNI-2650.cfg cpp/UNI-2650.cpp
60002 U25-Cpp.cfg cpp/UNI-16283.cpp
60003 U26-Cpp.cfg cpp/UNI-1288.cpp
60006 UNI-2049.cfg cpp/UNI-2049.cpp
60017 U27-Cpp.cfg cpp/UNI-2683.cpp
60022 U28-Cpp.cfg cpp/UNI-18439.cpp
60025 U29-Cpp.cfg cpp/UNI-19894.cpp
60027 U30-Cpp.cfg cpp/UNI-21506.cpp
60028 U31-Cpp.cfg cpp/UNI-21509.cpp
60029 empty.cfg cpp/UNI-21510.cpp
60030 U33-Cpp.cfg cpp/UNI-21727.cpp
60031 empty.cfg cpp/UNI-21728.cpp
60032 empty.cfg cpp/UNI-21729.cpp
60036 UNI-2680.cfg cpp/UNI-2680.cpp
60038 UNI-30088.cfg cpp/UNI-30088.cpp
60039 U36-Cpp.cfg cpp/UNI-30628.cpp
60042 UNI-18777.cfg cpp/UNI-18777.cpp
60043 nl_remove_extra_newlines-1.cfg cpp/i2033.cpp
60044 nl_fdef_brace-r__nl_collapse_empty_body-t.cfg cpp/i2116.cpp
60045 align_asterisk_after_type_cast.cfg cpp/align_asterisk_after_type_cast.cpp
60046 align_continuation_left_shift.cfg cpp/align_continuation_left_shift.cpp
60047 align_default_after_override.cfg cpp/align_default_after_override.cpp
60048 bug_2322.cfg cpp/bug_2322.cpp
60049 bug_2402.cfg cpp/bug_2402.cpp
60050 mod_remove_extra_semicolon-t.cfg cpp/semicolon-removal-after-ternary-operator.cpp
60051 bug_2371.cfg cpp/bug_2371.cpp
60052 bug_2433_1.cfg cpp/bug_2433_1.cpp
60053 bug_2433_2.cfg cpp/bug_2433_2.cpp
60054 interface-keyword-in-cpp.cfg cpp/interface-keyword-in-cpp.cpp
60055 issue_3116.cfg cpp/issue_3116.cpp
60056 issue_3116.cfg cpp/issue_3116-2.cpp

@ -1,68 +0,0 @@
# d.test ===========
#
# Test cases specifically for the D language.
#
# Range: 40000 - 49999
# test.name config.file input.file output.file
40000 d.cfg d/HashMap.d
40001 d.cfg d/imports.d
40002 d.cfg d/volatile.d
40003 d.cfg d/volatile-1.d
40004 d.cfg d/volatile-2.d
40005 d.cfg d/volatile-3.d
40006 d.cfg d/Lexer.d
40007 d2.cfg d/Lexer.d
40010 d.cfg d/template.d
40011 d2.cfg d/template.d
40020 d.cfg d/funcfunc.d
40021 d.cfg d/tst01.d
40022 d-tst2.cfg d/tst02.d
40023 d.cfg d/bug-indent.d
40024 d3.cfg d/tst03.d
40025 d3a.cfg d/tst03.d
40026 empty.cfg d/wysiwyg_strings.d
40027 empty.cfg d/static_if_in_struct.d
40030 d.cfg d/delegate.d
40035 d.cfg d/enum.d
40040 sort_imports.cfg d/sort_import.d
40050 d.cfg d/strings.d
40051 d.cfg d/numbers.d
40052 d2.cfg d/numbers.d
40060 d.cfg d/casts.d
40061 d.cfg d/const.d
40070 d_sp_paren.cfg d/d_sp_paren.d
40080 d.cfg d/static_if.d
40090 libd.cfg d/square_indent_tab.d
40100 1438.cfg d/1438.d
40201 invariant.cfg d/invariant.d
40300 d.cfg d/extern_.d
40400 mod_full_brace_if_chain_only-t.cfg d/vbraces000.d
40401 empty.cfg d/vbraces001.d
40402 mod_full_brace_if_chain_only-t.cfg d/vbraces002.d
40403 empty.cfg d/template_use.d
40500 empty.cfg d/template_spacing000.d
40501 sp_after_type-r.cfg d/template_spacing001.d
40502 sp_after_type-f.cfg d/template_spacing001.d
40503 sp_after_type-a.cfg d/template_spacing001.d
40504 sp_after_type-r.cfg d/type_spacing000.d
40505 sp_after_type-f.cfg d/type_spacing000.d
40506 sp_after_type-a.cfg d/type_spacing000.d

@ -1,298 +0,0 @@
#ifndef HEADER_ASN1_H
#define HEADER_ASN1_H
#define V_ASN1_UNIVERSAL 0x00
#define V_ASN1_APPLICATION 0x40
#define V_ASN1_CONTEXT_SPECIFIC 0x80
#define V_ASN1_PRIVATE 0xc0
#define V_ASN1_CONSTRUCTED 0x20
#define V_ASN1_PRIMITIVE_TAG 0x1f
#define V_ASN1_PRIMATIVE_TAG 0x1f
#define V_ASN1_APP_CHOOSE -2 /* let the recipient choose */
#define V_ASN1_OTHER -3 /* used in ASN1_TYPE */
#define V_ASN1_ANY -4 /* used in ASN1 template code */
#define V_ASN1_NEG 0x100 /* negative flag */
#define V_ASN1_UNDEF -1
#define V_ASN1_EOC 0
#define V_ASN1_BOOLEAN 1 /**/
#define V_ASN1_INTEGER 2
#define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG)
#define V_ASN1_BIT_STRING 3
#define V_ASN1_OCTET_STRING 4
#define V_ASN1_NULL 5
#define V_ASN1_OBJECT 6 /* object identifier */
#define V_ASN1_OBJECT_DESCRIPTOR 7
#define V_ASN1_EXTERNAL 8 /* external / instance of */
#define V_ASN1_REAL 9
#define V_ASN1_ENUMERATED 10
#define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG)
#define V_ASN1_EMBEDDED_PDV 11
#define V_ASN1_UTF8STRING 12
#define V_ASN1_SEQUENCE 16
#define V_ASN1_SET 17
#define V_ASN1_NUMERICSTRING 18 /**/
#define V_ASN1_PRINTABLESTRING 19
#define V_ASN1_T61STRING 20
#define V_ASN1_TELETEXSTRING 20 /* alias */
#define V_ASN1_VIDEOTEXSTRING 21 /**/
#define V_ASN1_IA5STRING 22
#define V_ASN1_UTCTIME 23
#define V_ASN1_GENERALIZEDTIME 24 /**/
#define V_ASN1_GRAPHICSTRING 25 /**/
#define V_ASN1_ISO64STRING 26 /**/
#define V_ASN1_VISIBLESTRING 26 /* alias */
#define V_ASN1_GENERALSTRING 27 /**/
#define V_ASN1_UNIVERSALSTRING 28 /**/
#define V_ASN1_BMPSTRING 30
/* For use with d2i_ASN1_type_bytes() */
#define B_ASN1_NUMERICSTRING 0x0001
#define B_ASN1_PRINTABLESTRING 0x0002
#define B_ASN1_T61STRING 0x0004
#define B_ASN1_TELETEXSTRING 0x0004
#define B_ASN1_VIDEOTEXSTRING 0x0008
#define B_ASN1_IA5STRING 0x0010
#define B_ASN1_GRAPHICSTRING 0x0020
#define B_ASN1_ISO64STRING 0x0040
#define B_ASN1_VISIBLESTRING 0x0040
#define B_ASN1_GENERALSTRING 0x0080
#define B_ASN1_UNIVERSALSTRING 0x0100
#define B_ASN1_OCTET_STRING 0x0200
#define B_ASN1_BIT_STRING 0x0400
#define B_ASN1_BMPSTRING 0x0800
#define B_ASN1_UNKNOWN 0x1000
#define B_ASN1_UTF8STRING 0x2000
#define B_ASN1_UTCTIME 0x4000
#define B_ASN1_GENERALIZEDTIME 0x8000
#define B_ASN1_SEQUENCE 0x10000
/* For use with ASN1_mbstring_copy() */
#define MBSTRING_FLAG 0x1000
#define MBSTRING_UTF8 (MBSTRING_FLAG)
#define MBSTRING_ASC (MBSTRING_FLAG | 1)
#define MBSTRING_BMP (MBSTRING_FLAG | 2)
#define MBSTRING_UNIV (MBSTRING_FLAG | 4)
#define SMIME_OLDMIME 0x400
#define SMIME_CRLFEOL 0x800
#define SMIME_STREAM 0x1000
struct X509_algor_st;
DECLARE_STACK_OF(X509_ALGOR);
#define DECLARE_ASN1_SET_OF(type) /* filled in by mkstack.pl */
#define IMPLEMENT_ASN1_SET_OF(type) /* nothing, no longer needed */
/* We MUST make sure that, except for constness, asn1_ctx_st and
* asn1_const_ctx are exactly the same. Fortunately, as soon as
* the old ASN1 parsing macros are gone, we can throw this away
* as well... */
typedef struct asn1_ctx_st
{
unsigned char *p; /* work char pointer */
int eos; /* end of sequence read for indefinite encoding */
int error; /* error code to use when returning an error */
int inf; /* constructed if 0x20, indefinite is 0x21 */
int tag; /* tag from last 'get object' */
int xclass; /* class from last 'get object' */
size_t slen; /* length of last 'get object' */
unsigned char * max; /* largest value of p allowed */
unsigned char * q; /* temporary variable */
unsigned char **pp; /* variable */
int line; /* used in error processing */
} ASN1_CTX;
typedef struct asn1_const_ctx_st
{
const unsigned char *p; /* work char pointer */
int eos; /* end of sequence read for indefinite encoding */
int error; /* error code to use when returning an error */
int inf; /* constructed if 0x20, indefinite is 0x21 */
int tag; /* tag from last 'get object' */
int xclass; /* class from last 'get object' */
size_t slen; /* length of last 'get object' */
const unsigned char * max; /* largest value of p allowed */
const unsigned char * q; /* temporary variable */
const unsigned char **pp; /* variable */
int line; /* used in error processing */
} ASN1_const_CTX;
/* These are used internally in the ASN1_OBJECT to keep track of
* whether the names and data need to be free()ed */
#define ASN1_OBJECT_FLAG_DYNAMIC 0x01 /* internal use */
#define ASN1_OBJECT_FLAG_CRITICAL 0x02 /* critical x509v3 object id */
#define ASN1_OBJECT_FLAG_DYNAMIC_STRINGS 0x04 /* internal use */
#define ASN1_OBJECT_FLAG_DYNAMIC_DATA 0x08 /* internal use */
typedef struct asn1_object_st
{
const char *sn, *ln;
int nid;
size_t length;
const unsigned char *data; /* data remains const after init */
int flags; /* Should we free this one */
} ASN1_OBJECT;
#define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */
/* This indicates that the ASN1_STRING is not a real value but just a place
* holder for the location where indefinite length constructed data should
* be inserted in the memory buffer
*/
#define ASN1_STRING_FLAG_NDEF 0x010
/* This flag is used by the CMS code to indicate that a string is not
* complete and is a place holder for content when it had all been
* accessed. The flag will be reset when content has been written to it.
*/
#define ASN1_STRING_FLAG_CONT 0x020
/* This is the base type that holds just about everything :-) */
typedef struct asn1_string_st
{
size_t length;
int type;
unsigned char *data;
/* The value of the following field depends on the type being
* held. It is mostly being used for BIT_STRING so if the
* input data has a non-zero 'unused bits' value, it will be
* handled correctly */
long flags;
} ASN1_STRING;
/* ASN1_ENCODING structure: this is used to save the received
* encoding of an ASN1 type. This is useful to get round
* problems with invalid encodings which can break signatures.
*/
typedef struct ASN1_ENCODING_st
{
unsigned char *enc; /* DER encoding */
size_t len; /* Length of encoding */
int modified; /* set to 1 if 'enc' is invalid */
} ASN1_ENCODING;
/* Used with ASN1 LONG type: if a long is set to this it is omitted */
#define ASN1_LONG_UNDEF 0x7fffffffL
#define STABLE_FLAGS_MALLOC 0x01
#define STABLE_NO_MASK 0x02
#define DIRSTRING_TYPE \
(B_ASN1_PRINTABLESTRING | B_ASN1_T61STRING | B_ASN1_BMPSTRING | B_ASN1_UTF8STRING)
#define PKCS9STRING_TYPE (DIRSTRING_TYPE | B_ASN1_IA5STRING)
/* Declarations for template structures: for full definitions
* see asn1t.h
*/
typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE;
typedef struct ASN1_ITEM_st ASN1_ITEM;
typedef struct ASN1_TLC_st ASN1_TLC;
/* This is just an opaque pointer */
typedef struct ASN1_VALUE_st ASN1_VALUE;
/* Declare ASN1 functions: the implement macro in in asn1t.h */
#define DECLARE_ASN1_FUNCTIONS(type) DECLARE_ASN1_FUNCTIONS_name(type, type)
#define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \
DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, type)
#define DECLARE_ASN1_FUNCTIONS_name(type, name) \
DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name); \
DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name)
#define DECLARE_ASN1_FUNCTIONS_fname(type, itname, name) \
DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name); \
DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name)
#define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \
type *d2i_##name(type **a, const unsigned char **in, size_t len); \
int i2d_##name(const type *a, unsigned char **out); \
DECLARE_ASN1_ITEM(itname)
#define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \
type *d2i_##name(type **a, const unsigned char **in, size_t len); \
int i2d_##name(const type *a, unsigned char **out); \
DECLARE_ASN1_ITEM(name)
#define DECLARE_ASN1_NDEF_FUNCTION(name) \
int i2d_##name##_NDEF(const name * a, unsigned char **out)
#define DECLARE_ASN1_FUNCTIONS_const(name) \
DECLARE_ASN1_ALLOC_FUNCTIONS(name); \
DECLARE_ASN1_ENCODE_FUNCTIONS_const(name, name)
#define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \
type *name##_new(void); \
void name##_free(type *a)
#define DECLARE_ASN1_PRINT_FUNCTION(stname) \
DECLARE_ASN1_PRINT_FUNCTION_fname(stname, stname)
#define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \
int fname##_print_ctx(BIO *out, const stname *x, int indent, \
const ASN1_PCTX * pctx)
/*
* WARNING WARNING WARNING
*
* uncrustify still introduces whitespace in here at some spots, but then
* one might ask how crazy we want to go regarding ## encumbered parsing?
* There's always the copout of INDENT-OFF markers for files like these,
* once you've got them 95% right through uncrustify and that extra 5%
* by hand ;-)
*/
#define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type (type **, const unsigned char **, size_t)
#define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type (type *, unsigned char **)
#define TYPEDEF_I2D_OF_CONST(type) typedef int i2d_of_const_##type (const type *, unsigned char **) /* [i_a] */
#define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type); TYPEDEF_I2D_OF_CONST(type) /* [i_a] */
/* Macro to include ASN1_ITEM pointer from base type */
#define ASN1_ITEM_ref(iptr) (&(iptr##_it))
#define ASN1_ITEM_rptr(ref) (&(ref##_it))
#define DECLARE_ASN1_ITEM(name) \
extern const ASN1_ITEM name##_it;
#define ASN1_STRFLGS_RFC2253 \
(ASN1_STRFLGS_ESC_2253 | \
ASN1_STRFLGS_ESC_CTRL | \
ASN1_STRFLGS_ESC_MSB | \
ASN1_STRFLGS_UTF8_CONVERT | \
ASN1_STRFLGS_DUMP_UNKNOWN | \
ASN1_STRFLGS_DUMP_DER)
DECLARE_STACK_OF(ASN1_INTEGER);
DECLARE_ASN1_SET_OF(ASN1_INTEGER);
DECLARE_STACK_OF(ASN1_GENERALSTRING);
typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY;
DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY);
DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SET_ANY);
#define B_ASN1_DIRECTORYSTRING \
B_ASN1_PRINTABLESTRING | \
B_ASN1_TELETEXSTRING | \
B_ASN1_BMPSTRING | \
B_ASN1_UNIVERSALSTRING | \
B_ASN1_UTF8STRING
#define B_ASN1_DISPLAYTEXT \
B_ASN1_IA5STRING | \
B_ASN1_VISIBLESTRING | \
B_ASN1_BMPSTRING | \
B_ASN1_UTF8STRING
#endif // ifndef HEADER_ASN1_H

@ -1,6 +0,0 @@
whatever *find_node_for_address(whatever2 *foo,
thingy *bar,
whatever3 *(func_ptr)(
whatever4 *foo2,
thingy2 *bar2));
//3456789=123456789=123456789=123456789=123456789=12

@ -1,13 +0,0 @@
class A
{
// crash (two parameter, 2nd string parameter has space)
void check(const QObject *object, const QStringList &strList = QStringList(QString(QLatin1String("one two"))));
// no crash (two parameter, 2nd string parameter has no space)
void check(const QObject *object, const QStringList &strList = QStringList(QString(QLatin1String("one"))));
// no crash (removed QLatin1String)
void check(const QObject *object, const QStringList &strList = QStringList(QString(("one two"))));
// no crash (removed QString(QLatin1String))
void check(const QObject *object, const QStringList &strList = QStringList());
// no crash (removed 1st parameter only)
void check(const QStringList &strList = QStringList(QString(QLatin1String("one two"))));
};

@ -1,6 +0,0 @@
template <typename T>
struct foo {};
Q_DECLARE_METATYPE( foo<int> )
int bar( foo<int> );

@ -1,6 +0,0 @@
template <typename T>
struct foo {};
Q_DECLARE_METATYPE(foo<int>)
int bar(foo<int>);

@ -1,6 +0,0 @@
template <typename T>
struct foo {};
Q_DECLARE_METATYPE(foo<int> )
int bar(foo<int> );

@ -1,6 +0,0 @@
template <typename T>
struct foo {};
Q_DECLARE_METATYPE(foo<int> )
int bar(foo<int> );

@ -1,8 +0,0 @@
class Foo
{
public:
Foo( int bar = 1 );
Foo( const Foo & ) = delete;
Foo &operator= ( const Foo & ) = delete;
~Foo();
};

@ -1,9 +0,0 @@
void foo()
{
for( unsigned p = 0; p < np;
++p )
{
double* o = bar[p];
}
}

@ -1,6 +0,0 @@
int & aa(int & x,int & b); // Sp Before Byref Func, Sp After Byref Func, Sp Before Byref, Sp After Byref
int aa(int & x,int &) // Sp Before Byref, Sp Before Unnamed Byref, Sp After Byref
{
b = aa(x,b);
c = aa(& y,& d); // Sp Addr
}

@ -1,3 +0,0 @@
// test for bug # 633
typedef void (*func)();
typedef void (__stdcall *func)();

@ -1,6 +0,0 @@
namespace hw { namespace stm32 {
class RTC {
};
}} // namespace hw::stm32

@ -1 +0,0 @@
STDMETHOD(GetValues)(BSTR bsName, REFDATA** pData);

@ -1 +0,0 @@
friend std::ostream& operator<<(std::ostream& os, const ScriptingObjectPtr& o);

@ -1,75 +0,0 @@
methodCall([] {
Log();
});
funcCall(
match ( [ & ]( const ContentProps &props) {
return PairingCmpnt()
})
);
match( [ & ]( const ContentProps &props) {
return PairingCmpnt()
});
outerMethodCall(
methodCall(^{
// action
}, x)
);
outerMethodCall(
x,
methodCall(^{
// action
}, y)
);
options({
.cornerRadius = CGFLOAT_MAX,
});
mapToPtr([&](const LeftAddOn::Props &addOnProps) {
FSTheme *const theme = AK::getTheme();
});
mapToPtr(x, [&](const Props &addOnProps) {
FSTheme *const theme = AK::getTheme();
});
mapToPtr([&](const Props &addOnProps) {
FSTheme *const theme = AK::getTheme();
});
methodCall(
arg1,
arg2,
arg3
);
methodCall(arg1, arg2, arg3);
methodCall(
arg1, []{
variant.action.send(Cmpnt);
}, arg3
);
methodCall(
arg1, {
.x = 10,
},
arg3
);
methodCall({
.x = 10,
},
arg3);
methodCall(
arg1, {
.x = 10,
}
);

@ -1,6 +0,0 @@
void Foo1(BarType& x, void BarFunc());
void Bar()
{
void BarFunc2(BarType& x);
}

@ -1,22 +0,0 @@
int main()
{
int a0[][] = {{ 1 }};
unknown_type b0 = {{ 2 }};
auto c0 = unknown_type {{ 3 }};
auto d0 = func( {{ 3 }} );
auto e0 = func( unknown_type {{ 3 }} );
int a1[][] = { {1} };
unknown_type b1 = { {2} };
auto c1 = unknown_type { {3} };
auto d1 = func({ {3} });
auto e1 = func(unknown_type { {3} });
int a2[][] = {{1}};
unknown_type b2 = {{2}};
auto c2 = unknown_type {{3}};
auto d2 = func({{3}});
auto e2 = func(unknown_type {{3}});
return 1;
}

@ -1,22 +0,0 @@
int main()
{
int a0[][] = {{ 1 }};
unknown_type b0 = {{ 2 }};
auto c0 = unknown_type{{ 3 }};
auto d0 = func( {{ 3 }} );
auto e0 = func( unknown_type{{ 3 }} );
int a1[][] = { {1} };
unknown_type b1 = { {2} };
auto c1 = unknown_type{ {3} };
auto d1 = func({ {3} });
auto e1 = func(unknown_type{ {3} });
int a2[][] = {{1}};
unknown_type b2 = {{2}};
auto c2 = unknown_type{{3}};
auto d2 = func({{3}});
auto e2 = func(unknown_type{{3}});
return 1;
}

@ -1,22 +0,0 @@
int main()
{
int a0[][] = { { 1 }};
unknown_type b0 = { { 2 }};
auto c0 = unknown_type { { 3 }};
auto d0 = func( { { 3 }} );
auto e0 = func( unknown_type { { 3 }} );
int a1[][] = { { 1} };
unknown_type b1 = { { 2} };
auto c1 = unknown_type{ { 3} };
auto d1 = func({ { 3} });
auto e1 = func(unknown_type{ { 3} });
int a2[][] = { { 1}};
unknown_type b2 = { { 2}};
auto c2 = unknown_type{ { 3}};
auto d2 = func({ { 3}});
auto e2 = func(unknown_type{ { 3}});
return 1;
}

@ -1,22 +0,0 @@
int main()
{
int a0[][] = {{1 }};
unknown_type b0 = {{2 }};
auto c0 = unknown_type {{3 }};
auto d0 = func( {{3 }} );
auto e0 = func( unknown_type {{3 }} );
int a1[][] = {{1} };
unknown_type b1 = {{2} };
auto c1 = unknown_type{{3} };
auto d1 = func({{3} });
auto e1 = func(unknown_type{{3} });
int a2[][] = {{1}};
unknown_type b2 = {{2}};
auto c2 = unknown_type{{3}};
auto d2 = func({{3}});
auto e2 = func(unknown_type{{3}});
return 1;
}

@ -1,5 +0,0 @@
#include <AClass.h>
#include <SomeClass.h>
#include <TheClass.h>
#include <iostream>
#include <vector>

@ -1,10 +0,0 @@
class C
{
float V
{
get
{
return _v;
}
set { _v = value; } }
}

@ -1,10 +0,0 @@
public unsafe struct QueryKeyNameCommand : IInputDeviceCommandInfo
{
public string ReadKeyName()
{
fixed(QueryKeyNameCommand* thisPtr = &this)
{
return StringHelpers.ReadStringFromBuffer(new IntPtr(thisPtr->nameBuffer), kMaxNameLength);
}
}
}

@ -1,32 +0,0 @@
// should be ddd, eee, fff
#import "ddd"
#import "eee"
#import "fff"
#import "aaa"
#import "ccc"
// should be just bbb
#import "bbb"
#import "sort_import+internal.h"
#import "sort_import+public.h"
#import "sort_import.h"
#import <UIKit/UIKit.h>
#import "Action+Internal.h"
#import "Action+Public.h"
#import "Action.h"
#include "Test+Internal.h"
#include "Test.h"
#import "Something.h"
#import "Something_Internal.h"
#import "Something_Public.h"
#import <KKK>
#import "AAA"
#import "BBB.h"
#include "CCC.h"
#include "DDD"
#import "EEE.h"

@ -1 +0,0 @@
CGFloat fontSize = floorf([font pointSize] * [self tileContentScale] + 0.5);

@ -1,42 +0,0 @@
#import "FOOAddressBookManager.h"
#import <React/RCTBridge.h>
#import <React/RCTEventDispatcher.h>
/*
* #define RCT_EXPORT_METHOD(method) \
* - (void)__rct_export__##method { \
* __attribute__((used, section("__DATA,RCTExport"))) \
* static const char *__rct_export_entry__[] = { __func__, #method }; \
* } \
* - (void)method \
*/
@interface FOOAddressBook : NSObject
@end
@implementation FOOAddressBookManager
RCT_EXPORT_MODULE(FOOAddressBook)
RCT_EXPORT_METHOD(getAddresses:(NSDictionary *) data callback:(RCTResponseSenderBlock) callback)
{
NSMutableArray *addresses = [[FOOAddressBook sharedInstance] getAddresses:data];
if (addresses != nil)
callback(@[[NSNull null], addresses]);
else
callback(@[@"getAddresses returned nil."]);
}
RCT_EXPORT_METHOD(getStatus:(RCTResponseSenderBlock) callback)
{
callback(@[[NSNull null], [[FOOAddressBook sharedInstance] getStatus]]);
}
RCT_EXPORT_METHOD(requestAccess:(RCTResponseSenderBlock) callback)
{
[[FOOAddressBook sharedInstance] requestAccess:^(NSString *status) {
callback(@[[NSNull null], status]);
}];
}
@end

@ -1,45 +0,0 @@
#include <stdlib.h>
#include <stdio.h>
/*----------------------------------------------------------------*/
EXEC SQL INCLUDE SQLCA;
short sqlcode;
EXEC SQL BEGIN DECLARE SECTION;
int host_a;
double host_b;
char host_c;
EXEC SQL END DECLARE SECTION;
EXEC SQL DECLARE csr1 CURSOR FOR
SELECT a, b, c
FROM table1
WHERE x = :hostvar1;
/*----------------------------------------------------------------*/
void main(void)
{
hostvar1 = 42;
EXEC SQL OPEN csr1;
if (sqlcode < 0)
{
exit(0);
}
while (rc >= 0 && rc != 100)
{
EXEC SQL FETCH csr1 INTO :host_a, :host_b, :host_c;
printf("Fetch %d, %lf, %s\n", host_a, host_b, host_c);
}
EXEC SQL CLOSE csr1;
}
void foo(void)
{
strcpy(demoquery1, "some SQL statement");
EXEC SQL prepare demo3id from :demoquery1;
/* a comment */
EXEC SQL declare demo3cursor cursor for demo3id;
}

@ -1,76 +0,0 @@
/*******************************************************
**
** A sample program that demonstrates the use of Static embedded SQL.
** Before compiling this program, be sure you have created a table
** called video and inserted some tuples in it.
**
********************************************************/
#include <stdio.h>
/* sqlca: is the sql communications area. All error codes
* are returned from db2 in that structure which is filled
* each time an interaction with db2 takes place.
*/
EXEC SQL INCLUDE SQLCA; /* SQL communication area structure */
EXEC SQL BEGIN DECLARE SECTION; /* declare host variables */
char db_name[8]; /* database name */
char video_title[30]; /* title of the video */
short video_id; /* serial number */
char director[20]; /* director name */
EXEC SQL END DECLARE SECTION;
/* These lines are redundant here because the default
* action is to continue. They just show the kind of
* errors that could arise and one way to control them.
*/
EXEC SQL WHENEVER SQLWARNING CONTINUE; /* sqlca.sqlcode > 0 */
EXEC SQL WHENEVER SQLERROR CONTINUE; /* sqlca.sqlcode < 0 */
EXEC SQL WHENEVER NOT FOUND CONTINUE; /* sqlca.sqlcode = 100 */
/* sqlca.sqlcode = 0 (no error) */
void main()
{
strcpy(db_name, "csc343h");
/* C variables are preceded by a colon when they are passed to DB2 */
EXEC SQL CONNECT TO :db_name;
if (sqlca.sqlcode != 0)
{
printf("Connect failed!: reason %ld\n", sqlca.sqlcode);
exit(1);
}
/* cursor delcaration. Have to declare a cursor each time you
* want tuples back from db2
*/
EXEC SQL DECLARE c1 CURSOR FOR
SELECT video_title
FROM video;
/* you have to open the cursor in order to get tuples back */
EXEC SQL OPEN c1;
do
{
/* fetch tuples from the cursor. This will execute the statement
* the cursor implements and will return the results */
EXEC SQL FETCH c1 into :video_title;
if (SQLCODE != 0)
{
break; /* SQLCODE refers to sqlca.sqlcode */
}
/* host variables should have ':' prefix when they are used in DB2 commands */
printf("%s\n", video_title);
} while (1);
EXEC SQL CLOSE c1;
EXEC SQL CONNECT RESET;
}

@ -1,8 +0,0 @@
void foo()
{
for( unsigned p = 0; p < np;
++p )
{
double* o = bar[p];
}
}

@ -1,6 +0,0 @@
\
#define CTOR(i, _) : \
T(X()), \
y() \
{ }

@ -1,22 +0,0 @@
int main()
{
int a0[][] = {{ 1 }};
unknown_type b0 = {{ 2 }};
auto c0 = unknown_type {{ 3 }};
auto d0 = func( {{ 3 }} );
auto e0 = func( unknown_type {{ 3 }} );
int a1[][] = { {1} };
unknown_type b1 = { {2} };
auto c1 = unknown_type{ {3} };
auto d1 = func({ {3} });
auto e1 = func(unknown_type{ {3} });
int a2[][] = {{1}};
unknown_type b2 = {{2}};
auto c2 = unknown_type{{3}};
auto d2 = func({{3}});
auto e2 = func(unknown_type{{3}});
return 1;
}

@ -1,6 +0,0 @@
int&aa(int&x,int&b); // Sp Before Byref Func, Sp After Byref Func, Sp Before Byref, Sp After Byref
int aa(int&x,int&) // Sp Before Byref, Sp Before Unnamed Byref, Sp After Byref
{
b = aa(x,b);
c = aa(&y,&d); // Sp Addr
}

@ -1,58 +0,0 @@
methodCall([] {
Log();
});
funcCall(match ( [ & ]( const ContentProps &props) {
return PairingCmpnt()
}));
match( [ & ]( const ContentProps &props) {
return PairingCmpnt()
});
outerMethodCall(methodCall(^{
// action
}, x)
);
outerMethodCall(x, methodCall(^{
// action
}, y));
options({
.cornerRadius = CGFLOAT_MAX,
});
mapToPtr([&](const LeftAddOn::Props &addOnProps) {
FSTheme *const theme = AK::getTheme();
});
mapToPtr(x, [&](const Props &addOnProps) {
FSTheme *const theme = AK::getTheme();
});
mapToPtr([&](const Props &addOnProps) {
FSTheme *const theme = AK::getTheme();
});
methodCall(arg1, arg2,
arg3);
methodCall(arg1, arg2, arg3);
methodCall(arg1, []{
variant.action.send(Cmpnt);
}, arg3);
methodCall(arg1, {
.x = 10,
}, arg3);
methodCall({
.x = 10,
}, arg3);
methodCall(arg1, {
.x = 10,
});

@ -1,6 +0,0 @@
template <typename T>
struct foo {};
Q_DECLARE_METATYPE(foo<int> )
int bar(foo<int> );

@ -1,43 +0,0 @@
#
# Test cases specifically for the Java language.
#
# Range: 80000 - 89999
# test.name config.file input.file
80000 ben_099.cfg java/assert.java
80010 annotation.cfg java/annotation1.java
80011 empty.cfg java/annotation2.java
80012 nl_after_annotation-f.cfg java/annotation2.java
80013 nl_between_annotation-f.cfg java/annotation2.java
80014 annotation.cfg java/annotation2.java
80020 java_foreach.cfg java/foreach.java
80030 indent_var_def.cfg java/variable_aligns.java
80040 empty.cfg java/try.java
80050 jdbi-r.cfg java/double_brace.java
80051 jdbi-f.cfg java/double_brace.java
80060 java_synchronized_1.cfg java/synchronized.java
80061 java_synchronized_2.cfg java/synchronized.java
80062 sp_this_paren.cfg java/sp_this_paren.java
80063 empty.cfg java/i1121.java
80064 mod_add_long_class_closebrace_comment-1.cfg java/long_cl_cmt.java
80065 empty.cfg java/Java8DoubleColon.java
80066 sp_after_for_colon.cfg java/sp_after_for_colon.java
80067 doxy-javadoc-alignment.cfg java/doxy-javadoc-alignment.java
80100 align_same_func_call_params-t.cfg java/sf567.java
80200 sp_before_byref-r.cfg java/sp_before_byref.java
80201 template_angles.cfg java/generics.java
80202 aet.cfg java/generics_wildcard.java
80203 aet.cfg java/generics_return_type.java
80204 aet.cfg java/cast.java
80205 aet.cfg java/sp_after_angle.java
80206 aet.cfg java/annotation3.java
80300 Issue_670.cfg java/Issue_670.java
80301 issue_672.cfg java/issue_672.java
80302 Issue_1845.cfg java/Issue_1845.java
80303 Issue_1122.cfg java/Issue_1122.java
80304 Issue_1124-f.cfg java/Issue_1124.java
80305 Issue_1124-r.cfg java/Issue_1124.java
80306 leading-tabs-for-java-lambda.cfg java/leading-tabs-for-java-lambda.java

@ -1,180 +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 oc1.cfg oc/Fraction.h OC
50002 oc2.cfg oc/Fraction.m
50003 oc2.cfg oc/main.m
50004 oc4.cfg oc/string.m
50005 oc5.cfg oc/Declarations.h OC
50006 oc6.cfg oc/exceptions.m
50007 oc7.cfg oc/misc.m
50008 oc8.cfg oc/protocol.m
50009 oc9.cfg oc/literals.mm
50010 sp_after_oc_return_type_add.cfg oc/return_type.m
50011 sp_after_oc_return_type_force.cfg oc/return_type.m
50012 sp_after_oc_return_type_remove.cfg oc/return_type.m
50014 sp_oc_classname_paren-r.cfg oc/sp_oc_classname_paren-r.m
50015 oc10.cfg oc/receiver.m
50016 oc11.cfg oc/ternary.m
50017 ternary_short.cfg oc/ternary.m
50018 indent_inside_ternary_operator.cfg oc/indent-inside-ternary-operator.m
50020 sp_after_oc_at_sel_add.cfg oc/selector.m
50021 sp_after_oc_at_sel_force.cfg oc/selector.m
50022 sp_after_oc_at_sel_remove.cfg oc/selector.m
50025 oc6.cfg oc/exceptions.m
50026 sp_after_throw_remove.cfg oc/exceptions.m
50030 sort_imports.cfg oc/sort_import.m
50031 mod_sort_incl_import_prioritize_filename.cfg oc/sort_import.m
50032 mod_sort_incl_import_ignore_extension.cfg oc/sort_import.m
50033 mod_sort_incl_import_prioritize_extensionless.cfg oc/sort_import.m
50034 mod_sort_incl_import_prioritize_angle_over_quotes.cfg oc/sort_import.m
50035 mod_sort_incl_import_grouping_enabled.cfg oc/sort_import_group.m
50040 objc_complex_method.cfg oc/complex_method.m
50050 objc_complex_method.cfg oc/real_world_file.m
50060 align_oc_msg_colon_span-1.cfg oc/oc-split.m
50061 bug_167.cfg oc/bug_167.m
50062 aet.cfg oc/issue_2631.m
50070 blocks.cfg oc/blocks.m
50071 sp_before_oc_block_caret_force.cfg oc/blocks.m
50072 sp_before_oc_block_caret_remove.cfg oc/blocks.m
50073 sp_after_oc_block_caret_add.cfg oc/blocks.m
50074 sp_after_oc_block_caret_force.cfg oc/blocks.m
50075 blocks.cfg oc/blocks.m
50076 sp_before_oc_block_caret_remove.cfg oc/blocks.m
50077 blocks.cfg oc/more_blocks.m
50078 sp_before_oc_block_caret_force.cfg oc/more_blocks.m
50079 sp_before_oc_block_caret_remove.cfg oc/more_blocks.m
50080 sp_after_oc_block_caret_add.cfg oc/more_blocks.m
50081 sp_after_oc_block_caret_force.cfg oc/more_blocks.m
50082 blocks.cfg oc/more_blocks.m
50083 sp_before_oc_block_caret_remove.cfg oc/more_blocks.m
50084 nl_brace_square.cfg oc/more_blocks.m
50085 nl_after_func_body-3.cfg oc/block_in_method.m
50086 issue_2643.cfg oc/block_in_method.m
50087 indent_oc_inside_msg_sel.cfg oc/indent_oc_inside_msg_sel.m
50090 oc12.cfg oc/kw.m
50091 issue_2656.cfg oc/block_in_method.m
50095 oc13.cfg oc/box.m
50100 bug_340.cfg oc/bug_340.m
50110 oc14.cfg oc/msg_align.m
50111 del_semicolon.cfg oc/ns_enum.m
50112 empty.cfg oc/ns_enum.m
50113 sp_enum_paren-r.cfg oc/ns_enum.m
50120 gh137.cfg oc/gh137.m
50200 sp_block_as_argument.cfg oc/more_blocks_2.m
50201 sp_block_as_argument.cfg oc/blocks_align.m
50202 sp_block_as_argument2.cfg oc/blocks_align.m
50203 sp_block_as_argument3.cfg oc/blocks_align.m
50204 sp_block_as_argument4.cfg oc/blocks_align.m
50205 sp_block_as_argument5.cfg oc/msg_align.m
50206 aet.cfg oc/issue_2727.m
50207 issue_3031.cfg oc/issue_3031.mm
50300 sp_after_send_oc_colon-f.cfg oc/msg.m
50400 oc16.cfg oc/for.m
50410 oc_cond_colon.cfg oc/oc_cond_colon.m OC+
50411 attribute_specifier_seqs.cfg oc/attribute_specifier_seqs.mm OC+
50500 oc17.cfg oc/code_placeholder.m
50510 gh293.a.cfg oc/gh293.m
50511 gh293.b.cfg oc/gh293.m
50512 sp_oc_catch.cfg oc/sp_oc_catch.m
50513 sp_oc_boxed.cfg oc/sp_oc_boxed.m
50514 indent_boxed.cfg oc/indent_boxed.m
50515 sp_oc_synchronized.cfg oc/sp_oc_synchronized.m
50600 nl_oc_block_brace-f.cfg oc/bug_i_477.m
50601 empty.cfg oc/bug_i_408.m
50602 bug_i_125-412.cfg oc/bug_i_125-412.m
50603 oc18.cfg oc/gh511.m
50604 objc_bug_497.cfg oc/bug_497.m
50605 empty.cfg oc/bug_404.m
50606 oc19.cfg oc/bug_1366.m
50607 aet-sp_after_oc_msg_receiver.cfg oc/sp_after_oc_msg_receiver.m
50608 aet.cfg oc/blocks_align2.m
50609 sp_arith-f.cfg oc/negative_value.m
50610 aet.cfg oc/nelem.m
50611 aet.cfg oc/for2.m
50612 aet.cfg oc/chunk_ends_type1.m
50613 aet.cfg oc/chunk_ends_type2.m
50614 aet.cfg oc/chunk_ends_type3.m
50615 aet.cfg oc/block_literal_protocol.m
50616 aet.cfg oc/oc_msg_in_pp.m
50617 aet.cfg oc/boxed_receiver.m
50618 aet-func_def.cfg oc/func_def.mm
50619 aet.cfg oc/cast.m
50620 aet.cfg oc/sp_after_angle.m
50621 aet.cfg oc/Fraction.h
50622 aet.cfg oc/c-cpp-oc-wrapper.c
50623 aet.cfg oc/extern-c-attribute.m
50624 aet.cfg oc/typeof.m
50625 aet-sp_inside_braces_oc_dict.cfg oc/sp_inside_braces_oc_dict.m
50626 aet.cfg oc/chunk_ends_type4.m
50627 aet.cfg oc/method_ends_semicolon.m
50628 aet.cfg oc/macro-close-brace.m
50629 aet.cfg oc/pp_bool.m
50630 nl_func_call_args_multi_line_ignore_closures.cfg oc/nl_func_call_args_multi_line_ignore_closures.m
50700 cmt_insert-0.cfg oc/cmt_insert.m
50701 cmt_insert-0.cfg oc/cmt_insert2.m
50800 obj-c-properties.cfg oc/properties.m
50801 empty.cfg oc/i1213.m
50802 obj-c-available.cfg oc/available.m
50803 indent_single_newline.cfg oc/indent_single_newline.m
50804 aet.cfg oc/issue_2629.m
50805 aet.cfg oc/issue_2724.m
50810 bug_841.cfg oc/bug_841.m
50811 oc_bug_1674.cfg oc/bug_1674.m
50812 oc_bug_1683.cfg oc/bug_1683.m
50813 sp_before_oc_proto_list_add.cfg oc/sp_before_oc_proto_list.m
50814 sp_before_oc_proto_list_force.cfg oc/sp_before_oc_proto_list.m
50815 sp_before_oc_proto_list_remove.cfg oc/sp_before_oc_proto_list.m
50816 issue_2675.cfg oc/issue_2675.m
50817 aet.cfg oc/issue_2722.m
50900 1927.cfg oc/1927.m
50901 Issue_2172.cfg oc/Issue_2172.m
50902 empty.cfg oc/Issue_2289.m
50903 Issue_681.cfg oc/Issue_681.oc
50904 double_angle_space_1.cfg oc/double_angle_space.m
50905 double_angle_space_2.cfg oc/double_angle_space.m
50906 double_angle_space_3.cfg oc/double_angle_space.m
#
# adopt tests from UT
10018 delete-space-oc.cfg oc/delete-space-oc.mm
10019 empty.cfg oc/func-param-wrap-oc.mm
10020 align-objc-like-xcode.cfg oc/align-objc-like-xcode.m
10021 double-indent-objc-dict.cfg oc/double-indent-objc-dict.m
10022 indent-objc-block.cfg oc/indent-objc-block.m

@ -1,24 +0,0 @@
#
# Test cases specifically for the Pawn language.
#
# Range: 60000 - 69999
# test.name config.file input.file
60000 pawn.cfg pawn/functions.pawn
60001 pawn.cfg pawn/comment.p
60002 pawn.cfg pawn/traffic.p
60003 pawn.cfg pawn/tags.pawn
60004 pawn.cfg pawn/enum.pawn
60005 pawn.cfg pawn/unbraced.p
60010 pawn-escape.cfg pawn/str-escape.p
60020 pawn-escape.cfg pawn/switch-vsemi.sma
60030 amxmodx.cfg pawn/crusty_ex-1.sma
60040 amxmodx.cfg pawn/preproc.pawn
60050 mod_full_brace_function-f.cfg pawn/gh419.pawn
60100 Issue_2586.cfg pawn/Issue_2586.pawn

@ -1,15 +0,0 @@
#
# Test cases specifically for the Vala language.
#
# Range: 70000 - 79999
# test.name config.file input.file
70000 ben_100.cfg vala/list.vala
70001 ben_101.cfg vala/advanced.vala
70010 ben_102.cfg vala/verbatim_str.vala
70011 ben_103.cfg vala/verbatim_str2.vala
70012 ben2.cfg vala/verbatim_str2.vala
70020 ben_104.cfg vala/preproc.vala
70287 ben_105.cfg vala/gh287.vala
70300 Issue_2090.cfg vala/Issue_2090.vala
70301 Issue_2270.cfg vala/Issue_2270.vala

@ -9,6 +9,7 @@ until 2020-11-05:
Other collaborators: Other collaborators:
Alan Fineberg Alan Fineberg
Alexander GQ Gerasiov Alexander GQ Gerasiov
Alex Henrie
André Berg André Berg
Andrei Alexandrescu Andrei Alexandrescu
Andrey Starodubtsev Andrey Starodubtsev
@ -23,6 +24,7 @@ Benio
Ben Iofel Ben Iofel
Ben Mayo Ben Mayo
Beren Minor Beren Minor
Bi-Ruei, Chiu
Biswa96 Biswa96
Biswapriyo Nath Biswapriyo Nath
B. Kevin Hardman B. Kevin Hardman
@ -32,6 +34,7 @@ Brendan Long
CharlieYJH CharlieYJH
Chris Lalancette Chris Lalancette
Clemens Rabe Clemens Rabe
Clint Lawrence
Code Able Code Able
Cody Schafer Cody Schafer
Corentin Noël Corentin Noël
@ -47,6 +50,7 @@ Dittrich, Rico
Dmitry Marakasov Dmitry Marakasov
Dmitry Povolotsky Dmitry Povolotsky
Dmytro Povolotskyi Dmytro Povolotskyi
Dundar Göc
Dženan Zukić Dženan Zukić
Eism Eism
Emerson Knapp Emerson Knapp
@ -57,6 +61,7 @@ Gary Ash
Ger Hobbelt Ger Hobbelt
Hackerpilot Hackerpilot
Hannes Schmidt Hannes Schmidt
hghdev
Huang-Ming Huang Huang-Ming Huang
Husk3r Husk3r
Ilya Lyubimov Ilya Lyubimov
@ -87,6 +92,7 @@ lbmaian
Leon Breedt Leon Breedt
Lorenz Haas Lorenz Haas
Lykurg Lykurg
Maciej Bogusz
Marco Stephan Marco Stephan
Marek Fort Marek Fort
Marius Zwicker Marius Zwicker
@ -105,6 +111,7 @@ Mihai Popescu
Mike Mike
Mike Gelfand Mike Gelfand
Mirko König Mirko König
mjbogusz
MrTheMake MrTheMake
Nate Nate
neok-m4700 neok-m4700
@ -117,7 +124,6 @@ Patrick Rohr
Paul Cercueil Paul Cercueil
Paul Smith Paul Smith
Pavel Geiger Pavel Geiger
Pawel Benetkiewicz
Paweł Benetkiewicz Paweł Benetkiewicz
PerfectCarl PerfectCarl
Peter Bruin Peter Bruin
@ -138,6 +144,7 @@ Sebastian Andersson
S. Gilles S. Gilles
Shazron Abdullah Shazron Abdullah
Siddharth Kannan Siddharth Kannan
Slávek Banko
Spark-NF Spark-NF
Stefan Koch Stefan Koch
Stefan Nunninger Stefan Nunninger
@ -153,6 +160,7 @@ U-RDEC\ParkerJS
Vadim Zeitlin Vadim Zeitlin
Viktor Kireev Viktor Kireev
Vincent Rouillé Vincent Rouillé
Vojtěch Balík
Vyacheslav Shegai Vyacheslav Shegai
Waldir Pimenta Waldir Pimenta
Yannick Bühler Yannick Bühler

@ -17,8 +17,15 @@ include(CheckCXXSymbolExists)
include(CheckTypeSize) include(CheckTypeSize)
include(CTest) 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) find_package(Python3 REQUIRED)
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE}) set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
endif()
# #
# Check compiler flags # Check compiler flags
@ -131,7 +138,7 @@ endif()
# Generate uncrustify_version.h # Generate uncrustify_version.h
# #
set(UNCRUSTIFY_VERSION "0.73.0_f") set(UNCRUSTIFY_VERSION "0.74.0_f")
option(NoGitVersionString "Do not use make_version.py and git to build a version string" OFF) option(NoGitVersionString "Do not use make_version.py and git to build a version string" OFF)
if(NoGitVersionString) if(NoGitVersionString)
@ -291,12 +298,14 @@ set(uncrustify_sources
src/option.cpp src/option.cpp
src/options_for_QT.cpp src/options_for_QT.cpp
src/output.cpp src/output.cpp
src/parameter_pack_cleanup.cpp
src/parens.cpp src/parens.cpp
src/parent_for_pp.cpp src/parent_for_pp.cpp
src/ParseFrame.cpp src/ParseFrame.cpp
src/pcf_flags.cpp src/pcf_flags.cpp
src/punctuators.cpp src/punctuators.cpp
src/quick_align_again.cpp src/quick_align_again.cpp
src/remove_duplicate_include.cpp
src/remove_extra_returns.cpp src/remove_extra_returns.cpp
src/semicolons.cpp src/semicolons.cpp
src/sorting.cpp src/sorting.cpp
@ -379,6 +388,7 @@ set(uncrustify_headers
src/options_for_QT.h src/options_for_QT.h
src/options.h src/options.h
src/output.h src/output.h
src/parameter_pack_cleanup.h
src/parens.h src/parens.h
src/parent_for_pp.h src/parent_for_pp.h
src/ParseFrame.h src/ParseFrame.h
@ -386,6 +396,7 @@ set(uncrustify_headers
src/prototypes.h src/prototypes.h
src/punctuators.h src/punctuators.h
src/quick_align_again.h src/quick_align_again.h
src/remove_duplicate_include.h
src/remove_extra_returns.h src/remove_extra_returns.h
src/semicolons.h src/semicolons.h
src/sorting.h src/sorting.h
@ -532,6 +543,11 @@ else()
) )
endif() 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 # add to build the compile_commands.json file, to be used by clang-tidy
# #

@ -81,12 +81,7 @@ There are lots of ways to contribute to Uncrustify:
(a rephrasing of the branch name if set correctly). (a rephrasing of the branch name if set correctly).
- The PR description should document the _why_ the change needed to be done - 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. 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, running under other OS: - After commiting a new PR, one may have a look to the results:
https://travis-ci.com/
Sign in
SIGN IN WITH GITHUB
you get a view of <your github account> / uncrustify
https://coveralls.io/github/uncrustify/uncrustify https://coveralls.io/github/uncrustify/uncrustify

@ -1,3 +1,71 @@
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) Change highlights in uncrustify-0.73.0 (May 2021)
------------------------------------------------------------------------------- -------------------------------------------------------------------------------

@ -1,7 +1,4 @@
[![Travis CI](http://badges.herokuapp.com/travis/uncrustify/uncrustify?style=flat-square&env=BADGE=linux&label=Linux&branch=master)](https://travis-ci.org/uncrustify/uncrustify)
[![Travis CI](http://badges.herokuapp.com/travis/uncrustify/uncrustify?style=flat-square&env=BADGE=osx&label=OSX&branch=master)](https://travis-ci.org/uncrustify/uncrustify)
[![AppVeyor](https://img.shields.io/appveyor/ci/uncrustify/uncrustify/master.svg?style=flat-square&label=Windows)](https://ci.appveyor.com/project/uncrustify/uncrustify) [![AppVeyor](https://img.shields.io/appveyor/ci/uncrustify/uncrustify/master.svg?style=flat-square&label=Windows)](https://ci.appveyor.com/project/uncrustify/uncrustify)
[![Coverity](https://scan.coverity.com/projects/8264/badge.svg)](https://scan.coverity.com/projects/uncrustify)
[![Coverage Status](https://coveralls.io/repos/github/uncrustify/uncrustify/badge.svg?branch=master)](https://coveralls.io/github/uncrustify/uncrustify?branch=master) [![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> <a href="#"><img src="https://img.shields.io/badge/C++-11-blue.svg?style=flat-square"></a>
@ -11,7 +8,7 @@
A source code beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA A source code beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA
## Features ## Features
* Highly configurable - 753 configurable options as of version 0.73.0 * Highly configurable - 787 configurable options as of version 0.74.0
- <details><summary>add/remove spaces</summary> - <details><summary>add/remove spaces</summary>
- `sp_before_sparen`: _Add or remove space before '(' of 'if', 'for', 'switch', 'while', etc._ - `sp_before_sparen`: _Add or remove space before '(' of 'if', 'for', 'switch', 'while', etc._
@ -61,7 +58,7 @@ That should give you a pretty good idea of what Uncrustify can do.
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
## Binaries ## Binaries
Pre compiled binaries for Windows can be downloaded [here](https://sourceforge.net/projects/uncrustify/files/uncrustify/). Pre compiled binaries for Windows can be downloaded [here](https://sourceforge.net/projects/uncrustify/files/).
## Build ## 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. [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.
@ -218,7 +215,19 @@ tokenize(2351): orig_line is 1, orig_col is 7, text() 'Capteur', type is WORD, o
tokenize(2351): orig_line is 1, orig_col is 15, text() '{', type is BRACE_OPEN, orig_col_end is 16 tokenize(2351): orig_line is 1, orig_col is 15, text() '{', type is BRACE_OPEN, orig_col_end is 16
``` ```
It might be usefull to add some code lines to see where something is happening. 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`. Use the package `unc_tools`.
Remove the comment at line: Remove the comment at line:
```.cpp ```.cpp
@ -375,3 +384,6 @@ they exit) and run uncrustify.exe there.
## Using uncrustify with vim ## Using uncrustify with vim
Have a look [here]https://github.com/cofyc/vim-uncrustify 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

@ -0,0 +1,27 @@
cmake_minimum_required(VERSION 3.0.2)
set(MANIFEST "${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt")
if(NOT EXISTS ${MANIFEST})
message(FATAL_ERROR "Cannot find install manifest: ${MANIFEST}")
endif()
file(STRINGS ${MANIFEST} files)
foreach(file ${files})
if(EXISTS ${file} OR IS_SYMLINK ${file})
message(STATUS "Removing: ${file}")
execute_process(COMMAND rm -f ${file}
RESULT_VARIABLE result
OUTPUT_QUIET
ERROR_VARIABLE stderr
ERROR_STRIP_TRAILING_WHITESPACE
)
if(NOT ${result} EQUAL 0)
message(FATAL_ERROR "${stderr}")
endif()
else()
message(STATUS "Does-not-exist: ${file}")
endif()
endforeach(file)

@ -1,3 +1,9 @@
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 uncrustify-trinity (0.73.0-0debian11.0.0+2) unstable; urgency=medium
* Fix Python detection on CMake < 3.12. * Fix Python detection on CMake < 3.12.

@ -9,7 +9,7 @@ Customize and repackage as a TDE package.
if("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}") if("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
message(FATAL_ERROR " message(FATAL_ERROR "
@@ -232,7 +232,7 @@ @@ -239,7 +239,7 @@
# #
# Uncrustify # Uncrustify
# #
@ -18,7 +18,7 @@ Customize and repackage as a TDE package.
src/align_add.cpp src/align_add.cpp
src/align_asm_colon.cpp src/align_asm_colon.cpp
src/align_assign.cpp src/align_assign.cpp
@@ -315,7 +315,7 @@ @@ -324,7 +324,7 @@
${PROJECT_BINARY_DIR}/src/option_enum.cpp ${PROJECT_BINARY_DIR}/src/option_enum.cpp
) )
@ -27,7 +27,7 @@ Customize and repackage as a TDE package.
src/add_space_table.h src/add_space_table.h
src/align_add.h src/align_add.h
src/align_asm_colon.h src/align_asm_colon.h
@@ -408,7 +408,7 @@ @@ -419,7 +419,7 @@
${PROJECT_BINARY_DIR}/uncrustify_version.h ${PROJECT_BINARY_DIR}/uncrustify_version.h
) )
@ -36,7 +36,7 @@ Customize and repackage as a TDE package.
"${PROJECT_SOURCE_DIR}/AUTHORS" "${PROJECT_SOURCE_DIR}/AUTHORS"
"${PROJECT_SOURCE_DIR}/BUGS" "${PROJECT_SOURCE_DIR}/BUGS"
"${PROJECT_SOURCE_DIR}/ChangeLog" "${PROJECT_SOURCE_DIR}/ChangeLog"
@@ -417,31 +417,31 @@ @@ -428,31 +428,31 @@
"${PROJECT_SOURCE_DIR}/README.md" "${PROJECT_SOURCE_DIR}/README.md"
) )
@ -75,7 +75,7 @@ Customize and repackage as a TDE package.
# #
# Generate uncrustify.xml (katepart highlighting file) # Generate uncrustify.xml (katepart highlighting file)
@@ -463,7 +463,7 @@ @@ -474,7 +474,7 @@
# #
OPTION(ENABLE_CODECOVERAGE "Enable code coverage testing support") OPTION(ENABLE_CODECOVERAGE "Enable code coverage testing support")
if(ENABLE_CODECOVERAGE) if(ENABLE_CODECOVERAGE)
@ -84,7 +84,7 @@ Customize and repackage as a TDE package.
include(${CMAKE_SOURCE_DIR}/cmake/CodeCoverage.cmake) include(${CMAKE_SOURCE_DIR}/cmake/CodeCoverage.cmake)
endif(ENABLE_CODECOVERAGE) endif(ENABLE_CODECOVERAGE)
@@ -471,10 +471,10 @@ @@ -482,10 +482,10 @@
# Build command to run uncrustify on its own sources # Build command to run uncrustify on its own sources
# #
add_custom_target(format-sources) add_custom_target(format-sources)
@ -97,7 +97,7 @@ Customize and repackage as a TDE package.
-c forUncrustifySources.cfg -c forUncrustifySources.cfg
-lCPP --no-backup ${source} -lCPP --no-backup ${source}
COMMENT "Formatting ${source}" COMMENT "Formatting ${source}"
@@ -486,7 +486,7 @@ @@ -497,7 +497,7 @@
# #
# Package # Package
# #
@ -106,7 +106,7 @@ Customize and repackage as a TDE package.
set(CPACK_PACKAGE_VERSION "${UNCRUSTIFY_VERSION}") set(CPACK_PACKAGE_VERSION "${UNCRUSTIFY_VERSION}")
set(CPACK_PACKAGE_VENDOR "Ben Gardner") set(CPACK_PACKAGE_VENDOR "Ben Gardner")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Code beautifier") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Code beautifier")
@@ -504,8 +504,8 @@ @@ -515,8 +515,8 @@
# Install # Install
# #
if(MSVC) if(MSVC)
@ -117,7 +117,7 @@ Customize and repackage as a TDE package.
DESTINATION "." DESTINATION "."
) )
install(FILES "${PROJECT_SOURCE_DIR}/documentation/htdocs/index.html" install(FILES "${PROJECT_SOURCE_DIR}/documentation/htdocs/index.html"
@@ -517,17 +517,17 @@ @@ -528,17 +528,17 @@
) )
else() else()
include(GNUInstallDirs) include(GNUInstallDirs)
@ -174,15 +174,16 @@ Customize and repackage as a TDE package.
- --build ${uncrustify_BINARY_DIR} - --build ${uncrustify_BINARY_DIR}
+ --build ${uncrustify-trinity_BINARY_DIR} + --build ${uncrustify-trinity_BINARY_DIR}
--diff --diff
--test ${CMAKE_CURRENT_BINARY_DIR}/cli
${_configs} ${_configs}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cli @@ -83,11 +83,11 @@
@@ -82,10 +82,10 @@
COMMAND ${PYTHON_EXECUTABLE} COMMAND ${PYTHON_EXECUTABLE}
test_cli_options.py test_cli_options.py
--config $<CONFIG> --config $<CONFIG>
- --build ${uncrustify_BINARY_DIR} - --build ${uncrustify_BINARY_DIR}
+ --build ${uncrustify-trinity_BINARY_DIR} + --build ${uncrustify-trinity_BINARY_DIR}
--apply --apply
--test ${CMAKE_CURRENT_BINARY_DIR}/cli
- DEPENDS uncrustify - DEPENDS uncrustify
+ DEPENDS uncrustify-trinity + DEPENDS uncrustify-trinity
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cli WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cli
@ -201,10 +202,10 @@ Customize and repackage as a TDE package.
If reading from stdin, you should specify the language using -l If reading from stdin, you should specify the language using -l
--- a/tests/cli/test_cli_options.py --- a/tests/cli/test_cli_options.py
+++ b/tests/cli/test_cli_options.py +++ b/tests/cli/test_cli_options.py
@@ -486,16 +486,16 @@ @@ -492,16 +492,16 @@
bin_found = False
uncr_bin = ''
bd_dir = parsed_args.build bd_dir = parsed_args.build
test_dir = parsed_args.test
- bin_paths = [s_path_join(bd_dir, 'uncrustify'), - bin_paths = [s_path_join(bd_dir, 'uncrustify'),
- s_path_join(bd_dir, 'uncrustify.exe'), - s_path_join(bd_dir, 'uncrustify.exe'),
- s_path_join(bd_dir, 'Debug/uncrustify'), - s_path_join(bd_dir, 'Debug/uncrustify'),

@ -8,7 +8,7 @@ Index: b/CMakeLists.txt
project(uncrustify-trinity) project(uncrustify-trinity)
@@ -52,8 +52,12 @@ @@ -59,8 +59,12 @@
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
endif() endif()
@ -23,7 +23,7 @@ Index: b/CMakeLists.txt
if(ENABLE_SANITIZER) if(ENABLE_SANITIZER)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O1 -fno-omit-frame-pointer -fsanitize=${ENABLE_SANITIZER}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O1 -fno-omit-frame-pointer -fsanitize=${ENABLE_SANITIZER}")
@@ -140,8 +144,13 @@ @@ -147,8 +151,13 @@
else() else()
# Add target to generate version header; # Add target to generate version header;
# do this every build to ensure git SHA is up to date # do this every build to ensure git SHA is up to date

@ -1,7 +1,7 @@
Fixed usage message to match uncrustify-trinity. Fixed usage message to match uncrustify-trinity.
--- a/src/uncrustify.cpp --- a/src/uncrustify.cpp
+++ b/src/uncrustify.cpp +++ b/src/uncrustify.cpp
@@ -295,14 +295,14 @@ @@ -304,15 +304,15 @@
" Cannot be used with the -o option'\n" " Cannot be used with the -o option'\n"
"\n" "\n"
"Usage Examples\n" "Usage Examples\n"
@ -9,6 +9,7 @@ Fixed usage message to match uncrustify-trinity.
- "uncrustify -c my.cfg -f foo.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 -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\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 foo.d\n"
- "uncrustify -c my.cfg --replace foo.d\n" - "uncrustify -c my.cfg --replace foo.d\n"
- "uncrustify -c my.cfg --no-backup foo.d\n" - "uncrustify -c my.cfg --no-backup foo.d\n"
@ -17,6 +18,7 @@ Fixed usage message to match uncrustify-trinity.
+ "uncrustify-trinity -c my.cfg -f foo.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 -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\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 foo.d\n"
+ "uncrustify-trinity -c my.cfg --replace 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 --no-backup foo.d\n"
@ -26,7 +28,7 @@ Fixed usage message to match uncrustify-trinity.
" processing of parts of the source file (these can be overridden with\n" " processing of parts of the source file (these can be overridden with\n"
--- a/tests/cli/output/help.txt --- a/tests/cli/output/help.txt
+++ b/tests/cli/output/help.txt +++ b/tests/cli/output/help.txt
@@ -60,14 +60,14 @@ @@ -65,15 +65,15 @@
Cannot be used with the -o option' Cannot be used with the -o option'
Usage Examples Usage Examples
@ -34,6 +36,7 @@ Fixed usage message to match uncrustify-trinity.
-uncrustify -c my.cfg -f foo.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 -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
-uncrustify -c my.cfg -f foo.d -o foo.d -ds dump
-uncrustify -c my.cfg foo.d -uncrustify -c my.cfg foo.d
-uncrustify -c my.cfg --replace foo.d -uncrustify -c my.cfg --replace foo.d
-uncrustify -c my.cfg --no-backup foo.d -uncrustify -c my.cfg --no-backup foo.d
@ -42,6 +45,7 @@ Fixed usage message to match uncrustify-trinity.
+uncrustify-trinity -c my.cfg -f foo.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 -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
+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 foo.d
+uncrustify-trinity -c my.cfg --replace foo.d +uncrustify-trinity -c my.cfg --replace foo.d
+uncrustify-trinity -c my.cfg --no-backup foo.d +uncrustify-trinity -c my.cfg --no-backup foo.d

@ -2,5 +2,3 @@
002_trinity_customization.diff 002_trinity_customization.diff
003_allow_older_distributions.diff 003_allow_older_distributions.diff
004_fixed_usage.diff 004_fixed_usage.diff
005_upstream_cb1a42dd.diff
006_fix_python_detection_on_older_cmake.diff

@ -13,3 +13,7 @@ DEB_CMAKE_EXTRA_FLAGS := \
-DUNCRUSTIFY_SEPARATE_TESTS="ON" -DUNCRUSTIFY_SEPARATE_TESTS="ON"
DEB_MAKE_CHECK_TARGET = test DEB_MAKE_CHECK_TARGET = test
DEB_MAKE_ENVVARS += PYTHONPYCACHEPREFIX=${DEB_DESTDIR}../../${DEB_BUILDDIR}/__pycache__
DEB_MAKE_ENVVARS += CTEST_PARALLEL_LEVEL=4

@ -0,0 +1,53 @@
This file describes the purpose of the 'dump steps' command line option.
OVERVIEW
--------
The '-ds/--dump-steps' option instructs uncrustify to log a lot of debug information
throughout the formatting process, which can be very useful when trying to understand
why something is being formatted in the way it is. This is usually the case when the
expected results do not match with the actual ones.
COMPARISON WITH '-p' OPTION
---------------------------
While the '-p' option only prints the parsing information at the end of the process,
the '-ds' option will print the same information at many points in time, providing
extra depth to users and developers when troubleshooting an issue.
GENERATED FILES
---------------
Add '-ds FILE' to the command line options to enable the functionality.
This will create a number of files as follow:
- FILE_000.log: this file contains the list of the options used by uncrustify
- FILE_001.log: this file lists the parsing status after uncrustify has read the input file
and before starting the formatting process.
- FILE_002.log: this file lists the parsing status before uncrustify enters its first internal
while loop
- FILE_AAA.log - FILE_BBB.log: a variable number of files, depending on the progress of the
formatting process. Each file is printed at the end of one iteration of the
first internal while loop.
- FILE_BBB+1.log: this file lists the parsing status before uncrustify enters its second internal
while loop
- FILE_BBB+2.log - FILE_CCC.log: a variable number of files, depending on the progress of the
formatting process. Each file is printed at the end of one iteration of the
second internal while loop.
- FILE_CCC+1.log: this file lists the parsing status at the end of the process.
NOTE: by combining FILE_000.log and FILE_CCC+1.log, you will get the same content of the parsing
file obtained with the '-p' option.
USAGE
-----
Comparing each file with the previous one will help understanding why something is being formatted
the way it is. When debugging a formatting issue, this provides a quick way to restrict the
section of the code that should be investigated.
The first line of each file contains a brief descriptive string which can be used to quickly find the
point in the code where the file was created. Look for 'dump_step(dump_file, <descriptive string>)' in
src/uncrustify.cpp.

@ -67,6 +67,7 @@ sp_inside_braces_enum = force # "{ 1 }" vs "{1}"
sp_inside_paren = remove sp_inside_paren = remove
sp_inside_fparen = remove sp_inside_fparen = remove
sp_inside_sparen = remove sp_inside_sparen = remove
sp_inside_for = remove
sp_inside_square = remove sp_inside_square = remove
#sp_type_func = ignore #sp_type_func = ignore
sp_assign = force sp_assign = force

@ -1,4 +1,4 @@
# Uncrustify-0.73.0 # Uncrustify-0.74.0
# #
# General options # General options
@ -190,7 +190,7 @@ sp_before_ptr_star = ignore # ignore/add/remove/force/not_defined
# variable name. If set to ignore, sp_before_ptr_star is used instead. # 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 sp_before_unnamed_ptr_star = ignore # ignore/add/remove/force/not_defined
# Add or remove space between pointer stars '*'. # Add or remove space between pointer stars '*', as in 'int ***a;'.
sp_between_ptr_star = ignore # ignore/add/remove/force/not_defined sp_between_ptr_star = ignore # ignore/add/remove/force/not_defined
# Add or remove space after pointer star '*', if followed by a word. # Add or remove space after pointer star '*', if followed by a word.
@ -210,14 +210,26 @@ sp_after_ptr_star_qualifier = ignore # ignore/add/remove/force/not_defined
# Overrides sp_after_ptr_star and sp_type_func. # Overrides sp_after_ptr_star and sp_type_func.
sp_after_ptr_star_func = ignore # ignore/add/remove/force/not_defined 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 after a pointer star '*', if followed by an open # Add or remove space after a pointer star '*', if followed by an open
# parenthesis, as in 'void* (*)(). # parenthesis, as in 'void* (*)()'.
sp_ptr_star_paren = ignore # ignore/add/remove/force/not_defined sp_ptr_star_paren = ignore # ignore/add/remove/force/not_defined
# Add or remove space before a pointer star '*', if followed by a function # Add or remove space before a pointer star '*', if followed by a function
# prototype or function definition. # prototype or function definition.
sp_before_ptr_star_func = ignore # ignore/add/remove/force/not_defined 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 '&'. # Add or remove space before a reference sign '&'.
sp_before_byref = ignore # ignore/add/remove/force/not_defined sp_before_byref = ignore # ignore/add/remove/force/not_defined
@ -303,23 +315,40 @@ sp_permit_cpp11_shift = false # true/false
# 'while', etc.). # 'while', etc.).
sp_before_sparen = ignore # ignore/add/remove/force/not_defined sp_before_sparen = ignore # ignore/add/remove/force/not_defined
# Add or remove space inside '(' and ')' of control statements. # Add or remove space inside '(' and ')' of control statements other than
# 'for'.
sp_inside_sparen = ignore # ignore/add/remove/force/not_defined sp_inside_sparen = ignore # ignore/add/remove/force/not_defined
# Add or remove space after '(' of control statements. # Add or remove space after '(' of control statements other than 'for'.
# #
# Overrides sp_inside_sparen. # Overrides sp_inside_sparen.
sp_inside_sparen_open = ignore # ignore/add/remove/force/not_defined sp_inside_sparen_open = ignore # ignore/add/remove/force/not_defined
# Add or remove space before ')' of control statements. # Add or remove space before ')' of control statements other than 'for'.
# #
# Overrides sp_inside_sparen. # Overrides sp_inside_sparen.
sp_inside_sparen_close = ignore # ignore/add/remove/force/not_defined 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. # Add or remove space after ')' of control statements.
sp_after_sparen = ignore # ignore/add/remove/force/not_defined sp_after_sparen = ignore # ignore/add/remove/force/not_defined
# Add or remove space between ')' and '{' of of control statements. # Add or remove space between ')' and '{' of control statements.
sp_sparen_brace = ignore # ignore/add/remove/force/not_defined sp_sparen_brace = ignore # ignore/add/remove/force/not_defined
# Add or remove space between 'do' and '{'. # Add or remove space between 'do' and '{'.
@ -348,9 +377,14 @@ sp_before_semi = remove # ignore/add/remove/force/not_defined
# Add or remove space before ';' in non-empty 'for' statements. # Add or remove space before ';' in non-empty 'for' statements.
sp_before_semi_for = ignore # ignore/add/remove/force/not_defined sp_before_semi_for = ignore # ignore/add/remove/force/not_defined
# Add or remove space before a semicolon of an empty part of a for statement. # 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 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. # Add or remove space after ';', except when followed by a comment.
# #
# Default: add # Default: add
@ -395,7 +429,7 @@ sp_inside_square_oc_array = ignore # ignore/add/remove/force/not_defined
# Add or remove space after ',', i.e. 'a,b' vs. 'a, b'. # Add or remove space after ',', i.e. 'a,b' vs. 'a, b'.
sp_after_comma = ignore # ignore/add/remove/force/not_defined sp_after_comma = ignore # ignore/add/remove/force/not_defined
# Add or remove space before ','. # Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'.
# #
# Default: remove # Default: remove
sp_before_comma = remove # ignore/add/remove/force/not_defined sp_before_comma = remove # ignore/add/remove/force/not_defined
@ -418,19 +452,31 @@ sp_between_mdatype_commas = ignore # ignore/add/remove/force/not_defined
# Default: force # Default: force
sp_paren_comma = force # ignore/add/remove/force/not_defined sp_paren_comma = force # ignore/add/remove/force/not_defined
# Add or remove space after the variadic '...' when preceded by a
# non-punctuator.
# The value REMOVE will be overriden with FORCE
sp_after_ellipsis = ignore # ignore/add/remove/force/not_defined
# Add or remove space before the variadic '...' when preceded by a # Add or remove space before the variadic '...' when preceded by a
# non-punctuator. # non-punctuator.
# The value REMOVE will be overriden with FORCE
sp_before_ellipsis = ignore # ignore/add/remove/force/not_defined sp_before_ellipsis = ignore # ignore/add/remove/force/not_defined
# Add or remove space between a type and '...'. # Add or remove space between a type and '...'.
sp_type_ellipsis = ignore # ignore/add/remove/force/not_defined 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
# (D) Add or remove space between a type and '?'. # (D) Add or remove space between a type and '?'.
sp_type_question = ignore # ignore/add/remove/force/not_defined sp_type_question = ignore # ignore/add/remove/force/not_defined
# Add or remove space between ')' and '...'. # Add or remove space between ')' and '...'.
sp_paren_ellipsis = ignore # ignore/add/remove/force/not_defined 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'. # Add or remove space between ')' and a qualifier such as 'const'.
sp_paren_qualifier = ignore # ignore/add/remove/force/not_defined sp_paren_qualifier = ignore # ignore/add/remove/force/not_defined
@ -444,10 +490,14 @@ sp_after_class_colon = ignore # ignore/add/remove/force/not_defined
sp_before_class_colon = ignore # ignore/add/remove/force/not_defined sp_before_class_colon = ignore # ignore/add/remove/force/not_defined
# Add or remove space after class constructor ':'. # Add or remove space after class constructor ':'.
sp_after_constr_colon = ignore # ignore/add/remove/force/not_defined #
# Default: add
sp_after_constr_colon = add # ignore/add/remove/force/not_defined
# Add or remove space before class constructor ':'. # Add or remove space before class constructor ':'.
sp_before_constr_colon = ignore # ignore/add/remove/force/not_defined #
# Default: add
sp_before_constr_colon = add # ignore/add/remove/force/not_defined
# Add or remove space before case ':'. # Add or remove space before case ':'.
# #
@ -485,6 +535,12 @@ sp_sizeof_ellipsis = ignore # ignore/add/remove/force/not_defined
# Add or remove space between 'sizeof...' and '('. # Add or remove space between 'sizeof...' and '('.
sp_sizeof_ellipsis_paren = ignore # ignore/add/remove/force/not_defined 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 '('. # Add or remove space between 'decltype' and '('.
sp_decltype_paren = ignore # ignore/add/remove/force/not_defined sp_decltype_paren = ignore # ignore/add/remove/force/not_defined
@ -501,14 +557,21 @@ sp_inside_braces_struct = ignore # ignore/add/remove/force/not_defined
sp_inside_braces_oc_dict = ignore # ignore/add/remove/force/not_defined sp_inside_braces_oc_dict = ignore # ignore/add/remove/force/not_defined
# Add or remove space after open brace in an unnamed temporary # Add or remove space after open brace in an unnamed temporary
# direct-list-initialization. # 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 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 # Add or remove space before close brace in an unnamed temporary
# direct-list-initialization. # 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 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. # 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 sp_inside_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
# Add or remove space inside '{' and '}'. # Add or remove space inside '{' and '}'.
@ -603,6 +666,11 @@ sp_func_class_paren = ignore # ignore/add/remove/force/not_defined
# and '()'. # and '()'.
sp_func_class_paren_empty = ignore # ignore/add/remove/force/not_defined 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 '('. # Add or remove space between 'return' and '('.
sp_return_paren = ignore # ignore/add/remove/force/not_defined sp_return_paren = ignore # ignore/add/remove/force/not_defined
@ -926,11 +994,31 @@ sp_inside_newop_paren_open = ignore # ignore/add/remove/force/not_defined
# Overrides sp_inside_newop_paren. # Overrides sp_inside_newop_paren.
sp_inside_newop_paren_close = ignore # ignore/add/remove/force/not_defined sp_inside_newop_paren_close = ignore # ignore/add/remove/force/not_defined
# Add or remove space before a trailing or embedded comment. # Add or remove space before a trailing comment.
sp_before_tr_emb_cmt = ignore # ignore/add/remove/force/not_defined 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 before a trailing or embedded comment. # Number of spaces after an embedded comment.
sp_num_before_tr_emb_cmt = 0 # unsigned number #
# Default: 1
sp_num_after_emb_cmt = 1 # unsigned number
# (Java) Add or remove space between an annotation and the open parenthesis. # (Java) Add or remove space between an annotation and the open parenthesis.
sp_annotation_paren = ignore # ignore/add/remove/force/not_defined sp_annotation_paren = ignore # ignore/add/remove/force/not_defined
@ -1062,11 +1150,16 @@ indent_class_on_colon = false # true/false
# Whether to indent the stuff after a leading class initializer colon. # Whether to indent the stuff after a leading class initializer colon.
indent_constr_colon = false # true/false indent_constr_colon = false # true/false
# Virtual indent from the ':' for member initializers. # Virtual indent from the ':' for leading member initializers.
# #
# Default: 2 # Default: 2
indent_ctor_init_leading = 2 # unsigned number 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. # Additional indent for constructor initializer list.
# Negative values decrease indent down to the first column. # Negative values decrease indent down to the first column.
indent_ctor_init = 0 # number indent_ctor_init = 0 # number
@ -1152,7 +1245,10 @@ indent_member = 0 # unsigned number
indent_member_single = false # true/false indent_member_single = false # true/false
# Spaces to indent single line ('//') comments on lines before code. # Spaces to indent single line ('//') comments on lines before code.
indent_sing_line_comments = 0 # unsigned number 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 # 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. # the indent level by this value. Negative values decrease the indent level.
@ -1163,12 +1259,16 @@ indent_sparen_extra = 0 # number
indent_relative_single_line_comments = false # true/false indent_relative_single_line_comments = false # true/false
# Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns. # Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns.
# It might wise to choose the same value for the option indent_case_brace. # It might be wise to choose the same value for the option indent_case_brace.
indent_switch_case = 0 # unsigned number 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
# Spaces to indent '{' from 'case'. By default, the brace will appear under # 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. # the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK.
# It might wise to choose the same value for the option indent_switch_case. # It might be wise to choose the same value for the option indent_switch_case.
indent_case_brace = 0 # number indent_case_brace = 0 # number
# indent 'break' with 'case' from 'switch'. # indent 'break' with 'case' from 'switch'.
@ -1183,13 +1283,31 @@ indent_switch_pp = true # true/false
# Usually 0. # Usually 0.
indent_case_shift = 0 # unsigned number 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. # Whether to indent comments found in first column.
indent_col1_comment = false # true/false indent_col1_comment = false # true/false
# Whether to indent multi string literal in first column. # Whether to indent multi string literal in first column.
indent_col1_multi_string_literal = false # true/false indent_col1_multi_string_literal = false # true/false
# How to indent goto labels. # 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: Absolute column where 1 is the leftmost column
# <=0: Subtract from brace indent # <=0: Subtract from brace indent
@ -1875,8 +1993,10 @@ nl_type_brace_init_lst_open = ignore # ignore/add/remove/force/not_defined
# direct-list-initialization. # direct-list-initialization.
nl_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined nl_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined
# Whether to add a newline after '{'. This also adds a newline before the # Whether to add a newline before '{'.
# matching '}'. nl_before_brace_open = false # true/false
# Whether to add a newline after '{'.
nl_after_brace_open = false # true/false nl_after_brace_open = false # true/false
# Whether to add a newline between the open brace and a trailing single-line # Whether to add a newline between the open brace and a trailing single-line
@ -1956,6 +2076,12 @@ nl_before_do = ignore # ignore/add/remove/force/not_defined
# Add or remove blank line after 'do/while' statement. # Add or remove blank line after 'do/while' statement.
nl_after_do = ignore # ignore/add/remove/force/not_defined 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 # Whether to put a blank line before 'return' statements, unless after an open
# brace. # brace.
nl_before_return = false # true/false nl_before_return = false # true/false
@ -1987,7 +2113,7 @@ nl_constr_colon = ignore # ignore/add/remove/force/not_defined
# Whether to collapse a two-line namespace, like 'namespace foo\n{ decl; }' # 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 # into a single line. If true, prevents other brace newline rules from turning
# such code into four lines. # such code into four lines. If true, it also preserves one-liner namespaces.
nl_namespace_two_to_one_liner = false # true/false nl_namespace_two_to_one_liner = false # true/false
# Whether to remove a newline in simple unbraced if statements, turning them # Whether to remove a newline in simple unbraced if statements, turning them
@ -2007,7 +2133,7 @@ nl_create_while_one_liner = false # true/false
# a single line. # a single line.
nl_create_func_def_one_liner = false # true/false nl_create_func_def_one_liner = false # true/false
# Whether to split one-line simple unbraced if statements into three lines by # Whether to split one-line simple list definitions into three lines by
# adding newlines, as in 'int a[12] = { <here> 0 <here> };'. # adding newlines, as in 'int a[12] = { <here> 0 <here> };'.
nl_create_list_one_liner = false # true/false nl_create_list_one_liner = false # true/false
@ -2151,6 +2277,9 @@ nl_after_multiline_comment = false # true/false
# Whether to force a newline after a label's colon. # Whether to force a newline after a label's colon.
nl_after_label_colon = false # true/false 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. # The number of newlines after '}' or ';' of a struct/enum/union definition.
nl_after_struct = 0 # unsigned number nl_after_struct = 0 # unsigned number
@ -2558,6 +2687,22 @@ align_right_cmt_at_col = 0 # unsigned number
# 0: Don't align (default). # 0: Don't align (default).
align_func_proto_span = 0 # unsigned number 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. # The threshold for aligning function prototypes.
# Use a negative number for absolute thresholds. # Use a negative number for absolute thresholds.
# #
@ -2713,6 +2858,9 @@ cmt_align_doxygen_javadoc_tags = false # true/false
# Default: 1 # Default: 1
cmt_sp_before_doxygen_javadoc_tags = 1 # unsigned number 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. # Whether to group c-comments that look like they are in a block.
cmt_c_group = false # true/false cmt_c_group = false # true/false
@ -2882,6 +3030,9 @@ mod_full_paren_if_bool = false # true/false
# Whether to remove superfluous semicolons. # Whether to remove superfluous semicolons.
mod_remove_extra_semicolon = false # true/false 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 # 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. # a comment after the close brace, a comment will be added.
mod_add_long_function_closebrace_comment = 0 # unsigned number mod_add_long_function_closebrace_comment = 0 # unsigned number
@ -3024,10 +3175,16 @@ pp_indent_if = 0 # number
# Whether to indent the code between #if, #else and #endif. # Whether to indent the code between #if, #else and #endif.
pp_if_indent_code = false # true/false 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 # Whether to indent '#define' at the brace level. If false, these are
# indented from column 1. # indented from column 1.
pp_define_at_level = false # true/false 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. # Whether to ignore the '#define' body while formatting.
pp_ignore_define_body = false # true/false pp_ignore_define_body = false # true/false

@ -1,4 +1,4 @@
# Uncrustify-0.73.0 # Uncrustify-0.74.0
# #
# General options # General options
@ -190,7 +190,7 @@ sp_before_ptr_star = ignore # ignore/add/remove/force/not_defined
# variable name. If set to ignore, sp_before_ptr_star is used instead. # 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 sp_before_unnamed_ptr_star = ignore # ignore/add/remove/force/not_defined
# Add or remove space between pointer stars '*'. # Add or remove space between pointer stars '*', as in 'int ***a;'.
sp_between_ptr_star = ignore # ignore/add/remove/force/not_defined sp_between_ptr_star = ignore # ignore/add/remove/force/not_defined
# Add or remove space after pointer star '*', if followed by a word. # Add or remove space after pointer star '*', if followed by a word.
@ -210,14 +210,26 @@ sp_after_ptr_star_qualifier = ignore # ignore/add/remove/force/not_defined
# Overrides sp_after_ptr_star and sp_type_func. # Overrides sp_after_ptr_star and sp_type_func.
sp_after_ptr_star_func = ignore # ignore/add/remove/force/not_defined 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 after a pointer star '*', if followed by an open # Add or remove space after a pointer star '*', if followed by an open
# parenthesis, as in 'void* (*)(). # parenthesis, as in 'void* (*)()'.
sp_ptr_star_paren = ignore # ignore/add/remove/force/not_defined sp_ptr_star_paren = ignore # ignore/add/remove/force/not_defined
# Add or remove space before a pointer star '*', if followed by a function # Add or remove space before a pointer star '*', if followed by a function
# prototype or function definition. # prototype or function definition.
sp_before_ptr_star_func = ignore # ignore/add/remove/force/not_defined 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 '&'. # Add or remove space before a reference sign '&'.
sp_before_byref = ignore # ignore/add/remove/force/not_defined sp_before_byref = ignore # ignore/add/remove/force/not_defined
@ -303,23 +315,40 @@ sp_permit_cpp11_shift = false # true/false
# 'while', etc.). # 'while', etc.).
sp_before_sparen = ignore # ignore/add/remove/force/not_defined sp_before_sparen = ignore # ignore/add/remove/force/not_defined
# Add or remove space inside '(' and ')' of control statements. # Add or remove space inside '(' and ')' of control statements other than
# 'for'.
sp_inside_sparen = ignore # ignore/add/remove/force/not_defined sp_inside_sparen = ignore # ignore/add/remove/force/not_defined
# Add or remove space after '(' of control statements. # Add or remove space after '(' of control statements other than 'for'.
# #
# Overrides sp_inside_sparen. # Overrides sp_inside_sparen.
sp_inside_sparen_open = ignore # ignore/add/remove/force/not_defined sp_inside_sparen_open = ignore # ignore/add/remove/force/not_defined
# Add or remove space before ')' of control statements. # Add or remove space before ')' of control statements other than 'for'.
# #
# Overrides sp_inside_sparen. # Overrides sp_inside_sparen.
sp_inside_sparen_close = ignore # ignore/add/remove/force/not_defined 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. # Add or remove space after ')' of control statements.
sp_after_sparen = ignore # ignore/add/remove/force/not_defined sp_after_sparen = ignore # ignore/add/remove/force/not_defined
# Add or remove space between ')' and '{' of of control statements. # Add or remove space between ')' and '{' of control statements.
sp_sparen_brace = ignore # ignore/add/remove/force/not_defined sp_sparen_brace = ignore # ignore/add/remove/force/not_defined
# Add or remove space between 'do' and '{'. # Add or remove space between 'do' and '{'.
@ -348,9 +377,14 @@ sp_before_semi = remove # ignore/add/remove/force/not_defined
# Add or remove space before ';' in non-empty 'for' statements. # Add or remove space before ';' in non-empty 'for' statements.
sp_before_semi_for = ignore # ignore/add/remove/force/not_defined sp_before_semi_for = ignore # ignore/add/remove/force/not_defined
# Add or remove space before a semicolon of an empty part of a for statement. # 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 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. # Add or remove space after ';', except when followed by a comment.
# #
# Default: add # Default: add
@ -395,7 +429,7 @@ sp_inside_square_oc_array = ignore # ignore/add/remove/force/not_defined
# Add or remove space after ',', i.e. 'a,b' vs. 'a, b'. # Add or remove space after ',', i.e. 'a,b' vs. 'a, b'.
sp_after_comma = ignore # ignore/add/remove/force/not_defined sp_after_comma = ignore # ignore/add/remove/force/not_defined
# Add or remove space before ','. # Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'.
# #
# Default: remove # Default: remove
sp_before_comma = remove # ignore/add/remove/force/not_defined sp_before_comma = remove # ignore/add/remove/force/not_defined
@ -418,19 +452,31 @@ sp_between_mdatype_commas = ignore # ignore/add/remove/force/not_defined
# Default: force # Default: force
sp_paren_comma = force # ignore/add/remove/force/not_defined sp_paren_comma = force # ignore/add/remove/force/not_defined
# Add or remove space after the variadic '...' when preceded by a
# non-punctuator.
# The value REMOVE will be overriden with FORCE
sp_after_ellipsis = ignore # ignore/add/remove/force/not_defined
# Add or remove space before the variadic '...' when preceded by a # Add or remove space before the variadic '...' when preceded by a
# non-punctuator. # non-punctuator.
# The value REMOVE will be overriden with FORCE
sp_before_ellipsis = ignore # ignore/add/remove/force/not_defined sp_before_ellipsis = ignore # ignore/add/remove/force/not_defined
# Add or remove space between a type and '...'. # Add or remove space between a type and '...'.
sp_type_ellipsis = ignore # ignore/add/remove/force/not_defined 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
# (D) Add or remove space between a type and '?'. # (D) Add or remove space between a type and '?'.
sp_type_question = ignore # ignore/add/remove/force/not_defined sp_type_question = ignore # ignore/add/remove/force/not_defined
# Add or remove space between ')' and '...'. # Add or remove space between ')' and '...'.
sp_paren_ellipsis = ignore # ignore/add/remove/force/not_defined 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'. # Add or remove space between ')' and a qualifier such as 'const'.
sp_paren_qualifier = ignore # ignore/add/remove/force/not_defined sp_paren_qualifier = ignore # ignore/add/remove/force/not_defined
@ -444,10 +490,14 @@ sp_after_class_colon = ignore # ignore/add/remove/force/not_defined
sp_before_class_colon = ignore # ignore/add/remove/force/not_defined sp_before_class_colon = ignore # ignore/add/remove/force/not_defined
# Add or remove space after class constructor ':'. # Add or remove space after class constructor ':'.
sp_after_constr_colon = ignore # ignore/add/remove/force/not_defined #
# Default: add
sp_after_constr_colon = add # ignore/add/remove/force/not_defined
# Add or remove space before class constructor ':'. # Add or remove space before class constructor ':'.
sp_before_constr_colon = ignore # ignore/add/remove/force/not_defined #
# Default: add
sp_before_constr_colon = add # ignore/add/remove/force/not_defined
# Add or remove space before case ':'. # Add or remove space before case ':'.
# #
@ -485,6 +535,12 @@ sp_sizeof_ellipsis = ignore # ignore/add/remove/force/not_defined
# Add or remove space between 'sizeof...' and '('. # Add or remove space between 'sizeof...' and '('.
sp_sizeof_ellipsis_paren = ignore # ignore/add/remove/force/not_defined 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 '('. # Add or remove space between 'decltype' and '('.
sp_decltype_paren = ignore # ignore/add/remove/force/not_defined sp_decltype_paren = ignore # ignore/add/remove/force/not_defined
@ -501,14 +557,21 @@ sp_inside_braces_struct = ignore # ignore/add/remove/force/not_defined
sp_inside_braces_oc_dict = ignore # ignore/add/remove/force/not_defined sp_inside_braces_oc_dict = ignore # ignore/add/remove/force/not_defined
# Add or remove space after open brace in an unnamed temporary # Add or remove space after open brace in an unnamed temporary
# direct-list-initialization. # 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 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 # Add or remove space before close brace in an unnamed temporary
# direct-list-initialization. # 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 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. # 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 sp_inside_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
# Add or remove space inside '{' and '}'. # Add or remove space inside '{' and '}'.
@ -603,6 +666,11 @@ sp_func_class_paren = ignore # ignore/add/remove/force/not_defined
# and '()'. # and '()'.
sp_func_class_paren_empty = ignore # ignore/add/remove/force/not_defined 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 '('. # Add or remove space between 'return' and '('.
sp_return_paren = ignore # ignore/add/remove/force/not_defined sp_return_paren = ignore # ignore/add/remove/force/not_defined
@ -926,11 +994,31 @@ sp_inside_newop_paren_open = ignore # ignore/add/remove/force/not_defined
# Overrides sp_inside_newop_paren. # Overrides sp_inside_newop_paren.
sp_inside_newop_paren_close = ignore # ignore/add/remove/force/not_defined sp_inside_newop_paren_close = ignore # ignore/add/remove/force/not_defined
# Add or remove space before a trailing or embedded comment. # Add or remove space before a trailing comment.
sp_before_tr_emb_cmt = ignore # ignore/add/remove/force/not_defined 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 before a trailing or embedded comment. # Number of spaces after an embedded comment.
sp_num_before_tr_emb_cmt = 0 # unsigned number #
# Default: 1
sp_num_after_emb_cmt = 1 # unsigned number
# (Java) Add or remove space between an annotation and the open parenthesis. # (Java) Add or remove space between an annotation and the open parenthesis.
sp_annotation_paren = ignore # ignore/add/remove/force/not_defined sp_annotation_paren = ignore # ignore/add/remove/force/not_defined
@ -1062,11 +1150,16 @@ indent_class_on_colon = false # true/false
# Whether to indent the stuff after a leading class initializer colon. # Whether to indent the stuff after a leading class initializer colon.
indent_constr_colon = false # true/false indent_constr_colon = false # true/false
# Virtual indent from the ':' for member initializers. # Virtual indent from the ':' for leading member initializers.
# #
# Default: 2 # Default: 2
indent_ctor_init_leading = 2 # unsigned number 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. # Additional indent for constructor initializer list.
# Negative values decrease indent down to the first column. # Negative values decrease indent down to the first column.
indent_ctor_init = 0 # number indent_ctor_init = 0 # number
@ -1152,7 +1245,10 @@ indent_member = 0 # unsigned number
indent_member_single = false # true/false indent_member_single = false # true/false
# Spaces to indent single line ('//') comments on lines before code. # Spaces to indent single line ('//') comments on lines before code.
indent_sing_line_comments = 0 # unsigned number 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 # 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. # the indent level by this value. Negative values decrease the indent level.
@ -1163,12 +1259,16 @@ indent_sparen_extra = 0 # number
indent_relative_single_line_comments = false # true/false indent_relative_single_line_comments = false # true/false
# Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns. # Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns.
# It might wise to choose the same value for the option indent_case_brace. # It might be wise to choose the same value for the option indent_case_brace.
indent_switch_case = 0 # unsigned number 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
# Spaces to indent '{' from 'case'. By default, the brace will appear under # 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. # the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK.
# It might wise to choose the same value for the option indent_switch_case. # It might be wise to choose the same value for the option indent_switch_case.
indent_case_brace = 0 # number indent_case_brace = 0 # number
# indent 'break' with 'case' from 'switch'. # indent 'break' with 'case' from 'switch'.
@ -1183,13 +1283,31 @@ indent_switch_pp = true # true/false
# Usually 0. # Usually 0.
indent_case_shift = 0 # unsigned number 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. # Whether to indent comments found in first column.
indent_col1_comment = false # true/false indent_col1_comment = false # true/false
# Whether to indent multi string literal in first column. # Whether to indent multi string literal in first column.
indent_col1_multi_string_literal = false # true/false indent_col1_multi_string_literal = false # true/false
# How to indent goto labels. # 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: Absolute column where 1 is the leftmost column
# <=0: Subtract from brace indent # <=0: Subtract from brace indent
@ -1875,8 +1993,10 @@ nl_type_brace_init_lst_open = ignore # ignore/add/remove/force/not_defined
# direct-list-initialization. # direct-list-initialization.
nl_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined nl_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined
# Whether to add a newline after '{'. This also adds a newline before the # Whether to add a newline before '{'.
# matching '}'. nl_before_brace_open = false # true/false
# Whether to add a newline after '{'.
nl_after_brace_open = false # true/false nl_after_brace_open = false # true/false
# Whether to add a newline between the open brace and a trailing single-line # Whether to add a newline between the open brace and a trailing single-line
@ -1956,6 +2076,12 @@ nl_before_do = ignore # ignore/add/remove/force/not_defined
# Add or remove blank line after 'do/while' statement. # Add or remove blank line after 'do/while' statement.
nl_after_do = ignore # ignore/add/remove/force/not_defined 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 # Whether to put a blank line before 'return' statements, unless after an open
# brace. # brace.
nl_before_return = false # true/false nl_before_return = false # true/false
@ -1987,7 +2113,7 @@ nl_constr_colon = ignore # ignore/add/remove/force/not_defined
# Whether to collapse a two-line namespace, like 'namespace foo\n{ decl; }' # 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 # into a single line. If true, prevents other brace newline rules from turning
# such code into four lines. # such code into four lines. If true, it also preserves one-liner namespaces.
nl_namespace_two_to_one_liner = false # true/false nl_namespace_two_to_one_liner = false # true/false
# Whether to remove a newline in simple unbraced if statements, turning them # Whether to remove a newline in simple unbraced if statements, turning them
@ -2007,7 +2133,7 @@ nl_create_while_one_liner = false # true/false
# a single line. # a single line.
nl_create_func_def_one_liner = false # true/false nl_create_func_def_one_liner = false # true/false
# Whether to split one-line simple unbraced if statements into three lines by # Whether to split one-line simple list definitions into three lines by
# adding newlines, as in 'int a[12] = { <here> 0 <here> };'. # adding newlines, as in 'int a[12] = { <here> 0 <here> };'.
nl_create_list_one_liner = false # true/false nl_create_list_one_liner = false # true/false
@ -2151,6 +2277,9 @@ nl_after_multiline_comment = false # true/false
# Whether to force a newline after a label's colon. # Whether to force a newline after a label's colon.
nl_after_label_colon = false # true/false 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. # The number of newlines after '}' or ';' of a struct/enum/union definition.
nl_after_struct = 0 # unsigned number nl_after_struct = 0 # unsigned number
@ -2558,6 +2687,22 @@ align_right_cmt_at_col = 0 # unsigned number
# 0: Don't align (default). # 0: Don't align (default).
align_func_proto_span = 0 # unsigned number 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. # The threshold for aligning function prototypes.
# Use a negative number for absolute thresholds. # Use a negative number for absolute thresholds.
# #
@ -2713,6 +2858,9 @@ cmt_align_doxygen_javadoc_tags = false # true/false
# Default: 1 # Default: 1
cmt_sp_before_doxygen_javadoc_tags = 1 # unsigned number 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. # Whether to group c-comments that look like they are in a block.
cmt_c_group = false # true/false cmt_c_group = false # true/false
@ -2882,6 +3030,9 @@ mod_full_paren_if_bool = false # true/false
# Whether to remove superfluous semicolons. # Whether to remove superfluous semicolons.
mod_remove_extra_semicolon = false # true/false 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 # 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. # a comment after the close brace, a comment will be added.
mod_add_long_function_closebrace_comment = 0 # unsigned number mod_add_long_function_closebrace_comment = 0 # unsigned number
@ -3024,10 +3175,16 @@ pp_indent_if = 0 # number
# Whether to indent the code between #if, #else and #endif. # Whether to indent the code between #if, #else and #endif.
pp_if_indent_code = false # true/false 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 # Whether to indent '#define' at the brace level. If false, these are
# indented from column 1. # indented from column 1.
pp_define_at_level = false # true/false 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. # Whether to ignore the '#define' body while formatting.
pp_ignore_define_body = false # true/false pp_ignore_define_body = false # true/false

@ -54,7 +54,7 @@ Create a highly configurable, easily modifiable source code beautifier.</p>
<li>Add or remove parens on return statements</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>Add or remove braces on single-statement if/do/while/for statements</li>
<li>Supports embedded SQL 'EXEC SQL' stuff</li> <li>Supports embedded SQL 'EXEC SQL' stuff</li>
<li>Highly configurable - 753 configurable options as of version 0.73.0</li> <li>Highly configurable - 787 configurable options as of version 0.74.0</li>
</ul> </ul>
<p> <p>
@ -84,9 +84,6 @@ The public Git URL for github.com is <br>
Windows (i386) : Windows (i386) :
<a href="http://sourceforge.net/project/showfiles.php?group_id=153164">Sourceforge</A><BR> <a href="http://sourceforge.net/project/showfiles.php?group_id=153164">Sourceforge</A><BR>
SPARC/Solaris 2.5-10 and x86/Solaris 8-10 :
<a href="http://sunfreeware.com/">sunfreeware.com</a><BR>
<h3>Universal Indent GUI</h3> <h3>Universal Indent GUI</h3>
<a href="http://universalindent.sourceforge.net/">Universal Indent GUI</a> is a <a href="http://universalindent.sourceforge.net/">Universal Indent GUI</a> is a
cross-platform graphical configuration file editor for many code beautifiers, including Uncrustify. cross-platform graphical configuration file editor for many code beautifiers, including Uncrustify.

@ -82,7 +82,8 @@ class Test
<td><a href="#indent_func_const">indent_func_const</a></td> <td><a href="#indent_func_const">indent_func_const</a></td>
<td><a href="#indent_func_throw">indent_func_throw</a></td> <td><a href="#indent_func_throw">indent_func_throw</a></td>
<td><a href="#indent_member">indent_member</a></td> <td><a href="#indent_member">indent_member</a></td>
<td><a href="#indent_sing_line_comments">indent_sing_line_comments</a></td> <td><a href="#indent_single_line_comments_before">indent_single_line_comments_before</a></td>
<td><a href="#indent_single_line_comments_after">indent_single_line_comments_after</a></td>
<td><a href="#indent_relative_single_line_comments">indent_relative_single_line_comments</a></td> <td><a href="#indent_relative_single_line_comments">indent_relative_single_line_comments</a></td>
<td><a href="#indent_switch_case">indent_switch_case</a></td> <td><a href="#indent_switch_case">indent_switch_case</a></td>
<td><a href="#indent_case_shift">indent_case_shift</a></td> <td><a href="#indent_case_shift">indent_case_shift</a></td>

@ -19,7 +19,7 @@ Where do the options work?</h1>
b = i + 1; b = i + 1;
} }
for (<a title="sp_before_semi_for_empty"><font color="red"></font></a>;<a title="sp_before_semi_for_empty"><font color="red"></font></a>;<a title="sp_after_semi_for_empty"><font color="red"></font></a>) for (<a title="sp_before_semi_for_empty"><font color="red"></font></a>;<a title="sp_between_semi_for_empty"><font color="red"></font></a>;<a title="sp_after_semi_for_empty"><font color="red"></font></a>)
{ {
b = b + 1; b = b + 1;
} }

@ -47,7 +47,7 @@ Some more options...
// Comments // Comments
<a title="sp_cmt_cpp_start"><strong><font color="red"></font></strong></a> <a title="sp_cmt_cpp_start"><strong><font color="red"></font></strong></a>
int a; /* emb cmt */ int b; // trailing cmt int a; /* emb cmt */ int b; // trailing cmt
<a title="sp_before_tr_emb_cmt"><strong><font color="red"></a><a title="sp_num_before_tr_emb_cmt">..........█ █..........█</font></strong></a> <a title="sp_before_emb_cmt"><strong><font color="red"></a><a title="sp_num_before_tr_cmt">..........█ █..........█</font></strong></a>
union { union {
uint maxChars; uint maxChars;

@ -0,0 +1,19 @@
uncrustify is not a compiler.
Let have a look on:
# if A
int abc( int a, int b, int c)
{
// do something
# else
int abc( int a, int b)
{
// do something else
# endif
}
It will produce an error, because uncrustify doesn't evaluate the value of A.
uncrustify will read all the lines, a compiler only a part of it, depending on A.
uncrustify encounter two opening graces but only one closing brace.

@ -0,0 +1,19 @@
The alignment at the sign '=' must be divided in different cases.
Case CT_ASSIGN
The most common case such as:
a = 1;
Case CT_ASSIGN_DEFAULT_ARG
The default value for an argument such as:
Foo( int Foo = 5 );
Case CT_ASSIGN_FUNC_PROTO
The function prototype modifier such as:
void* operator new(std::size_t) = delete;
Foo( const Foo & ) = default;
Foo( const Foo & ) = 0;
Introduce the new option align_assign_func_proto
Ref. #2170:
https://github.com/uncrustify/uncrustify/issues/2170

@ -50,6 +50,7 @@ sp_inside_fparens = remove # space inside 'foo( )' vs 'foo()'
sp_inside_paren = remove # space inside '+ ( xxx )' vs '+ (xxx)' sp_inside_paren = remove # space inside '+ ( xxx )' vs '+ (xxx)'
sp_inside_square = remove # space inside 'byte[ 5 ]' vs 'byte[5]' sp_inside_square = remove # space inside 'byte[ 5 ]' vs 'byte[5]'
sp_inside_sparen = force # space inside 'if( xxx )' vs 'if(xxx)' 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_inside_angle = ignore # space inside '<>', as in '<class T>'
sp_before_sparen = force # space before '(' of 'if/for/while/switch' sp_before_sparen = force # space before '(' of 'if/for/while/switch'

@ -177,7 +177,7 @@ indent_func_throw = 0 # number
indent_member = 3 # number indent_member = 3 # number
# Spaces to indent single line ('//') comments on lines before code # Spaces to indent single line ('//') comments on lines before code
indent_sing_line_comments = 0 # number indent_single_line_comments_before = 0 # number
# If set, will indent trailing single line ('//') comments relative # If set, will indent trailing single line ('//') comments relative
# to the code instead of trying to keep the same absolute column # to the code instead of trying to keep the same absolute column
@ -346,6 +346,9 @@ sp_before_sparen = force # ignore/add/remove/force
# Add or remove space inside if-condition '(' and ')' # Add or remove space inside if-condition '(' and ')'
sp_inside_sparen = remove # ignore/add/remove/force 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. # Add or remove space after ')' of 'if', 'for', 'switch', and 'while', etc.
sp_after_sparen = force # ignore/add/remove/force sp_after_sparen = force # ignore/add/remove/force
@ -355,9 +358,12 @@ sp_sparen_brace = add # ignore/add/remove/force
# Add or remove space before ';'. Default=Remove # Add or remove space before ';'. Default=Remove
sp_before_semi = remove # ignore/add/remove/force sp_before_semi = remove # ignore/add/remove/force
# Add or remove space before a semicolon of an empty part of a for statement. # 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 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 # Add or remove space after ';', except when followed by a comment. Default=Add
sp_after_semi = add # ignore/add/remove/force sp_after_semi = add # ignore/add/remove/force
@ -470,8 +476,8 @@ 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 '//~'. # 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 sp_cmt_cpp_qttr = false # false/true
# Number of spaces before a trailing or embedded comment # Number of spaces before a trailing comment
sp_num_before_tr_emb_cmt = 0 # number sp_num_before_tr_cmt = 0 # number
# #
# Code alignment (not left column spaces/tabs) # Code alignment (not left column spaces/tabs)
@ -794,7 +800,6 @@ nl_fdef_brace = add # ignore/add/remove/force
nl_after_semicolon = true # false/true nl_after_semicolon = true # false/true
# Whether to put a newline after brace open. # Whether to put a newline after brace open.
# This also adds a newline before the matching brace close.
nl_after_brace_open = true # false/true nl_after_brace_open = true # false/true
# If nl_after_brace_open and nl_after_brace_open_cmt are true, a newline is # If nl_after_brace_open and nl_after_brace_open_cmt are true, a newline is

@ -47,6 +47,7 @@ sp_inside_braces_enum = force # "{ 1 }" vs "{1}"
sp_inside_paren = remove sp_inside_paren = remove
sp_inside_fparen = remove sp_inside_fparen = remove
sp_inside_sparen = remove sp_inside_sparen = remove
sp_inside_for = remove
#sp_type_func = ignore #sp_type_func = ignore
sp_assign = force sp_assign = force
sp_arith = force sp_arith = force

@ -47,6 +47,7 @@ sp_inside_braces_enum = force # "{ 1 }" vs "{1}"
sp_inside_paren = remove sp_inside_paren = remove
sp_inside_fparen = remove sp_inside_fparen = remove
sp_inside_sparen = remove sp_inside_sparen = remove
sp_inside_for = remove
#sp_type_func = ignore #sp_type_func = ignore
sp_assign = force sp_assign = force
sp_arith = force sp_arith = force

@ -1,4 +1,4 @@
# Uncrustify-0.73.0 # Uncrustify-0.74.0
# #
# General options # General options
@ -190,7 +190,7 @@ sp_before_ptr_star = ignore # ignore/add/remove/force/not_defined
# variable name. If set to ignore, sp_before_ptr_star is used instead. # 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 sp_before_unnamed_ptr_star = ignore # ignore/add/remove/force/not_defined
# Add or remove space between pointer stars '*'. # Add or remove space between pointer stars '*', as in 'int ***a;'.
sp_between_ptr_star = ignore # ignore/add/remove/force/not_defined sp_between_ptr_star = ignore # ignore/add/remove/force/not_defined
# Add or remove space after pointer star '*', if followed by a word. # Add or remove space after pointer star '*', if followed by a word.
@ -210,14 +210,26 @@ sp_after_ptr_star_qualifier = ignore # ignore/add/remove/force/not_defined
# Overrides sp_after_ptr_star and sp_type_func. # Overrides sp_after_ptr_star and sp_type_func.
sp_after_ptr_star_func = ignore # ignore/add/remove/force/not_defined 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 after a pointer star '*', if followed by an open # Add or remove space after a pointer star '*', if followed by an open
# parenthesis, as in 'void* (*)(). # parenthesis, as in 'void* (*)()'.
sp_ptr_star_paren = ignore # ignore/add/remove/force/not_defined sp_ptr_star_paren = ignore # ignore/add/remove/force/not_defined
# Add or remove space before a pointer star '*', if followed by a function # Add or remove space before a pointer star '*', if followed by a function
# prototype or function definition. # prototype or function definition.
sp_before_ptr_star_func = ignore # ignore/add/remove/force/not_defined 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 '&'. # Add or remove space before a reference sign '&'.
sp_before_byref = ignore # ignore/add/remove/force/not_defined sp_before_byref = ignore # ignore/add/remove/force/not_defined
@ -303,23 +315,40 @@ sp_permit_cpp11_shift = false # true/false
# 'while', etc.). # 'while', etc.).
sp_before_sparen = ignore # ignore/add/remove/force/not_defined sp_before_sparen = ignore # ignore/add/remove/force/not_defined
# Add or remove space inside '(' and ')' of control statements. # Add or remove space inside '(' and ')' of control statements other than
# 'for'.
sp_inside_sparen = ignore # ignore/add/remove/force/not_defined sp_inside_sparen = ignore # ignore/add/remove/force/not_defined
# Add or remove space after '(' of control statements. # Add or remove space after '(' of control statements other than 'for'.
# #
# Overrides sp_inside_sparen. # Overrides sp_inside_sparen.
sp_inside_sparen_open = ignore # ignore/add/remove/force/not_defined sp_inside_sparen_open = ignore # ignore/add/remove/force/not_defined
# Add or remove space before ')' of control statements. # Add or remove space before ')' of control statements other than 'for'.
# #
# Overrides sp_inside_sparen. # Overrides sp_inside_sparen.
sp_inside_sparen_close = ignore # ignore/add/remove/force/not_defined 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. # Add or remove space after ')' of control statements.
sp_after_sparen = ignore # ignore/add/remove/force/not_defined sp_after_sparen = ignore # ignore/add/remove/force/not_defined
# Add or remove space between ')' and '{' of of control statements. # Add or remove space between ')' and '{' of control statements.
sp_sparen_brace = ignore # ignore/add/remove/force/not_defined sp_sparen_brace = ignore # ignore/add/remove/force/not_defined
# Add or remove space between 'do' and '{'. # Add or remove space between 'do' and '{'.
@ -348,9 +377,14 @@ sp_before_semi = remove # ignore/add/remove/force/not_defined
# Add or remove space before ';' in non-empty 'for' statements. # Add or remove space before ';' in non-empty 'for' statements.
sp_before_semi_for = ignore # ignore/add/remove/force/not_defined sp_before_semi_for = ignore # ignore/add/remove/force/not_defined
# Add or remove space before a semicolon of an empty part of a for statement. # 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 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. # Add or remove space after ';', except when followed by a comment.
# #
# Default: add # Default: add
@ -395,7 +429,7 @@ sp_inside_square_oc_array = ignore # ignore/add/remove/force/not_defined
# Add or remove space after ',', i.e. 'a,b' vs. 'a, b'. # Add or remove space after ',', i.e. 'a,b' vs. 'a, b'.
sp_after_comma = ignore # ignore/add/remove/force/not_defined sp_after_comma = ignore # ignore/add/remove/force/not_defined
# Add or remove space before ','. # Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'.
# #
# Default: remove # Default: remove
sp_before_comma = remove # ignore/add/remove/force/not_defined sp_before_comma = remove # ignore/add/remove/force/not_defined
@ -418,19 +452,31 @@ sp_between_mdatype_commas = ignore # ignore/add/remove/force/not_defined
# Default: force # Default: force
sp_paren_comma = force # ignore/add/remove/force/not_defined sp_paren_comma = force # ignore/add/remove/force/not_defined
# Add or remove space after the variadic '...' when preceded by a
# non-punctuator.
# The value REMOVE will be overriden with FORCE
sp_after_ellipsis = ignore # ignore/add/remove/force/not_defined
# Add or remove space before the variadic '...' when preceded by a # Add or remove space before the variadic '...' when preceded by a
# non-punctuator. # non-punctuator.
# The value REMOVE will be overriden with FORCE
sp_before_ellipsis = ignore # ignore/add/remove/force/not_defined sp_before_ellipsis = ignore # ignore/add/remove/force/not_defined
# Add or remove space between a type and '...'. # Add or remove space between a type and '...'.
sp_type_ellipsis = ignore # ignore/add/remove/force/not_defined 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
# (D) Add or remove space between a type and '?'. # (D) Add or remove space between a type and '?'.
sp_type_question = ignore # ignore/add/remove/force/not_defined sp_type_question = ignore # ignore/add/remove/force/not_defined
# Add or remove space between ')' and '...'. # Add or remove space between ')' and '...'.
sp_paren_ellipsis = ignore # ignore/add/remove/force/not_defined 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'. # Add or remove space between ')' and a qualifier such as 'const'.
sp_paren_qualifier = ignore # ignore/add/remove/force/not_defined sp_paren_qualifier = ignore # ignore/add/remove/force/not_defined
@ -444,10 +490,14 @@ sp_after_class_colon = ignore # ignore/add/remove/force/not_defined
sp_before_class_colon = ignore # ignore/add/remove/force/not_defined sp_before_class_colon = ignore # ignore/add/remove/force/not_defined
# Add or remove space after class constructor ':'. # Add or remove space after class constructor ':'.
sp_after_constr_colon = ignore # ignore/add/remove/force/not_defined #
# Default: add
sp_after_constr_colon = add # ignore/add/remove/force/not_defined
# Add or remove space before class constructor ':'. # Add or remove space before class constructor ':'.
sp_before_constr_colon = ignore # ignore/add/remove/force/not_defined #
# Default: add
sp_before_constr_colon = add # ignore/add/remove/force/not_defined
# Add or remove space before case ':'. # Add or remove space before case ':'.
# #
@ -485,6 +535,12 @@ sp_sizeof_ellipsis = ignore # ignore/add/remove/force/not_defined
# Add or remove space between 'sizeof...' and '('. # Add or remove space between 'sizeof...' and '('.
sp_sizeof_ellipsis_paren = ignore # ignore/add/remove/force/not_defined 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 '('. # Add or remove space between 'decltype' and '('.
sp_decltype_paren = ignore # ignore/add/remove/force/not_defined sp_decltype_paren = ignore # ignore/add/remove/force/not_defined
@ -501,14 +557,21 @@ sp_inside_braces_struct = ignore # ignore/add/remove/force/not_defined
sp_inside_braces_oc_dict = ignore # ignore/add/remove/force/not_defined sp_inside_braces_oc_dict = ignore # ignore/add/remove/force/not_defined
# Add or remove space after open brace in an unnamed temporary # Add or remove space after open brace in an unnamed temporary
# direct-list-initialization. # 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 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 # Add or remove space before close brace in an unnamed temporary
# direct-list-initialization. # 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 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. # 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 sp_inside_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined
# Add or remove space inside '{' and '}'. # Add or remove space inside '{' and '}'.
@ -603,6 +666,11 @@ sp_func_class_paren = ignore # ignore/add/remove/force/not_defined
# and '()'. # and '()'.
sp_func_class_paren_empty = ignore # ignore/add/remove/force/not_defined 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 '('. # Add or remove space between 'return' and '('.
sp_return_paren = ignore # ignore/add/remove/force/not_defined sp_return_paren = ignore # ignore/add/remove/force/not_defined
@ -926,11 +994,31 @@ sp_inside_newop_paren_open = ignore # ignore/add/remove/force/not_defined
# Overrides sp_inside_newop_paren. # Overrides sp_inside_newop_paren.
sp_inside_newop_paren_close = ignore # ignore/add/remove/force/not_defined sp_inside_newop_paren_close = ignore # ignore/add/remove/force/not_defined
# Add or remove space before a trailing or embedded comment. # Add or remove space before a trailing comment.
sp_before_tr_emb_cmt = ignore # ignore/add/remove/force/not_defined 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 before a trailing or embedded comment. # Number of spaces after an embedded comment.
sp_num_before_tr_emb_cmt = 0 # unsigned number #
# Default: 1
sp_num_after_emb_cmt = 1 # unsigned number
# (Java) Add or remove space between an annotation and the open parenthesis. # (Java) Add or remove space between an annotation and the open parenthesis.
sp_annotation_paren = ignore # ignore/add/remove/force/not_defined sp_annotation_paren = ignore # ignore/add/remove/force/not_defined
@ -1062,11 +1150,16 @@ indent_class_on_colon = false # true/false
# Whether to indent the stuff after a leading class initializer colon. # Whether to indent the stuff after a leading class initializer colon.
indent_constr_colon = false # true/false indent_constr_colon = false # true/false
# Virtual indent from the ':' for member initializers. # Virtual indent from the ':' for leading member initializers.
# #
# Default: 2 # Default: 2
indent_ctor_init_leading = 2 # unsigned number 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. # Additional indent for constructor initializer list.
# Negative values decrease indent down to the first column. # Negative values decrease indent down to the first column.
indent_ctor_init = 0 # number indent_ctor_init = 0 # number
@ -1152,7 +1245,10 @@ indent_member = 0 # unsigned number
indent_member_single = false # true/false indent_member_single = false # true/false
# Spaces to indent single line ('//') comments on lines before code. # Spaces to indent single line ('//') comments on lines before code.
indent_sing_line_comments = 0 # unsigned number 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 # 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. # the indent level by this value. Negative values decrease the indent level.
@ -1163,12 +1259,16 @@ indent_sparen_extra = 0 # number
indent_relative_single_line_comments = false # true/false indent_relative_single_line_comments = false # true/false
# Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns. # Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns.
# It might wise to choose the same value for the option indent_case_brace. # It might be wise to choose the same value for the option indent_case_brace.
indent_switch_case = 0 # unsigned number 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
# Spaces to indent '{' from 'case'. By default, the brace will appear under # 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. # the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK.
# It might wise to choose the same value for the option indent_switch_case. # It might be wise to choose the same value for the option indent_switch_case.
indent_case_brace = 0 # number indent_case_brace = 0 # number
# indent 'break' with 'case' from 'switch'. # indent 'break' with 'case' from 'switch'.
@ -1183,13 +1283,31 @@ indent_switch_pp = true # true/false
# Usually 0. # Usually 0.
indent_case_shift = 0 # unsigned number 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. # Whether to indent comments found in first column.
indent_col1_comment = false # true/false indent_col1_comment = false # true/false
# Whether to indent multi string literal in first column. # Whether to indent multi string literal in first column.
indent_col1_multi_string_literal = false # true/false indent_col1_multi_string_literal = false # true/false
# How to indent goto labels. # 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: Absolute column where 1 is the leftmost column
# <=0: Subtract from brace indent # <=0: Subtract from brace indent
@ -1875,8 +1993,10 @@ nl_type_brace_init_lst_open = ignore # ignore/add/remove/force/not_defined
# direct-list-initialization. # direct-list-initialization.
nl_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined nl_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined
# Whether to add a newline after '{'. This also adds a newline before the # Whether to add a newline before '{'.
# matching '}'. nl_before_brace_open = false # true/false
# Whether to add a newline after '{'.
nl_after_brace_open = false # true/false nl_after_brace_open = false # true/false
# Whether to add a newline between the open brace and a trailing single-line # Whether to add a newline between the open brace and a trailing single-line
@ -1956,6 +2076,12 @@ nl_before_do = ignore # ignore/add/remove/force/not_defined
# Add or remove blank line after 'do/while' statement. # Add or remove blank line after 'do/while' statement.
nl_after_do = ignore # ignore/add/remove/force/not_defined 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 # Whether to put a blank line before 'return' statements, unless after an open
# brace. # brace.
nl_before_return = false # true/false nl_before_return = false # true/false
@ -1987,7 +2113,7 @@ nl_constr_colon = ignore # ignore/add/remove/force/not_defined
# Whether to collapse a two-line namespace, like 'namespace foo\n{ decl; }' # 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 # into a single line. If true, prevents other brace newline rules from turning
# such code into four lines. # such code into four lines. If true, it also preserves one-liner namespaces.
nl_namespace_two_to_one_liner = false # true/false nl_namespace_two_to_one_liner = false # true/false
# Whether to remove a newline in simple unbraced if statements, turning them # Whether to remove a newline in simple unbraced if statements, turning them
@ -2007,7 +2133,7 @@ nl_create_while_one_liner = false # true/false
# a single line. # a single line.
nl_create_func_def_one_liner = false # true/false nl_create_func_def_one_liner = false # true/false
# Whether to split one-line simple unbraced if statements into three lines by # Whether to split one-line simple list definitions into three lines by
# adding newlines, as in 'int a[12] = { <here> 0 <here> };'. # adding newlines, as in 'int a[12] = { <here> 0 <here> };'.
nl_create_list_one_liner = false # true/false nl_create_list_one_liner = false # true/false
@ -2151,6 +2277,9 @@ nl_after_multiline_comment = false # true/false
# Whether to force a newline after a label's colon. # Whether to force a newline after a label's colon.
nl_after_label_colon = false # true/false 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. # The number of newlines after '}' or ';' of a struct/enum/union definition.
nl_after_struct = 0 # unsigned number nl_after_struct = 0 # unsigned number
@ -2558,6 +2687,22 @@ align_right_cmt_at_col = 0 # unsigned number
# 0: Don't align (default). # 0: Don't align (default).
align_func_proto_span = 0 # unsigned number 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. # The threshold for aligning function prototypes.
# Use a negative number for absolute thresholds. # Use a negative number for absolute thresholds.
# #
@ -2713,6 +2858,9 @@ cmt_align_doxygen_javadoc_tags = false # true/false
# Default: 1 # Default: 1
cmt_sp_before_doxygen_javadoc_tags = 1 # unsigned number 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. # Whether to group c-comments that look like they are in a block.
cmt_c_group = false # true/false cmt_c_group = false # true/false
@ -2882,6 +3030,9 @@ mod_full_paren_if_bool = false # true/false
# Whether to remove superfluous semicolons. # Whether to remove superfluous semicolons.
mod_remove_extra_semicolon = false # true/false 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 # 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. # a comment after the close brace, a comment will be added.
mod_add_long_function_closebrace_comment = 0 # unsigned number mod_add_long_function_closebrace_comment = 0 # unsigned number
@ -3024,10 +3175,16 @@ pp_indent_if = 0 # number
# Whether to indent the code between #if, #else and #endif. # Whether to indent the code between #if, #else and #endif.
pp_if_indent_code = false # true/false 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 # Whether to indent '#define' at the brace level. If false, these are
# indented from column 1. # indented from column 1.
pp_define_at_level = false # true/false 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. # Whether to ignore the '#define' body while formatting.
pp_ignore_define_body = false # true/false pp_ignore_define_body = false # true/false

@ -31,7 +31,7 @@ indent_func_param_double = false
indent_func_const = 0 indent_func_const = 0
indent_func_throw = 0 indent_func_throw = 0
indent_member = 0 indent_member = 0
indent_sing_line_comments = 0 indent_single_line_comments_before = 0
indent_relative_single_line_comments = false indent_relative_single_line_comments = false
indent_switch_case = 0 indent_switch_case = 0
indent_case_shift = 0 indent_case_shift = 0
@ -84,6 +84,8 @@ sp_angle_word = ignore
sp_before_sparen = force sp_before_sparen = force
sp_inside_sparen = remove sp_inside_sparen = remove
sp_inside_sparen_close = ignore sp_inside_sparen_close = ignore
sp_inside_for = remove
sp_inside_for_close = ignore
sp_after_sparen = force sp_after_sparen = force
sp_sparen_brace = add sp_sparen_brace = add
sp_invariant_paren = ignore sp_invariant_paren = ignore
@ -92,6 +94,7 @@ sp_special_semi = ignore
sp_before_semi = remove sp_before_semi = remove
sp_before_semi_for = ignore sp_before_semi_for = ignore
sp_before_semi_for_empty = force sp_before_semi_for_empty = force
sp_between_semi_for_empty = force
sp_after_semi = add sp_after_semi = add
sp_after_semi_for = force sp_after_semi_for = force
sp_after_semi_for_empty = ignore sp_after_semi_for_empty = ignore

@ -47,6 +47,7 @@ sp_inside_braces_enum = force # "{ 1 }" vs "{1}"
sp_inside_paren = remove sp_inside_paren = remove
sp_inside_fparen = remove sp_inside_fparen = remove
sp_inside_sparen = remove sp_inside_sparen = remove
sp_inside_for = remove
#sp_type_func = ignore #sp_type_func = ignore
sp_assign = force sp_assign = force
sp_arith = force sp_arith = force

@ -108,6 +108,10 @@ sp_between_ptr_star = remove # ignore/add/remove/force
# Add or remove space after pointer star '*' # Add or remove space after pointer star '*'
sp_after_ptr_star = remove # ignore/add/remove/force 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 '&' # Add or remove space before reference sign '&'
sp_before_byref = remove # ignore/add/remove/force sp_before_byref = remove # ignore/add/remove/force
@ -126,6 +130,9 @@ sp_before_sparen = remove # ignore/add/remove/force
# Add or remove space inside if-condition '(' and ')' # Add or remove space inside if-condition '(' and ')'
sp_inside_sparen = remove # ignore/add/remove/force 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' # Add or remove space after ')' of 'if', 'for', 'switch', and 'while'
sp_after_sparen = remove # ignore/add/remove/force sp_after_sparen = remove # ignore/add/remove/force

@ -46,7 +46,8 @@ sp_inside_braces_struct = force # "{ 1 }" vs "{1}"
sp_inside_braces_enum = force # "{ 1 }" vs "{1}" sp_inside_braces_enum = force # "{ 1 }" vs "{1}"
sp_inside_paren = remove # "( 1 )" vs "(1)" sp_inside_paren = remove # "( 1 )" vs "(1)"
sp_inside_fparen = remove # "( 1 )" vs "(1)" - functions sp_inside_fparen = remove # "( 1 )" vs "(1)" - functions
sp_inside_sparen = remove # "( 1 )" vs "(1)" - if/for/etc sp_inside_sparen = remove # "( 1 )" vs "(1)" - if etc
sp_inside_for = remove # "( 1 )" vs "(1)" - for
# sp_type_func = ignore # sp_type_func = ignore
sp_assign = force sp_assign = force
sp_arith = force sp_arith = force

@ -104,9 +104,11 @@ sp_inside_square = remove
sp_inside_paren_cast = remove sp_inside_paren_cast = remove
sp_inside_fparen = remove sp_inside_fparen = remove
sp_inside_sparen = remove sp_inside_sparen = remove
sp_inside_for = remove
sp_paren_paren = remove sp_paren_paren = remove
sp_before_ptr_star = force sp_before_ptr_star = force
sp_after_ptr_star = remove sp_after_ptr_star = remove
sp_ptr_star_func_var = remove
sp_between_ptr_star = remove sp_between_ptr_star = remove
align_func_params = true align_func_params = true
align_var_struct_span = 6 align_var_struct_span = 6

@ -48,6 +48,7 @@ sp_inside_braces_enum = force # "{ 1 }" vs "{1}"
sp_inside_paren = remove sp_inside_paren = remove
sp_inside_fparen = remove sp_inside_fparen = remove
sp_inside_sparen = remove sp_inside_sparen = remove
sp_inside_for = remove
sp_inside_square = remove sp_inside_square = remove
sp_before_square = add sp_before_square = add
#sp_type_func = ignore #sp_type_func = ignore

@ -179,7 +179,7 @@ indent_func_throw = 0 # number
indent_member = 4 # number indent_member = 4 # number
# Spaces to indent single line ('//') comments on lines before code # Spaces to indent single line ('//') comments on lines before code
indent_sing_line_comments = 0 # number indent_single_line_comments_before = 0 # number
# If set, will indent trailing single line ('//') comments relative # If set, will indent trailing single line ('//') comments relative
# to the code instead of trying to keep the same absolute column # to the code instead of trying to keep the same absolute column
@ -364,6 +364,10 @@ 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. # 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 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). # 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 sp_ptr_star_paren = remove # ignore/add/remove/force
@ -430,6 +434,15 @@ sp_inside_sparen_close = remove # ignore/add/remove/force
# Add or remove space after if-condition '('. Overrides sp_inside_sparen. # Add or remove space after if-condition '('. Overrides sp_inside_sparen.
sp_inside_sparen_open = remove # ignore/add/remove/force 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. # Add or remove space after ')' of 'if', 'for', 'switch', and 'while', etc.
sp_after_sparen = force # ignore/add/remove/force sp_after_sparen = force # ignore/add/remove/force
@ -451,9 +464,12 @@ sp_before_semi = remove # ignore/add/remove/force
# Add or remove space before ';' in non-empty 'for' statements # Add or remove space before ';' in non-empty 'for' statements
sp_before_semi_for = remove # ignore/add/remove/force sp_before_semi_for = remove # ignore/add/remove/force
# Add or remove space before a semicolon of an empty part of a for statement. # 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 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 # Add or remove space after ';', except when followed by a comment. Default=Add
sp_after_semi = force # ignore/add/remove/force sp_after_semi = force # ignore/add/remove/force
@ -807,10 +823,10 @@ sp_after_new = force # ignore/add/remove/force
sp_between_new_paren = remove # ignore/add/remove/force sp_between_new_paren = remove # ignore/add/remove/force
# Controls the spaces before a trailing or embedded comment # Controls the spaces before a trailing or embedded comment
sp_before_tr_emb_cmt = force # ignore/add/remove/force sp_before_tr_cmt = force # ignore/add/remove/force
# Number of spaces before a trailing or embedded comment # Number of spaces before a trailing or embedded comment
sp_num_before_tr_emb_cmt = 0 # number sp_num_before_tr_cmt = 0 # number
# Control space between a Java annotation and the open paren. # Control space between a Java annotation and the open paren.
sp_annotation_paren = remove # ignore/add/remove/force sp_annotation_paren = remove # ignore/add/remove/force
@ -1276,7 +1292,6 @@ nl_after_semicolon = true # false/true
nl_paren_dbrace_open = remove # ignore/add/remove/force nl_paren_dbrace_open = remove # ignore/add/remove/force
# Whether to put a newline after brace open. # Whether to put a newline after brace open.
# This also adds a newline before the matching brace close.
nl_after_brace_open = true # false/true nl_after_brace_open = true # false/true
# If nl_after_brace_open and nl_after_brace_open_cmt are true, a newline is # If nl_after_brace_open and nl_after_brace_open_cmt are true, a newline is

@ -15,7 +15,7 @@ parameterOrder=ipo
showHelpParameter=-h showHelpParameter=-h
stringparaminquotes=false stringparaminquotes=false
useCfgFileParameter="-c " useCfgFileParameter="-c "
version=Uncrustify-0.73.0 version=Uncrustify-0.74.0
[Newlines] [Newlines]
Category=0 Category=0
@ -418,7 +418,7 @@ ValueDefault=ignore
[Sp Between Ptr Star] [Sp Between Ptr Star]
Category=1 Category=1
Description="<html>Add or remove space between pointer stars '*'.</html>" Description="<html>Add or remove space between pointer stars '*', as in 'int ***a;'.</html>"
Enabled=false Enabled=false
EditorType=multiple 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 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
@ -461,9 +461,27 @@ Choices=sp_after_ptr_star_func=ignore|sp_after_ptr_star_func=add|sp_after_ptr_st
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" 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 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 Paren] [Sp Ptr Star Paren]
Category=1 Category=1
Description="<html>Add or remove space after a pointer star '*', if followed by an open<br/>parenthesis, as in 'void* (*)().</html>" Description="<html>Add or remove space after a pointer star '*', if followed by an open<br/>parenthesis, as in 'void* (*)()'.</html>"
Enabled=false Enabled=false
EditorType=multiple 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 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
@ -479,6 +497,15 @@ Choices=sp_before_ptr_star_func=ignore|sp_before_ptr_star_func=add|sp_before_ptr
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" 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 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] [Sp Before Byref]
Category=1 Category=1
Description="<html>Add or remove space before a reference sign '&amp;'.</html>" Description="<html>Add or remove space before a reference sign '&amp;'.</html>"
@ -660,7 +687,7 @@ ValueDefault=ignore
[Sp Inside Sparen] [Sp Inside Sparen]
Category=1 Category=1
Description="<html>Add or remove space inside '(' and ')' of control statements.</html>" Description="<html>Add or remove space inside '(' and ')' of control statements other than<br/>'for'.</html>"
Enabled=false Enabled=false
EditorType=multiple EditorType=multiple
Choices=sp_inside_sparen=ignore|sp_inside_sparen=add|sp_inside_sparen=remove|sp_inside_sparen=force|sp_inside_sparen=not_defined Choices=sp_inside_sparen=ignore|sp_inside_sparen=add|sp_inside_sparen=remove|sp_inside_sparen=force|sp_inside_sparen=not_defined
@ -669,7 +696,7 @@ ValueDefault=ignore
[Sp Inside Sparen Open] [Sp Inside Sparen Open]
Category=1 Category=1
Description="<html>Add or remove space after '(' of control statements.<br/><br/>Overrides sp_inside_sparen.</html>" Description="<html>Add or remove space after '(' of control statements other than 'for'.<br/><br/>Overrides sp_inside_sparen.</html>"
Enabled=false Enabled=false
EditorType=multiple 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 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
@ -678,13 +705,49 @@ ValueDefault=ignore
[Sp Inside Sparen Close] [Sp Inside Sparen Close]
Category=1 Category=1
Description="<html>Add or remove space before ')' of control statements.<br/><br/>Overrides sp_inside_sparen.</html>" Description="<html>Add or remove space before ')' of control statements other than 'for'.<br/><br/>Overrides sp_inside_sparen.</html>"
Enabled=false Enabled=false
EditorType=multiple 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 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" ChoicesReadable="Ignore Sp Inside Sparen Close|Add Sp Inside Sparen Close|Remove Sp Inside Sparen Close|Force Sp Inside Sparen Close"
ValueDefault=ignore 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] [Sp After Sparen]
Category=1 Category=1
Description="<html>Add or remove space after ')' of control statements.</html>" Description="<html>Add or remove space after ')' of control statements.</html>"
@ -696,7 +759,7 @@ ValueDefault=ignore
[Sp Sparen Brace] [Sp Sparen Brace]
Category=1 Category=1
Description="<html>Add or remove space between ')' and '{' of of control statements.</html>" Description="<html>Add or remove space between ')' and '{' of control statements.</html>"
Enabled=false Enabled=false
EditorType=multiple EditorType=multiple
Choices=sp_sparen_brace=ignore|sp_sparen_brace=add|sp_sparen_brace=remove|sp_sparen_brace=force|sp_sparen_brace=not_defined Choices=sp_sparen_brace=ignore|sp_sparen_brace=add|sp_sparen_brace=remove|sp_sparen_brace=force|sp_sparen_brace=not_defined
@ -777,13 +840,22 @@ ValueDefault=ignore
[Sp Before Semi For Empty] [Sp Before Semi For Empty]
Category=1 Category=1
Description="<html>Add or remove space before a semicolon of an empty part of a for statement.</html>" 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 Enabled=false
EditorType=multiple 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 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" 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 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] [Sp After Semi]
Category=1 Category=1
Description="<html>Add or remove space after ';', except when followed by a comment.<br/><br/>Default: add</html>" Description="<html>Add or remove space after ';', except when followed by a comment.<br/><br/>Default: add</html>"
@ -894,7 +966,7 @@ ValueDefault=ignore
[Sp Before Comma] [Sp Before Comma]
Category=1 Category=1
Description="<html>Add or remove space before ','.<br/><br/>Default: remove</html>" Description="<html>Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'.<br/><br/>Default: remove</html>"
Enabled=false Enabled=false
EditorType=multiple EditorType=multiple
Choices=sp_before_comma=ignore|sp_before_comma=add|sp_before_comma=remove|sp_before_comma=force|sp_before_comma=not_defined Choices=sp_before_comma=ignore|sp_before_comma=add|sp_before_comma=remove|sp_before_comma=force|sp_before_comma=not_defined
@ -937,9 +1009,18 @@ Choices=sp_paren_comma=ignore|sp_paren_comma=add|sp_paren_comma=remove|sp_paren_
ChoicesReadable="Ignore Sp Paren Comma|Add Sp Paren Comma|Remove Sp Paren Comma|Force Sp Paren Comma" ChoicesReadable="Ignore Sp Paren Comma|Add Sp Paren Comma|Remove Sp Paren Comma|Force Sp Paren Comma"
ValueDefault=force ValueDefault=force
[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 overriden 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] [Sp Before Ellipsis]
Category=1 Category=1
Description="<html>Add or remove space before the variadic '...' when preceded by a<br/>non-punctuator.</html>" Description="<html>Add or remove space before the variadic '...' when preceded by a<br/>non-punctuator.<br/>The value REMOVE will be overriden with FORCE</html>"
Enabled=false Enabled=false
EditorType=multiple EditorType=multiple
Choices=sp_before_ellipsis=ignore|sp_before_ellipsis=add|sp_before_ellipsis=remove|sp_before_ellipsis=force|sp_before_ellipsis=not_defined Choices=sp_before_ellipsis=ignore|sp_before_ellipsis=add|sp_before_ellipsis=remove|sp_before_ellipsis=force|sp_before_ellipsis=not_defined
@ -955,6 +1036,15 @@ Choices=sp_type_ellipsis=ignore|sp_type_ellipsis=add|sp_type_ellipsis=remove|sp_
ChoicesReadable="Ignore Sp Type Ellipsis|Add Sp Type Ellipsis|Remove Sp Type Ellipsis|Force Sp Type Ellipsis" ChoicesReadable="Ignore Sp Type Ellipsis|Add Sp Type Ellipsis|Remove Sp Type Ellipsis|Force Sp Type Ellipsis"
ValueDefault=ignore 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 Type Question] [Sp Type Question]
Category=1 Category=1
Description="<html>(D) Add or remove space between a type and '?'.</html>" Description="<html>(D) Add or remove space between a type and '?'.</html>"
@ -973,6 +1063,15 @@ Choices=sp_paren_ellipsis=ignore|sp_paren_ellipsis=add|sp_paren_ellipsis=remove|
ChoicesReadable="Ignore Sp Paren Ellipsis|Add Sp Paren Ellipsis|Remove Sp Paren Ellipsis|Force Sp Paren Ellipsis" ChoicesReadable="Ignore Sp Paren Ellipsis|Add Sp Paren Ellipsis|Remove Sp Paren Ellipsis|Force Sp Paren Ellipsis"
ValueDefault=ignore 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] [Sp Paren Qualifier]
Category=1 Category=1
Description="<html>Add or remove space between ')' and a qualifier such as 'const'.</html>" Description="<html>Add or remove space between ')' and a qualifier such as 'const'.</html>"
@ -1011,21 +1110,21 @@ ValueDefault=ignore
[Sp After Constr Colon] [Sp After Constr Colon]
Category=1 Category=1
Description="<html>Add or remove space after class constructor ':'.</html>" Description="<html>Add or remove space after class constructor ':'.<br/><br/>Default: add</html>"
Enabled=false Enabled=false
EditorType=multiple 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 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" ChoicesReadable="Ignore Sp After Constr Colon|Add Sp After Constr Colon|Remove Sp After Constr Colon|Force Sp After Constr Colon"
ValueDefault=ignore ValueDefault=add
[Sp Before Constr Colon] [Sp Before Constr Colon]
Category=1 Category=1
Description="<html>Add or remove space before class constructor ':'.</html>" Description="<html>Add or remove space before class constructor ':'.<br/><br/>Default: add</html>"
Enabled=false Enabled=false
EditorType=multiple 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 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" ChoicesReadable="Ignore Sp Before Constr Colon|Add Sp Before Constr Colon|Remove Sp Before Constr Colon|Force Sp Before Constr Colon"
ValueDefault=ignore ValueDefault=add
[Sp Before Case Colon] [Sp Before Case Colon]
Category=1 Category=1
@ -1117,6 +1216,24 @@ Choices=sp_sizeof_ellipsis_paren=ignore|sp_sizeof_ellipsis_paren=add|sp_sizeof_e
ChoicesReadable="Ignore Sp Sizeof Ellipsis Paren|Add Sp Sizeof Ellipsis Paren|Remove Sp Sizeof Ellipsis Paren|Force Sp Sizeof Ellipsis Paren" ChoicesReadable="Ignore Sp Sizeof Ellipsis Paren|Add Sp Sizeof Ellipsis Paren|Remove Sp Sizeof Ellipsis Paren|Force Sp Sizeof Ellipsis Paren"
ValueDefault=ignore 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] [Sp Decltype Paren]
Category=1 Category=1
Description="<html>Add or remove space between 'decltype' and '('.</html>" Description="<html>Add or remove space between 'decltype' and '('.</html>"
@ -1164,7 +1281,7 @@ ValueDefault=ignore
[Sp After Type Brace Init Lst Open] [Sp After Type Brace Init Lst Open]
Category=1 Category=1
Description="<html>Add or remove space after open brace in an unnamed temporary<br/>direct-list-initialization.</html>" 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 Enabled=false
EditorType=multiple 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 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
@ -1173,7 +1290,7 @@ ValueDefault=ignore
[Sp Before Type Brace Init Lst Close] [Sp Before Type Brace Init Lst Close]
Category=1 Category=1
Description="<html>Add or remove space before close brace in an unnamed temporary<br/>direct-list-initialization.</html>" 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 Enabled=false
EditorType=multiple 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 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
@ -1182,7 +1299,7 @@ ValueDefault=ignore
[Sp Inside Type Brace Init Lst] [Sp Inside Type Brace Init Lst]
Category=1 Category=1
Description="<html>Add or remove space inside an unnamed temporary direct-list-initialization.</html>" 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 Enabled=false
EditorType=multiple 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 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
@ -1414,6 +1531,15 @@ Choices=sp_func_class_paren_empty=ignore|sp_func_class_paren_empty=add|sp_func_c
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" 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 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] [Sp Return Paren]
Category=1 Category=1
Description="<html>Add or remove space between 'return' and '('.</html>" Description="<html>Add or remove space between 'return' and '('.</html>"
@ -2132,25 +2258,63 @@ Choices=sp_inside_newop_paren_close=ignore|sp_inside_newop_paren_close=add|sp_in
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" 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 ValueDefault=ignore
[Sp Before Tr Emb Cmt] [Sp Before Tr Cmt]
Category=1 Category=1
Description="<html>Add or remove space before a trailing or embedded comment.</html>" Description="<html>Add or remove space before a trailing comment.</html>"
Enabled=false Enabled=false
EditorType=multiple EditorType=multiple
Choices=sp_before_tr_emb_cmt=ignore|sp_before_tr_emb_cmt=add|sp_before_tr_emb_cmt=remove|sp_before_tr_emb_cmt=force|sp_before_tr_emb_cmt=not_defined 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 Emb Cmt|Add Sp Before Tr Emb Cmt|Remove Sp Before Tr Emb Cmt|Force Sp Before Tr Emb Cmt" ChoicesReadable="Ignore Sp Before Tr Cmt|Add Sp Before Tr Cmt|Remove Sp Before Tr Cmt|Force Sp Before Tr Cmt"
ValueDefault=ignore ValueDefault=ignore
[Sp Num Before Tr Emb Cmt] [Sp Num Before Tr Cmt]
Category=1 Category=1
Description="<html>Number of spaces before a trailing or embedded comment.</html>" Description="<html>Number of spaces before a trailing comment.</html>"
Enabled=false Enabled=false
EditorType=numeric EditorType=numeric
CallName="sp_num_before_tr_emb_cmt=" CallName="sp_num_before_tr_cmt="
MinVal=0 MinVal=0
MaxVal=16 MaxVal=16
ValueDefault=0 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] [Sp Annotation Paren]
Category=1 Category=1
Description="<html>(Java) Add or remove space between an annotation and the open parenthesis.</html>" Description="<html>(Java) Add or remove space between an annotation and the open parenthesis.</html>"
@ -2439,7 +2603,7 @@ ValueDefault=false
[Indent Ctor Init Leading] [Indent Ctor Init Leading]
Category=2 Category=2
Description="<html>Virtual indent from the ':' for member initializers.<br/><br/>Default: 2</html>" Description="<html>Virtual indent from the ':' for leading member initializers.<br/><br/>Default: 2</html>"
Enabled=false Enabled=false
EditorType=numeric EditorType=numeric
CallName="indent_ctor_init_leading=" CallName="indent_ctor_init_leading="
@ -2447,6 +2611,16 @@ MinVal=0
MaxVal=16 MaxVal=16
ValueDefault=2 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] [Indent Ctor Init]
Category=2 Category=2
Description="<html>Additional indent for constructor initializer list.<br/>Negative values decrease indent down to the first column.</html>" Description="<html>Additional indent for constructor initializer list.<br/>Negative values decrease indent down to the first column.</html>"
@ -2611,12 +2785,22 @@ EditorType=boolean
TrueFalse=indent_member_single=true|indent_member_single=false TrueFalse=indent_member_single=true|indent_member_single=false
ValueDefault=false ValueDefault=false
[Indent Sing Line Comments] [Indent Single Line Comments Before]
Category=2 Category=2
Description="<html>Spaces to indent single line ('//') comments on lines before code.</html>" Description="<html>Spaces to indent single line ('//') comments on lines before code.</html>"
Enabled=false Enabled=false
EditorType=numeric EditorType=numeric
CallName="indent_sing_line_comments=" 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 MinVal=0
MaxVal=16 MaxVal=16
ValueDefault=0 ValueDefault=0
@ -2641,7 +2825,7 @@ ValueDefault=false
[Indent Switch Case] [Indent Switch Case]
Category=2 Category=2
Description="<html>Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns.<br/>It might wise to choose the same value for the option indent_case_brace.</html>" 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 Enabled=false
EditorType=numeric EditorType=numeric
CallName="indent_switch_case=" CallName="indent_switch_case="
@ -2649,9 +2833,19 @@ MinVal=0
MaxVal=16 MaxVal=16
ValueDefault=0 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 Case Brace] [Indent Case Brace]
Category=2 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 wise to choose the same value for the option indent_switch_case.</html>" 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 Enabled=false
EditorType=numeric EditorType=numeric
CallName="indent_case_brace=" CallName="indent_case_brace="
@ -2685,6 +2879,22 @@ MinVal=0
MaxVal=16 MaxVal=16
ValueDefault=0 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] [Indent Col1 Comment]
Category=2 Category=2
Description="<html>Whether to indent comments found in first column.</html>" Description="<html>Whether to indent comments found in first column.</html>"
@ -2701,9 +2911,27 @@ EditorType=boolean
TrueFalse=indent_col1_multi_string_literal=true|indent_col1_multi_string_literal=false TrueFalse=indent_col1_multi_string_literal=true|indent_col1_multi_string_literal=false
ValueDefault=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] [Indent Label]
Category=2 Category=2
Description="<html>How to indent goto labels.<br/><br/> &gt;0: Absolute column where 1 is the leftmost column<br/>&lt;=0: Subtract from brace indent<br/><br/>Default: 1</html>" 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 Enabled=false
EditorType=numeric EditorType=numeric
CallName="indent_label=" CallName="indent_label="
@ -4272,9 +4500,17 @@ Choices=nl_type_brace_init_lst_close=ignore|nl_type_brace_init_lst_close=add|nl_
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" 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 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] [Nl After Brace Open]
Category=3 Category=3
Description="<html>Whether to add a newline after '{'. This also adds a newline before the<br/>matching '}'.</html>" Description="<html>Whether to add a newline after '{'.</html>"
Enabled=false Enabled=false
EditorType=boolean EditorType=boolean
TrueFalse=nl_after_brace_open=true|nl_after_brace_open=false TrueFalse=nl_after_brace_open=true|nl_after_brace_open=false
@ -4469,6 +4705,14 @@ Choices=nl_after_do=ignore|nl_after_do=add|nl_after_do=remove|nl_after_do=force|
ChoicesReadable="Ignore Nl After Do|Add Nl After Do|Remove Nl After Do|Force Nl After Do" ChoicesReadable="Ignore Nl After Do|Add Nl After Do|Remove Nl After Do|Force Nl After Do"
ValueDefault=ignore 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] [Nl Before Return]
Category=3 Category=3
Description="<html>Whether to put a blank line before 'return' statements, unless after an open<br/>brace.</html>" Description="<html>Whether to put a blank line before 'return' statements, unless after an open<br/>brace.</html>"
@ -4539,7 +4783,7 @@ ValueDefault=ignore
[Nl Namespace Two To One Liner] [Nl Namespace Two To One Liner]
Category=3 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.</html>" 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 Enabled=false
EditorType=boolean EditorType=boolean
TrueFalse=nl_namespace_two_to_one_liner=true|nl_namespace_two_to_one_liner=false TrueFalse=nl_namespace_two_to_one_liner=true|nl_namespace_two_to_one_liner=false
@ -4579,7 +4823,7 @@ ValueDefault=false
[Nl Create List One Liner] [Nl Create List One Liner]
Category=3 Category=3
Description="<html>Whether to split one-line simple unbraced if statements into three lines by<br/>adding newlines, as in 'int a[12] = { &lt;here&gt; 0 &lt;here&gt; };'.</html>" 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 Enabled=false
EditorType=boolean EditorType=boolean
TrueFalse=nl_create_list_one_liner=true|nl_create_list_one_liner=false TrueFalse=nl_create_list_one_liner=true|nl_create_list_one_liner=false
@ -4881,6 +5125,16 @@ EditorType=boolean
TrueFalse=nl_after_label_colon=true|nl_after_label_colon=false TrueFalse=nl_after_label_colon=true|nl_after_label_colon=false
ValueDefault=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] [Nl After Struct]
Category=4 Category=4
Description="<html>The number of newlines after '}' or ';' of a struct/enum/union definition.</html>" Description="<html>The number of newlines after '}' or ';' of a struct/enum/union definition.</html>"
@ -5692,6 +5946,26 @@ MinVal=0
MaxVal=5000 MaxVal=5000
ValueDefault=0 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] [Align Func Proto Thresh]
Category=7 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>" Description="<html>The threshold for aligning function prototypes.<br/>Use a negative number for absolute thresholds.<br/><br/>0: No limit (default).</html>"
@ -5928,6 +6202,14 @@ MinVal=0
MaxVal=16 MaxVal=16
ValueDefault=1 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] [Cmt C Group]
Category=8 Category=8
Description="<html>Whether to group c-comments that look like they are in a block.</html>" Description="<html>Whether to group c-comments that look like they are in a block.</html>"
@ -6215,6 +6497,14 @@ EditorType=boolean
TrueFalse=mod_remove_extra_semicolon=true|mod_remove_extra_semicolon=false TrueFalse=mod_remove_extra_semicolon=true|mod_remove_extra_semicolon=false
ValueDefault=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] [Mod Add Long Function Closebrace Comment]
Category=9 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>" 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>"
@ -6541,6 +6831,14 @@ EditorType=boolean
TrueFalse=pp_if_indent_code=true|pp_if_indent_code=false TrueFalse=pp_if_indent_code=true|pp_if_indent_code=false
ValueDefault=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] [Pp Define At Level]
Category=10 Category=10
Description="<html>Whether to indent '#define' at the brace level. If false, these are<br/>indented from column 1.</html>" Description="<html>Whether to indent '#define' at the brace level. If false, these are<br/>indented from column 1.</html>"
@ -6549,6 +6847,14 @@ EditorType=boolean
TrueFalse=pp_define_at_level=true|pp_define_at_level=false TrueFalse=pp_define_at_level=true|pp_define_at_level=false
ValueDefault=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] [Pp Ignore Define Body]
Category=10 Category=10
Description="<html>Whether to ignore the '#define' body while formatting.</html>" Description="<html>Whether to ignore the '#define' body while formatting.</html>"

@ -13,6 +13,7 @@ align_assign_span = 1
align_enum_equ_span = 4 align_enum_equ_span = 4
align_enum_equ_thresh = 8 align_enum_equ_thresh = 8
align_func_params = true align_func_params = true
align_func_proto_star_style = 1
align_nl_cont = true align_nl_cont = true
align_number_right = true align_number_right = true
align_pp_define_gap = 4 align_pp_define_gap = 4
@ -65,6 +66,7 @@ nl_after_vbrace_open = true
nl_after_while = remove nl_after_while = remove
nl_assign_brace = add nl_assign_brace = add
nl_assign_leave_one_liners = true nl_assign_leave_one_liners = true
nl_before_brace_open = false
nl_before_case = true nl_before_case = true
nl_before_do = force nl_before_do = force
nl_before_for = force nl_before_for = force
@ -221,6 +223,7 @@ sp_before_unnamed_byref = force
sp_before_unnamed_ptr_star = force sp_before_unnamed_ptr_star = force
sp_before_vardef_square = remove sp_before_vardef_square = remove
sp_between_ptr_star = remove sp_between_ptr_star = remove
sp_between_semi_for_empty = force
sp_bool = force sp_bool = force
sp_brace_brace = force sp_brace_brace = force
sp_brace_close_while = force sp_brace_close_while = force
@ -281,6 +284,7 @@ sp_paren_paren = remove
sp_paren_qualifier = force sp_paren_qualifier = force
sp_pp_concat = force sp_pp_concat = force
sp_pp_stringify = force sp_pp_stringify = force
sp_ptr_star_func_var = remove
sp_ptr_star_paren = force sp_ptr_star_paren = force
sp_return_brace = remove sp_return_brace = remove
sp_return_paren = remove sp_return_paren = remove
@ -324,7 +328,7 @@ debug_timeout = 0
# the build of uncrustify needs the options to be set to ignore # the build of uncrustify needs the options to be set to ignore
sp_after_assign = ignore sp_after_assign = ignore
sp_before_assign = ignore sp_before_assign = ignore
sp_before_tr_emb_cmt = ignore sp_before_tr_cmt = ignore
sp_cmt_cpp_start = ignore sp_cmt_cpp_start = ignore
nl_before_member = ignore nl_before_member = ignore
nl_brace_brace = ignore nl_brace_brace = ignore

@ -117,9 +117,20 @@ Detection is currently fairly limited.
.SS "Debug Options:" .SS "Debug Options:"
.TP .TP
\fB\-p \fIFILE\fR \fB\-p \fIFILE\fR
Dump debug info into \fIFILE\fR, or to stdout if \fIFILE\fR is set to '-'." Dump debug info into \fIFILE\fR, or to stdout if \fIFILE\fR is set to '-'.
.br .br
Must be used in combination with '-f \fIFILE\fR'." Must be used in combination with '-f \fIFILE\fR'.
.TP
\fB\-ds \fIFILE\fR \fB\-\-dump\-steps \fIFILE\fR
Dump parsing info at various moments of the formatting process.
.br
This creates a series of files named '\fIFILE\fR_nnn.log', each
.br
corresponding to a formatting step in uncrustify.
.br
The file '\fIFILE\fR_000.log' lists the formatting options in use.
.br
Must be used in combination with '-f \fIFILE\fR'.
.TP .TP
\fB\-L\fI SEV\fR \fB\-L\fI SEV\fR
Set the log severity (see log_levels.h) Set the log severity (see log_levels.h)

@ -1,6 +1,6 @@
{ {
"name": "uncrustify", "name": "uncrustify",
"version": "0.73.0", "version": "0.74.0",
"description": "A highly configurable, easily modifiable source code beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA", "description": "A highly configurable, easily modifiable source code beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA",
"main": "uncrustify", "main": "uncrustify",
"scripts": { "scripts": {

@ -25,10 +25,11 @@ may be different.
In addition to the build and test requirements for Uncrustify itself In addition to the build and test requirements for Uncrustify itself
(CMake, a C++ compiler, Python, git), you will also need: (CMake, a C++ compiler, Python, git), you will also need:
- GitPython_
- mingw32-gcc-c++
- mingw64-gcc-c++
- tar - tar
- python3-git
- Binutils-mingw-w64
- Gcc-mingw-w64
- G++-mingw-w64
- zip - zip
- wget (optional) - wget (optional)
- scp (to update documentation on the SourceForge page) - scp (to update documentation on the SourceForge page)

@ -1612,7 +1612,7 @@ void EnumStructUnionParser::mark_constructors()
{ {
chunk_flags_set(prev, PCF_IN_CLASS); chunk_flags_set(prev, PCF_IN_CLASS);
next = chunk_get_next_ncnnl(prev, scope_e::PREPROC); next = skip_template_next(chunk_get_next_ncnnl(prev, scope_e::PREPROC)); // Issue #3368
/** /**
* find a chunk within the class/struct body that * find a chunk within the class/struct body that
@ -1668,11 +1668,12 @@ void EnumStructUnionParser::mark_enum_integral_type(chunk_t *colon)
* TODO: this may not be necessary in the future once code outside this * 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 * class is improved such that PCF_VAR_TYPE is not set for these chunks
*/ */
if (chunk_is_not_token(pc, CT_DC_MEMBER)) // Issue #3198
{
pc->flags &= ~PCF_VAR_TYPE; pc->flags &= ~PCF_VAR_TYPE;
set_chunk_type(pc, CT_TYPE); set_chunk_type(pc, CT_TYPE);
set_chunk_parent(pc, colon->type); set_chunk_parent(pc, colon->type);
}
pc = chunk_get_next_ncnnl(pc); pc = chunk_get_next_ncnnl(pc);
} }
} // EnumStructUnionParser::mark_enum_integral_type } // EnumStructUnionParser::mark_enum_integral_type

@ -48,7 +48,6 @@
{ CT_CASE, CT_NEG }, { CT_CASE, CT_NEG },
{ CT_CASE, CT_PAREN_OPEN }, { CT_CASE, CT_PAREN_OPEN },
{ CT_CASE, CT_STRING }, { CT_CASE, CT_STRING },
{ CT_CASE_ELLIPSIS, CT_NUMBER },
{ CT_CATCH, CT_FUNC_CALL }, { CT_CATCH, CT_FUNC_CALL },
{ CT_CLASS_COLON, CT_FUNC_CALL }, { CT_CLASS_COLON, CT_FUNC_CALL },
{ CT_CLASS_COLON, CT_QUALIFIER }, { CT_CLASS_COLON, CT_QUALIFIER },
@ -67,9 +66,6 @@
{ CT_COND_COLON, CT_FUNC_CALL }, { CT_COND_COLON, CT_FUNC_CALL },
{ CT_COND_COLON, CT_STRING }, { CT_COND_COLON, CT_STRING },
{ CT_COND_COLON, CT_WORD }, { CT_COND_COLON, CT_WORD },
{ CT_CONSTR_COLON, CT_FUNC_CALL },
{ CT_CONSTR_COLON, CT_FUNC_CLASS_DEF },
{ CT_CONSTR_COLON, CT_FUNC_CTOR_VAR },
{ CT_CONSTRUCT, CT_TYPE }, { CT_CONSTRUCT, CT_TYPE },
{ CT_CONTINUE, CT_WORD }, { CT_CONTINUE, CT_WORD },
{ CT_CS_PROPERTY, CT_BRACE_OPEN }, { CT_CS_PROPERTY, CT_BRACE_OPEN },
@ -100,7 +96,6 @@
{ CT_FPAREN_CLOSE, CT_ATTRIBUTE }, { CT_FPAREN_CLOSE, CT_ATTRIBUTE },
{ CT_FPAREN_CLOSE, CT_CLASS_COLON }, { CT_FPAREN_CLOSE, CT_CLASS_COLON },
{ CT_FPAREN_CLOSE, CT_COND_COLON }, { CT_FPAREN_CLOSE, CT_COND_COLON },
{ CT_FPAREN_CLOSE, CT_CONSTR_COLON },
{ CT_FPAREN_CLOSE, CT_DEFAULT }, { CT_FPAREN_CLOSE, CT_DEFAULT },
{ CT_FPAREN_CLOSE, CT_FUNC_CALL }, { CT_FPAREN_CLOSE, CT_FUNC_CALL },
{ CT_FPAREN_CLOSE, CT_NEG }, { CT_FPAREN_CLOSE, CT_NEG },
@ -136,7 +131,6 @@
{ CT_NAMESPACE, CT_TYPE }, { CT_NAMESPACE, CT_TYPE },
{ CT_NAMESPACE, CT_WORD }, { CT_NAMESPACE, CT_WORD },
{ CT_NATIVE, CT_TAG }, { CT_NATIVE, CT_TAG },
{ CT_NUMBER, CT_CASE_ELLIPSIS },
{ CT_NUMBER, CT_CHAR }, { CT_NUMBER, CT_CHAR },
{ CT_NUMBER, CT_COLON }, { CT_NUMBER, CT_COLON },
{ CT_NUMBER, CT_ELLIPSIS }, { CT_NUMBER, CT_ELLIPSIS },

@ -40,11 +40,11 @@ void align_func_proto(size_t span)
// token-1->brace_level == token-2->brace_level // token-1->brace_level == token-2->brace_level
// we don't check if token-1 and token-2 are in the same block // we don't check if token-1 and token-2 are in the same block
log_rule_B("align_var_def_star_style"); log_rule_B("align_func_proto_star_style");
size_t mystar_style = options::align_var_def_star_style(); size_t mystar_style = options::align_func_proto_star_style();
log_rule_B("align_var_def_amp_style"); log_rule_B("align_func_proto_amp_style");
size_t myamp_style = options::align_var_def_amp_style(); size_t myamp_style = options::align_func_proto_amp_style();
size_t num_of_column = 1; size_t num_of_column = 1;

@ -29,9 +29,7 @@
#include "md5.h" #include "md5.h"
#include "unc_ctype.h" #include "unc_ctype.h"
#ifdef __APPLE__ #include <cerrno>
#include <cerrno> // is needed under OSX
#endif
using namespace std; using namespace std;
@ -45,7 +43,7 @@ int backup_copy_file(const char *filename, const vector<UINT8> &data)
md5_str_in[0] = 0; md5_str_in[0] = 0;
MD5::Calc(&data[0], data.size(), dig); MD5::Calc(data.data(), data.size(), dig);
snprintf(md5_str, sizeof(md5_str), snprintf(md5_str, sizeof(md5_str),
"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\n", "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\n",
dig[0], dig[1], dig[2], dig[3], dig[0], dig[1], dig[2], dig[3],
@ -95,12 +93,13 @@ int backup_copy_file(const char *filename, const vector<UINT8> &data)
if (thefile != nullptr) if (thefile != nullptr)
{ {
size_t retval = fwrite(&data[0], data.size(), 1, thefile); size_t retval = fwrite(data.data(), data.size(), 1, thefile);
int my_errno = errno; int my_errno = errno;
fclose(thefile); fclose(thefile);
if (retval == 1) if ( retval == 1
|| data.empty())
{ {
return(EX_OK); return(EX_OK);
} }

@ -131,7 +131,8 @@ static size_t preproc_start(BraceState &braceState, ParseFrame &frm, chunk_t *pc
// If we are not in a define, check for #if, #else, #endif, etc // If we are not in a define, check for #if, #else, #endif, etc
if (braceState.in_preproc != CT_PP_DEFINE) if (braceState.in_preproc != CT_PP_DEFINE)
{ {
return(fl_check(braceState.frames, frm, braceState.pp_level, pc)); int pp_indent = fl_check(braceState.frames, frm, braceState.pp_level, pc);
return(pp_indent);
} }
// else push the frame stack // else push the frame stack
fl_push(braceState.frames, frm); fl_push(braceState.frames, frm);
@ -203,9 +204,16 @@ void brace_cleanup(void)
braceState.in_preproc = CT_NONE; braceState.in_preproc = CT_NONE;
} }
// Check for a preprocessor start // Check for a preprocessor start
const size_t pp_level = (chunk_is_token(pc, CT_PREPROC)) size_t pp_level;
? preproc_start(braceState, frm, pc)
: braceState.pp_level; if (chunk_is_token(pc, 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", LOG_FMT(LTOK, "%s(%d): pp_level is %zu\n",
__func__, __LINE__, pp_level); __func__, __LINE__, pp_level);
@ -249,6 +257,56 @@ void brace_cleanup(void)
} }
pc = chunk_get_next(pc); pc = chunk_get_next(pc);
} }
// pc = chunk_get_head();
//
// while (pc != nullptr)
// {
// LOG_FMT(LTOK, "%s(%d): orig_line is %zu, orig_col is %zu, text() is '%s'\n",
// __func__, __LINE__, pc->orig_line, pc->orig_col, pc->text());
//
// // look for template
// if (chunk_is_token(pc, CT_TEMPLATE)) // Issue #3309
// {
// chunk_t *template_end = chunk_get_next_type(pc, CT_SEMICOLON, pc->level);
//
// // look for a parameter pack
// while (pc != nullptr)
// {
// LOG_FMT(LTOK, "%s(%d): orig_line is %zu, orig_col is %zu, text() is '%s'\n",
// __func__, __LINE__, pc->orig_line, pc->orig_col, pc->text());
//
// if (chunk_is_token(pc, CT_PARAMETER_PACK))
// {
// chunk_t *parameter_pack = pc;
//
// // look for a token with the same text
// while (pc != nullptr)
// {
// LOG_FMT(LTOK, "%s(%d): orig_line is %zu, orig_col is %zu, text() is '%s'\n",
// __func__, __LINE__, pc->orig_line, pc->orig_col, pc->text());
// pc = chunk_get_next(pc);
//
// if (pc == template_end)
// {
// break;
// }
//
// if (strcmp(pc->text(), parameter_pack->text()) == 0)
// {
// set_chunk_type(pc, CT_PARAMETER_PACK);
// }
// }
// }
// pc = chunk_get_next(pc);
//
// if (pc == template_end)
// {
// break;
// }
// }
// }
// pc = chunk_get_next(pc);
// }
} // brace_cleanup } // brace_cleanup
@ -593,6 +651,7 @@ static void parse_cleanup(BraceState &braceState, ParseFrame &frm, chunk_t *pc)
|| chunk_is_token(prev, CT_CONSTEXPR) || chunk_is_token(prev, CT_CONSTEXPR)
|| chunk_is_token(prev, CT_ELSEIF) || chunk_is_token(prev, CT_ELSEIF)
|| chunk_is_token(prev, CT_WHILE) || chunk_is_token(prev, CT_WHILE)
|| chunk_is_token(prev, CT_WHILE_OF_DO)
|| chunk_is_token(prev, CT_DO) || chunk_is_token(prev, CT_DO)
|| chunk_is_token(prev, CT_FOR) || chunk_is_token(prev, CT_FOR)
|| chunk_is_token(prev, CT_SWITCH) || chunk_is_token(prev, CT_SWITCH)
@ -720,7 +779,6 @@ static void parse_cleanup(BraceState &braceState, ParseFrame &frm, chunk_t *pc)
set_chunk_parent(pc, parent); set_chunk_parent(pc, parent);
} }
// Issue #2281 // Issue #2281
LOG_FMT(LBCSPOP, "%s(%d):\n", __func__, __LINE__);
if ( chunk_is_token(pc, CT_BRACE_OPEN) if ( chunk_is_token(pc, CT_BRACE_OPEN)
&& pc->parent_type == CT_SWITCH) && pc->parent_type == CT_SWITCH)
@ -740,6 +798,13 @@ static void parse_cleanup(BraceState &braceState, ParseFrame &frm, chunk_t *pc)
if ( chunk_is_token(pc, CT_CASE) if ( chunk_is_token(pc, CT_CASE)
|| chunk_is_token(pc, CT_DEFAULT)) || chunk_is_token(pc, CT_DEFAULT))
{ {
chunk_t *prev = chunk_get_prev_ncnnl(pc); // Issue #3176
if ( chunk_is_token(pc, CT_CASE)
|| ( chunk_is_token(pc, CT_DEFAULT)
&& chunk_is_not_token(prev, CT_ASSIGN)))
{
// it is a CT_DEFAULT from a switch
LOG_FMT(LBCSPOP, "%s(%d): pc->orig_line is %zu, pc->orig_col is %zu\n", LOG_FMT(LBCSPOP, "%s(%d): pc->orig_line is %zu, pc->orig_col is %zu\n",
__func__, __LINE__, pc->orig_line, pc->orig_col); __func__, __LINE__, pc->orig_line, pc->orig_col);
set_chunk_parent(pc, CT_SWITCH); set_chunk_parent(pc, CT_SWITCH);
@ -754,6 +819,7 @@ static void parse_cleanup(BraceState &braceState, ParseFrame &frm, chunk_t *pc)
chunk_set_parent(pc, saved); chunk_set_parent(pc, saved);
} }
} }
}
if (chunk_is_token(pc, CT_BREAK)) if (chunk_is_token(pc, CT_BREAK))
{ {
@ -1299,6 +1365,7 @@ static chunk_t *insert_vbrace(chunk_t *pc, bool after, const ParseFrame &frm)
{ {
chunk.flags &= ~PCF_IN_PREPROC; chunk.flags &= ~PCF_IN_PREPROC;
} }
bool ref_is_comment = chunk_is_comment(ref); // Issue #3351
while ( chunk_is_newline(ref) while ( chunk_is_newline(ref)
|| chunk_is_comment(ref)) || chunk_is_comment(ref))
@ -1336,6 +1403,11 @@ static chunk_t *insert_vbrace(chunk_t *pc, bool after, const ParseFrame &frm)
} }
} }
if (ref_is_comment) // Issue #3351
{
ref = chunk_get_next(ref);
}
if (ref == nullptr) if (ref == nullptr)
{ {
return(nullptr); return(nullptr);

@ -1412,6 +1412,12 @@ static void mod_case_brace(void)
chunk_t *pc = chunk_get_head(); chunk_t *pc = chunk_get_head();
// Make sure to start outside of a preprocessor line (see issue #3366)
if (chunk_is_preproc(pc))
{
pc = chunk_get_next_ncnnlnp(pc);
}
while (pc != nullptr) while (pc != nullptr)
{ {
chunk_t *next = chunk_get_next_ncnnl(pc, scope_e::PREPROC); chunk_t *next = chunk_get_next_ncnnl(pc, scope_e::PREPROC);
@ -1426,6 +1432,7 @@ static void mod_case_brace(void)
&& chunk_is_token(pc, CT_BRACE_OPEN) && chunk_is_token(pc, CT_BRACE_OPEN)
&& get_chunk_parent_type(pc) == CT_CASE) && get_chunk_parent_type(pc) == CT_CASE)
{ {
log_rule_B("mod_case_brace - add");
pc = mod_case_brace_remove(pc); pc = mod_case_brace_remove(pc);
} }
else if ( (options::mod_case_brace() & IARF_ADD) else if ( (options::mod_case_brace() & IARF_ADD)
@ -1434,7 +1441,7 @@ static void mod_case_brace(void)
&& chunk_is_not_token(next, CT_BRACE_CLOSE) && chunk_is_not_token(next, CT_BRACE_CLOSE)
&& chunk_is_not_token(next, CT_CASE)) && chunk_is_not_token(next, CT_CASE))
{ {
log_rule_B("mod_case_brace"); log_rule_B("mod_case_brace - remove");
pc = mod_case_brace_add(pc); pc = mod_case_brace_add(pc);
} }
else else
@ -1442,7 +1449,7 @@ static void mod_case_brace(void)
pc = chunk_get_next_ncnnl(pc, scope_e::PREPROC); pc = chunk_get_next_ncnnl(pc, scope_e::PREPROC);
} }
} }
} } // mod_case_brace
static void process_if_chain(chunk_t *br_start) static void process_if_chain(chunk_t *br_start)

@ -141,22 +141,6 @@ static chunk_t *chunk_search_type(chunk_t *cur, const c_token_t type, const scop
static chunk_t *chunk_search_typelevel(chunk_t *cur, c_token_t type, scope_e scope = scope_e::ALL, direction_e dir = direction_e::FORWARD, int level = -1); static chunk_t *chunk_search_typelevel(chunk_t *cur, c_token_t type, scope_e scope = scope_e::ALL, direction_e dir = direction_e::FORWARD, int level = -1);
/**
* @brief searches a chunk that is non-NEWLINE, non-comment and non-preprocessor
*
* Traverses a chunk list either in forward or backward direction.
* The traversal continues until a chunk of a given category is found.
*
* @param cur chunk to start search at
* @param scope code parts to consider for search
* @param dir search direction
*
* @retval nullptr no chunk found or invalid parameters provided
* @retval chunk_t pointer to the found chunk
*/
static chunk_t *chunk_get_ncnlnp(chunk_t *cur, const scope_e scope = scope_e::ALL, const direction_e dir = direction_e::FORWARD);
/** /**
* @brief searches a chunk that holds a specific string * @brief searches a chunk that holds a specific string
* *
@ -591,21 +575,39 @@ chunk_t *chunk_get_next_ncnnl(chunk_t *cur, scope_e scope)
} }
chunk_t *chunk_get_next_ncnnlnp(chunk_t *cur, scope_e scope) chunk_t *chunk_get_prev_ncnnl(chunk_t *cur, scope_e scope)
{ {
return(chunk_get_ncnlnp(cur, scope, direction_e::FORWARD)); return(chunk_search(cur, chunk_is_comment_or_newline, scope, direction_e::BACKWARD, false));
} }
chunk_t *chunk_ppa_get_next_ncnnl(chunk_t *cur) chunk_t *chunk_get_next_ncnnlnp(chunk_t *cur, scope_e scope)
{ {
return(chunk_ppa_search(cur, chunk_is_comment_or_newline, false)); return(chunk_search(cur, chunk_is_comment_newline_or_preproc, scope, direction_e::FORWARD, false));
} }
chunk_t *chunk_get_prev_ncnnlnp(chunk_t *cur, scope_e scope) chunk_t *chunk_get_prev_ncnnlnp(chunk_t *cur, scope_e scope)
{ {
return(chunk_get_ncnlnp(cur, scope, direction_e::BACKWARD)); return(chunk_search(cur, chunk_is_comment_newline_or_preproc, scope, direction_e::BACKWARD, false));
}
chunk_t *chunk_get_next_ncnnl_in_pp(chunk_t *cur, scope_e scope)
{
return(chunk_search(cur, chunk_is_comment_or_newline_in_preproc, scope, direction_e::FORWARD, false));
}
chunk_t *chunk_get_prev_ncnnl_in_pp(chunk_t *cur, scope_e scope)
{
return(chunk_search(cur, chunk_is_comment_or_newline_in_preproc, scope, direction_e::BACKWARD, false));
}
chunk_t *chunk_ppa_get_next_ncnnl(chunk_t *cur)
{
return(chunk_ppa_search(cur, chunk_is_comment_or_newline, false));
} }
@ -627,15 +629,15 @@ chunk_t *chunk_get_next_nc(chunk_t *cur, scope_e scope)
} }
chunk_t *chunk_get_next_nisq(chunk_t *cur, scope_e scope) chunk_t *chunk_get_prev_nc(chunk_t *cur, scope_e scope)
{ {
return(chunk_search(cur, chunk_is_balanced_square, scope, direction_e::FORWARD, false)); return(chunk_search(cur, chunk_is_comment, scope, direction_e::BACKWARD, false));
} }
chunk_t *chunk_get_prev_ncnnl(chunk_t *cur, scope_e scope) chunk_t *chunk_get_next_nisq(chunk_t *cur, scope_e scope)
{ {
return(chunk_search(cur, chunk_is_comment_or_newline, scope, direction_e::BACKWARD, false)); return(chunk_search(cur, chunk_is_balanced_square, scope, direction_e::FORWARD, false));
} }
@ -645,27 +647,21 @@ chunk_t *chunk_get_prev_ncnnlni(chunk_t *cur, scope_e scope)
} }
chunk_t *chunk_get_prev_nc(chunk_t *cur, scope_e scope)
{
return(chunk_search(cur, chunk_is_comment, scope, direction_e::BACKWARD, false));
}
chunk_t *chunk_get_next_type(chunk_t *cur, c_token_t type, int level, scope_e scope) chunk_t *chunk_get_next_type(chunk_t *cur, c_token_t type, int level, scope_e scope)
{ {
return(chunk_search_typelevel(cur, type, scope, direction_e::FORWARD, level)); return(chunk_search_typelevel(cur, type, scope, direction_e::FORWARD, level));
} }
chunk_t *chunk_get_next_str(chunk_t *cur, const char *str, size_t len, int level, scope_e scope) chunk_t *chunk_get_prev_type(chunk_t *cur, c_token_t type, int level, scope_e scope)
{ {
return(chunk_search_str(cur, str, len, scope, direction_e::FORWARD, level)); return(chunk_search_typelevel(cur, type, scope, direction_e::BACKWARD, level));
} }
chunk_t *chunk_get_prev_type(chunk_t *cur, c_token_t type, int level, scope_e scope) chunk_t *chunk_get_next_str(chunk_t *cur, const char *str, size_t len, int level, scope_e scope)
{ {
return(chunk_search_typelevel(cur, type, scope, direction_e::BACKWARD, level)); return(chunk_search_str(cur, str, len, scope, direction_e::FORWARD, level));
} }
@ -911,17 +907,6 @@ c_token_t get_chunk_parent_type(chunk_t *pc)
} // get_chunk_parent_type } // get_chunk_parent_type
static chunk_t *chunk_get_ncnlnp(chunk_t *cur, const scope_e scope, const direction_e dir)
{
chunk_t *pc = cur;
pc = chunk_is_preproc(pc) ?
chunk_search(pc, chunk_is_comment_or_newline_in_preproc, scope, dir, false) :
chunk_search(pc, chunk_is_comment_newline_or_preproc, scope, dir, false);
return(pc);
}
static chunk_t *chunk_add(const chunk_t *pc_in, chunk_t *ref, const direction_e pos) static chunk_t *chunk_add(const chunk_t *pc_in, chunk_t *ref, const direction_e pos)
{ {
#ifdef DEBUG #ifdef DEBUG

@ -213,6 +213,15 @@ chunk_t *chunk_get_next_ncnnl(chunk_t *cur, scope_e scope = scope_e::ALL);
chunk_t *chunk_get_next_ncnnlnp(chunk_t *cur, scope_e scope = scope_e::ALL); chunk_t *chunk_get_next_ncnnlnp(chunk_t *cur, scope_e scope = scope_e::ALL);
/**
* Gets the next non-NEWLINE and non-comment chunk inside a preprocessor block
*
* @param cur chunk to use as start point
* @param scope code region to search in
*/
chunk_t *chunk_get_next_ncnnl_in_pp(chunk_t *cur, scope_e scope = scope_e::ALL);
/** /**
* Gets the next non-NEWLINE and non-comment chunk (preprocessor aware). * Gets the next non-NEWLINE and non-comment chunk (preprocessor aware).
* Unlike chunk_get_next_ncnnl, this will also ignore a line continuation if * Unlike chunk_get_next_ncnnl, this will also ignore a line continuation if
@ -292,6 +301,15 @@ chunk_t *chunk_get_prev_nnl(chunk_t *cur, scope_e scope = scope_e::ALL);
chunk_t *chunk_get_prev_ncnnl(chunk_t *cur, scope_e scope = scope_e::ALL); chunk_t *chunk_get_prev_ncnnl(chunk_t *cur, scope_e scope = scope_e::ALL);
/**
* Gets the prev non-NEWLINE and non-comment chunk inside a preprocessor block
*
* @param cur chunk to use as start point
* @param scope code region to search in
*/
chunk_t *chunk_get_prev_ncnnl_in_pp(chunk_t *cur, scope_e scope = scope_e::ALL);
/** /**
* Gets the prev non-NEWLINE and non-comment and non-ignored chunk * Gets the prev non-NEWLINE and non-comment and non-ignored chunk
* *
@ -470,21 +488,23 @@ bool are_chunks_in_same_line(chunk_t *start, chunk_t *end);
*/ */
static inline bool is_expected_type_and_level(chunk_t *pc, c_token_t type, int level) static inline bool is_expected_type_and_level(chunk_t *pc, c_token_t type, int level)
{ {
// we don't care about the level (if it is negative) or it is as expected // we don't care if the pointer is invalid or about the level (if it is negative),
// and the type is as expected // or it is as expected and the type is as expected
return( ( level < 0 return( pc == nullptr
|| ( ( level < 0
|| pc->level == static_cast<size_t>(level)) || pc->level == static_cast<size_t>(level))
&& pc->type == type); && pc->type == type));
} }
static inline bool is_expected_string_and_level(chunk_t *pc, const char *str, int level, size_t len) static inline bool is_expected_string_and_level(chunk_t *pc, const char *str, int level, size_t len)
{ {
// we don't care about the level (if it is negative) or it is as expected // we don't care if the pointer is invalid or about the level (if it is negative) or it is as expected
return( ( level < 0 return( pc == nullptr
|| ( ( level < 0
|| pc->level == static_cast<size_t>(level)) || pc->level == static_cast<size_t>(level))
&& pc->len() == len // and the length is as expected && pc->len() == len // and the length is as expected
&& memcmp(str, pc->text(), len) == 0); // and the strings are equal && memcmp(str, pc->text(), len) == 0)); // and the strings are equal
} }
@ -512,14 +532,15 @@ static inline bool chunk_is_not_token(const chunk_t *pc, c_token_t c_token)
*/ */
static inline chunk_t *chunk_skip_to_match(chunk_t *cur, scope_e scope = scope_e::ALL) static inline chunk_t *chunk_skip_to_match(chunk_t *cur, scope_e scope = scope_e::ALL)
{ {
if ( chunk_is_token(cur, CT_PAREN_OPEN) if ( cur != nullptr
&& ( chunk_is_token(cur, CT_PAREN_OPEN)
|| chunk_is_token(cur, CT_SPAREN_OPEN) || chunk_is_token(cur, CT_SPAREN_OPEN)
|| chunk_is_token(cur, CT_FPAREN_OPEN) || chunk_is_token(cur, CT_FPAREN_OPEN)
|| chunk_is_token(cur, CT_TPAREN_OPEN) || chunk_is_token(cur, CT_TPAREN_OPEN)
|| chunk_is_token(cur, CT_BRACE_OPEN) || chunk_is_token(cur, CT_BRACE_OPEN)
|| chunk_is_token(cur, CT_VBRACE_OPEN) || chunk_is_token(cur, CT_VBRACE_OPEN)
|| chunk_is_token(cur, CT_ANGLE_OPEN) || chunk_is_token(cur, CT_ANGLE_OPEN)
|| chunk_is_token(cur, CT_SQUARE_OPEN)) || chunk_is_token(cur, CT_SQUARE_OPEN)))
{ {
return(chunk_get_next_type(cur, (c_token_t)(cur->type + 1), cur->level, scope)); return(chunk_get_next_type(cur, (c_token_t)(cur->type + 1), cur->level, scope));
} }
@ -529,14 +550,15 @@ static inline chunk_t *chunk_skip_to_match(chunk_t *cur, scope_e scope = scope_e
static inline chunk_t *chunk_skip_to_match_rev(chunk_t *cur, scope_e scope = scope_e::ALL) static inline chunk_t *chunk_skip_to_match_rev(chunk_t *cur, scope_e scope = scope_e::ALL)
{ {
if ( chunk_is_token(cur, CT_PAREN_CLOSE) if ( cur != nullptr
&& ( chunk_is_token(cur, CT_PAREN_CLOSE)
|| chunk_is_token(cur, CT_SPAREN_CLOSE) || chunk_is_token(cur, CT_SPAREN_CLOSE)
|| chunk_is_token(cur, CT_FPAREN_CLOSE) || chunk_is_token(cur, CT_FPAREN_CLOSE)
|| chunk_is_token(cur, CT_TPAREN_CLOSE) || chunk_is_token(cur, CT_TPAREN_CLOSE)
|| chunk_is_token(cur, CT_BRACE_CLOSE) || chunk_is_token(cur, CT_BRACE_CLOSE)
|| chunk_is_token(cur, CT_VBRACE_CLOSE) || chunk_is_token(cur, CT_VBRACE_CLOSE)
|| chunk_is_token(cur, CT_ANGLE_CLOSE) || chunk_is_token(cur, CT_ANGLE_CLOSE)
|| chunk_is_token(cur, CT_SQUARE_CLOSE)) || chunk_is_token(cur, CT_SQUARE_CLOSE)))
{ {
return(chunk_get_prev_type(cur, (c_token_t)(cur->type - 1), cur->level, scope)); return(chunk_get_prev_type(cur, (c_token_t)(cur->type - 1), cur->level, scope));
} }
@ -572,6 +594,7 @@ static inline bool chunk_is_comment(chunk_t *pc)
static inline bool chunk_is_cpp_inheritance_access_specifier(chunk_t *pc) static inline bool chunk_is_cpp_inheritance_access_specifier(chunk_t *pc)
{ {
return( language_is_set(LANG_CPP) return( language_is_set(LANG_CPP)
&& pc != nullptr
&& ( chunk_is_token(pc, CT_ACCESS) && ( chunk_is_token(pc, CT_ACCESS)
|| chunk_is_token(pc, CT_QUALIFIER)) || chunk_is_token(pc, CT_QUALIFIER))
&& ( std::strncmp(pc->str.c_str(), "private", 7) == 0 && ( std::strncmp(pc->str.c_str(), "private", 7) == 0
@ -694,7 +717,8 @@ static inline bool chunk_is_comment_newline_or_blank(chunk_t *pc)
static inline bool chunk_is_Doxygen_comment(chunk_t *pc) static inline bool chunk_is_Doxygen_comment(chunk_t *pc)
{ {
if (!chunk_is_comment(pc)) if ( pc == nullptr
|| !chunk_is_comment(pc))
{ {
return(false); return(false);
} }
@ -774,10 +798,11 @@ static inline bool chunk_is_nullable(chunk_t *pc)
static inline bool chunk_is_addr(chunk_t *pc) static inline bool chunk_is_addr(chunk_t *pc)
{ {
if ( chunk_is_token(pc, CT_BYREF) if ( pc != nullptr
&& ( chunk_is_token(pc, CT_BYREF)
|| ( (pc->len() == 1) || ( (pc->len() == 1)
&& (pc->str[0] == '&') && (pc->str[0] == '&')
&& pc->type != CT_OPERATOR_VAL)) && pc->type != CT_OPERATOR_VAL)))
{ {
chunk_t *prev = chunk_get_prev(pc); chunk_t *prev = chunk_get_prev(pc);
@ -962,13 +987,10 @@ void set_chunk_type_real(chunk_t *pc, c_token_t tt, const char *func, int line);
void set_chunk_parent_real(chunk_t *pc, c_token_t tt, const char *func, int line); void set_chunk_parent_real(chunk_t *pc, c_token_t tt, const char *func, int line);
#define set_chunk_type(pc, tt) do { \ #define set_chunk_type(pc, tt) set_chunk_type_real((pc), (tt), __unqualified_func__, __LINE__)
set_chunk_type_real((pc), (tt), __unqualified_func__, __LINE__); \
} while (false)
#define set_chunk_parent(pc, tt) do { \ #define set_chunk_parent(pc, tt) set_chunk_parent_real((pc), (tt), __unqualified_func__, __LINE__)
set_chunk_parent_real((pc), (tt), __unqualified_func__, __LINE__); \
} while (false)
c_token_t get_chunk_parent_type(chunk_t *pc); c_token_t get_chunk_parent_type(chunk_t *pc);
@ -977,17 +999,13 @@ c_token_t get_chunk_parent_type(chunk_t *pc);
void chunk_flags_set_real(chunk_t *pc, pcf_flags_t clr_bits, pcf_flags_t set_bits); void chunk_flags_set_real(chunk_t *pc, pcf_flags_t clr_bits, pcf_flags_t set_bits);
#define chunk_flags_upd(pc, cc, ss) do { \ #define chunk_flags_upd(pc, cc, ss) chunk_flags_set_real((pc), (cc), (ss))
chunk_flags_set_real((pc), (cc), (ss)); \
} while (false)
#define chunk_flags_set(pc, ss) chunk_flags_set_real((pc), {}, (ss))
#define chunk_flags_set(pc, ss) do { \
chunk_flags_set_real((pc), {}, (ss)); \
} while (false)
#define chunk_flags_clr(pc, cc) do { \ #define chunk_flags_clr(pc, cc) chunk_flags_set_real((pc), (cc), {})
chunk_flags_set_real((pc), (cc), {}); \
} while (false)
void chunk_set_parent(chunk_t *pc, chunk_t *parent); void chunk_set_parent(chunk_t *pc, chunk_t *parent);

@ -324,6 +324,18 @@ static void flag_asm(chunk_t *pc)
void do_symbol_check(chunk_t *prev, chunk_t *pc, chunk_t *next) void do_symbol_check(chunk_t *prev, chunk_t *pc, chunk_t *next)
{ {
LOG_FUNC_ENTRY(); LOG_FUNC_ENTRY();
LOG_FMT(LFCNR, "%s(%d): prev is '%s'/%s\n",
__func__, __LINE__,
prev->text(), get_token_name(prev->type));
log_pcf_flags(LFCNR, prev->flags);
LOG_FMT(LFCNR, "%s(%d): pc is '%s'/%s\n",
__func__, __LINE__,
pc->text(), get_token_name(pc->type));
log_pcf_flags(LFCNR, pc->flags);
LOG_FMT(LFCNR, "%s(%d): next is '%s'/%s\n",
__func__, __LINE__,
next->text(), get_token_name(next->type));
log_pcf_flags(LFCNR, next->flags);
// separate the uses of CT_ASSIGN sign '=' // separate the uses of CT_ASSIGN sign '='
// into CT_ASSIGN_DEFAULT_ARG, CT_ASSIGN_FUNC_PROTO // into CT_ASSIGN_DEFAULT_ARG, CT_ASSIGN_FUNC_PROTO
@ -599,6 +611,9 @@ void do_symbol_check(chunk_t *prev, chunk_t *pc, chunk_t *next)
} }
} }
} }
LOG_FMT(LFCNR, "%s(%d): pc is '%s'/%s\n",
__func__, __LINE__,
pc->text(), get_token_name(pc->type));
// C++11 Lambda stuff // C++11 Lambda stuff
if ( language_is_set(LANG_CPP) if ( language_is_set(LANG_CPP)
@ -1033,7 +1048,7 @@ void do_symbol_check(chunk_t *prev, chunk_t *pc, chunk_t *next)
* which means that we are on a function type declaration (C/C++ only?). * which means that we are on a function type declaration (C/C++ only?).
* Note that typedefs are already taken care of. * Note that typedefs are already taken care of.
*/ */
if ( !pc->flags.test_any(PCF_IN_TYPEDEF | PCF_IN_TEMPLATE) if ( !pc->flags.test(PCF_IN_TEMPLATE) // Issue #3252
&& get_chunk_parent_type(pc) != CT_CPP_CAST && get_chunk_parent_type(pc) != CT_CPP_CAST
&& get_chunk_parent_type(pc) != CT_C_CAST && get_chunk_parent_type(pc) != CT_C_CAST
&& !pc->flags.test(PCF_IN_PREPROC) && !pc->flags.test(PCF_IN_PREPROC)
@ -1282,7 +1297,8 @@ void do_symbol_check(chunk_t *prev, chunk_t *pc, chunk_t *next)
} }
else if ( ( chunk_is_token(prev, CT_WORD) else if ( ( chunk_is_token(prev, CT_WORD)
&& chunk_ends_type(prev) && chunk_ends_type(prev)
&& !prev->flags.test(PCF_IN_FCN_CTOR)) && !prev->flags.test(PCF_IN_FCN_CTOR)
&& !prev->flags.test(PCF_IN_ARRAY_ASSIGN)) // Issue #3345
|| chunk_is_token(prev, CT_DC_MEMBER) || chunk_is_token(prev, CT_DC_MEMBER)
|| chunk_is_token(prev, CT_PTR_TYPE)) || chunk_is_token(prev, CT_PTR_TYPE))
{ {
@ -1374,6 +1390,7 @@ void do_symbol_check(chunk_t *prev, chunk_t *pc, chunk_t *next)
// auto getComponent(Color *color) -> Component * { // auto getComponent(Color *color) -> Component * {
// auto getComponent(Color *color) -> Component ** { // auto getComponent(Color *color) -> Component ** {
// auto getComponent(Color *color) -> Component * _Nonnull // auto getComponent(Color *color) -> Component * _Nonnull
// only to help the vim command }}
set_chunk_type(pc, CT_PTR_TYPE); set_chunk_type(pc, CT_PTR_TYPE);
} }
else if ( chunk_is_token(pc->next, CT_SEMICOLON) // Issue #2319 else if ( chunk_is_token(pc->next, CT_SEMICOLON) // Issue #2319
@ -1381,7 +1398,7 @@ void do_symbol_check(chunk_t *prev, chunk_t *pc, chunk_t *next)
&& chunk_is_token(pc->next->next, CT_STAR))) && chunk_is_token(pc->next->next, CT_STAR)))
{ {
// more pointers are NOT yet possible // more pointers are NOT yet possible
fprintf(stderr, "Too many pointers\n"); 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->orig_line, pc->orig_col); fprintf(stderr, "at line %zu, column %zu.\n", pc->orig_line, pc->orig_col);
fprintf(stderr, "Please make a report.\n"); fprintf(stderr, "Please make a report.\n");
log_flush(true); log_flush(true);
@ -1406,7 +1423,8 @@ void do_symbol_check(chunk_t *prev, chunk_t *pc, chunk_t *next)
while (tmp != nullptr) while (tmp != nullptr)
{ {
if ( chunk_is_token(tmp, CT_SEMICOLON) if ( chunk_is_token(tmp, CT_SEMICOLON)
|| chunk_is_token(tmp, CT_BRACE_OPEN)) || chunk_is_token(tmp, CT_BRACE_OPEN)
|| chunk_is_token(tmp, CT_SQUARE_OPEN)) // Issue #3342
{ {
break; break;
} }
@ -1431,6 +1449,11 @@ void do_symbol_check(chunk_t *prev, chunk_t *pc, chunk_t *next)
{ {
set_chunk_type(pc, CT_BYREF); set_chunk_type(pc, CT_BYREF);
} }
else if ( chunk_is_token(prev, CT_WORD) // Issue #3204
&& chunk_is_token(next, CT_OPERATOR))
{
set_chunk_type(pc, CT_BYREF);
}
else if ( chunk_is_token(next, CT_FPAREN_CLOSE) else if ( chunk_is_token(next, CT_FPAREN_CLOSE)
|| chunk_is_token(next, CT_COMMA)) || chunk_is_token(next, CT_COMMA))
{ {
@ -2331,11 +2354,25 @@ static void handle_cpp_lambda(chunk_t *sq_o)
{ {
LOG_FUNC_ENTRY(); LOG_FUNC_ENTRY();
LOG_FMT(LFCNR, "%s(%d): sq_o is '%s'/%s\n",
__func__, __LINE__,
sq_o->text(), get_token_name(sq_o->type));
chunk_t *ret = nullptr; chunk_t *ret = nullptr;
// abort if type of the previous token is not contained in this whitelist // abort if type of the previous token is not contained in this whitelist
chunk_t *prev = chunk_get_prev_ncnnlni(sq_o); // Issue #2279 chunk_t *prev = chunk_get_prev_ncnnlni(sq_o); // Issue #2279
if (prev == nullptr)
{
LOG_FMT(LFCNR, "%s(%d): prev is nullptr\n", __func__, __LINE__);
}
else
{
LOG_FMT(LFCNR, "%s(%d): prev is '%s'/%s\n",
__func__, __LINE__,
prev->text(), get_token_name(prev->type));
}
if ( prev == nullptr if ( prev == nullptr
|| ( chunk_is_not_token(prev, CT_ASSIGN) || ( chunk_is_not_token(prev, CT_ASSIGN)
&& chunk_is_not_token(prev, CT_COMMA) && chunk_is_not_token(prev, CT_COMMA)
@ -2346,6 +2383,7 @@ static void handle_cpp_lambda(chunk_t *sq_o)
&& chunk_is_not_token(prev, CT_SEMICOLON) && chunk_is_not_token(prev, CT_SEMICOLON)
&& chunk_is_not_token(prev, CT_RETURN))) && chunk_is_not_token(prev, CT_RETURN)))
{ {
LOG_FMT(LFCNR, "%s(%d): return\n", __func__, __LINE__);
return; return;
} }
chunk_t *sq_c = sq_o; // assuming '[]' chunk_t *sq_c = sq_o; // assuming '[]'
@ -2357,6 +2395,7 @@ static void handle_cpp_lambda(chunk_t *sq_o)
if (sq_c == nullptr) if (sq_c == nullptr)
{ {
LOG_FMT(LFCNR, "%s(%d): return\n", __func__, __LINE__);
return; return;
} }
} }
@ -2372,6 +2411,7 @@ static void handle_cpp_lambda(chunk_t *sq_o)
if (pa_o == nullptr) if (pa_o == nullptr)
{ {
LOG_FMT(LFCNR, "%s(%d): return\n", __func__, __LINE__);
return; return;
} }
chunk_t *pa_c = nullptr; chunk_t *pa_c = nullptr;
@ -2384,6 +2424,7 @@ static void handle_cpp_lambda(chunk_t *sq_o)
if (pa_c == nullptr) if (pa_c == nullptr)
{ {
LOG_FMT(LFCNR, "%s(%d): return\n", __func__, __LINE__);
return; return;
} }
} }
@ -2404,9 +2445,21 @@ static void handle_cpp_lambda(chunk_t *sq_o)
br_o = chunk_get_next_type(br_o, CT_BRACE_OPEN, br_o->level); br_o = chunk_get_next_type(br_o, CT_BRACE_OPEN, br_o->level);
} }
// skip possible CT_NOEXCEPT
if (chunk_is_token(br_o, CT_NOEXCEPT)) // Issue #3321
{
ret = br_o;
// REVISIT: really should check the stuff we are skipping
br_o = chunk_get_next_type(br_o, CT_BRACE_OPEN, br_o->level);
}
if ( br_o == nullptr if ( br_o == nullptr
|| chunk_is_not_token(br_o, CT_BRACE_OPEN)) || chunk_is_not_token(br_o, CT_BRACE_OPEN))
{ {
LOG_FMT(LFCNR, "%s(%d): br_o is '%s'/%s\n",
__func__, __LINE__,
br_o->text(), get_token_name(br_o->type));
LOG_FMT(LFCNR, "%s(%d): return\n", __func__, __LINE__);
return; return;
} }
// and now find the '}' // and now find the '}'
@ -2414,6 +2467,7 @@ static void handle_cpp_lambda(chunk_t *sq_o)
if (br_c == nullptr) if (br_c == nullptr)
{ {
LOG_FMT(LFCNR, "%s(%d): return\n", __func__, __LINE__);
return; return;
} }

@ -632,6 +632,7 @@ chunk_t *fix_variable_definition(chunk_t *start)
|| chunk_is_token(pc, CT_TYPENAME) || chunk_is_token(pc, CT_TYPENAME)
|| chunk_is_token(pc, CT_DC_MEMBER) || chunk_is_token(pc, CT_DC_MEMBER)
|| chunk_is_token(pc, CT_MEMBER) || chunk_is_token(pc, CT_MEMBER)
|| chunk_is_token(pc, CT_PP) // Issue #3169
|| chunk_is_ptr_operator(pc)) || chunk_is_ptr_operator(pc))
{ {
LOG_FMT(LFVD, "%s(%d): 1:pc->text() '%s', type is %s\n", LOG_FMT(LFVD, "%s(%d): 1:pc->text() '%s', type is %s\n",
@ -1145,7 +1146,7 @@ void mark_function(chunk_t *pc)
LOG_FMT(LFCN, "%s(%d): orig_line is %zu, orig_col is %zu, text() '%s'\n", LOG_FMT(LFCN, "%s(%d): orig_line is %zu, orig_col is %zu, text() '%s'\n",
__func__, __LINE__, pc->orig_line, pc->orig_col, pc->text()); __func__, __LINE__, pc->orig_line, pc->orig_col, pc->text());
chunk_t *prev = chunk_get_prev_ncnnlni(pc); // Issue #2279 chunk_t *prev = chunk_get_prev_ncnnlni(pc); // Issue #2279
chunk_t *next = chunk_get_next_ncnnlnp(pc); chunk_t *next = chunk_get_next_ncnnl_in_pp(pc);
if (next == nullptr) if (next == nullptr)
{ {
@ -1245,9 +1246,10 @@ void mark_function(chunk_t *pc)
} }
} }
if (chunk_is_ptr_operator(next)) if ( chunk_is_ptr_operator(next)
|| chunk_is_newline(next))
{ {
next = chunk_get_next_ncnnlnp(next); next = chunk_get_next_ncnnl_in_pp(next);
if (next == nullptr) if (next == nullptr)
{ {
@ -1447,6 +1449,9 @@ void mark_function(chunk_t *pc)
if (chunk_is_token(prev, CT_DC_MEMBER)) if (chunk_is_token(prev, CT_DC_MEMBER))
{ {
prev = chunk_get_prev_ncnnlnp(prev); prev = chunk_get_prev_ncnnlnp(prev);
if (prev)
{
LOG_FMT(LFCN, "%s(%d): prev->text() is '%s', orig_line is %zu, orig_col is %zu, type is %s\n", 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->orig_line, prev->orig_col, __func__, __LINE__, prev->text(), prev->orig_line, prev->orig_col,
get_token_name(prev->type)); get_token_name(prev->type));
@ -1458,6 +1463,7 @@ void mark_function(chunk_t *pc)
LOG_FMT(LFCN, "%s(%d): prev->text() is '%s', orig_line is %zu, orig_col is %zu, type is %s\n", 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->orig_line, prev->orig_col, __func__, __LINE__, prev->text(), prev->orig_line, prev->orig_col,
get_token_name(prev->type)); get_token_name(prev->type));
}
if ( chunk_is_token(prev, CT_WORD) if ( chunk_is_token(prev, CT_WORD)
|| chunk_is_token(prev, CT_TYPE)) || chunk_is_token(prev, CT_TYPE))
@ -2350,6 +2356,10 @@ void mark_struct_union_body(chunk_t *start)
break; break;
} }
} }
else if (chunk_is_token(pc, CT_AMP))
{
pc = skip_expression(pc);
}
else else
{ {
pc = fix_variable_definition(pc); pc = fix_variable_definition(pc);

@ -230,6 +230,11 @@ chunk_t *skip_attribute_prev(chunk_t *fp_close)
break; break;
} }
pc = chunk_get_prev_ncnnlni(pc); // Issue #2279 pc = chunk_get_prev_ncnnlni(pc); // Issue #2279
if (pc == nullptr) // Issue #3356
{
break;
}
} }
return(pc); return(pc);
} }

@ -173,6 +173,7 @@ bool can_be_full_param(chunk_t *start, chunk_t *end)
} }
LOG_FMT(LFPARAM, "%s(%d): <skip fcn type>\n", LOG_FMT(LFPARAM, "%s(%d): <skip fcn type>\n",
__func__, __LINE__); __func__, __LINE__);
tmp1 = chunk_get_next_ncnnl(tmp3, scope_e::PREPROC); tmp1 = chunk_get_next_ncnnl(tmp3, scope_e::PREPROC);
if (tmp1 == nullptr) if (tmp1 == nullptr)
@ -280,6 +281,9 @@ bool can_be_full_param(chunk_t *start, chunk_t *end)
|| ( word_count == 1 || ( word_count == 1
&& type_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', ", LOG_FMT(LFPARAM, "%s(%d): pc->text() is '%s', ",
__func__, __LINE__, pc->text()); __func__, __LINE__, pc->text());
LOG_FMT(LFPARAM, "<== type is %s, ", LOG_FMT(LFPARAM, "<== type is %s, ",
@ -288,17 +292,6 @@ bool can_be_full_param(chunk_t *start, chunk_t *end)
if (ret) if (ret)
{ {
LOG_FMT(LFPARAM, "Yup!\n"); LOG_FMT(LFPARAM, "Yup!\n");
if (!chunk_is_token(first_word, CT_TYPE))
{
set_chunk_type(first_word, CT_TYPE);
}
chunk_t *tmp = chunk_get_prev_ncnnl(first_word);
if (chunk_is_token(tmp, CT_STAR))
{
set_chunk_type(tmp, CT_PTR_TYPE);
}
} }
else else
{ {
@ -369,6 +362,7 @@ bool chunk_ends_type(chunk_t *start)
|| chunk_is_token(pc, CT_PP_IF) || chunk_is_token(pc, CT_PP_IF)
|| chunk_is_token(pc, CT_PP_ELSE) || chunk_is_token(pc, CT_PP_ELSE)
|| chunk_is_token(pc, CT_PP_ENDIF) || chunk_is_token(pc, CT_PP_ENDIF)
|| get_chunk_parent_type(pc) == CT_PP_INCLUDE // Issue #3233
|| ( ( chunk_is_token(pc, CT_COMMA) || ( ( chunk_is_token(pc, CT_COMMA)
&& !pc->flags.test(PCF_IN_FCN_CALL) && !pc->flags.test(PCF_IN_FCN_CALL)
&& get_cpp_template_angle_nest_level(start) == && get_cpp_template_angle_nest_level(start) ==

@ -54,8 +54,8 @@ void fl_log(log_sev_t logsev, const ParseFrame &frm)
for (size_t idx = 1; idx < frm.size(); idx++) for (size_t idx = 1; idx < frm.size(); idx++)
{ {
LOG_FMT(logsev, " [%s-%u]", get_token_name(frm.at(idx).type), LOG_FMT(logsev, " [%s-%s]", get_token_name(frm.at(idx).type),
static_cast<unsigned int>(frm.at(idx).stage)); get_brace_stage_name(frm.at(idx).stage));
} }
LOG_FMT(logsev, "\n"); LOG_FMT(logsev, "\n");
@ -168,7 +168,7 @@ int fl_check(std::vector<ParseFrame> &frames, ParseFrame &frm, int &pp_level, ch
get_token_name(next->type)); get_token_name(next->type));
set_chunk_parent(pc, next->type); set_chunk_parent(pc, next->type);
} }
LOG_FMT(LPFCHK, "%s(%d): %zu] %s\n", LOG_FMT(LPFCHK, "%s(%d): orig_line is %zu, %s\n",
__func__, __LINE__, pc->orig_line, get_token_name(get_chunk_parent_type(pc))); __func__, __LINE__, pc->orig_line, get_token_name(get_chunk_parent_type(pc)));
fl_log_frms(LPFCHK, "TOP", frm, frames); fl_log_frms(LPFCHK, "TOP", frm, frames);
@ -285,10 +285,10 @@ int fl_check(std::vector<ParseFrame> &frames, ParseFrame &frm, int &pp_level, ch
if (txt != nullptr) if (txt != nullptr)
{ {
LOG_FMT(LPF, "%s(%d): orig_line is %zu, type is %s: %s in_ifdef is %d/%d, counts is %zu, frame_count is %zu\n", 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->orig_line, __func__, __LINE__, pc->orig_line,
get_token_name(get_chunk_parent_type(pc)), txt, static_cast<int>(in_ifdef), get_token_name(get_chunk_parent_type(pc)), txt, get_token_name(in_ifdef),
static_cast<int>(frm.in_ifdef), b4_cnt, frames.size()); get_token_name(frm.in_ifdef), b4_cnt, frames.size());
fl_log_all(LPF, frames); fl_log_all(LPF, frames);
LOG_FMT(LPF, " <Out>"); LOG_FMT(LPF, " <Out>");
fl_log(LPF, frm); fl_log(LPF, frm);

@ -178,11 +178,11 @@ static chunk_t *oc_msg_block_indent(chunk_t *pc, bool from_brace, bool from_care
/** /**
* returns true if forward scan reveals only single newlines or comments * returns true if forward or reverse scan reveals only single newlines or comments
* stops when hits code * stops when hits code
* false if next thing hit is a closing brace, also if 2 newlines in a row * 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_t *start); static bool single_line_comment_indent_rule_applies(chunk_t *start, bool forward);
/** /**
* returns true if semicolon on the same level ends any assign operations * returns true if semicolon on the same level ends any assign operations
@ -937,7 +937,8 @@ void indent_text(void)
frm.top().indent_tab = frm.top().indent; frm.top().indent_tab = frm.top().indent;
log_indent_tmp(); log_indent_tmp();
} }
else if ( get_chunk_parent_type(pc) == CT_PP_PRAGMA else if ( ( get_chunk_parent_type(pc) == CT_PP_PRAGMA
|| get_chunk_parent_type(pc) == CT_PP_OTHER)
&& options::pp_define_at_level()) && options::pp_define_at_level())
{ {
log_rule_B("pp_define_at_level"); log_rule_B("pp_define_at_level");
@ -948,6 +949,17 @@ void indent_text(void)
frm.top().indent_tab = frm.top().indent; frm.top().indent_tab = frm.top().indent;
log_indent_tmp(); log_indent_tmp();
} }
else if ( get_chunk_parent_type(pc) == 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 else
{ {
if ( (frm.prev().type == CT_PP_REGION_INDENT) if ( (frm.prev().type == CT_PP_REGION_INDENT)
@ -1590,9 +1602,11 @@ void indent_text(void)
} }
chunk_t *target = chunk_get_next_ncnnlnp(match); chunk_t *target = chunk_get_next_ncnnlnp(match);
while (tail == nullptr && target != nullptr) while ( tail == nullptr
&& target != nullptr)
{ {
if (chunk_is_semicolon(target) && target->level == match->level) if ( chunk_is_semicolon(target)
&& target->level == match->level)
{ {
tail = target; tail = target;
} }
@ -1627,13 +1641,26 @@ void indent_text(void)
// 1. The matching brace is on the same line as the ending semicolon // 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 // 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 // 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
if ( options::align_assign_span() == 0 && are_chunks_in_same_line(chunk_skip_to_match(frm.top().pc), tail) if ( options::indent_continue() > 0
&& ( ( !enclosure && are_chunks_in_same_line(chunk_get_prev_ncnnlnp(frm.prev().pc), frm.prev().pc) && are_chunks_in_same_line(chunk_skip_to_match(frm.top().pc), tail)
&& ( ( !enclosure
&& options::align_assign_span() == 0
&& !options::indent_align_assign()
&& are_chunks_in_same_line(chunk_get_prev_ncnnlnp(frm.prev().pc), frm.prev().pc)
&& are_chunks_in_same_line(frm.prev().pc, chunk_get_next_ncnnlnp(frm.prev().pc))) && are_chunks_in_same_line(frm.prev().pc, chunk_get_next_ncnnlnp(frm.prev().pc)))
|| (enclosure && linematch && toplevel))) || ( enclosure
&& linematch
&& toplevel)))
{
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; frm.top().brace_indent -= indent_size;
} }
}
indent_column_set(frm.top().brace_indent); indent_column_set(frm.top().brace_indent);
frm.top().indent = indent_column + indent_size; frm.top().indent = indent_column + indent_size;
log_indent(); log_indent();
@ -1947,7 +1974,14 @@ void indent_text(void)
else else
{ {
// Use the prev indent level + indent_size. // Use the prev indent level + indent_size.
if (get_chunk_parent_type(pc) == CT_SWITCH)
{
frm.top().indent = frm.prev().indent + options::indent_switch_body();
}
else
{
frm.top().indent = frm.prev().indent + indent_size; frm.top().indent = frm.prev().indent + indent_size;
}
LOG_FMT(LINDLINE, "%s(%d): frm.pse_tos is %zu, ... indent is %zu\n", LOG_FMT(LINDLINE, "%s(%d): frm.pse_tos is %zu, ... indent is %zu\n",
__func__, __LINE__, frm.size() - 1, frm.top().indent); __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", LOG_FMT(LINDLINE, "%s(%d): orig_line is %zu, orig_col is %zu, text() is '%s', parent_type is %s\n",
@ -2164,7 +2198,8 @@ void indent_text(void)
{ {
// Start a case - indent UO_indent_switch_case from the switch level // Start a case - indent UO_indent_switch_case from the switch level
log_rule_B("indent_switch_case"); log_rule_B("indent_switch_case");
const size_t tmp = frm.top().indent const size_t tmp = frm.top().indent + indent_size
- options::indent_switch_body()
+ options::indent_switch_case(); + options::indent_switch_case();
frm.push(pc, __func__, __LINE__); frm.push(pc, __func__, __LINE__);
@ -2179,6 +2214,8 @@ void indent_text(void)
// Always set on case statements // Always set on case statements
indent_column_set(frm.top().indent_tmp); indent_column_set(frm.top().indent_tmp);
if (options::indent_case_comment())
{
// comments before 'case' need to be aligned with the 'case' // comments before 'case' need to be aligned with the 'case'
chunk_t *pct = pc; chunk_t *pct = pc;
@ -2194,6 +2231,7 @@ void indent_text(void)
} }
} }
} }
}
else if (chunk_is_token(pc, CT_BREAK)) else if (chunk_is_token(pc, CT_BREAK))
{ {
chunk_t *prev = chunk_get_prev_ncnnl(pc); chunk_t *prev = chunk_get_prev_ncnnl(pc);
@ -2217,6 +2255,13 @@ void indent_text(void)
} }
} }
else if (chunk_is_token(pc, CT_LABEL)) else if (chunk_is_token(pc, CT_LABEL))
{
if (options::indent_ignore_label())
{
log_rule_B("indent_ignore_label");
indent_column_set(pc->orig_col);
}
else
{ {
log_rule_B("indent_label"); log_rule_B("indent_label");
const auto val = options::indent_label(); const auto val = options::indent_label();
@ -2243,6 +2288,7 @@ void indent_text(void)
indent_column_set(((no_underflow) ? (pse_indent + val) : 0)); indent_column_set(((no_underflow) ? (pse_indent + val) : 0));
} }
} }
}
else if (chunk_is_token(pc, CT_ACCESS)) else if (chunk_is_token(pc, CT_ACCESS))
{ {
log_rule_B("indent_access_spec_body"); log_rule_B("indent_access_spec_body");
@ -2355,8 +2401,8 @@ void indent_text(void)
if (chunk_is_newline(prev)) if (chunk_is_newline(prev))
{ {
log_rule_B("indent_ctor_init_leading"); log_rule_B("indent_ctor_init_following");
frm.top().indent += options::indent_ctor_init_leading(); frm.top().indent += options::indent_ctor_init_following();
log_indent(); log_indent();
} }
// TODO: Create a dedicated indent_constr_on_colon? // TODO: Create a dedicated indent_constr_on_colon?
@ -4045,7 +4091,7 @@ null_pc:
} // indent_text } // indent_text
static bool single_line_comment_indent_rule_applies(chunk_t *start) static bool single_line_comment_indent_rule_applies(chunk_t *start, bool forward)
{ {
LOG_FUNC_ENTRY(); LOG_FUNC_ENTRY();
@ -4056,7 +4102,7 @@ static bool single_line_comment_indent_rule_applies(chunk_t *start)
chunk_t *pc = start; chunk_t *pc = start;
size_t nl_count = 0; size_t nl_count = 0;
while ((pc = chunk_get_next(pc)) != nullptr) while ((pc = forward ? chunk_get_next(pc) : chunk_get_prev(pc)) != nullptr)
{ {
if (chunk_is_newline(pc)) if (chunk_is_newline(pc))
{ {
@ -4072,7 +4118,8 @@ static bool single_line_comment_indent_rule_applies(chunk_t *start)
nl_count = 0; nl_count = 0;
} }
else if ( chunk_is_token(pc, CT_COMMENT_MULTI) else if ( chunk_is_token(pc, CT_COMMENT_MULTI)
|| chunk_is_closing_brace(pc)) || (forward && chunk_is_closing_brace(pc))
|| (!forward && chunk_is_opening_brace(pc)))
{ {
/* /*
* check for things we wouldn't want to indent the comment for * check for things we wouldn't want to indent the comment for
@ -4173,8 +4220,6 @@ static void indent_comment(chunk_t *pc, size_t col)
LOG_FMT(LCMTIND, "%s(%d): nl->text() is '%s', orig_line %zu, orig_col %zu, level %zu\n", LOG_FMT(LCMTIND, "%s(%d): nl->text() is '%s', orig_line %zu, orig_col %zu, level %zu\n",
__func__, __LINE__, nl->text(), nl->orig_line, nl->orig_col, nl->level); __func__, __LINE__, nl->text(), nl->orig_line, nl->orig_col, nl->level);
} }
// TODO: Add an indent_comment_align_thresh option?
const size_t indent_comment_align_thresh = 3;
if (pc->orig_col > 1) if (pc->orig_col > 1)
{ {
@ -4200,7 +4245,7 @@ static void indent_comment(chunk_t *pc, size_t col)
* Here we want to align comments that are relatively close one to * Here we want to align comments that are relatively close one to
* another but not when the comment is a Doxygen comment (Issue #1134) * another but not when the comment is a Doxygen comment (Issue #1134)
*/ */
if (prev_col_diff <= indent_comment_align_thresh) if (prev_col_diff <= options::indent_comment_align_thresh())
{ {
LOG_FMT(LCMTIND, "%s(%d): prev->text() is '%s', Doxygen_comment(prev) is %s\n", LOG_FMT(LCMTIND, "%s(%d): prev->text() is '%s', Doxygen_comment(prev) is %s\n",
__func__, __LINE__, prev->text(), chunk_is_Doxygen_comment(prev) ? "TRUE" : "FALSE"); __func__, __LINE__, prev->text(), chunk_is_Doxygen_comment(prev) ? "TRUE" : "FALSE");
@ -4226,18 +4271,38 @@ static void indent_comment(chunk_t *pc, size_t col)
} }
} }
} }
// check if special single line comment rule applies // check if special single-line-comment-before-code rule applies
log_rule_B("indent_sing_line_comments"); log_rule_B("indent_single_line_comments_before");
if ( (options::indent_sing_line_comments() > 0) if ( (options::indent_single_line_comments_before() > 0)
&& single_line_comment_indent_rule_applies(pc)) && single_line_comment_indent_rule_applies(pc, true))
{ {
LOG_FMT(LCMTIND, "%s(%d): rule 4 - single line comment indent, now in %zu\n", LOG_FMT(LCMTIND, "%s(%d): rule 4 - indent single line comments before code, now in %zu\n",
__func__, __LINE__, pc->column); __func__, __LINE__, pc->column);
reindent_line(pc, col + options::indent_sing_line_comments()); reindent_line(pc, col + options::indent_single_line_comments_before());
return; return;
} }
LOG_FMT(LCMTIND, "%s(%d): rule 5 - fall-through, stay in %zu\n", // 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->column);
reindent_line(pc, col + options::indent_single_line_comments_after());
return;
}
log_rule_B("indent_comment");
if ( pc->orig_col > 1
&& !options::indent_comment())
{
LOG_FMT(LCMTIND, "%s(%d): rule 5 - keep in orig_col\n", __func__, __LINE__);
reindent_line(pc, pc->orig_col);
return;
}
LOG_FMT(LCMTIND, "%s(%d): rule 6 - fall-through, stay in %zu\n",
__func__, __LINE__, col); __func__, __LINE__, col);
reindent_line(pc, col); reindent_line(pc, col);
} // indent_comment } // indent_comment
@ -4247,6 +4312,12 @@ bool ifdef_over_whole_file(void)
{ {
LOG_FUNC_ENTRY(); LOG_FUNC_ENTRY();
// if requested, treat an #if that guards the entire file the same as any other #if
if (options::pp_indent_in_guard())
{
return(false);
}
// the results for this file are cached // the results for this file are cached
if (cpd.ifdef_over_whole_file) if (cpd.ifdef_over_whole_file)
{ {

@ -13,6 +13,7 @@
#include "args.h" #include "args.h"
#include "prototypes.h" #include "prototypes.h"
#include <cerrno>
#include <map> #include <map>

@ -75,6 +75,6 @@ void log_rule4(const char *rule, chunk_t *first)
first->tracking->push_back(A); first->tracking->push_back(A);
size_t sizeOfTrack = first->tracking->size(); size_t sizeOfTrack = first->tracking->size();
LOG_FMT(LSPACE, "log_rule4(%d): rule is '%s', after '%s'', at line %zu, tracking number is %zu, size is %zu\n", 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->orig_line, a_number, sizeOfTrack); __LINE__, rule, first->text(), first->orig_line, a_number, sizeOfTrack);
} }

@ -0,0 +1,49 @@
/**
* @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_list.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 informations, 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
void log_rule2(const char *func, size_t line, const char *rule, chunk_t *first, chunk_t *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_t *first);
#endif /* LOG_RULES_H_INCLUDED */

@ -1080,6 +1080,12 @@ static void newlines_if_for_while_switch_pre_blank_lines(chunk_t *start, iarf_e
} }
else else
{ {
if ( chunk_is_token(pc, 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 (do_add) // we found something previously besides a comment or a new line
{ {
// if we have run across a newline // if we have run across a newline
@ -2073,7 +2079,19 @@ static chunk_t *newline_def_blk(chunk_t *start, bool fn_top)
} }
LOG_FMT(LNL1LINE, "%s(%d): next->orig_line is %zu, next->orig_col is %zu, text() is '%s'\n", LOG_FMT(LNL1LINE, "%s(%d): next->orig_line is %zu, next->orig_col is %zu, text() is '%s'\n",
__func__, __LINE__, next->orig_line, next->orig_col, next->text()); __func__, __LINE__, next->orig_line, next->orig_col, next->text());
prev = chunk_get_prev_ncnnl(pc);
while ( chunk_is_token(prev, CT_DC_MEMBER)
|| chunk_is_token(prev, CT_TYPE))
{
prev = chunk_get_prev_ncnnl(prev);
}
if (!(chunk_is_opening_brace(prev) || chunk_is_closing_brace(prev)))
{
prev = chunk_get_prev_type(pc, CT_SEMICOLON, pc->level); prev = chunk_get_prev_type(pc, CT_SEMICOLON, pc->level);
}
if (prev == nullptr) if (prev == nullptr)
{ {
@ -2098,26 +2116,19 @@ static chunk_t *newline_def_blk(chunk_t *start, bool fn_top)
&& first_var_blk && first_var_blk
&& options::nl_var_def_blk_start() > 0) && options::nl_var_def_blk_start() > 0)
{ {
chunk_t *prev_2 = chunk_get_prev_nnl(pc); // Issue #3097 LOG_FMT(LBLANKD, "%s(%d): pc is '%s', orig_line is %zu\n",
__func__, __LINE__, pc->text(), pc->orig_line);
// std::mutex* a; Issue #2692 LOG_FMT(LBLANKD, "%s(%d): prev is '%s', orig_line is %zu\n",
while ( chunk_is_token(prev_2, CT_DC_MEMBER) __func__, __LINE__, prev->text(), prev->orig_line);
|| chunk_is_token(prev_2, CT_TYPE))
{
prev_2 = chunk_get_prev(prev_2);
}
if (chunk_is_token(prev_2, CT_NEWLINE)) if (!chunk_is_opening_brace(prev))
{ {
prev_2 = chunk_get_prev_nnl(prev_2); newline_min_after(prev, options::nl_var_def_blk_start(), PCF_VAR_DEF);
} }
LOG_FMT(LBLANKD, "%s(%d): prev_2 is '%s', orig_line is %zu\n",
__func__, __LINE__, prev_2->text(), prev_2->orig_line);
newline_min_after(prev_2, options::nl_var_def_blk_start(), PCF_VAR_DEF);
} }
// set newlines within var def block // set newlines within var def block
else if ( var_blk if (var_blk && (options::nl_var_def_blk_in() > 0))
&& (options::nl_var_def_blk_in() > 0))
{ {
log_rule_B("nl_var_def_blk_in"); log_rule_B("nl_var_def_blk_in");
prev = chunk_get_prev(pc); prev = chunk_get_prev(pc);
@ -2240,7 +2251,7 @@ static void newlines_brace_pair(chunk_t *br_open)
{ {
if (are_chunks_in_same_line(br_open, chunk_brace_close)) if (are_chunks_in_same_line(br_open, chunk_brace_close))
{ {
log_rule_B("nl_namespace_two_to_one_liner"); log_rule_B("nl_namespace_two_to_one_liner - 1");
if (options::nl_namespace_two_to_one_liner()) if (options::nl_namespace_two_to_one_liner())
{ {
@ -2776,12 +2787,11 @@ static void newline_iarf_pair(chunk_t *before, chunk_t *after, iarf_e av, bool c
if (av & IARF_ADD) if (av & IARF_ADD)
{ {
log_rule_B("nl_assign_leave_one_liners");
if ( check_nl_assign_leave_one_liners if ( check_nl_assign_leave_one_liners
&& options::nl_assign_leave_one_liners() && options::nl_assign_leave_one_liners()
&& after->flags.test(PCF_ONE_LINER)) && after->flags.test(PCF_ONE_LINER))
{ {
log_rule_B("nl_assign_leave_one_liners");
return; return;
} }
chunk_t *nl = newline_add_between(before, after); chunk_t *nl = newline_add_between(before, after);
@ -3187,7 +3197,8 @@ static void newline_func_def_or_call(chunk_t *start)
log_rule_B("nl_func_leave_one_liners"); log_rule_B("nl_func_leave_one_liners");
if ( options::nl_func_leave_one_liners() if ( options::nl_func_leave_one_liners()
&& brace->flags.test(PCF_ONE_LINER)) // Issue #1511 && ( brace == nullptr
|| brace->flags.test(PCF_ONE_LINER))) // Issue #1511 and #3274
{ {
a = IARF_IGNORE; a = IARF_IGNORE;
} }
@ -3546,6 +3557,14 @@ static bool one_liner_nl_ok(chunk_t *pc)
LOG_FMT(LNL1LINE, "%s(%d): false (for)\n", __func__, __LINE__); LOG_FMT(LNL1LINE, "%s(%d): false (for)\n", __func__, __LINE__);
return(false); return(false);
} }
log_rule_B("nl_namespace_two_to_one_liner - 2");
if ( options::nl_namespace_two_to_one_liner()
&& get_chunk_parent_type(pc) == 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__); LOG_FMT(LNL1LINE, "%s(%d): true, a new line may be added\n", __func__, __LINE__);
return(true); return(true);
@ -4115,7 +4134,7 @@ void newlines_cleanup_braces(bool first)
if (!one_liner_nl_ok(pc)) if (!one_liner_nl_ok(pc))
{ {
LOG_FMT(LNL1LINE, "a new line may NOT be added\n"); LOG_FMT(LNL1LINE, "a new line may NOT be added (nl_after_brace_open)\n");
// no change - preserve one liner body // no change - preserve one liner body
} }
else if ( pc->flags.test(PCF_IN_ARRAY_ASSIGN) else if ( pc->flags.test(PCF_IN_ARRAY_ASSIGN)
@ -4159,6 +4178,35 @@ void newlines_cleanup_braces(bool first)
{ {
newlines_brace_pair(pc); newlines_brace_pair(pc);
} }
// Handle nl_before_brace_open
if ( chunk_is_token(pc, CT_BRACE_OPEN)
&& pc->level == pc->brace_level
&& 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->flags.test(PCF_IN_PREPROC)
|| pc->flags.test(PCF_IN_ARRAY_ASSIGN))
{
// no change - don't break up array assignments or preprocessors
}
else
{
// Step back to previous non-newline item
chunk_t *tmp = chunk_get_prev(pc);
if (!chunk_is_token(tmp, CT_NEWLINE))
{
newline_iarf(tmp, IARF_ADD);
}
}
}
} }
else if (chunk_is_token(pc, CT_BRACE_CLOSE)) else if (chunk_is_token(pc, CT_BRACE_CLOSE))
{ {
@ -5480,11 +5528,12 @@ void newlines_chunk_pos(c_token_t chunk_type, token_pos_e mode)
if (nl_flag & 2) if (nl_flag & 2)
{ {
// remove newline if not followed by a comment // remove newline if not followed by a comment or by '{'
chunk_t *next2 = chunk_get_next(next); chunk_t *next2 = chunk_get_next(next);
if ( next2 != nullptr if ( next2 != nullptr
&& !(chunk_is_comment(next2))) && !(chunk_is_comment(next2))
&& !(chunk_is_token(next2, CT_BRACE_OPEN)))
{ {
remove_next_newlines(pc); remove_next_newlines(pc);
} }
@ -6025,15 +6074,17 @@ void do_blank_lines(void)
} }
} }
// Control blanks before a class // Control blanks before a class/struct
if ( ( chunk_is_token(prev, CT_SEMICOLON) if ( ( chunk_is_token(prev, CT_SEMICOLON)
|| chunk_is_token(prev, CT_BRACE_CLOSE)) || chunk_is_token(prev, CT_BRACE_CLOSE))
&& get_chunk_parent_type(prev) == CT_CLASS) && ( get_chunk_parent_type(prev) == CT_CLASS
|| get_chunk_parent_type(prev) == CT_STRUCT))
{ {
chunk_t *start = chunk_get_prev_type(prev, CT_CLASS, prev->level); c_token_t parent_type = get_chunk_parent_type(prev);
chunk_t *start = chunk_get_prev_type(prev, parent_type, prev->level);
chunk_t *tmp = start; chunk_t *tmp = start;
// Is this a class template? // Is this a class/struct template?
if (get_chunk_parent_type(tmp) == CT_TEMPLATE) if (get_chunk_parent_type(tmp) == CT_TEMPLATE)
{ {
tmp = chunk_get_prev_type(tmp, CT_TEMPLATE, prev->level); tmp = chunk_get_prev_type(tmp, CT_TEMPLATE, prev->level);
@ -6063,12 +6114,19 @@ void do_blank_lines(void)
} }
if ( tmp != nullptr if ( tmp != nullptr
&& !start->flags.test(PCF_INCOMPLETE) && !start->flags.test(PCF_INCOMPLETE))
&& options::nl_before_class() > tmp->nl_count) {
if (parent_type == CT_CLASS && options::nl_before_class() > tmp->nl_count)
{ {
log_rule_B("nl_before_class"); log_rule_B("nl_before_class");
blank_line_set(tmp, options::nl_before_class); blank_line_set(tmp, options::nl_before_class);
} }
else if (parent_type == CT_STRUCT && options::nl_before_struct() > tmp->nl_count)
{
log_rule_B("nl_before_struct");
blank_line_set(tmp, options::nl_before_struct);
}
}
} }
if ( chunk_is_token(prev, CT_BRACE_CLOSE) if ( chunk_is_token(prev, CT_BRACE_CLOSE)

@ -342,6 +342,42 @@ bool process_option_line_compat_0_70(const std::string &cmd,
return(false); return(false);
} // process_option_line_compat_0_70 } // 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
} // namespace } // namespace
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
@ -1023,6 +1059,14 @@ void process_option_line(const std::string &config_line, const char *filename,
return; return;
} }
} }
if (compat_level < option_level(0, 74))
{
if (process_option_line_compat_0_73(cmd, filename))
{
return;
}
}
const auto oi = option_map.find(cmd); const auto oi = option_map.find(cmd);
if (oi == option_map.end()) if (oi == option_map.end())
@ -1066,11 +1110,30 @@ bool load_option_file(const char *filename, int compat_level)
while (std::getline(in, 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];
// 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);
return(false);
}
}
++cpd.line_number; ++cpd.line_number;
process_option_line(line, filename, compat_level); process_option_line(line, filename, compat_level);
} }
return(true); return(true);
} } // load_option_file
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------

@ -261,7 +261,7 @@ sp_before_ptr_star;
extern Option<iarf_e> extern Option<iarf_e>
sp_before_unnamed_ptr_star; sp_before_unnamed_ptr_star;
// Add or remove space between pointer stars '*'. // Add or remove space between pointer stars '*', as in 'int ***a;'.
extern Option<iarf_e> extern Option<iarf_e>
sp_between_ptr_star; sp_between_ptr_star;
@ -286,8 +286,18 @@ sp_after_ptr_star_qualifier;
extern Option<iarf_e> extern Option<iarf_e>
sp_after_ptr_star_func; 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 after a pointer star '*', if followed by an open // Add or remove space after a pointer star '*', if followed by an open
// parenthesis, as in 'void* (*)(). // parenthesis, as in 'void* (*)()'.
extern Option<iarf_e> extern Option<iarf_e>
sp_ptr_star_paren; sp_ptr_star_paren;
@ -296,6 +306,11 @@ sp_ptr_star_paren;
extern Option<iarf_e> extern Option<iarf_e>
sp_before_ptr_star_func; 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 '&'. // Add or remove space before a reference sign '&'.
extern Option<iarf_e> extern Option<iarf_e>
sp_before_byref; sp_before_byref;
@ -397,27 +412,48 @@ sp_permit_cpp11_shift;
extern Option<iarf_e> extern Option<iarf_e>
sp_before_sparen; sp_before_sparen;
// Add or remove space inside '(' and ')' of control statements. // Add or remove space inside '(' and ')' of control statements other than
// 'for'.
extern Option<iarf_e> extern Option<iarf_e>
sp_inside_sparen; sp_inside_sparen;
// Add or remove space after '(' of control statements. // Add or remove space after '(' of control statements other than 'for'.
// //
// Overrides sp_inside_sparen. // Overrides sp_inside_sparen.
extern Option<iarf_e> extern Option<iarf_e>
sp_inside_sparen_open; sp_inside_sparen_open;
// Add or remove space before ')' of control statements. // Add or remove space before ')' of control statements other than 'for'.
// //
// Overrides sp_inside_sparen. // Overrides sp_inside_sparen.
extern Option<iarf_e> extern Option<iarf_e>
sp_inside_sparen_close; 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. // Add or remove space after ')' of control statements.
extern Option<iarf_e> extern Option<iarf_e>
sp_after_sparen; sp_after_sparen;
// Add or remove space between ')' and '{' of of control statements. // Add or remove space between ')' and '{' of control statements.
extern Option<iarf_e> extern Option<iarf_e>
sp_sparen_brace; sp_sparen_brace;
@ -453,10 +489,16 @@ sp_before_semi; // = IARF_REMOVE
extern Option<iarf_e> extern Option<iarf_e>
sp_before_semi_for; sp_before_semi_for;
// Add or remove space before a semicolon of an empty part of a for statement. // Add or remove space before a semicolon of an empty left part of a for
// statement, as in 'for ( <here> ; ; )'.
extern Option<iarf_e> extern Option<iarf_e>
sp_before_semi_for_empty; 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. // Add or remove space after ';', except when followed by a comment.
extern Option<iarf_e> extern Option<iarf_e>
sp_after_semi; // = IARF_ADD sp_after_semi; // = IARF_ADD
@ -507,7 +549,7 @@ sp_inside_square_oc_array;
extern Option<iarf_e> extern Option<iarf_e>
sp_after_comma; sp_after_comma;
// Add or remove space before ','. // Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'.
extern Option<iarf_e> extern Option<iarf_e>
sp_before_comma; // = IARF_REMOVE sp_before_comma; // = IARF_REMOVE
@ -531,8 +573,15 @@ sp_between_mdatype_commas;
extern Option<iarf_e> extern Option<iarf_e>
sp_paren_comma; // = IARF_FORCE sp_paren_comma; // = IARF_FORCE
// Add or remove space after the variadic '...' when preceded by a
// non-punctuator.
// The value REMOVE will be overriden with FORCE
extern Option<iarf_e>
sp_after_ellipsis;
// Add or remove space before the variadic '...' when preceded by a // Add or remove space before the variadic '...' when preceded by a
// non-punctuator. // non-punctuator.
// The value REMOVE will be overriden with FORCE
extern Option<iarf_e> extern Option<iarf_e>
sp_before_ellipsis; sp_before_ellipsis;
@ -540,6 +589,10 @@ sp_before_ellipsis;
extern Option<iarf_e> extern Option<iarf_e>
sp_type_ellipsis; sp_type_ellipsis;
// Add or remove space between a '*' and '...'.
extern Option<iarf_e>
sp_ptr_type_ellipsis;
// (D) Add or remove space between a type and '?'. // (D) Add or remove space between a type and '?'.
extern Option<iarf_e> extern Option<iarf_e>
sp_type_question; sp_type_question;
@ -548,6 +601,10 @@ sp_type_question;
extern Option<iarf_e> extern Option<iarf_e>
sp_paren_ellipsis; 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'. // Add or remove space between ')' and a qualifier such as 'const'.
extern Option<iarf_e> extern Option<iarf_e>
sp_paren_qualifier; sp_paren_qualifier;
@ -566,11 +623,11 @@ sp_before_class_colon;
// Add or remove space after class constructor ':'. // Add or remove space after class constructor ':'.
extern Option<iarf_e> extern Option<iarf_e>
sp_after_constr_colon; sp_after_constr_colon; // = IARF_ADD
// Add or remove space before class constructor ':'. // Add or remove space before class constructor ':'.
extern Option<iarf_e> extern Option<iarf_e>
sp_before_constr_colon; sp_before_constr_colon; // = IARF_ADD
// Add or remove space before case ':'. // Add or remove space before case ':'.
extern Option<iarf_e> extern Option<iarf_e>
@ -616,6 +673,14 @@ sp_sizeof_ellipsis;
extern Option<iarf_e> extern Option<iarf_e>
sp_sizeof_ellipsis_paren; 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 '('. // Add or remove space between 'decltype' and '('.
extern Option<iarf_e> extern Option<iarf_e>
sp_decltype_paren; sp_decltype_paren;
@ -637,16 +702,23 @@ extern Option<iarf_e>
sp_inside_braces_oc_dict; sp_inside_braces_oc_dict;
// Add or remove space after open brace in an unnamed temporary // Add or remove space after open brace in an unnamed temporary
// direct-list-initialization. // direct-list-initialization
// if statement is a brace_init_lst
// works only if sp_brace_brace is set to ignore.
extern Option<iarf_e> extern Option<iarf_e>
sp_after_type_brace_init_lst_open; sp_after_type_brace_init_lst_open;
// Add or remove space before close brace in an unnamed temporary // Add or remove space before close brace in an unnamed temporary
// direct-list-initialization. // direct-list-initialization
// if statement is a brace_init_lst
// works only if sp_brace_brace is set to ignore.
extern Option<iarf_e> extern Option<iarf_e>
sp_before_type_brace_init_lst_close; sp_before_type_brace_init_lst_close;
// Add or remove space inside an unnamed temporary direct-list-initialization. // 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> extern Option<iarf_e>
sp_inside_type_brace_init_lst; sp_inside_type_brace_init_lst;
@ -767,6 +839,10 @@ sp_func_class_paren;
extern Option<iarf_e> extern Option<iarf_e>
sp_func_class_paren_empty; 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 '('. // Add or remove space between 'return' and '('.
extern Option<iarf_e> extern Option<iarf_e>
sp_return_paren; sp_return_paren;
@ -1148,13 +1224,29 @@ sp_inside_newop_paren_open;
extern Option<iarf_e> extern Option<iarf_e>
sp_inside_newop_paren_close; sp_inside_newop_paren_close;
// Add or remove space before a trailing or embedded comment. // Add or remove space before a trailing comment.
extern Option<iarf_e> extern Option<iarf_e>
sp_before_tr_emb_cmt; sp_before_tr_cmt;
// Number of spaces before a trailing or embedded comment. // Number of spaces before a trailing comment.
extern BoundedOption<unsigned, 0, 16> extern BoundedOption<unsigned, 0, 16>
sp_num_before_tr_emb_cmt; 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. // (Java) Add or remove space between an annotation and the open parenthesis.
extern Option<iarf_e> extern Option<iarf_e>
@ -1316,10 +1408,14 @@ indent_class_on_colon;
extern Option<bool> extern Option<bool>
indent_constr_colon; indent_constr_colon;
// Virtual indent from the ':' for member initializers. // Virtual indent from the ':' for leading member initializers.
extern BoundedOption<unsigned, 0, 16> extern BoundedOption<unsigned, 0, 16>
indent_ctor_init_leading; // = 2 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. // Additional indent for constructor initializer list.
// Negative values decrease indent down to the first column. // Negative values decrease indent down to the first column.
extern BoundedOption<signed, -16, 16> extern BoundedOption<signed, -16, 16>
@ -1423,7 +1519,11 @@ indent_member_single;
// Spaces to indent single line ('//') comments on lines before code. // Spaces to indent single line ('//') comments on lines before code.
extern BoundedOption<unsigned, 0, 16> extern BoundedOption<unsigned, 0, 16>
indent_sing_line_comments; 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 // 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. // the indent level by this value. Negative values decrease the indent level.
@ -1436,13 +1536,18 @@ extern Option<bool>
indent_relative_single_line_comments; indent_relative_single_line_comments;
// Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns. // Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns.
// It might wise to choose the same value for the option indent_case_brace. // It might be wise to choose the same value for the option indent_case_brace.
extern BoundedOption<unsigned, 0, 16> extern BoundedOption<unsigned, 0, 16>
indent_switch_case; 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;
// Spaces to indent '{' from 'case'. By default, the brace will appear under // 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. // the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK.
// It might wise to choose the same value for the option indent_switch_case. // It might be wise to choose the same value for the option indent_switch_case.
extern BoundedOption<signed, -16, 16> extern BoundedOption<signed, -16, 16>
indent_case_brace; indent_case_brace;
@ -1459,6 +1564,14 @@ indent_switch_pp; // = true
extern BoundedOption<unsigned, 0, 16> extern BoundedOption<unsigned, 0, 16>
indent_case_shift; 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. // Whether to indent comments found in first column.
extern Option<bool> extern Option<bool>
indent_col1_comment; indent_col1_comment;
@ -1467,7 +1580,15 @@ indent_col1_comment;
extern Option<bool> extern Option<bool>
indent_col1_multi_string_literal; indent_col1_multi_string_literal;
// How to indent goto labels. // 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: Absolute column where 1 is the leftmost column
// <=0: Subtract from brace indent // <=0: Subtract from brace indent
@ -2319,8 +2440,11 @@ nl_type_brace_init_lst_open;
extern Option<iarf_e> extern Option<iarf_e>
nl_type_brace_init_lst_close; nl_type_brace_init_lst_close;
// Whether to add a newline after '{'. This also adds a newline before the // Whether to add a newline before '{'.
// matching '}'. extern Option<bool>
nl_before_brace_open;
// Whether to add a newline after '{'.
extern Option<bool> extern Option<bool>
nl_after_brace_open; nl_after_brace_open;
@ -2423,6 +2547,13 @@ nl_before_do;
extern Option<iarf_e> extern Option<iarf_e>
nl_after_do; 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 // Whether to put a blank line before 'return' statements, unless after an open
// brace. // brace.
extern Option<bool> extern Option<bool>
@ -2462,7 +2593,7 @@ nl_constr_colon;
// Whether to collapse a two-line namespace, like 'namespace foo\n{ decl; }' // 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 // into a single line. If true, prevents other brace newline rules from turning
// such code into four lines. // such code into four lines. If true, it also preserves one-liner namespaces.
extern Option<bool> extern Option<bool>
nl_namespace_two_to_one_liner; nl_namespace_two_to_one_liner;
@ -2487,7 +2618,7 @@ nl_create_while_one_liner;
extern Option<bool> extern Option<bool>
nl_create_func_def_one_liner; nl_create_func_def_one_liner;
// Whether to split one-line simple unbraced if statements into three lines by // Whether to split one-line simple list definitions into three lines by
// adding newlines, as in 'int a[12] = { <here> 0 <here> };'. // adding newlines, as in 'int a[12] = { <here> 0 <here> };'.
extern Option<bool> extern Option<bool>
nl_create_list_one_liner; nl_create_list_one_liner;
@ -2664,6 +2795,10 @@ nl_after_multiline_comment;
extern Option<bool> extern Option<bool>
nl_after_label_colon; 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. // The number of newlines after '}' or ';' of a struct/enum/union definition.
extern BoundedOption<unsigned, 0, 16> extern BoundedOption<unsigned, 0, 16>
nl_after_struct; nl_after_struct;
@ -3160,6 +3295,24 @@ align_right_cmt_at_col;
extern BoundedOption<unsigned, 0, 5000> extern BoundedOption<unsigned, 0, 5000>
align_func_proto_span; 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. // The threshold for aligning function prototypes.
// Use a negative number for absolute thresholds. // Use a negative number for absolute thresholds.
// //
@ -3339,6 +3492,10 @@ cmt_align_doxygen_javadoc_tags;
extern BoundedOption<unsigned, 0, 16> extern BoundedOption<unsigned, 0, 16>
cmt_sp_before_doxygen_javadoc_tags; // = 1 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. // Whether to group c-comments that look like they are in a block.
extern Option<bool> extern Option<bool>
cmt_c_group; cmt_c_group;
@ -3543,6 +3700,10 @@ mod_full_paren_if_bool;
extern Option<bool> extern Option<bool>
mod_remove_extra_semicolon; 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 // 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. // a comment after the close brace, a comment will be added.
extern BoundedOption<unsigned, 0, 255> extern BoundedOption<unsigned, 0, 255>
@ -3720,11 +3881,19 @@ pp_indent_if;
extern Option<bool> extern Option<bool>
pp_if_indent_code; 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 // Whether to indent '#define' at the brace level. If false, these are
// indented from column 1. // indented from column 1.
extern Option<bool> extern Option<bool>
pp_define_at_level; 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. // Whether to ignore the '#define' body while formatting.
extern Option<bool> extern Option<bool>
pp_ignore_define_body; pp_ignore_define_body;

@ -17,13 +17,11 @@
#include "unc_ctype.h" #include "unc_ctype.h"
#include "unicode.h" #include "unicode.h"
#include <ctime>
#include <map>
#include <regex> #include <regex>
#include <set> #include <set>
#ifdef WIN32
#include <map> // to get std::map
#endif // WIN32
constexpr static auto LCURRENT = LOUTPUT; constexpr static auto LCURRENT = LOUTPUT;
@ -81,6 +79,9 @@ static bool kw_fcn_javaparam(chunk_t *cmt, unc_text &out_txt);
static bool kw_fcn_fclass(chunk_t *cmt, unc_text &out_txt); static bool kw_fcn_fclass(chunk_t *cmt, unc_text &out_txt);
static bool kw_fcn_year(chunk_t *cmt, unc_text &out_txt);
/** /**
* Output a multiline comment without any reformatting other than shifting * Output a multiline comment without any reformatting other than shifting
* it left or right to get the column right. * it left or right to get the column right.
@ -178,7 +179,7 @@ static size_t cmt_parse_lead(const unc_text &line, bool is_last);
static void calculate_comment_body_indent(cmt_reflow &cmt, const unc_text &str); static void calculate_comment_body_indent(cmt_reflow &cmt, const unc_text &str);
static int next_up(const unc_text &text, size_t idx, unc_text &tag); static int next_up(const unc_text &text, size_t idx, const unc_text &tag);
/** /**
@ -447,12 +448,14 @@ static void cmt_output_indent(size_t brace_col, size_t base_col, size_t column)
} // cmt_output_indent } // cmt_output_indent
void output_parsed(FILE *pfile) void output_parsed(FILE *pfile, bool withOptions)
{ {
const char *eol_marker = get_eol_marker(); const char *eol_marker = get_eol_marker();
if (withOptions)
{
save_option_file(pfile, false, true); save_option_file(pfile, false, true);
}
fprintf(pfile, "# -=====-%s", eol_marker); fprintf(pfile, "# -=====-%s", eol_marker);
fprintf(pfile, "# number of loops = %d\n", cpd.changes); fprintf(pfile, "# number of loops = %d\n", cpd.changes);
fprintf(pfile, "# -=====-%s", eol_marker); fprintf(pfile, "# -=====-%s", eol_marker);
@ -922,6 +925,52 @@ void output_text(FILE *pfile)
} // output_text } // 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) static size_t cmt_parse_lead(const unc_text &line, bool is_last)
{ {
size_t len = 0; size_t len = 0;
@ -1366,7 +1415,7 @@ static chunk_t *get_prev_oc_class(chunk_t *pc)
} }
static int next_up(const unc_text &text, size_t idx, unc_text &tag) static int next_up(const unc_text &text, size_t idx, const unc_text &tag)
{ {
size_t offs = 0; size_t offs = 0;
@ -1424,7 +1473,7 @@ static void add_comment_text(const unc_text &text,
add_char(' '); add_char(' ');
} }
// hack to get escaped newlines to align and not duplicate the leading '//' // hack to get escaped newlines to align and not duplicate the leading '//'
int tmp = next_up(text, idx + 1, cmt.cont_text); int tmp = next_up(text, idx + 1, "//");
if (tmp < 0) if (tmp < 0)
{ {
@ -1666,7 +1715,22 @@ static chunk_t *output_comment_c(chunk_t *first)
log_rule_B("cmt_star_cont"); log_rule_B("cmt_star_cont");
cmt.cont_text = options::cmt_star_cont() ? " * " : " "; cmt.cont_text = options::cmt_star_cont() ? " * " : " ";
LOG_CONTTEXT(); LOG_CONTTEXT();
log_rule_B("cmt_trailing_single_line_c_to_cpp");
if (options::cmt_trailing_single_line_c_to_cpp() && chunk_is_last_on_line(*first))
{
add_text("//");
unc_text tmp;
tmp.set(first->str, 2, first->len() - 4);
cmt_trim_whitespace(tmp, false);
add_comment_text(tmp, cmt, false);
}
else
{
add_comment_text(first->str, cmt, false); add_comment_text(first->str, cmt, false);
}
return(first); return(first);
} }
log_rule_B("cmt_star_cont"); log_rule_B("cmt_star_cont");
@ -2952,6 +3016,16 @@ static bool kw_fcn_fclass(chunk_t *cmt, unc_text &out_txt)
} // kw_fcn_fclass } // kw_fcn_fclass
static bool kw_fcn_year(chunk_t *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 struct kw_subst_t
{ {
const char *tag; const char *tag;
@ -2969,6 +3043,7 @@ static const kw_subst_t kw_subst_table[] =
{ "$(function)", kw_fcn_function }, { "$(function)", kw_fcn_function },
{ "$(javaparam)", kw_fcn_javaparam }, { "$(javaparam)", kw_fcn_javaparam },
{ "$(fclass)", kw_fcn_fclass }, { "$(fclass)", kw_fcn_fclass },
{ "$(year)", kw_fcn_year },
}; };

@ -15,7 +15,7 @@
//! This renders the chunk list to a file. //! This renders the chunk list to a file.
void output_parsed(FILE *pfile); void output_parsed(FILE *pfile, bool withOptions = true);
//! This renders the chunk list to a file formatted as csv. //! This renders the chunk list to a file formatted as csv.
@ -26,6 +26,10 @@ void output_parsed_csv(FILE *pfile);
void output_text(FILE *pfile); 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 * See also it's preprocessor counterpart
* add_long_closebrace_comment * add_long_closebrace_comment

@ -0,0 +1,68 @@
/**
* @file parameter_pack_cleanup.cpp
*
* @author Guy Maurel
* @license GPL v2+
*/
#include "parameter_pack_cleanup.h"
#include "chunk_list.h"
void parameter_pack_cleanup(void)
{
LOG_FUNC_ENTRY();
chunk_t *pc = chunk_get_head();
while (pc != nullptr)
{
LOG_FMT(LTOK, "%s(%d): orig_line is %zu, orig_col is %zu, text() is '%s'\n",
__func__, __LINE__, pc->orig_line, pc->orig_col, pc->text());
// look for template
if (chunk_is_token(pc, CT_TEMPLATE)) // Issue #3309
{
chunk_t *template_end = chunk_get_next_type(pc, CT_SEMICOLON, pc->level);
// look for a parameter pack
while (pc != nullptr)
{
LOG_FMT(LTOK, "%s(%d): orig_line is %zu, orig_col is %zu, text() is '%s'\n",
__func__, __LINE__, pc->orig_line, pc->orig_col, pc->text());
if (chunk_is_token(pc, CT_PARAMETER_PACK))
{
chunk_t *parameter_pack = pc;
// look for a token with the same text
while (pc != nullptr)
{
LOG_FMT(LTOK, "%s(%d): orig_line is %zu, orig_col is %zu, text() is '%s'\n",
__func__, __LINE__, pc->orig_line, pc->orig_col, pc->text());
//pc = chunk_get_next(pc);
if (pc == template_end)
{
break;
}
if (strcmp(pc->text(), parameter_pack->text()) == 0)
{
set_chunk_type(pc, CT_PARAMETER_PACK);
}
pc = chunk_get_next(pc);
}
}
pc = chunk_get_next(pc);
if (pc == template_end)
{
break;
}
}
}
pc = chunk_get_next(pc);
}
} // parameter_pack_cleanup

@ -0,0 +1,15 @@
/**
* @file parameter_pack_cleanup.h
*
* @author Guy Maurel
* @license GPL v2+
*/
#ifndef PARAMETER_PACK_CLEANUP_H_INCLUDED
#define PARAMETER_PACK_CLEANUP_H_INCLUDED
#include "uncrustify_types.h"
void parameter_pack_cleanup(void);
#endif /* PARAMETER_PACK_CLEANUP_H_INCLUDED */

@ -0,0 +1,94 @@
/**
* @file remove_duplicate_include.cpp
*
* @author Guy Maurel
* October 2015, 2016
* @license GPL v2+
*/
#include "remove_duplicate_include.h"
#include "chunk_list.h"
#include "uncrustify.h"
using std::vector;
void remove_duplicate_include(void)
{
LOG_FUNC_ENTRY();
vector<chunk_t *> includes;
chunk_t *preproc = nullptr;
chunk_t *pc = chunk_get_head();
while (pc != nullptr)
{
//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->orig_line, pc->orig_col, pc->text(),
// get_token_name(pc->type), get_token_name(pc->parent_type));
if (chunk_is_token(pc, CT_PREPROC))
{
preproc = pc;
}
else if (chunk_is_token(pc, CT_PP_INCLUDE))
{
chunk_t *next = chunk_get_next(pc);
//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__, next->orig_line, next->orig_col, next->text(),
// get_token_name(next->type), get_token_name(next->parent_type));
if (includes.empty())
{
includes.push_back(next);
// goto next newline
pc = chunk_get_next_nl(next);
}
else
{
//LOG_FMT(LRMRETURN, "%s(%d): size is %zu\n",
// __func__, __LINE__, includes.size());
// look for duplicate
auto ite = includes.end();
for (auto itc = includes.begin(); itc != ite; ++itc)
{
chunk_t *current = *itc;
//LOG_FMT(LRMRETURN, "%s(%d): next->text() is '%s'\n",
// __func__, __LINE__, next->text());
//LOG_FMT(LRMRETURN, "%s(%d): current->text() is '%s'\n",
// __func__, __LINE__, current->text());
if (std::strcmp(next->text(), current->text()) == 0)
{
// erase the statement
chunk_t *temp = pc;
chunk_t *comment = chunk_get_next(next);
chunk_t *eol = chunk_get_next_nl(next);
pc = chunk_get_prev(preproc);
chunk_del(preproc);
chunk_del(temp);
chunk_del(next);
if (comment != eol)
{
chunk_del(comment);
}
chunk_del(eol);
break;
}
else
{
// goto next newline
pc = chunk_get_next_nl(next);
// and still look for duplicate
}
} // for (auto itc = includes.begin();
} // if (includes.empty())
} // else if (chunk_is_token(pc, CT_PP_INCLUDE))
// get the next token
pc = chunk_get_next(pc);
}
} // remove_duplicate_include

@ -0,0 +1,20 @@
/**
* @file remove_duplicate_include.h
* prototypes for remove_duplicate_include.cpp
*
* @author Guy Maurel
* @license GPL v2+
*/
#ifndef REMOVE_DUPLICATE_INCLUDE_H_INCLUDED
#define REMOVE_DUPLICATE_INCLUDE_H_INCLUDED
#include "chunk_list.h"
/**
* @brief Remove duplicate include
*/
void remove_duplicate_include(void);
#endif /* REMOVE_DUPLICATE_INCLUDE_H_INCLUDED */

@ -9,6 +9,7 @@
#include "remove_extra_returns.h" #include "remove_extra_returns.h"
#include "chunk_list.h"
#include "uncrustify.h" #include "uncrustify.h"

@ -10,8 +10,6 @@
#ifndef REMOVE_EXTRA_RETURNS_H_INCLUDED #ifndef REMOVE_EXTRA_RETURNS_H_INCLUDED
#define REMOVE_EXTRA_RETURNS_H_INCLUDED #define REMOVE_EXTRA_RETURNS_H_INCLUDED
#include "chunk_list.h"
/** /**
* @brief Remove unnecessary returns * @brief Remove unnecessary returns

@ -81,6 +81,7 @@ enum c_token_t
CT_TYPE_CAST, // static_cast<type>(exp) CT_TYPE_CAST, // static_cast<type>(exp)
CT_TYPENAME, // typename type CT_TYPENAME, // typename type
CT_TEMPLATE, // template<...> CT_TEMPLATE, // template<...>
CT_PARAMETER_PACK, // template<typename ... ARGS>
CT_WHERE_SPEC, // 'where' : used in C# generic constraint CT_WHERE_SPEC, // 'where' : used in C# generic constraint
CT_ASSIGN, // =, +=, /=, etc CT_ASSIGN, // =, +=, /=, etc

@ -16,10 +16,7 @@
#include "unc_ctype.h" #include "unc_ctype.h"
#include <regex> #include <regex>
#include <stack>
#ifdef WIN32
#include <stack> // to get std::stack
#endif // WIN32
#define LE_COUNT(x) cpd.le_counts[static_cast<size_t>(LE_ ## x)] #define LE_COUNT(x) cpd.le_counts[static_cast<size_t>(LE_ ## x)]

@ -258,7 +258,31 @@ void tokenize_trailing_return_types(void)
{ {
set_chunk_type(pc, CT_TRAILING_RET); set_chunk_type(pc, CT_TRAILING_RET);
LOG_FMT(LNOTE, "%s(%d): set trailing return type for text() is '%s'\n", LOG_FMT(LNOTE, "%s(%d): set trailing return type for text() is '%s'\n",
__func__, __LINE__, tmp->text()); __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_t *next = chunk_get_next_ncnnl(pc);
if (chunk_is_token(next, CT_DECLTYPE))
{
// TODO
}
else if (chunk_is_token(next, CT_WORD))
{
set_chunk_type(next, CT_TYPE); // Issue #3222
next = chunk_get_next_ncnnl(next);
if ( chunk_is_token(next, CT_ARITH)
&& (next->str[0] == '*'))
{
set_chunk_type(next, CT_PTR_TYPE);
}
}
else
{
// TODO
}
} }
} }
} }
@ -1565,7 +1589,15 @@ static void check_template_arg(chunk_t *start, chunk_t *end)
// a test "if (next == nullptr)" is not necessary // a test "if (next == nullptr)" is not necessary
chunk_flags_set(pc, PCF_IN_TEMPLATE); chunk_flags_set(pc, PCF_IN_TEMPLATE);
if (next->type != CT_PAREN_OPEN) chunk_t *prev = chunk_get_prev_ncnnl(pc, scope_e::PREPROC);
chunk_t *prev2 = chunk_get_prev_ncnnl(prev, scope_e::PREPROC);
if ( chunk_is_token(prev, CT_ELLIPSIS) // Issue #3309
&& chunk_is_token(prev2, CT_TYPENAME))
{
set_chunk_type(pc, CT_PARAMETER_PACK);
}
else
{ {
make_type(pc); make_type(pc);
} }

@ -31,7 +31,7 @@ static size_t tokenCounter;
/* protocol of the line /* protocol of the line
* examples: * examples:
* prot_the_line(__func__, __LINE__, pc->orig_line); * prot_the_line(__func__, __LINE__, pc->orig_line, 0);
* prot_the_line(__func__, __LINE__, 0, 0); * prot_the_line(__func__, __LINE__, 0, 0);
* prot_the_line(__func__, __LINE__, 6, 5); * prot_the_line(__func__, __LINE__, 6, 5);
* prot_the_source(__LINE__); * prot_the_source(__LINE__);

@ -27,8 +27,10 @@
#include "lang_pawn.h" #include "lang_pawn.h"
#include "newlines.h" #include "newlines.h"
#include "output.h" #include "output.h"
#include "parameter_pack_cleanup.h"
#include "parens.h" #include "parens.h"
#include "parent_for_pp.h" #include "parent_for_pp.h"
#include "remove_duplicate_include.h"
#include "remove_extra_returns.h" #include "remove_extra_returns.h"
#include "semicolons.h" #include "semicolons.h"
#include "sorting.h" #include "sorting.h"
@ -43,6 +45,7 @@
#include "universalindentgui.h" #include "universalindentgui.h"
#include "width.h" #include "width.h"
#include <cerrno>
#include <fcntl.h> #include <fcntl.h>
#include <map> #include <map>
#ifdef HAVE_UNISTD_H #ifdef HAVE_UNISTD_H
@ -112,10 +115,11 @@ static bool ends_with(const char *filename, const char *tag, bool case_sensitive
* @param filename_in the file to read * @param filename_in the file to read
* @param filename_out nullptr (stdout) or the file to write * @param filename_out nullptr (stdout) or the file to write
* @param parsed_file nullptr or the filename for the parsed debug info * @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 no_backup don't create a backup, if filename_out == filename_in
* @param keep_mtime don't change the mtime (dangerous) * @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, bool no_backup, bool keep_mtime); 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_header();
@ -288,6 +292,11 @@ void usage(const char *argv0)
"Debug Options:\n" "Debug Options:\n"
" -p FILE : Dump debug info into FILE, or to stdout if FILE is set to '-'.\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" " 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" " -L SEV : Set the log severity (see log_levels.h; note 'A' = 'all')\n"
" -s : Show the log severity in the logs.\n" " -s : Show the log severity in the logs.\n"
" --decode : Decode remaining args (chunk flags) and exit.\n" " --decode : Decode remaining args (chunk flags) and exit.\n"
@ -299,6 +308,7 @@ void usage(const char *argv0)
"uncrustify -c my.cfg -f foo.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 -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\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 foo.d\n"
"uncrustify -c my.cfg --replace foo.d\n" "uncrustify -c my.cfg --replace foo.d\n"
"uncrustify -c my.cfg --no-backup foo.d\n" "uncrustify -c my.cfg --no-backup foo.d\n"
@ -552,6 +562,14 @@ int main(int argc, char *argv[])
LOG_FMT(LNOTE, "Will export parsed data to: %s\n", parsed_file); 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 // Enable log severities
if ( arg.Present("-s") if ( arg.Present("-s")
@ -964,12 +982,12 @@ int main(int argc, char *argv[])
(int)fm.raw.size(), (int)fm.data.size(), (int)fm.raw.size(), (int)fm.data.size(),
language_name_from_flags(cpd.lang_flags)); language_name_from_flags(cpd.lang_flags));
uncrustify_file(fm, stdout, parsed_file); uncrustify_file(fm, stdout, parsed_file, dump_file);
} }
else if (source_file != nullptr) else if (source_file != nullptr)
{ {
// Doing a single file // Doing a single file
do_source_file(source_file, output_file, parsed_file, no_backup, keep_mtime); do_source_file(source_file, output_file, parsed_file, dump_file, no_backup, keep_mtime);
} }
else else
{ {
@ -980,6 +998,13 @@ int main(int argc, char *argv[])
exit(EX_CONFIG); 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 // Doing multiple files, TODO: multiple threads for parallel processing
if (prefix != nullptr) if (prefix != nullptr)
{ {
@ -998,7 +1023,7 @@ int main(int argc, char *argv[])
char outbuf[1024]; char outbuf[1024];
do_source_file(p_arg, do_source_file(p_arg,
make_output_filename(outbuf, sizeof(outbuf), p_arg, prefix, suffix), make_output_filename(outbuf, sizeof(outbuf), p_arg, prefix, suffix),
nullptr, no_backup, keep_mtime); nullptr, nullptr, no_backup, keep_mtime);
} }
if (source_list != nullptr) if (source_list != nullptr)
@ -1073,7 +1098,7 @@ static void process_source_list(const char *source_list,
char outbuf[1024]; char outbuf[1024];
do_source_file(fname, do_source_file(fname,
make_output_filename(outbuf, sizeof(outbuf), fname, prefix, suffix), make_output_filename(outbuf, sizeof(outbuf), fname, prefix, suffix),
nullptr, no_backup, keep_mtime); nullptr, nullptr, no_backup, keep_mtime);
} }
} }
@ -1457,6 +1482,7 @@ static bool bout_content_matches(const file_mem &fm, bool report_status)
static void do_source_file(const char *filename_in, static void do_source_file(const char *filename_in,
const char *filename_out, const char *filename_out,
const char *parsed_file, const char *parsed_file,
const char *dump_file,
bool no_backup, bool no_backup,
bool keep_mtime) bool keep_mtime)
{ {
@ -1499,7 +1525,7 @@ static void do_source_file(const char *filename_in,
* Cleanup is deferred because we need 'bout' preserved long enough * Cleanup is deferred because we need 'bout' preserved long enough
* to write it to a file (if it changed). * to write it to a file (if it changed).
*/ */
uncrustify_file(fm, nullptr, parsed_file, true); uncrustify_file(fm, nullptr, parsed_file, dump_file, true);
if (bout_content_matches(fm, false)) if (bout_content_matches(fm, false))
{ {
@ -1563,7 +1589,7 @@ static void do_source_file(const char *filename_in,
} }
else else
{ {
uncrustify_file(fm, pfout, parsed_file); uncrustify_file(fm, pfout, parsed_file, dump_file);
} }
if (did_open) if (did_open)
@ -1942,6 +1968,8 @@ static void uncrustify_start(const deque<int> &data)
*/ */
brace_cleanup(); brace_cleanup();
parameter_pack_cleanup();
// At this point, the level information is available and accurate. // At this point, the level information is available and accurate.
if (language_is_set(LANG_PAWN)) if (language_is_set(LANG_PAWN))
@ -1961,8 +1989,8 @@ static void uncrustify_start(const deque<int> &data)
} // uncrustify_start } // uncrustify_start
void uncrustify_file(const file_mem &fm, FILE *pfout, void uncrustify_file(const file_mem &fm, FILE *pfout, const char *parsed_file,
const char *parsed_file, bool defer_uncrustify_end) const char *dump_file, bool defer_uncrustify_end)
{ {
const deque<int> &data = fm.data; const deque<int> &data = fm.data;
@ -2031,6 +2059,7 @@ void uncrustify_file(const file_mem &fm, FILE *pfout,
} }
uncrustify_start(data); uncrustify_start(data);
dump_step(dump_file, "After uncrustify_start()");
cpd.unc_stage = unc_stage_e::OTHER; cpd.unc_stage = unc_stage_e::OTHER;
@ -2078,6 +2107,13 @@ void uncrustify_file(const file_mem &fm, FILE *pfout,
{ {
remove_extra_returns(); remove_extra_returns();
} }
// Remove duplicate include
log_rule_B("mod_duplicate_include");
if (options::mod_remove_duplicate_include())
{
remove_duplicate_include();
}
// Add parens // Add parens
do_parens(); do_parens();
@ -2093,6 +2129,8 @@ void uncrustify_file(const file_mem &fm, FILE *pfout,
} }
cpd.pass_count = 3; cpd.pass_count = 3;
dump_step(dump_file, "Before first while loop");
do do
{ {
old_changes = cpd.changes; old_changes = cpd.changes;
@ -2185,6 +2223,7 @@ void uncrustify_file(const file_mem &fm, FILE *pfout,
newlines_functions_remove_extra_blank_lines(); newlines_functions_remove_extra_blank_lines();
newlines_cleanup_dup(); newlines_cleanup_dup();
first = false; first = false;
dump_step(dump_file, "Inside first while loop");
} while ( old_changes != cpd.changes } while ( old_changes != cpd.changes
&& cpd.pass_count-- > 0); && cpd.pass_count-- > 0);
@ -2255,6 +2294,8 @@ void uncrustify_file(const file_mem &fm, FILE *pfout,
// Align everything else, reindent and break at code_width // Align everything else, reindent and break at code_width
first = true; first = true;
dump_step(dump_file, "Before second while loop");
do do
{ {
align_all(); align_all();
@ -2292,6 +2333,7 @@ void uncrustify_file(const file_mem &fm, FILE *pfout,
first = false; first = false;
} }
} }
dump_step(dump_file, "Inside second while loop");
} while (old_changes != cpd.changes); } while (old_changes != cpd.changes);
// And finally, align the backslash newline stuff // And finally, align the backslash newline stuff
@ -2303,8 +2345,9 @@ void uncrustify_file(const file_mem &fm, FILE *pfout,
{ {
align_backslash_newline(); align_backslash_newline();
} }
// which output is to be done? dump_step(dump_file, "Final version");
// which output is to be done?
if (cpd.html_file == nullptr) if (cpd.html_file == nullptr)
{ {
// Now render it all to the output file // Now render it all to the output file

@ -16,7 +16,7 @@
int load_header_files(void); int load_header_files(void);
void uncrustify_file(const file_mem &fm, FILE *pfout, const char *parsed_file, bool defer_uncrustify_end = false); 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(); void uncrustify_end();

@ -25,6 +25,7 @@
* --replace * --replace
* --mtime * --mtime
* --universalindent * --universalindent
* --ds/--dump-steps
* -help, -h, --usage, -? * -help, -h, --usage, -?
* *
* *
@ -557,7 +558,7 @@ intptr_t _uncrustify(intptr_t _file, lang_flag_e langIDX, bool frag, bool defer)
// function which passes the debug output into a dedicated output js target. // function which passes the debug output into a dedicated output js target.
// This therefore would introduce the dependency on the user to always have // This therefore would introduce the dependency on the user to always have
// the output js target available. // the output js target available.
uncrustify_file(fm, stream, nullptr, defer); uncrustify_file(fm, stream, nullptr, nullptr, defer);
fflush(stream); fflush(stream);
fclose(stream); fclose(stream);

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 2.8) cmake_minimum_required(VERSION 2.8.12)
find_package(Git QUIET) find_package(Git QUIET)
@ -74,6 +74,7 @@ add_test(
--config $<CONFIG> --config $<CONFIG>
--build ${uncrustify_BINARY_DIR} --build ${uncrustify_BINARY_DIR}
--diff --diff
--test ${CMAKE_CURRENT_BINARY_DIR}/cli
${_configs} ${_configs}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cli WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cli
) )
@ -84,6 +85,7 @@ add_custom_target(update-cli-options
--config $<CONFIG> --config $<CONFIG>
--build ${uncrustify_BINARY_DIR} --build ${uncrustify_BINARY_DIR}
--apply --apply
--test ${CMAKE_CURRENT_BINARY_DIR}/cli
DEPENDS uncrustify DEPENDS uncrustify
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cli WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cli
) )

@ -0,0 +1,149 @@
#
# Test cases specifically for the C# language.
#
# Range: 10000 - 19999
# test.name config.file input.file
10000 cs/mono.cfg cs/simple.cs
10001 cs/getset.cfg cs/getset.cs
10002 cs/ben_032.cfg cs/simple.cs
10003 cs/ben_033.cfg cs/region.cs
10010 cs/ben_034.cfg cs/var-member.cs
10011 common/indent_columns-3.cfg cs/strings.cs
10013 cs/625_where-constraints.cfg cs/625_where-constraints.cs
10020 common/region-0.cfg cs/region.cs
10021 common/region-1.cfg cs/region.cs
10022 common/region-2.cfg cs/region.cs
10023 common/region-3.cfg cs/region.cs
10030 common/sort_imports.cfg cs/sort_using.cs
10031 cs/mod_sort_using-t.cfg cs/bug_i_935.cs
10032 cs/sort_using_categ.cfg cs/sort_using_categ.cs
10040 cs/tcf.cfg cs/tcf.cs
10041 cs/tcf.cfg cs/gs.cs
10042 cs/ben_036.cfg cs/exception-filters.cs
10050 cs/cs_generics.cfg cs/generics.cs
10060 cs/ben_037.cfg cs/unsafe.cs
10065 cs/UNI-1975.cfg cs/UNI-1975.cs
10070 cs/ben_038.cfg cs/utf16le.cs
10071 cs/ben_038.cfg cs/utf16be.cs
10072 cs/ben_038.cfg cs/utf16le_no_bom.cs
10073 cs/ben_038.cfg cs/utf16be_no_bom.cs
10074 cs/UNI-2020.cfg cs/UNI-2020.cs
10080 common/ben_042.cfg cs/property.cs
10090 cs/ben_043.cfg cs/string_multi.cs
10100 common/empty.cfg cs/bug_600.cs
10101 cs/sf607.cfg cs/sf607.cs
10110 cs/mda_space_a.cfg cs/mdarray_space.cs
10111 cs/sp_after_comma-a.cfg cs/mdarray_space.cs
10112 cs/mda_space_c.cfg cs/mdarray_space.cs
10119 common/empty.cfg cs/preserveTabs.cs
10120 common/empty.cfg cs/cmt_backslash_eol.cs
10130 cs/sp_between_new_paren.cfg cs/sp_between_new_paren.cs
10140 cs/ben_044.cfg cs/remove_semi.cs
10150 cs/ben_045.cfg cs/operator-null-conditional.cs
10151 cs/sp_assign-a.cfg cs/operator_null-coalescing-assignment.cs
10200 common/empty.cfg cs/logger.cs
10300 common/empty.cfg cs/1822.cs
10628 common/empty.cfg cs/sf628.cs
10160 common/empty.cfg cs/delegate.cs
10161 cs/indent_cs_delegate_brace-t.cfg cs/delegate.cs
12001 cs/bug_620.cfg cs/bug_620.cs
12002 common/empty.cfg cs/nullable_prop.cs
12003 cs/ben_043.cfg cs/fncall_as_ctor_in_attr.cs
12004 cs/verbatim_strings.cfg cs/verbatim_strings.cs
12005 common/empty.cfg cs/bug_1591.cs
12101 cs/indent_using_block-f.cfg cs/bug_i_679.cs
12102 cs/mod_full_brace_nl_block_rem_mlcond-0.cfg cs/mod_full_brace_nl_block_rem_mlcond.cs
12103 cs/mod_full_brace_nl_block_rem_mlcond-1.cfg cs/mod_full_brace_nl_block_rem_mlcond.cs
12104 cs/bug_1637.cfg cs/bug_1637.cs
12105 cs/bug_1650.cfg cs/bug_1650.cs
12106 cs/bug_1650.cfg cs/UNI-40685.cs
12107 cs/mod_full_paren_if_bool.cfg cs/mod_full_paren_if_bool.cs
12108 cs/Issue_2705.cfg cs/Issue_2705.cs
# test the options sp_ with the value "ignore"
12200 cs/comma-cs-f.cfg cs/comma.cs
12201 cs/comma-cs-i.cfg cs/comma.cs
12202 cs/comma-cs-r.cfg cs/comma.cs
# Adopt some UT tests
10012 common/empty.cfg cs/621_this-spacing.cs
10014 common/empty.cfg cs/630_bad-new-init-semicolon-removal.cs
10015 cs/misc-failures.cfg cs/misc-failures.cs
10016 cs/new-constraint-paren-space.cfg cs/new-constraint-paren-space.cs
10018 common/empty.cfg cs/delete-space-oc.mm
10019 common/empty.cfg cs/func-param-wrap-oc.mm
10027 cs/U01-Cs.cfg cs/oneline_property.cs
10028 cs/U02-Cs.cfg cs/ifcolalign.cs
10029 cs/U03-Cs.cfg cs/when.cs
10033 cs/U11-Cpp.cfg cs/objc.mm
10034 cs/U12-Cpp.cfg cs/asm.h.mm
10035 cs/U13-Cpp.cfg cs/definesalign.h.mm
10036 cs/U14-Cpp.cfg cs/inttypes.h.mm
10039 cs/615_nested_usings.cfg cs/615_nested-usings.cs
10044 cs/U04-Cs.cfg cs/ifcomment.cs
10045 cs/UNI-1288.cfg cs/UNI-1288.cs
10046 cs/U15-Cpp.cfg cs/UNI-1333.mm
10051 cs/UNI-1338.cfg cs/UNI-1338.cs
10055 cs/U06-Cs.cfg cs/UNI-1345.cs
10066 cs/UNI-1977.cfg cs/UNI-1977.cs
10067 cs/UNI-1978.cfg cs/UNI-1978.cs
10075 cs/UNI-2021.cfg cs/UNI-2021.cs
10076 cs/UNI-1343.cfg cs/UNI-1343.cs
10077 cs/U09-Cs.cfg cs/UNI-1919.cs
10078 cs/U10-Cs.cfg cs/UNI-3484.cs
10102 cs/U24-Cpp.cfg cs/pp-ignore.mm
10103 cs/U11-Cs.cfg cs/UNI-2506.cs
10104 common/empty.cfg cs/UNI-2505.cs
11011 cs/620_getset-brace.cfg cs/620_getset-brace.cs
11030 cs/U08-Cpp.cfg cs/argtypes.mm
11031 cs/U09-Cpp.cfg cs/casting.mm
11032 cs/U10-Cpp.cfg cs/newlines.mm
11072 cs/U07-Cs.cfg cs/UNI-2007.cs
11073 cs/U08-Cs.cfg cs/UNI-2008.cs
20010 cs/UNI-32658.cfg cs/UNI-32658.cs
20011 cs/bug_1620.cfg cs/bug_1620.cs
60004 cs/UNI-2684.cfg cs/UNI-2684.cs
60005 cs/UNI-2685.cfg cs/UNI-2685.cs
60007 cs/UNI-3083.cfg cs/UNI-3083.cs
60008 cs/U-J.cfg cs/UNI-17253.cs
60009 cs/UNI-9917.cfg cs/UNI-9917.cs
60011 cs/UNI-11095.cfg cs/UNI-11095.mm
60012 cs/U13-Cs.cfg cs/UNI-12303.cs
60013 cs/UNI-13955.cfg cs/UNI-13955.cs
60015 cs/UNI-14131.cfg cs/UNI-14131.cs
60016 cs/UNI-11662.cfg cs/UNI-11662.cs
60018 common/UNI-18777.cfg cs/UNI-18777.cs
60019 common/empty.cfg cs/UNI-18780.cs
60020 cs/UNI-18829.cfg cs/UNI-18829.cs
60023 cs/UNI-18437.cfg cs/UNI-18437.cs
60024 cs/U15-Cs.cfg cs/UNI-19644.cs
60026 cs/UNI-19895.cfg cs/UNI-19895.cs
60033 cs/UNI-21730.cfg cs/UNI-21730.cs
60036 cs/UNI-11993.cfg cs/UNI-11993.cs
60037 cs/UNI-29933.cfg cs/UNI-29933.cs
60040 cs/UNI-30498_2.cfg cs/UNI-30498_2.cs
60041 cs/squeeze-paren-close-Option.cfg cs/squeeze-paren-close-Option.cs
60042 cs/indent-multistring-coulmn1.cfg cs/indent-multistring-coulmn1.cs
60044 cs/UNI-37241.cfg cs/UNI-37241.cs
60045 common/nl_before_after.cfg cs/add-nl-before-namespace.cs

@ -0,0 +1,435 @@
#
# Test cases specifically for the C language.
#
# Range: 00000 - 09999
# 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
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
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
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
# 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
# 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
# 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
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
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
# 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
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 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
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
# 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
02510 c/ben_093.cfg c/asm.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 c/indent_ternary_operator-1.cfg c/indent_ternary-1.c
09604 c/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
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

@ -368,4 +368,61 @@ parse_cleanup : frm.stmt_count is 1, frm.expr_count is 1
parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0 parse_cleanup : frm.stmt_count is 0, frm.expr_count is 0
brace_cleanup : orig_line is 15, orig_col is 3, text() is '' brace_cleanup : orig_line is 15, orig_col is 3, text() is ''
brace_cleanup : pp_level is 0 brace_cleanup : pp_level is 0
parameter_pack_cleanup : orig_line is 1, orig_col is 1, text() is 'struct'
parameter_pack_cleanup : orig_line is 1, orig_col is 8, text() is 'TelegramIndex'
parameter_pack_cleanup : orig_line is 1, orig_col is 21, text() is ''
parameter_pack_cleanup : orig_line is 2, orig_col is 1, text() is '{'
parameter_pack_cleanup : orig_line is 2, orig_col is 2, text() is ''
parameter_pack_cleanup : orig_line is 3, orig_col is 1, text() is 'TelegramIndex'
parameter_pack_cleanup : orig_line is 3, orig_col is 14, text() is '('
parameter_pack_cleanup : orig_line is 3, orig_col is 15, text() is 'const'
parameter_pack_cleanup : orig_line is 3, orig_col is 21, text() is 'char'
parameter_pack_cleanup : orig_line is 3, orig_col is 25, text() is '*'
parameter_pack_cleanup : orig_line is 3, orig_col is 27, text() is 'pN'
parameter_pack_cleanup : orig_line is 3, orig_col is 29, text() is ','
parameter_pack_cleanup : orig_line is 3, orig_col is 31, text() is 'unsigned'
parameter_pack_cleanup : orig_line is 3, orig_col is 40, text() is 'long'
parameter_pack_cleanup : orig_line is 3, orig_col is 45, text() is 'nI'
parameter_pack_cleanup : orig_line is 3, orig_col is 47, text() is ')'
parameter_pack_cleanup : orig_line is 3, orig_col is 49, text() is ':'
parameter_pack_cleanup : orig_line is 3, orig_col is 50, text() is ''
parameter_pack_cleanup : orig_line is 4, orig_col is 1, text() is 'pTelName'
parameter_pack_cleanup : orig_line is 4, orig_col is 9, text() is '('
parameter_pack_cleanup : orig_line is 4, orig_col is 10, text() is 'pN'
parameter_pack_cleanup : orig_line is 4, orig_col is 12, text() is ')'
parameter_pack_cleanup : orig_line is 4, orig_col is 13, text() is ','
parameter_pack_cleanup : orig_line is 4, orig_col is 14, text() is ''
parameter_pack_cleanup : orig_line is 5, orig_col is 1, text() is 'nTelIndex'
parameter_pack_cleanup : orig_line is 5, orig_col is 10, text() is '('
parameter_pack_cleanup : orig_line is 5, orig_col is 11, text() is 'n'
parameter_pack_cleanup : orig_line is 5, orig_col is 12, text() is ')'
parameter_pack_cleanup : orig_line is 5, orig_col is 13, text() is ''
parameter_pack_cleanup : orig_line is 6, orig_col is 1, text() is '{'
parameter_pack_cleanup : orig_line is 6, orig_col is 2, text() is ''
parameter_pack_cleanup : orig_line is 7, orig_col is 1, text() is '}'
parameter_pack_cleanup : orig_line is 7, orig_col is 2, text() is ''
parameter_pack_cleanup : orig_line is 9, orig_col is 1, text() is '~'
parameter_pack_cleanup : orig_line is 9, orig_col is 2, text() is 'TelegramIndex'
parameter_pack_cleanup : orig_line is 9, orig_col is 15, text() is '('
parameter_pack_cleanup : orig_line is 9, orig_col is 16, text() is ')'
parameter_pack_cleanup : orig_line is 9, orig_col is 17, text() is ''
parameter_pack_cleanup : orig_line is 10, orig_col is 1, text() is '{'
parameter_pack_cleanup : orig_line is 10, orig_col is 2, text() is ''
parameter_pack_cleanup : orig_line is 11, orig_col is 1, text() is '}'
parameter_pack_cleanup : orig_line is 11, orig_col is 2, text() is ''
parameter_pack_cleanup : orig_line is 13, orig_col is 1, text() is 'const'
parameter_pack_cleanup : orig_line is 13, orig_col is 7, text() is 'char'
parameter_pack_cleanup : orig_line is 13, orig_col is 11, text() is '*'
parameter_pack_cleanup : orig_line is 13, orig_col is 13, text() is 'const'
parameter_pack_cleanup : orig_line is 13, orig_col is 19, text() is 'pTelName'
parameter_pack_cleanup : orig_line is 13, orig_col is 27, text() is ';'
parameter_pack_cleanup : orig_line is 13, orig_col is 28, text() is ''
parameter_pack_cleanup : orig_line is 14, orig_col is 1, text() is 'unsigned'
parameter_pack_cleanup : orig_line is 14, orig_col is 10, text() is 'long'
parameter_pack_cleanup : orig_line is 14, orig_col is 15, text() is 'nTelIndex'
parameter_pack_cleanup : orig_line is 14, orig_col is 24, text() is ';'
parameter_pack_cleanup : orig_line is 14, orig_col is 25, text() is ''
parameter_pack_cleanup : orig_line is 15, orig_col is 1, text() is '}'
parameter_pack_cleanup : orig_line is 15, orig_col is 2, text() is ';'
parameter_pack_cleanup : orig_line is 15, orig_col is 3, text() is ''
log_rule(enum_cleanup : rule is 'mod_enum_last_comma' log_rule(enum_cleanup : rule is 'mod_enum_last_comma'

@ -44,7 +44,7 @@ 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 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 : orig_line is 3, orig_col is 25, first->text() '*', type is PTR_TYPE
do_space : first->orig_line is 3, first->orig_col is 25, first->text() is '*', [PTR_TYPE/NONE] <===> do_space : first->orig_line is 3, first->orig_col is 25, first->text() is '*', [PTR_TYPE/NONE] <===>
second->orig_line is 3, second->orig_col is 27, second->text() is 'pN', [WORD/NONE] : rule IGNORE[ ] second->orig_line is 3, second->orig_col is 27, second->text() is 'pN', [WORD/NONE] : rule sp_after_ptr_star[ ]
rule = IGNORE @ 1 => 27 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, 'pN' type is WORD
space_text : orig_line is 3, orig_col is 27, pc-text() 'pN', type is WORD space_text : orig_line is 3, orig_col is 27, pc-text() 'pN', type is WORD
@ -82,7 +82,7 @@ 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 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 : orig_line is 3, orig_col is 47, first->text() ')', type is FPAREN_CLOSE
do_space : first->orig_line is 3, first->orig_col is 47, first->text() is ')', [FPAREN_CLOSE/FUNC_CLASS_DEF] <===> do_space : first->orig_line is 3, first->orig_col is 47, first->text() is ')', [FPAREN_CLOSE/FUNC_CLASS_DEF] <===>
second->orig_line is 3, second->orig_col is 49, second->text() is ':', [CONSTR_COLON/NONE] : rule ADD from add_space_table[ ] second->orig_line is 3, second->orig_col is 49, second->text() is ':', [CONSTR_COLON/NONE] : rule sp_before_constr_colon[ ]
rule = ADD @ 1 => 49 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, ':' type is CONSTR_COLON
space_text : orig_line is 3, orig_col is 49, pc-text() ':', type is CONSTR_COLON space_text : orig_line is 3, orig_col is 49, pc-text() ':', type is CONSTR_COLON
@ -201,7 +201,7 @@ 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 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 : orig_line is 13, orig_col is 11, first->text() '*', type is PTR_TYPE
do_space : first->orig_line is 13, first->orig_col is 11, first->text() is '*', [PTR_TYPE/NONE] <===> do_space : first->orig_line is 13, first->orig_col is 11, first->text() is '*', [PTR_TYPE/NONE] <===>
second->orig_line is 13, second->orig_col is 13, second->text() is 'const', [QUALIFIER/NONE] : rule IGNORE[ ] second->orig_line is 13, second->orig_col is 13, second->text() is 'const', [QUALIFIER/NONE] : rule sp_after_ptr_star_qualifier[ ]
rule = IGNORE @ 1 => 13 rule = IGNORE @ 1 => 13
space_text : orig_line is 13, orig_col is 13, 'const' type is QUALIFIER 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 : back-to-back words need a space: pc->text() 'const', next->text() 'pTelName'
@ -322,7 +322,7 @@ 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] 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 : orig_line is 3, orig_col is 25, first->text() '*', type is PTR_TYPE
do_space : first->orig_line is 3, first->orig_col is 25, first->text() is '*', [PTR_TYPE/NONE] <===> do_space : first->orig_line is 3, first->orig_col is 25, first->text() is '*', [PTR_TYPE/NONE] <===>
second->orig_line is 3, second->orig_col is 27, second->text() is 'pN', [WORD/NONE] : rule IGNORE[ ] second->orig_line is 3, second->orig_col is 27, second->text() is 'pN', [WORD/NONE] : rule sp_after_ptr_star[ ]
space_col_align : av is ignore space_col_align : av is ignore
space_col_align : len is 1 space_col_align : len is 1
space_col_align : => coldiff is 1 space_col_align : => coldiff is 1
@ -403,7 +403,7 @@ space_col_align : first->orig_line is 3, orig_col is 47, [FPAREN_CLOSE/FUNC_CLAS
space_col_align : second->orig_line is 3, orig_col is 49 [CONSTR_COLON/NONE], text() ':', [CallStack] 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 : orig_line is 3, orig_col is 47, first->text() ')', type is FPAREN_CLOSE
do_space : first->orig_line is 3, first->orig_col is 47, first->text() is ')', [FPAREN_CLOSE/FUNC_CLASS_DEF] <===> do_space : first->orig_line is 3, first->orig_col is 47, first->text() is ')', [FPAREN_CLOSE/FUNC_CLASS_DEF] <===>
second->orig_line is 3, second->orig_col is 49, second->text() is ':', [CONSTR_COLON/NONE] : rule ADD from add_space_table[ ] second->orig_line is 3, second->orig_col is 49, second->text() is ':', [CONSTR_COLON/NONE] : rule sp_before_constr_colon[ ]
space_col_align : av is add space_col_align : av is add
space_col_align : len is 1 space_col_align : len is 1
space_col_align : => coldiff is 1 space_col_align : => coldiff is 1
@ -660,7 +660,7 @@ 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] 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 : orig_line is 13, orig_col is 11, first->text() '*', type is PTR_TYPE
do_space : first->orig_line is 13, first->orig_col is 11, first->text() is '*', [PTR_TYPE/NONE] <===> do_space : first->orig_line is 13, first->orig_col is 11, first->text() is '*', [PTR_TYPE/NONE] <===>
second->orig_line is 13, second->orig_col is 13, second->text() is 'const', [QUALIFIER/NONE] : rule IGNORE[ ] second->orig_line is 13, second->orig_col is 13, second->text() is 'const', [QUALIFIER/NONE] : rule sp_after_ptr_star_qualifier[ ]
space_col_align : av is ignore space_col_align : av is ignore
space_col_align : len is 1 space_col_align : len is 1
space_col_align : => coldiff is 1 space_col_align : => coldiff is 1

@ -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="1,REMOVE"><font color="red">M</font></a>
a<a title="2,sp_assign"><font color="red">M</font></a>=<a title="3,86,sp_assign"><font color="red">M</font></a>b<a title="4,87,93,sp_arith"><font color="red">M</font></a>+<a title="5,88,94,99,sp_arith"><font color="red">M</font></a>111<a title="6,89,95,100,104,sp_arith"><font color="red">M</font></a>-<a title="7,90,96,101,105,108,sp_arith"><font color="red">M</font></a>55<a title="8,91,97,102,106,109,111,sp_before_semi"><font color="red">M</font></a>;<a title="9,92,98,103,107,110,112,113,REMOVE"><font color="red">M</font></a>
}<a title="10,REMOVE"><font color="red">M</font></a>
template<a title="11,sp_before_angle"><font color="red">M</font></a>&lt;<a title="12,114,sp_inside_angle"><font color="red">M</font></a>typename<a title="13,115,123,ADD from add_space_table"><font color="red">M</font></a>...<a title="14,116,124,131,sp_ellipsis_parameter_pack"><font color="red">M</font></a>A<a title="15,117,125,132,138,sp_before_comma"><font color="red">M</font></a>,<a title="16,118,126,133,139,144,sp_after_comma"><font color="red">M</font></a>int<a title="17,119,127,134,140,145,149,sp_type_ellipsis"><font color="red">M</font></a>...<a title="18,120,128,135,141,146,150,153,FORCE"><font color="red">M</font></a>B<a title="19,121,129,136,142,147,151,154,156,sp_inside_angle"><font color="red">M</font></a>&gt;<a title="20,122,130,137,143,148,152,155,157,158,REMOVE"><font color="red">M</font></a>
struct<a title="21,ADD from add_space_table"><font color="red">M</font></a>foo1<a title="22,159,sp_after_type"><font color="red">M</font></a>:<a title="23,160,177,ADD from add_space_table"><font color="red">M</font></a>foo1<a title="24,161,178,194,sp_before_angle"><font color="red">M</font></a>&lt;<a title="25,162,179,195,210,sp_inside_angle"><font color="red">M</font></a>A<a title="26,163,180,196,211,225,sp_parameter_pack_ellipsis"><font color="red">M</font></a>...<a title="27,164,181,197,212,226,239,sp_before_comma"><font color="red">M</font></a>,<a title="28,165,182,198,213,227,240,252,sp_after_comma"><font color="red">M</font></a>(<a title="29,166,183,199,214,228,241,253,264,sp_inside_paren"><font color="red">M</font></a>sizeof<a title="30,167,184,200,215,229,242,254,265,275,sp_sizeof_ellipsis"><font color="red">M</font></a>...<a title="31,168,185,201,216,230,243,255,266,276,285,sp_sizeof_ellipsis_paren"><font color="red">M</font></a>(<a title="32,169,186,202,217,231,244,256,267,277,286,294,sp_inside_paren"><font color="red">M</font></a>A<a title="33,170,187,203,218,232,245,257,268,278,287,295,302,sp_inside_paren"><font color="red">M</font></a>)<a title="34,171,188,204,219,233,246,258,269,279,288,296,303,309,sp_arith"><font color="red">M</font></a>+<a title="35,172,189,205,220,234,247,259,270,280,289,297,304,310,315,sp_arith"><font color="red">M</font></a>B<a title="36,173,190,206,221,235,248,260,271,281,290,298,305,311,316,320,sp_inside_paren"><font color="red">M</font></a>)<a title="37,174,191,207,222,236,249,261,272,282,291,299,306,312,317,321,324,sp_paren_ellipsis"><font color="red">M</font></a>...<a title="38,175,192,208,223,237,250,262,273,283,292,300,307,313,318,322,325,327,sp_inside_angle"><font color="red">M</font></a>&gt;<a title="39,176,193,209,224,238,251,263,274,284,293,301,308,314,319,323,326,328,329,REMOVE"><font color="red">M</font></a>
{<a title="40,REMOVE"><font color="red">M</font></a>
foo1<a title="41,64,sp_func_class_paren"><font color="red">M</font></a>(<a title="42,65,330,sp_inside_fparens"><font color="red">M</font></a>)<a title="43,66,331,333,sp_fparen_brace"><font color="red">M</font></a>{<a title="44,67,332,334,335,REMOVE"><font color="red">M</font></a>
int<a title="45,68,sp_after_type"><font color="red">M</font></a>x<a title="46,69,336,sp_assign"><font color="red">M</font></a>=<a title="47,70,337,344,sp_assign"><font color="red">M</font></a>sizeof<a title="48,71,338,345,351,sp_sizeof_ellipsis"><font color="red">M</font></a>...<a title="49,72,339,346,352,357,sp_sizeof_ellipsis_paren"><font color="red">M</font></a>(<a title="50,73,340,347,353,358,362,sp_inside_paren"><font color="red">M</font></a>A<a title="51,74,341,348,354,359,363,366,sp_inside_paren"><font color="red">M</font></a>)<a title="52,75,342,349,355,360,364,367,369,sp_before_semi"><font color="red">M</font></a>;<a title="53,76,343,350,356,361,365,368,370,371,REMOVE"><font color="red">M</font></a>
bool<a title="54,77,sp_after_type"><font color="red">M</font></a>b<a title="55,78,372,sp_assign"><font color="red">M</font></a>=<a title="56,79,373,378,sp_assign"><font color="red">M</font></a>x<a title="57,80,374,379,383,sp_compare"><font color="red">M</font></a>><a title="58,81,375,380,384,387,sp_compare"><font color="red">M</font></a>1<a title="59,82,376,381,385,388,390,sp_before_semi"><font color="red">M</font></a>;<a title="60,83,377,382,386,389,391,392,REMOVE"><font color="red">M</font></a>
}<a title="61,84,REMOVE"><font color="red">M</font></a>
}<a title="62,sp_before_semi"><font color="red">M</font></a>;<a title="63,393,REMOVE"><font color="red">M</font></a>
</pre>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save