diff options
Diffstat (limited to 'debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation')
57 files changed, 13483 insertions, 0 deletions
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/Track.jpg b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/Track.jpg Binary files differnew file mode 100644 index 00000000..b18b0477 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/Track.jpg diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/Tracking.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/Tracking.txt new file mode 100644 index 00000000..a1fb7850 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/Tracking.txt @@ -0,0 +1,52 @@ +2020-11-09 + +Tracking is used to put some marks within a copy of the source and +in the log file. uncrustify generate a HTML file with the marks. + +Using a browser, one can see where, which options are working. + +The command option is: + +uncrustify --tracking Track.html -c config-FILE -f source-FILE -L A 2>A.txt + +Tracking puts a red "M" in the source to show where the options are working. +A tracking number is used and writen in the Track.html file and the output file A.txt +to make possible to link the changes together. + +An example: + +tracking.cpp +{ + a = b + 111-55; +} + +The config file: + +indent_with_tabs = 0 +sp_arith = force +sp_assign = force + +The tracking file is: + +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8"/> + <title>Uncrustify: where do the Spaces options work</title> +</head> +<body lang="en-US"> +<p> +</p> +<pre> +{ + a<a title="1,8,sp_assign"><font color="red">M</font></a>=<a title="2,9,16,sp_assign"><font color="red">M</font>< +/a>b<a title="3,10,17,22,sp_arith"><font color="red">M</font></a>+<a title="4,11,18,23,27,sp_arith"><font color="red">M< +/font></a>111<a title="5,12,19,24,28,31,sp_arith"><font color="red">M</font></a>-<a title="6,13,20,25,29,32,34,sp_arith" +><font color="red">M</font></a>55<a title="7,14,21,26,30,33,35,36,sp_before_semi"><font color="red">M</font></a>; +} +</pre> +</body> +</html> + +Use it with a browser and you can see the red "M"s. +Let put the cursor on the "M"s, and you see the tracking number and the option used. +(look at the picture track.jpg) diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/align-thresholds.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/align-thresholds.txt new file mode 100644 index 00000000..5c18039d --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/align-thresholds.txt @@ -0,0 +1,219 @@ +------------------------------------------------------------------------------- +Alignment thresholds: + +Alignment threshold are used to prevent aligning of certain text. + +Consider this example when aligning assignments: + + a = 2; + gld.settings[somevariable] = 5; + +Without thresholds, this would result in: + + a = 2; + gld.settings[somevariable] = 5; + +However, this is likely not desired. + +So to handle this, we set a limit on the number of columns that a alignment +may move a token. If we set the threshold to, say, 3 characters, then +the two would not be aligned together because 'a = 2' would have to be moved +by 25 columns. + +Here's a more complicated case: + + a = 1; + bb = 2; + ccc = 3; + dddd = 4; + eeeee = 5; + ffffff = 6; + +In this case, we may want this output: + + a = 1; + bb = 2; + ccc = 3; + dddd = 4; + eeeee = 5; + ffffff = 6; + +But, with a threshold of 3, 'a' and 'ffffff' cannot be aligned together. + +So how should these thresholds be implemented? + +One approach is to use the threshold as the maximum difference between the +current maximum and the new maximum. Using this approach, all 6 lines above +are aligned, because the change for each is 1 column. + +Consider this with a line-span of 3 and a column-threshold of 3. +Note that we'll now need to keep track of the last line processed. +(line and column numbers added for clarity) + + 111111 + 123456789012345 + --------------- +1 | a = 1; +2 | eeeee = 5; +3 | ffffff = 6; + +On line 1, the maxcol is set to 3. +On line 2, the maxcol would be set to 7, except that exceeds the threshold. +On line 3, the maxcol would be set to 8, except that exceeds the threshold. + +So, it ends up with one item in the align stack - line 1. +Then we pick up from where we left off - on line 2. +On line 2, the maxcol is set to 7. +On line 3, the maxcol is set to 8. + +End result: + 111111 + 123456789012345 + --------------- +1 | a = 1; +2 | eeeee = 5; +3 | ffffff = 6; + + +Now lets get tricky. + + 111111 + 123456789012345 + --------------- +1 | a = 1; +2 | eeeee = 5; +3 | ccc = 3; +4 | ffffff = 6; + +How should this be aligned? +I think we need to add another list - a 'skipped' list, that runs in parallel +with the 'aligned' list. + +On line 1, the maxcol is set to 3, added to the aligned list. +On line 2, col exceeds the threshold, so it is added to the skipped list. +On line 3, the maxcol is set to 5, added to the aligned list. +Now, after an item is added to the aligned list, the skipped list must be re-scanned. +We now see that line 2 is only 2 columns different, so it is added and maxcol = 7. +The skipped list is now empty. +On line 4, the maxcol is set to 8, added to the aligned list. + +So the output is: + + 111111 + 123456789012345 + --------------- +1 | a = 1; +2 | eeeee = 5; +3 | ccc = 3; +4 | ffffff = 6; + + +Now for a case where the skipped list is not absorbed: + + 111111 + 123456789012345 + --------------- +1 | a = 1; +2 | iiiiiiiiiiiiieeeee = 5; +3 | ccc = 3; +4 | ffffff = 6; + +On line 1, the maxcol is set to 3, added to the aligned list. +On line 2, col exceeds the threshold, so it is added to the skipped list. +On line 3, the maxcol is set to 5, added to the aligned list. +Skipped list is scanned, nothing moved from the skipped list to the aligned list. +On line 4, the maxcol is set to 8, added to the aligned list. + +So the output is: + + 111111 + 123456789012345 + --------------- +1 | a = 1; +2 | iiiiiiiiiiiiieeeee = 5; +3 | ccc = 3; +4 | ffffff = 6; + +As a reminder, the old system would have produced: + +1 | a = 1; +2 | iiiiiiiiiiiiieeeee = 5; +3 | ccc = 3; +4 | ffffff = 6; + +Which is probably not wanted. + + +--===---===---===---===-- +Absolute thresholds +To get a better grip on what thresholds do the absolute thresholds were introduced. +An absolute threshold means that the item, in this case the assign statement, is never +moved more than the threshold value. + +See the below example: +Relative threshold = 10 + 000000000111111111122222222223 + 123456789012345678901234567890 +1| a = 1 +2| aaaaa = 1 +3| bbbbbbbbbbb = 2 +4| ccccccccccccccccccccc = 3 + +Absolute threshold: + 000000000111111111122222222223 + 123456789012345678901234567890 +1| a = 1 +2| aaaaa = 1 +3| bbbbbbbbbbb = 2 +4| cccccccccccccccccccc = 3 + +--===---===---===---===-- +How to do this generically in the code... + +Easy case - one item per line. + +An AlignStack is used to manage alignment. +Here are the functions and what each of them do: +AlignStack::Start(line_span, col_thresh) +AlignStack::Add(pc) +AlignStack::Flush() +AlignStack::Newline(count) +AlignStack::End() + +For each entry, a sequence number is kept. + +AlignStack::Start(line_span, col_thresh) + - initializes the align and skipped lists + - zero max_column + - zero cur_seqnum + - zero nl_count + +AlignStack::Add(start, seqnum) + - update cur_seqnum, assign to item + - if item column is within threshold + - zero nl_count + - add to the aligned list + - if item column is > max_col + - update max_col + - re-adds all items on the skipped list + - if item column is not within threshold, add to skipped list + +AlignStack::NewLines(count) + - adds count to nl_count + - if nl_count > line_span, call AlignStack::Flush() + +AlignStack::Flush() + - step through all the items in aligned list and align the items to max_column + - keep the seq_num of the last aligned item + - zero max_column + - remove all items with a seq_num < last aligned seq_num + - call AlignStack::Add on all remaining items in the skipped list + +AlignStack::End() + - call AlignStack::Flush + - clear the lists + - free resources, etc + +Example usage: see align_assign function in align_assign.cpp + +Chunk *align_assign(Chunk *first, size_t span, size_t thresh, size_t *p_nl_count); diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/control_the_spaces.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/control_the_spaces.txt new file mode 100644 index 00000000..8ea2ac52 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/control_the_spaces.txt @@ -0,0 +1,22 @@ +2021-01-23 + +Guy Maurel + +The do_space function within the file space.cpp controls the space between every two tokens. + +There are three categories of actions. +The first one is the most important. +Options control what is to do with the interval between the two token: + * "Ignore" means do not change it. + * "Add" in the context of spaces means make sure there is at least 1. + * "Add" elsewhere means make sure one is present. + * "Remove" mean remove the space/brace/newline/etc. + * "Force" in the context of spaces means ensure that there is exactly 1. + * "Force" in other contexts means the same as "add". +For example the option "sp_before_assign": +Add or remove space before assignment operator '=', '+=', etc. +in such a statement: + a =5; + +The second categorie is used for all positions where no option is coded. +The third categorie is a debug for the developer, who still have something to do. diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/dump-steps.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/dump-steps.txt new file mode 100644 index 00000000..498a147e --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/dump-steps.txt @@ -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. + diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/example.c b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/example.c new file mode 100644 index 00000000..7c8edf79 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/example.c @@ -0,0 +1,117 @@ + +const char *token_names[] = +{ + [CT_POUND] = "POUND", + [CT_PREPROC] = "PREPROC", + [CT_PREPROC_BODY] = "PREPROC_BODY", + [CT_PP] = "PP", +}; + + +int main(int argc, char *argv[]) +{ + struct junk a[] = + { + { "version", 0, 0, 0 }, + { "file", 1, 150, 'f' }, + { "config", 1, 0, 'c' }, + { "parsed", 25, 0, 'p' }, + { NULL, 0, 0, 0 } + }; +} + + +color_t colors[] = +{ + { "red", { 255, 0, 0 } }, { "blue", { 0, 255, 0 } }, + { "green", { 0, 0, 255 } }, { "purple", { 255, 255, 0 } }, +}; + + +struct foo_t bar = +{ + .name = "bar", + .age = 21 +}; + + +struct foo_t bars[] = +{ + [0] = { .name = "bar", + .age = 21 }, + [1] = { .name = "barley", + .age = 55 }, +}; + +void foo(void) +{ + int i; + char *name; + + i = 5; + name = "bob"; +} + +/** + * This is your typical header comment + */ +int foo(int bar) +{ + int idx; + int res = 0; // trailing comment + // that spans two lines + for (idx = 1; idx < bar; idx++) + /* comment in virtual braces */ + res += idx; + + res *= idx; // some comment + + // almost continued, but a NL in between + +// col1 comment in level 1 + return(res); +} + +// col1 comment in level 0 + + +#define foobar(x) \ + { \ + for (i = 0; i < x; i++) \ + { \ + junk(i, x); \ + } \ + } + + +void foo(void) +{ + switch(ch) + { + case 'a': + { + handle_a(); + break; + } + + case 'b': + handle_b(); + break; + + case 'c': + case 'd': + handle_cd(); + break; + + case 'e': + { + handle_a(); + } + break; + + default: + handle_default(); + break; + } +} + diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/goals.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/goals.txt new file mode 100644 index 00000000..610ec121 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/goals.txt @@ -0,0 +1,24 @@ +------------------------------------------------------------------------------- +Goal: + +Do as little or as much reformatting as desired - everything should be configurable + +Features: + +Whitespace modifications + + Indent code (tabs, tabs + spaces, spaces) + - brace indenting + - paren continuation + - '=' continuation + - broken string continuation + - comment indenting + + Add/Remove spaces before/after/between symbols + + position braces (same line, cuddle else/while, etc) + +Non-whitespace modifications + + Put a '*' on the left in multi-line C comments + + Add/Remove outter-most parens on return expressions + + Add braces for 'fully braced' format + +(TODO: update the list to include more available features) + diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/how_to_configure_options.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/how_to_configure_options.txt new file mode 100644 index 00000000..2f0eee4e --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/how_to_configure_options.txt @@ -0,0 +1,16 @@ +Here are some suggestions on how to familiarize yourself with the various options that uncrustify offers. + +1. Read through default.cfg config file. This lists all the available options and a brief description of what they do. +2. Create an empty config file or make a copy of the default.cfg file +3. Looking at the file default.cfg, add or change one or more options in the config file created in 2. and test the result. +4. Iterate step 3. over and over changing just a few options at a time till the required output is reached. Working on one option at a time will give the best results. + +It is recommended to use a backup-update-compare cycle to ease your testing. + +1. save a copy of the last configuration and the last output +2. modify the config file +3. run uncrustify again on the original unmodified files with the new configuration +4. compare the new output with the saved one to see the effects of the changed configuration. + +If you discover an issue or you need some extra functionality, please report an issue at https://github.com/uncrustify/uncrustify/issues + diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/how_to_format_cpp_lambda_functions.rst b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/how_to_format_cpp_lambda_functions.rst new file mode 100644 index 00000000..e15776d4 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/how_to_format_cpp_lambda_functions.rst @@ -0,0 +1,58 @@ +################################# +Formatting C++ Lambda Expressions +################################# + +Uncrustify supports some formatting of c++ lambda expressions, although +the support is incomplete. +The parts of c++ lambda expressions that are currently recognized by Uncrusitify +are: + +.. code-block:: c++ + + [ captures ] execution_context ( params ) specifiers -> ret { body } + +Explanations for all the tokens in the above lambda expression +(except for ``execution_context``), +as well as a complete description of c++ lambda expressions, +are found `here <https://en.cppreference.com/w/cpp/language/lambda>`_. +The ``execution_context`` token is a non-standard addition to allow for +specification of the execution space (e.g. host or device in CUDA). +The native specifiers for the `execution_context` for lambda expression in CUDA +are ``__device__`` and ``__host__ __device__``. +However, it is common for code to use a preprocessor variable in place of the +native specifiers. + +The Uncrustify options for formatting of c++ lambda expressions are: + +.. code-block:: + + sp_cpp_lambda_assign + sp_cpp_lambda_square_paren + sp_cpp_lambda_square_brace + sp_cpp_lambda_paren_brace + sp_cpp_lambda_fparen + nl_cpp_lambda_leave_one_liners + nl_cpp_ldef_brace + indent_cpp_lambda_body + indent_cpp_lambda_only_once + +Please refer to the example configuration file at +`uncrustify/documentation/htdocs/default.cfg <https://github.com/uncrustify/uncrustify/blob/master/documentation/htdocs/default.cfg>`_ +for an explanation of the options. +Additionally, a multiple number of ``execution_context`` tokens may be set in +the configuration file: + +.. code-block:: + + set EXECUTION_CONTEXT __host__ __device__ + set EXECUTION_CONTEXT DEVICE_LAMBDA_CONTEXT HOST_DEVICE_LAMBDA_CONTEXT + +The effect of these lines in the configuration file is that any of the strings +(``__host__``, ``__device__``, +``DEVICE_LAMBDA_CONTEXT``, ``HOST_DEVICE_LAMBDA_CONTEXT``) +will be recognized by uncrusitfy +and will allow the lambda to be properly identified. +Note that each word after the token name +(``EXECUTION_CONTEXT`` in this instance) is a separate token. +This means that uncrustify will parse ``__host__`` and ``__device__`` +as separate tokens, and there is no need to specify ``__device__`` twice. diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/align_typedef.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/align_typedef.html new file mode 100644 index 00000000..6d94eadf --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/align_typedef.html @@ -0,0 +1,161 @@ +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8"/> + <title>Uncrustify: The align typedef options</title> +</head> +<body lang="en-US"> +<h2>align_typedef</h2> +<h3>align_typedef_span</h3> +The span for aligning single-line typedefs (0=don't align) +<table border="border"> +<tr> + <td valign="bottom">original<br>align_typedef_span=0</td> + <td valign="bottom">align_typedef_span=1</td> + <td valign="bottom">align_typedef_span=2</td> +</tr> +<tr> + <td><pre> +typedef int MY_INT; +int a; +typedef int *MY_INTP; +typedef float My_Float; + </pre> + <i>no alignment</i> + </td> + <td><pre> +typedef int MY_INT; +int a; +typedef int *MY_INTP; +typedef float My_Float; + </pre> + <i>The third line is not catch in the span</i> + </td> + <td><pre> +typedef int MY_INT; +int a; +typedef int *MY_INTP; +typedef float My_Float; + </pre> + <i>all the lines are catched</i> + </td> +</tr> +</table> +<p></p> +<h3>align_typedef_gap</h3> +The minimum space between the type and the synonym of a typedef<br> +Can be only used if align_typedef_span >= 1 +<table border="border"> +<tr> + <td valign="bottom">original<br>align_typedef_span=2</td> + <td valign="bottom">align_typedef_gap=1</td> + <td valign="bottom">align_typedef_gap=3</td> +</tr> +<tr> + <td><pre> +typedef int MY_INT; +int a; +typedef int *MY_INTP; +typedef float My_Float; + </pre> + <i>as above</i> + </td> + <td><pre> +typedef int MY_INT; +int a; +typedef int *MY_INTP; +typedef float My_Float; + </pre> + <i>no change</i> + </td> + <td><pre> +typedef int MY_INT; +int a; +typedef int *MY_INTP; +typedef float My_Float; + </pre> + <i>the gap has 3 spaces</i> + </td> +</tr> +</table> +<p></p> +<h3>align_typedef_star_style</h3> +Controls the positioning of the '*' in typedefs.<BR> +0: Align on typedef type, ignore '*'<BR> +1: The '*' is part of type name<BR> +2: The '*' is part of the type, but dangling +<table border="border"> +<tr> + <td valign="bottom">original</td> + <td valign="bottom">align_typedef_gap=3<br>align_typedef_star_style=0</td> + <td valign="bottom">align_typedef_gap=3<br>align_typedef_star_style=1</td> + <td valign="bottom">align_typedef_gap=3<br>align_typedef_star_style=2</td> +</tr> +<tr> + <td><pre> +typedef int MY_INT; +int a; +typedef int * MY_INTP; +typedef float My_Float; + </pre> + <i>no alignment</i> + </td> + <td><pre> +typedef int MY_INT; +int a; +typedef int * MY_INTP; +typedef float My_Float; + </pre> + <i>the star is ignored</i> + </td> + <td><pre> +typedef int MY_INT; +int a; +typedef int *MY_INTP; +typedef float My_Float; + </pre> + <i>the star is part of type name</i> + </td> + <td><pre> +typedef int MY_INT; +int a; +typedef int *MY_INTP; +typedef float My_Float; + </pre> + <i>the star is part of type name, but dangling</i> + </td> +</tr> +</table> +<p></p> +<h3>align_typedef_func</h3> +How to align typedef'd functions with other typedefs<BR> +0: Don't mix them at all<BR> +1: align the open paren with the types +<table border="border"> +<tr> + <td valign="bottom">original</td> + <td valign="bottom">align_typedef_gap=3<br>align_typedef_star_style=1<br>align_typedef_func=1</td> +</tr> +<tr> + <td><pre> +typedef int MY_INT; +int a; +typedef int * MY_INTP; +typedef float My_Float; +typedef int (*foo_t)(void *bar); +typedef int (*somefunc_t)(void *barstool); + </pre> + <i>no alignment</i> + </td> + <td><pre> +typedef int MY_INT; +int a; +typedef int *MY_INTP; +typedef float My_Float; +typedef int (*foo_t)(void *bar); +typedef int (*somefunc_t)(void *barstool); + </pre> + </td> +</tr> +</table> +</body> +</html>
\ No newline at end of file diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/ben.cfg.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/ben.cfg.txt new file mode 100644 index 00000000..5b19c7ca --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/ben.cfg.txt @@ -0,0 +1,113 @@ +# +# My favorite format +# + +newlines = LF # AUTO (default), CRLF, CR, or LF + +indent_with_tabs = 0 # 1=indent to level only, 2=indent with tabs +input_tab_size = 8 # original tab size +output_tab_size = 3 # new tab size +indent_columns = output_tab_size +# indent_label = 0 # pos: absolute col, neg: relative column +indent_align_string = False # align broken strings +indent_brace = 0 +indent_class = true + +nl_start_of_file = remove +# nl_start_of_file_min = 0 +nl_end_of_file = force +nl_end_of_file_min = 1 +nl_max = 4 +nl_before_block_comment = 2 +nl_after_func_body = 2 +nl_after_func_proto_group = 2 + +nl_assign_brace = add # "= {" vs "= \n {" +nl_enum_brace = add # "enum {" vs "enum \n {" +nl_union_brace = add # "union {" vs "union \n {" +nl_struct_brace = add # "struct {" vs "struct \n {" +nl_do_brace = add # "do {" vs "do \n {" +nl_if_brace = add # "if () {" vs "if () \n {" +nl_for_brace = add # "for () {" vs "for () \n {" +nl_else_brace = add # "else {" vs "else \n {" +nl_while_brace = add # "while () {" vs "while () \n {" +nl_switch_brace = add # "switch () {" vs "switch () \n {" +nl_func_var_def_blk = 1 +nl_before_case = 1 +nl_fcall_brace = add # "foo() {" vs "foo()\n{" +nl_fdef_brace = add # "int foo() {" vs "int foo()\n{" +nl_after_return = TRUE +nl_brace_while = remove +nl_brace_else = add +nl_squeeze_ifdef = TRUE + +pos_bool = trail # BOOL ops on trailing end + +eat_blanks_before_close_brace = TRUE +eat_blanks_after_open_brace = TRUE + + +mod_paren_on_return = add # "return 1;" vs "return (1);" +mod_full_brace_if = add # "if (a) a--;" vs "if (a) { a--; }" +mod_full_brace_for = add # "for () a--;" vs "for () { a--; }" +mod_full_brace_do = add # "do a--; while ();" vs "do { a--; } while ();" +mod_full_brace_while = add # "while (a) a--;" vs "while (a) { a--; }" + +sp_before_byref = remove +sp_before_semi = remove +sp_paren_paren = remove # space between (( and )) +sp_return_paren = remove # "return (1);" vs "return(1);" +sp_sizeof_paren = remove # "sizeof (int)" vs "sizeof(int)" +sp_before_sparen = force # "if (" vs "if(" +sp_after_sparen = force # "if () {" vs "if (){" +sp_after_cast = remove # "(int) a" vs "(int)a" +sp_inside_braces = force # "{ 1 }" vs "{1}" +sp_inside_braces_struct = force # "{ 1 }" vs "{1}" +sp_inside_braces_enum = force # "{ 1 }" vs "{1}" +sp_inside_paren = remove +sp_inside_fparen = remove +sp_inside_sparen = remove +sp_inside_for = remove +sp_inside_square = remove +#sp_type_func = ignore +sp_assign = force +sp_arith = force +sp_bool = force +sp_compare = force +sp_assign = force +sp_after_comma = force +sp_func_def_paren = remove # "int foo (){" vs "int foo(){" +sp_func_call_paren = remove # "foo (" vs "foo(" +sp_func_proto_paren = remove # "int foo ();" vs "int foo();" +sp_func_class_paren = remove +sp_before_angle = force +sp_after_angle = force +sp_inside_angle = remove +sp_sparen_brace = add +sp_fparen_brace = add +sp_after_ptr_star = remove +sp_before_ptr_star = force +sp_between_ptr_star = remove + +align_with_tabs = FALSE # use tabs to align +align_on_tabstop = FALSE # align on tabstops +align_enum_equ_span = 4 +align_nl_cont = TRUE +align_var_def_span = 1 +align_var_def_thresh = 12 +align_var_def_inline = TRUE +align_var_def_star = TRUE +align_var_def_colon = TRUE +align_assign_span = 1 +align_assign_thresh = 12 +align_struct_init_span = 3 +align_var_struct_span = 99 +align_right_cmt_span = 3 +align_pp_define_span = 3 +align_pp_define_gap = 4 +align_number_right = TRUE +align_typedef_span = 5 +align_typedef_gap = 3 + +cmt_star_cont = TRUE + diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/config.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/config.txt new file mode 100644 index 00000000..571f4038 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/config.txt @@ -0,0 +1,3493 @@ +# Uncrustify-0.75.0 + +# +# General options +# + +# The type of line endings. +# +# Default: auto +newlines = auto # lf/crlf/cr/auto + +# The original size of tabs in the input. +# +# Default: 8 +input_tab_size = 8 # unsigned number + +# The size of tabs in the output (only used if align_with_tabs=true). +# +# Default: 8 +output_tab_size = 8 # unsigned number + +# The ASCII value of the string escape char, usually 92 (\) or (Pawn) 94 (^). +# +# Default: 92 +string_escape_char = 92 # unsigned number + +# Alternate string escape char (usually only used for Pawn). +# Only works right before the quote char. +string_escape_char2 = 0 # unsigned number + +# Replace tab characters found in string literals with the escape sequence \t +# instead. +string_replace_tab_chars = false # true/false + +# Allow interpreting '>=' and '>>=' as part of a template in code like +# 'void f(list<list<B>>=val);'. If true, 'assert(x<0 && y>=3)' will be broken. +# Improvements to template detection may make this option obsolete. +tok_split_gte = false # true/false + +# Disable formatting of NL_CONT ('\\n') ended lines (e.g. multi-line macros). +disable_processing_nl_cont = false # true/false + +# Specify the marker used in comments to disable processing of part of the +# file. +# +# Default: *INDENT-OFF* +disable_processing_cmt = " *INDENT-OFF*" # string + +# Specify the marker used in comments to (re)enable processing in a file. +# +# Default: *INDENT-ON* +enable_processing_cmt = " *INDENT-ON*" # string + +# Enable parsing of digraphs. +enable_digraphs = false # true/false + +# Option to allow both disable_processing_cmt and enable_processing_cmt +# strings, if specified, to be interpreted as ECMAScript regular expressions. +# If true, a regex search will be performed within comments according to the +# specified patterns in order to disable/enable processing. +processing_cmt_as_regex = false # true/false + +# Add or remove the UTF-8 BOM (recommend 'remove'). +utf8_bom = ignore # ignore/add/remove/force/not_defined + +# If the file contains bytes with values between 128 and 255, but is not +# UTF-8, then output as UTF-8. +utf8_byte = false # true/false + +# Force the output encoding to UTF-8. +utf8_force = false # true/false + +# +# Spacing options +# + +# Add or remove space around non-assignment symbolic operators ('+', '/', '%', +# '<<', and so forth). +sp_arith = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around arithmetic operators '+' and '-'. +# +# Overrides sp_arith. +sp_arith_additive = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around assignment operator '=', '+=', etc. +sp_assign = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around '=' in C++11 lambda capture specifications. +# +# Overrides sp_assign. +sp_cpp_lambda_assign = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the capture specification of a C++11 lambda when +# an argument list is present, as in '[] <here> (int x){ ... }'. +sp_cpp_lambda_square_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the capture specification of a C++11 lambda with +# no argument list is present, as in '[] <here> { ... }'. +sp_cpp_lambda_square_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the opening parenthesis and before the closing +# parenthesis of a argument list of a C++11 lambda, as in +# '[]( <here> int x <here> ){ ... }'. +sp_cpp_lambda_argument_list = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the argument list of a C++11 lambda, as in +# '[](int x) <here> { ... }'. +sp_cpp_lambda_paren_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between a lambda body and its call operator of an +# immediately invoked lambda, as in '[]( ... ){ ... } <here> ( ... )'. +sp_cpp_lambda_fparen = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around assignment operator '=' in a prototype. +# +# If set to ignore, use sp_assign. +sp_assign_default = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before assignment operator '=', '+=', etc. +# +# Overrides sp_assign. +sp_before_assign = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after assignment operator '=', '+=', etc. +# +# Overrides sp_assign. +sp_after_assign = ignore # ignore/add/remove/force/not_defined + +# Add or remove space in 'enum {'. +# +# Default: add +sp_enum_brace = add # ignore/add/remove/force/not_defined + +# Add or remove space in 'NS_ENUM ('. +sp_enum_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around assignment '=' in enum. +sp_enum_assign = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before assignment '=' in enum. +# +# Overrides sp_enum_assign. +sp_enum_before_assign = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after assignment '=' in enum. +# +# Overrides sp_enum_assign. +sp_enum_after_assign = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around assignment ':' in enum. +sp_enum_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around preprocessor '##' concatenation operator. +# +# Default: add +sp_pp_concat = add # ignore/add/remove/force/not_defined + +# Add or remove space after preprocessor '#' stringify operator. +# Also affects the '#@' charizing operator. +sp_pp_stringify = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before preprocessor '#' stringify operator +# as in '#define x(y) L#y'. +sp_before_pp_stringify = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around boolean operators '&&' and '||'. +sp_bool = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around compare operator '<', '>', '==', etc. +sp_compare = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside '(' and ')'. +sp_inside_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between nested parentheses, i.e. '((' vs. ') )'. +sp_paren_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between back-to-back parentheses, i.e. ')(' vs. ') ('. +sp_cparen_oparen = ignore # ignore/add/remove/force/not_defined + +# Whether to balance spaces inside nested parentheses. +sp_balance_nested_parens = false # true/false + +# Add or remove space between ')' and '{'. +sp_paren_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between nested braces, i.e. '{{' vs. '{ {'. +sp_brace_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before pointer star '*'. +sp_before_ptr_star = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before pointer star '*' that isn't followed by a +# variable name. If set to ignore, sp_before_ptr_star is used instead. +sp_before_unnamed_ptr_star = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between pointer stars '*', as in 'int ***a;'. +sp_between_ptr_star = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after pointer star '*', if followed by a word. +# +# Overrides sp_type_func. +sp_after_ptr_star = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after pointer caret '^', if followed by a word. +sp_after_ptr_block_caret = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after pointer star '*', if followed by a qualifier. +sp_after_ptr_star_qualifier = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after a pointer star '*', if followed by a function +# prototype or function definition. +# +# Overrides sp_after_ptr_star and sp_type_func. +sp_after_ptr_star_func = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after a pointer star '*' in the trailing return of a +# function prototype or function definition. +sp_after_ptr_star_trailing = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between the pointer star '*' and the name of the variable +# in a function pointer definition. +sp_ptr_star_func_var = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between the pointer star '*' and the name of the type +# in a function pointer type definition. +sp_ptr_star_func_type = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after a pointer star '*', if followed by an open +# parenthesis, as in 'void* (*)()'. +sp_ptr_star_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before a pointer star '*', if followed by a function +# prototype or function definition. +sp_before_ptr_star_func = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before a pointer star '*' in the trailing return of a +# function prototype or function definition. +sp_before_ptr_star_trailing = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before a reference sign '&'. +sp_before_byref = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before a reference sign '&' that isn't followed by a +# variable name. If set to ignore, sp_before_byref is used instead. +sp_before_unnamed_byref = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after reference sign '&', if followed by a word. +# +# Overrides sp_type_func. +sp_after_byref = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after a reference sign '&', if followed by a function +# prototype or function definition. +# +# Overrides sp_after_byref and sp_type_func. +sp_after_byref_func = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before a reference sign '&', if followed by a function +# prototype or function definition. +sp_before_byref_func = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after a reference sign '&', if followed by an open +# parenthesis, as in 'char& (*)()'. +sp_byref_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between type and word. In cases where total removal of +# whitespace would be a syntax error, a value of 'remove' is treated the same +# as 'force'. +# +# This also affects some other instances of space following a type that are +# not covered by other options; for example, between the return type and +# parenthesis of a function type template argument, between the type and +# parenthesis of an array parameter, or between 'decltype(...)' and the +# following word. +# +# Default: force +sp_after_type = force # ignore/add/remove/force/not_defined + +# Add or remove space between 'decltype(...)' and word, +# brace or function call. +sp_after_decltype = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove space before the parenthesis in the D constructs +# 'template Foo(' and 'class Foo('. +sp_before_template_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'template' and '<'. +# If set to ignore, sp_before_angle is used. +sp_template_angle = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before '<'. +sp_before_angle = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside '<' and '>'. +sp_inside_angle = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside '<>'. +sp_inside_angle_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '>' and ':'. +sp_angle_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after '>'. +sp_after_angle = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '>' and '(' as found in 'new List<byte>(foo);'. +sp_angle_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '>' and '()' as found in 'new List<byte>();'. +sp_angle_paren_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '>' and a word as in 'List<byte> m;' or +# 'template <typename T> static ...'. +sp_angle_word = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '>' and '>' in '>>' (template stuff). +# +# Default: add +sp_angle_shift = add # ignore/add/remove/force/not_defined + +# (C++11) Permit removal of the space between '>>' in 'foo<bar<int> >'. Note +# that sp_angle_shift cannot remove the space without this option. +sp_permit_cpp11_shift = false # true/false + +# Add or remove space before '(' of control statements ('if', 'for', 'switch', +# 'while', etc.). +sp_before_sparen = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside '(' and ')' of control statements other than +# 'for'. +sp_inside_sparen = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after '(' of control statements other than 'for'. +# +# Overrides sp_inside_sparen. +sp_inside_sparen_open = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before ')' of control statements other than 'for'. +# +# Overrides sp_inside_sparen. +sp_inside_sparen_close = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside '(' and ')' of 'for' statements. +sp_inside_for = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after '(' of 'for' statements. +# +# Overrides sp_inside_for. +sp_inside_for_open = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before ')' of 'for' statements. +# +# Overrides sp_inside_for. +sp_inside_for_close = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '((' or '))' of control statements. +sp_sparen_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after ')' of control statements. +sp_after_sparen = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between ')' and '{' of control statements. +sp_sparen_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'do' and '{'. +sp_do_brace_open = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '}' and 'while'. +sp_brace_close_while = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'while' and '('. Overrides sp_before_sparen. +sp_while_paren_open = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove space between 'invariant' and '('. +sp_invariant_paren = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove space after the ')' in 'invariant (C) c'. +sp_after_invariant_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before empty statement ';' on 'if', 'for' and 'while'. +sp_special_semi = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before ';'. +# +# Default: remove +sp_before_semi = remove # ignore/add/remove/force/not_defined + +# Add or remove space before ';' in non-empty 'for' statements. +sp_before_semi_for = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before a semicolon of an empty left part of a for +# statement, as in 'for ( <here> ; ; )'. +sp_before_semi_for_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between the semicolons of an empty middle part of a for +# statement, as in 'for ( ; <here> ; )'. +sp_between_semi_for_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after ';', except when followed by a comment. +# +# Default: add +sp_after_semi = add # ignore/add/remove/force/not_defined + +# Add or remove space after ';' in non-empty 'for' statements. +# +# Default: force +sp_after_semi_for = force # ignore/add/remove/force/not_defined + +# Add or remove space after the final semicolon of an empty part of a for +# statement, as in 'for ( ; ; <here> )'. +sp_after_semi_for_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before '[' (except '[]'). +sp_before_square = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before '[' for a variable definition. +# +# Default: remove +sp_before_vardef_square = remove # ignore/add/remove/force/not_defined + +# Add or remove space before '[' for asm block. +sp_before_square_asm_block = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before '[]'. +sp_before_squares = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before C++17 structured bindings. +sp_cpp_before_struct_binding = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside a non-empty '[' and ']'. +sp_inside_square = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside '[]'. +sp_inside_square_empty = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space inside a non-empty Objective-C boxed array '@[' and +# ']'. If set to ignore, sp_inside_square is used. +sp_inside_square_oc_array = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after ',', i.e. 'a,b' vs. 'a, b'. +sp_after_comma = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'. +# +# Default: remove +sp_before_comma = remove # ignore/add/remove/force/not_defined + +# (C#) Add or remove space between ',' and ']' in multidimensional array type +# like 'int[,,]'. +sp_after_mdatype_commas = ignore # ignore/add/remove/force/not_defined + +# (C#) Add or remove space between '[' and ',' in multidimensional array type +# like 'int[,,]'. +sp_before_mdatype_commas = ignore # ignore/add/remove/force/not_defined + +# (C#) Add or remove space between ',' in multidimensional array type +# like 'int[,,]'. +sp_between_mdatype_commas = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between an open parenthesis and comma, +# i.e. '(,' vs. '( ,'. +# +# Default: force +sp_paren_comma = force # ignore/add/remove/force/not_defined + +# Add or remove space between a type and ':'. +sp_type_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the variadic '...' when preceded by a +# non-punctuator. +# The value REMOVE will be overridden with FORCE +sp_after_ellipsis = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before the variadic '...' when preceded by a +# non-punctuator. +# The value REMOVE will be overridden with FORCE +sp_before_ellipsis = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between a type and '...'. +sp_type_ellipsis = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between a '*' and '...'. +sp_ptr_type_ellipsis = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between ')' and '...'. +sp_paren_ellipsis = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '&&' and '...'. +sp_byref_ellipsis = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between ')' and a qualifier such as 'const'. +sp_paren_qualifier = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between ')' and 'noexcept'. +sp_paren_noexcept = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after class ':'. +sp_after_class_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before class ':'. +sp_before_class_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after class constructor ':'. +# +# Default: add +sp_after_constr_colon = add # ignore/add/remove/force/not_defined + +# Add or remove space before class constructor ':'. +# +# Default: add +sp_before_constr_colon = add # ignore/add/remove/force/not_defined + +# Add or remove space before case ':'. +# +# Default: remove +sp_before_case_colon = remove # ignore/add/remove/force/not_defined + +# Add or remove space between 'operator' and operator sign. +sp_after_operator = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between the operator symbol and the open parenthesis, as +# in 'operator ++('. +sp_after_operator_sym = ignore # ignore/add/remove/force/not_defined + +# Overrides sp_after_operator_sym when the operator has no arguments, as in +# 'operator *()'. +sp_after_operator_sym_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after C/D cast, i.e. 'cast(int)a' vs. 'cast(int) a' or +# '(int)a' vs. '(int) a'. +sp_after_cast = ignore # ignore/add/remove/force/not_defined + +# Add or remove spaces inside cast parentheses. +sp_inside_paren_cast = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between the type and open parenthesis in a C++ cast, +# i.e. 'int(exp)' vs. 'int (exp)'. +sp_cpp_cast_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'sizeof' and '('. +sp_sizeof_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'sizeof' and '...'. +sp_sizeof_ellipsis = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'sizeof...' and '('. +sp_sizeof_ellipsis_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '...' and a parameter pack. +sp_ellipsis_parameter_pack = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between a parameter pack and '...'. +sp_parameter_pack_ellipsis = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'decltype' and '('. +sp_decltype_paren = ignore # ignore/add/remove/force/not_defined + +# (Pawn) Add or remove space after the tag keyword. +sp_after_tag = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside enum '{' and '}'. +sp_inside_braces_enum = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside struct/union '{' and '}'. +sp_inside_braces_struct = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space inside Objective-C boxed dictionary '{' and '}' +sp_inside_braces_oc_dict = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after open brace in an unnamed temporary +# direct-list-initialization +# if statement is a brace_init_lst +# works only if sp_brace_brace is set to ignore. +sp_after_type_brace_init_lst_open = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before close brace in an unnamed temporary +# direct-list-initialization +# if statement is a brace_init_lst +# works only if sp_brace_brace is set to ignore. +sp_before_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside an unnamed temporary direct-list-initialization +# if statement is a brace_init_lst +# works only if sp_brace_brace is set to ignore +# works only if sp_before_type_brace_init_lst_close is set to ignore. +sp_inside_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside '{' and '}'. +sp_inside_braces = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside '{}'. +sp_inside_braces_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around trailing return operator '->'. +sp_trailing_return = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between return type and function name. A minimum of 1 +# is forced except for pointer return types. +sp_type_func = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between type and open brace of an unnamed temporary +# direct-list-initialization. +sp_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between function name and '(' on function declaration. +sp_func_proto_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between function name and '()' on function declaration +# without parameters. +sp_func_proto_paren_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between function name and '(' with a typedef specifier. +sp_func_type_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between alias name and '(' of a non-pointer function type typedef. +sp_func_def_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between function name and '()' on function definition +# without parameters. +sp_func_def_paren_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside empty function '()'. +# Overrides sp_after_angle unless use_sp_after_angle_always is set to true. +sp_inside_fparens = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside function '(' and ')'. +sp_inside_fparen = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside the first parentheses in a function type, as in +# 'void (*x)(...)'. +sp_inside_tparen = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between the ')' and '(' in a function type, as in +# 'void (*x)(...)'. +sp_after_tparen_close = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between ']' and '(' when part of a function call. +sp_square_fparen = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between ')' and '{' of function. +sp_fparen_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between ')' and '{' of a function call in object +# initialization. +# +# Overrides sp_fparen_brace. +sp_fparen_brace_initializer = ignore # ignore/add/remove/force/not_defined + +# (Java) Add or remove space between ')' and '{{' of double brace initializer. +sp_fparen_dbrace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between function name and '(' on function calls. +sp_func_call_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between function name and '()' on function calls without +# parameters. If set to ignore (the default), sp_func_call_paren is used. +sp_func_call_paren_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between the user function name and '(' on function +# calls. You need to set a keyword to be a user function in the config file, +# like: +# set func_call_user tr _ i18n +sp_func_call_user_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside user function '(' and ')'. +sp_func_call_user_inside_fparen = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between nested parentheses with user functions, +# i.e. '((' vs. '( ('. +sp_func_call_user_paren_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between a constructor/destructor and the open +# parenthesis. +sp_func_class_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between a constructor without parameters or destructor +# and '()'. +sp_func_class_paren_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after 'return'. +# +# Default: force +sp_return = force # ignore/add/remove/force/not_defined + +# Add or remove space between 'return' and '('. +sp_return_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'return' and '{'. +sp_return_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '__attribute__' and '('. +sp_attribute_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'defined' and '(' in '#if defined (FOO)'. +sp_defined_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'throw' and '(' in 'throw (something)'. +sp_throw_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'throw' and anything other than '(' as in +# '@throw [...];'. +sp_after_throw = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'catch' and '(' in 'catch (something) { }'. +# If set to ignore, sp_before_sparen is used. +sp_catch_paren = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space between '@catch' and '(' +# in '@catch (something) { }'. If set to ignore, sp_catch_paren is used. +sp_oc_catch_paren = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space before Objective-C protocol list +# as in '@protocol Protocol<here><Protocol_A>' or '@interface MyClass : NSObject<here><MyProtocol>'. +sp_before_oc_proto_list = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space between class name and '(' +# in '@interface className(categoryName)<ProtocolName>:BaseClass' +sp_oc_classname_paren = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove space between 'version' and '(' +# in 'version (something) { }'. If set to ignore, sp_before_sparen is used. +sp_version_paren = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove space between 'scope' and '(' +# in 'scope (something) { }'. If set to ignore, sp_before_sparen is used. +sp_scope_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'super' and '(' in 'super (something)'. +# +# Default: remove +sp_super_paren = remove # ignore/add/remove/force/not_defined + +# Add or remove space between 'this' and '(' in 'this (something)'. +# +# Default: remove +sp_this_paren = remove # ignore/add/remove/force/not_defined + +# Add or remove space between a macro name and its definition. +sp_macro = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between a macro function ')' and its definition. +sp_macro_func = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'else' and '{' if on the same line. +sp_else_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '}' and 'else' if on the same line. +sp_brace_else = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '}' and the name of a typedef on the same line. +sp_brace_typedef = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before the '{' of a 'catch' statement, if the '{' and +# 'catch' are on the same line, as in 'catch (decl) <here> {'. +sp_catch_brace = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space before the '{' of a '@catch' statement, if the '{' +# and '@catch' are on the same line, as in '@catch (decl) <here> {'. +# If set to ignore, sp_catch_brace is used. +sp_oc_catch_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '}' and 'catch' if on the same line. +sp_brace_catch = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space between '}' and '@catch' if on the same line. +# If set to ignore, sp_brace_catch is used. +sp_oc_brace_catch = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'finally' and '{' if on the same line. +sp_finally_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '}' and 'finally' if on the same line. +sp_brace_finally = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'try' and '{' if on the same line. +sp_try_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between get/set and '{' if on the same line. +sp_getset_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between a variable and '{' for C++ uniform +# initialization. +sp_word_brace_init_lst = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between a variable and '{' for a namespace. +# +# Default: add +sp_word_brace_ns = add # ignore/add/remove/force/not_defined + +# Add or remove space before the '::' operator. +sp_before_dc = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the '::' operator. +sp_after_dc = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove around the D named array initializer ':' operator. +sp_d_array_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the '!' (not) unary operator. +# +# Default: remove +sp_not = remove # ignore/add/remove/force/not_defined + +# Add or remove space between two '!' (not) unary operators. +# If set to ignore, sp_not will be used. +sp_not_not = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the '~' (invert) unary operator. +# +# Default: remove +sp_inv = remove # ignore/add/remove/force/not_defined + +# Add or remove space after the '&' (address-of) unary operator. This does not +# affect the spacing after a '&' that is part of a type. +# +# Default: remove +sp_addr = remove # ignore/add/remove/force/not_defined + +# Add or remove space around the '.' or '->' operators. +# +# Default: remove +sp_member = remove # ignore/add/remove/force/not_defined + +# Add or remove space after the '*' (dereference) unary operator. This does +# not affect the spacing after a '*' that is part of a type. +# +# Default: remove +sp_deref = remove # ignore/add/remove/force/not_defined + +# Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'. +# +# Default: remove +sp_sign = remove # ignore/add/remove/force/not_defined + +# Add or remove space between '++' and '--' the word to which it is being +# applied, as in '(--x)' or 'y++;'. +# +# Default: remove +sp_incdec = remove # ignore/add/remove/force/not_defined + +# Add or remove space before a backslash-newline at the end of a line. +# +# Default: add +sp_before_nl_cont = add # ignore/add/remove/force/not_defined + +# (OC) Add or remove space after the scope '+' or '-', as in '-(void) foo;' +# or '+(int) bar;'. +sp_after_oc_scope = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space after the colon in message specs, +# i.e. '-(int) f:(int) x;' vs. '-(int) f: (int) x;'. +sp_after_oc_colon = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space before the colon in message specs, +# i.e. '-(int) f: (int) x;' vs. '-(int) f : (int) x;'. +sp_before_oc_colon = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space after the colon in immutable dictionary expression +# 'NSDictionary *test = @{@"foo" :@"bar"};'. +sp_after_oc_dict_colon = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space before the colon in immutable dictionary expression +# 'NSDictionary *test = @{@"foo" :@"bar"};'. +sp_before_oc_dict_colon = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space after the colon in message specs, +# i.e. '[object setValue:1];' vs. '[object setValue: 1];'. +sp_after_send_oc_colon = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space before the colon in message specs, +# i.e. '[object setValue:1];' vs. '[object setValue :1];'. +sp_before_send_oc_colon = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space after the (type) in message specs, +# i.e. '-(int)f: (int) x;' vs. '-(int)f: (int)x;'. +sp_after_oc_type = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space after the first (type) in message specs, +# i.e. '-(int) f:(int)x;' vs. '-(int)f:(int)x;'. +sp_after_oc_return_type = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space between '@selector' and '(', +# i.e. '@selector(msgName)' vs. '@selector (msgName)'. +# Also applies to '@protocol()' constructs. +sp_after_oc_at_sel = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space between '@selector(x)' and the following word, +# i.e. '@selector(foo) a:' vs. '@selector(foo)a:'. +sp_after_oc_at_sel_parens = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space inside '@selector' parentheses, +# i.e. '@selector(foo)' vs. '@selector( foo )'. +# Also applies to '@protocol()' constructs. +sp_inside_oc_at_sel_parens = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space before a block pointer caret, +# i.e. '^int (int arg){...}' vs. ' ^int (int arg){...}'. +sp_before_oc_block_caret = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space after a block pointer caret, +# i.e. '^int (int arg){...}' vs. '^ int (int arg){...}'. +sp_after_oc_block_caret = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space between the receiver and selector in a message, +# as in '[receiver selector ...]'. +sp_after_oc_msg_receiver = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space after '@property'. +sp_after_oc_property = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space between '@synchronized' and the open parenthesis, +# i.e. '@synchronized(foo)' vs. '@synchronized (foo)'. +sp_after_oc_synchronized = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around the ':' in 'b ? t : f'. +sp_cond_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before the ':' in 'b ? t : f'. +# +# Overrides sp_cond_colon. +sp_cond_colon_before = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the ':' in 'b ? t : f'. +# +# Overrides sp_cond_colon. +sp_cond_colon_after = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around the '?' in 'b ? t : f'. +sp_cond_question = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before the '?' in 'b ? t : f'. +# +# Overrides sp_cond_question. +sp_cond_question_before = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the '?' in 'b ? t : f'. +# +# Overrides sp_cond_question. +sp_cond_question_after = ignore # ignore/add/remove/force/not_defined + +# In the abbreviated ternary form '(a ?: b)', add or remove space between '?' +# and ':'. +# +# Overrides all other sp_cond_* options. +sp_cond_ternary_short = ignore # ignore/add/remove/force/not_defined + +# Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make +# sense here. +sp_case_label = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove space around the D '..' operator. +sp_range = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after ':' in a Java/C++11 range-based 'for', +# as in 'for (Type var : <here> expr)'. +sp_after_for_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before ':' in a Java/C++11 range-based 'for', +# as in 'for (Type var <here> : expr)'. +sp_before_for_colon = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove space between 'extern' and '(' as in 'extern <here> (C)'. +sp_extern_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the opening of a C++ comment, as in '// <here> A'. +sp_cmt_cpp_start = ignore # ignore/add/remove/force/not_defined + +# Add or remove space in a C++ region marker comment, as in '// <here> BEGIN'. +# A region marker is defined as a comment which is not preceded by other text +# (i.e. the comment is the first non-whitespace on the line), and which starts +# with either 'BEGIN' or 'END'. +# +# Overrides sp_cmt_cpp_start. +sp_cmt_cpp_region = ignore # ignore/add/remove/force/not_defined + +# If true, space added with sp_cmt_cpp_start will be added after Doxygen +# sequences like '///', '///<', '//!' and '//!<'. +sp_cmt_cpp_doxygen = false # true/false + +# If true, space added with sp_cmt_cpp_start will be added after Qt translator +# or meta-data comments like '//:', '//=', and '//~'. +sp_cmt_cpp_qttr = false # true/false + +# Add or remove space between #else or #endif and a trailing comment. +sp_endif_cmt = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after 'new', 'delete' and 'delete[]'. +sp_after_new = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'new' and '(' in 'new()'. +sp_between_new_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between ')' and type in 'new(foo) BAR'. +sp_after_newop_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside parenthesis of the new operator +# as in 'new(foo) BAR'. +sp_inside_newop_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the open parenthesis of the new operator, +# as in 'new(foo) BAR'. +# +# Overrides sp_inside_newop_paren. +sp_inside_newop_paren_open = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before the close parenthesis of the new operator, +# as in 'new(foo) BAR'. +# +# Overrides sp_inside_newop_paren. +sp_inside_newop_paren_close = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before a trailing comment. +sp_before_tr_cmt = ignore # ignore/add/remove/force/not_defined + +# Number of spaces before a trailing comment. +sp_num_before_tr_cmt = 0 # unsigned number + +# Add or remove space before an embedded comment. +# +# Default: force +sp_before_emb_cmt = force # ignore/add/remove/force/not_defined + +# Number of spaces before an embedded comment. +# +# Default: 1 +sp_num_before_emb_cmt = 1 # unsigned number + +# Add or remove space after an embedded comment. +# +# Default: force +sp_after_emb_cmt = force # ignore/add/remove/force/not_defined + +# Number of spaces after an embedded comment. +# +# Default: 1 +sp_num_after_emb_cmt = 1 # unsigned number + +# (Java) Add or remove space between an annotation and the open parenthesis. +sp_annotation_paren = ignore # ignore/add/remove/force/not_defined + +# If true, vbrace tokens are dropped to the previous token and skipped. +sp_skip_vbrace_tokens = false # true/false + +# Add or remove space after 'noexcept'. +sp_after_noexcept = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after '_'. +sp_vala_after_translation = ignore # ignore/add/remove/force/not_defined + +# If true, a <TAB> is inserted after #define. +force_tab_after_define = false # true/false + +# +# Indenting options +# + +# The number of columns to indent per level. Usually 2, 3, 4, or 8. +# +# Default: 8 +indent_columns = 8 # unsigned number + +# Whether to ignore indent for the first continuation line. Subsequent +# continuation lines will still be indented to match the first. +indent_ignore_first_continue = false # true/false + +# The continuation indent. If non-zero, this overrides the indent of '(', '[' +# and '=' continuation indents. Negative values are OK; negative value is +# absolute and not increased for each '(' or '[' level. +# +# For FreeBSD, this is set to 4. +# Requires indent_ignore_first_continue=false. +indent_continue = 0 # number + +# The continuation indent, only for class header line(s). If non-zero, this +# overrides the indent of 'class' continuation indents. +# Requires indent_ignore_first_continue=false. +indent_continue_class_head = 0 # unsigned number + +# Whether to indent empty lines (i.e. lines which contain only spaces before +# the newline character). +indent_single_newlines = false # true/false + +# The continuation indent for func_*_param if they are true. If non-zero, this +# overrides the indent. +indent_param = 0 # unsigned number + +# How to use tabs when indenting code. +# +# 0: Spaces only +# 1: Indent with tabs to brace level, align with spaces (default) +# 2: Indent and align with tabs, using spaces when not on a tabstop +# +# Default: 1 +indent_with_tabs = 1 # unsigned number + +# Whether to indent comments that are not at a brace level with tabs on a +# tabstop. Requires indent_with_tabs=2. If false, will use spaces. +indent_cmt_with_tabs = false # true/false + +# Whether to indent strings broken by '\' so that they line up. +indent_align_string = false # true/false + +# The number of spaces to indent multi-line XML strings. +# Requires indent_align_string=true. +indent_xml_string = 0 # unsigned number + +# Spaces to indent '{' from level. +indent_brace = 0 # unsigned number + +# Whether braces are indented to the body level. +indent_braces = false # true/false + +# Whether to disable indenting function braces if indent_braces=true. +indent_braces_no_func = false # true/false + +# Whether to disable indenting class braces if indent_braces=true. +indent_braces_no_class = false # true/false + +# Whether to disable indenting struct braces if indent_braces=true. +indent_braces_no_struct = false # true/false + +# Whether to indent based on the size of the brace parent, +# i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc. +indent_brace_parent = false # true/false + +# Whether to indent based on the open parenthesis instead of the open brace +# in '({\n'. +indent_paren_open_brace = false # true/false + +# (C#) Whether to indent the brace of a C# delegate by another level. +indent_cs_delegate_brace = false # true/false + +# (C#) Whether to indent a C# delegate (to handle delegates with no brace) by +# another level. +indent_cs_delegate_body = false # true/false + +# Whether to indent the body of a 'namespace'. +indent_namespace = false # true/false + +# Whether to indent only the first namespace, and not any nested namespaces. +# Requires indent_namespace=true. +indent_namespace_single_indent = false # true/false + +# The number of spaces to indent a namespace block. +# If set to zero, use the value indent_columns +indent_namespace_level = 0 # unsigned number + +# If the body of the namespace is longer than this number, it won't be +# indented. Requires indent_namespace=true. 0 means no limit. +indent_namespace_limit = 0 # unsigned number + +# Whether to indent only in inner namespaces (nested in other namespaces). +# Requires indent_namespace=true. +indent_namespace_inner_only = false # true/false + +# Whether the 'extern "C"' body is indented. +indent_extern = false # true/false + +# Whether the 'class' body is indented. +indent_class = false # true/false + +# Whether to ignore indent for the leading base class colon. +indent_ignore_before_class_colon = false # true/false + +# Additional indent before the leading base class colon. +# Negative values decrease indent down to the first column. +# Requires indent_ignore_before_class_colon=false and a newline break before +# the colon (see pos_class_colon and nl_class_colon) +indent_before_class_colon = 0 # number + +# Whether to indent the stuff after a leading base class colon. +indent_class_colon = false # true/false + +# Whether to indent based on a class colon instead of the stuff after the +# colon. Requires indent_class_colon=true. +indent_class_on_colon = false # true/false + +# Whether to ignore indent for a leading class initializer colon. +indent_ignore_before_constr_colon = false # true/false + +# Whether to indent the stuff after a leading class initializer colon. +indent_constr_colon = false # true/false + +# Virtual indent from the ':' for leading member initializers. +# +# Default: 2 +indent_ctor_init_leading = 2 # unsigned number + +# Virtual indent from the ':' for following member initializers. +# +# Default: 2 +indent_ctor_init_following = 2 # unsigned number + +# Additional indent for constructor initializer list. +# Negative values decrease indent down to the first column. +indent_ctor_init = 0 # number + +# Whether to indent 'if' following 'else' as a new block under the 'else'. +# If false, 'else\nif' is treated as 'else if' for indenting purposes. +indent_else_if = false # true/false + +# Amount to indent variable declarations after a open brace. +# +# <0: Relative +# >=0: Absolute +indent_var_def_blk = 0 # number + +# Whether to indent continued variable declarations instead of aligning. +indent_var_def_cont = false # true/false + +# How to indent continued shift expressions ('<<' and '>>'). +# Set align_left_shift=false when using this. +# 0: Align shift operators instead of indenting them (default) +# 1: Indent by one level +# -1: Preserve original indentation +indent_shift = 0 # number + +# Whether to force indentation of function definitions to start in column 1. +indent_func_def_force_col1 = false # true/false + +# Whether to indent continued function call parameters one indent level, +# rather than aligning parameters under the open parenthesis. +indent_func_call_param = false # true/false + +# Whether to indent continued function definition parameters one indent level, +# rather than aligning parameters under the open parenthesis. +indent_func_def_param = false # true/false + +# for function definitions, only if indent_func_def_param is false +# Allows to align params when appropriate and indent them when not +# behave as if it was true if paren position is more than this value +# if paren position is more than the option value +indent_func_def_param_paren_pos_threshold = 0 # unsigned number + +# Whether to indent continued function call prototype one indent level, +# rather than aligning parameters under the open parenthesis. +indent_func_proto_param = false # true/false + +# Whether to indent continued function call declaration one indent level, +# rather than aligning parameters under the open parenthesis. +indent_func_class_param = false # true/false + +# Whether to indent continued class variable constructors one indent level, +# rather than aligning parameters under the open parenthesis. +indent_func_ctor_var_param = false # true/false + +# Whether to indent continued template parameter list one indent level, +# rather than aligning parameters under the open parenthesis. +indent_template_param = false # true/false + +# Double the indent for indent_func_xxx_param options. +# Use both values of the options indent_columns and indent_param. +indent_func_param_double = false # true/false + +# Indentation column for standalone 'const' qualifier on a function +# prototype. +indent_func_const = 0 # unsigned number + +# Indentation column for standalone 'throw' qualifier on a function +# prototype. +indent_func_throw = 0 # unsigned number + +# How to indent within a macro followed by a brace on the same line +# This allows reducing the indent in macros that have (for example) +# `do { ... } while (0)` blocks bracketing them. +# +# true: add an indent for the brace on the same line as the macro +# false: do not add an indent for the brace on the same line as the macro +# +# Default: true +indent_macro_brace = true # true/false + +# The number of spaces to indent a continued '->' or '.'. +# Usually set to 0, 1, or indent_columns. +indent_member = 0 # unsigned number + +# Whether lines broken at '.' or '->' should be indented by a single indent. +# The indent_member option will not be effective if this is set to true. +indent_member_single = false # true/false + +# Spaces to indent single line ('//') comments on lines before code. +indent_single_line_comments_before = 0 # unsigned number + +# Spaces to indent single line ('//') comments on lines after code. +indent_single_line_comments_after = 0 # unsigned number + +# When opening a paren for a control statement (if, for, while, etc), increase +# the indent level by this value. Negative values decrease the indent level. +indent_sparen_extra = 0 # number + +# Whether to indent trailing single line ('//') comments relative to the code +# instead of trying to keep the same absolute column. +indent_relative_single_line_comments = false # true/false + +# Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns. +# It might be wise to choose the same value for the option indent_case_brace. +indent_switch_case = 0 # unsigned number + +# Spaces to indent the body of a 'switch' before any 'case'. +# Usually the same as indent_columns or indent_switch_case. +indent_switch_body = 0 # unsigned number + +# Whether to ignore indent for '{' following 'case'. +indent_ignore_case_brace = false # true/false + +# Spaces to indent '{' from 'case'. By default, the brace will appear under +# the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK. +# It might be wise to choose the same value for the option indent_switch_case. +indent_case_brace = 0 # number + +# indent 'break' with 'case' from 'switch'. +indent_switch_break_with_case = false # true/false + +# Whether to indent preprocessor statements inside of switch statements. +# +# Default: true +indent_switch_pp = true # true/false + +# Spaces to shift the 'case' line, without affecting any other lines. +# Usually 0. +indent_case_shift = 0 # unsigned number + +# Whether to align comments before 'case' with the 'case'. +# +# Default: true +indent_case_comment = true # true/false + +# Whether to indent comments not found in first column. +# +# Default: true +indent_comment = true # true/false + +# Whether to indent comments found in first column. +indent_col1_comment = false # true/false + +# Whether to indent multi string literal in first column. +indent_col1_multi_string_literal = false # true/false + +# Align comments on adjacent lines that are this many columns apart or less. +# +# Default: 3 +indent_comment_align_thresh = 3 # unsigned number + +# Whether to ignore indent for goto labels. +indent_ignore_label = false # true/false + +# How to indent goto labels. Requires indent_ignore_label=false. +# +# >0: Absolute column where 1 is the leftmost column +# <=0: Subtract from brace indent +# +# Default: 1 +indent_label = 1 # number + +# How to indent access specifiers that are followed by a +# colon. +# +# >0: Absolute column where 1 is the leftmost column +# <=0: Subtract from brace indent +# +# Default: 1 +indent_access_spec = 1 # number + +# Whether to indent the code after an access specifier by one level. +# If true, this option forces 'indent_access_spec=0'. +indent_access_spec_body = false # true/false + +# If an open parenthesis is followed by a newline, whether to indent the next +# line so that it lines up after the open parenthesis (not recommended). +indent_paren_nl = false # true/false + +# How to indent a close parenthesis after a newline. +# +# 0: Indent to body level (default) +# 1: Align under the open parenthesis +# 2: Indent to the brace level +# -1: Preserve original indentation +indent_paren_close = 0 # number + +# Whether to indent the open parenthesis of a function definition, +# if the parenthesis is on its own line. +indent_paren_after_func_def = false # true/false + +# Whether to indent the open parenthesis of a function declaration, +# if the parenthesis is on its own line. +indent_paren_after_func_decl = false # true/false + +# Whether to indent the open parenthesis of a function call, +# if the parenthesis is on its own line. +indent_paren_after_func_call = false # true/false + +# How to indent a comma when inside braces. +# 0: Indent by one level (default) +# 1: Align under the open brace +# -1: Preserve original indentation +indent_comma_brace = 0 # number + +# How to indent a comma when inside parentheses. +# 0: Indent by one level (default) +# 1: Align under the open parenthesis +# -1: Preserve original indentation +indent_comma_paren = 0 # number + +# How to indent a Boolean operator when inside parentheses. +# 0: Indent by one level (default) +# 1: Align under the open parenthesis +# -1: Preserve original indentation +indent_bool_paren = 0 # number + +# Whether to ignore the indentation of a Boolean operator when outside +# parentheses. +indent_ignore_bool = false # true/false + +# Whether to ignore the indentation of an arithmetic operator. +indent_ignore_arith = false # true/false + +# Whether to indent a semicolon when inside a for parenthesis. +# If true, aligns under the open for parenthesis. +indent_semicolon_for_paren = false # true/false + +# Whether to ignore the indentation of a semicolon outside of a 'for' +# statement. +indent_ignore_semicolon = false # true/false + +# Whether to align the first expression to following ones +# if indent_bool_paren=1. +indent_first_bool_expr = false # true/false + +# Whether to align the first expression to following ones +# if indent_semicolon_for_paren=true. +indent_first_for_expr = false # true/false + +# If an open square is followed by a newline, whether to indent the next line +# so that it lines up after the open square (not recommended). +indent_square_nl = false # true/false + +# (ESQL/C) Whether to preserve the relative indent of 'EXEC SQL' bodies. +indent_preserve_sql = false # true/false + +# Whether to ignore the indentation of an assignment operator. +indent_ignore_assign = false # true/false + +# Whether to align continued statements at the '='. If false or if the '=' is +# followed by a newline, the next line is indent one tab. +# +# Default: true +indent_align_assign = true # true/false + +# If true, the indentation of the chunks after a '=' sequence will be set at +# LHS token indentation column before '='. +indent_off_after_assign = false # true/false + +# Whether to align continued statements at the '('. If false or the '(' is +# followed by a newline, the next line indent is one tab. +# +# Default: true +indent_align_paren = true # true/false + +# (OC) Whether to indent Objective-C code inside message selectors. +indent_oc_inside_msg_sel = false # true/false + +# (OC) Whether to indent Objective-C blocks at brace level instead of usual +# rules. +indent_oc_block = false # true/false + +# (OC) Indent for Objective-C blocks in a message relative to the parameter +# name. +# +# =0: Use indent_oc_block rules +# >0: Use specified number of spaces to indent +indent_oc_block_msg = 0 # unsigned number + +# (OC) Minimum indent for subsequent parameters +indent_oc_msg_colon = 0 # unsigned number + +# (OC) Whether to prioritize aligning with initial colon (and stripping spaces +# from lines, if necessary). +# +# Default: true +indent_oc_msg_prioritize_first_colon = true # true/false + +# (OC) Whether to indent blocks the way that Xcode does by default +# (from the keyword if the parameter is on its own line; otherwise, from the +# previous indentation level). Requires indent_oc_block_msg=true. +indent_oc_block_msg_xcode_style = false # true/false + +# (OC) Whether to indent blocks from where the brace is, relative to a +# message keyword. Requires indent_oc_block_msg=true. +indent_oc_block_msg_from_keyword = false # true/false + +# (OC) Whether to indent blocks from where the brace is, relative to a message +# colon. Requires indent_oc_block_msg=true. +indent_oc_block_msg_from_colon = false # true/false + +# (OC) Whether to indent blocks from where the block caret is. +# Requires indent_oc_block_msg=true. +indent_oc_block_msg_from_caret = false # true/false + +# (OC) Whether to indent blocks from where the brace caret is. +# Requires indent_oc_block_msg=true. +indent_oc_block_msg_from_brace = false # true/false + +# When indenting after virtual brace open and newline add further spaces to +# reach this minimum indent. +indent_min_vbrace_open = 0 # unsigned number + +# Whether to add further spaces after regular indent to reach next tabstop +# when indenting after virtual brace open and newline. +indent_vbrace_open_on_tabstop = false # true/false + +# How to indent after a brace followed by another token (not a newline). +# true: indent all contained lines to match the token +# false: indent all contained lines to match the brace +# +# Default: true +indent_token_after_brace = true # true/false + +# Whether to indent the body of a C++11 lambda. +indent_cpp_lambda_body = false # true/false + +# How to indent compound literals that are being returned. +# true: add both the indent from return & the compound literal open brace +# (i.e. 2 indent levels) +# false: only indent 1 level, don't add the indent for the open brace, only +# add the indent for the return. +# +# Default: true +indent_compound_literal_return = true # true/false + +# (C#) Whether to indent a 'using' block if no braces are used. +# +# Default: true +indent_using_block = true # true/false + +# How to indent the continuation of ternary operator. +# +# 0: Off (default) +# 1: When the `if_false` is a continuation, indent it under `if_false` +# 2: When the `:` is a continuation, indent it under `?` +indent_ternary_operator = 0 # unsigned number + +# Whether to indent the statements inside ternary operator. +indent_inside_ternary_operator = false # true/false + +# If true, the indentation of the chunks after a `return` sequence will be set at return indentation column. +indent_off_after_return = false # true/false + +# If true, the indentation of the chunks after a `return new` sequence will be set at return indentation column. +indent_off_after_return_new = false # true/false + +# If true, the tokens after return are indented with regular single indentation. By default (false) the indentation is after the return token. +indent_single_after_return = false # true/false + +# Whether to ignore indent and alignment for 'asm' blocks (i.e. assume they +# have their own indentation). +indent_ignore_asm_block = false # true/false + +# Don't indent the close parenthesis of a function definition, +# if the parenthesis is on its own line. +donot_indent_func_def_close_paren = false # true/false + +# +# Newline adding and removing options +# + +# Whether to collapse empty blocks between '{' and '}'. +# If true, overrides nl_inside_empty_func +nl_collapse_empty_body = false # true/false + +# Don't split one-line braced assignments, as in 'foo_t f = { 1, 2 };'. +nl_assign_leave_one_liners = false # true/false + +# Don't split one-line braced statements inside a 'class xx { }' body. +nl_class_leave_one_liners = false # true/false + +# Don't split one-line enums, as in 'enum foo { BAR = 15 };' +nl_enum_leave_one_liners = false # true/false + +# Don't split one-line get or set functions. +nl_getset_leave_one_liners = false # true/false + +# (C#) Don't split one-line property get or set functions. +nl_cs_property_leave_one_liners = false # true/false + +# Don't split one-line function definitions, as in 'int foo() { return 0; }'. +# might modify nl_func_type_name +nl_func_leave_one_liners = false # true/false + +# Don't split one-line C++11 lambdas, as in '[]() { return 0; }'. +nl_cpp_lambda_leave_one_liners = false # true/false + +# Don't split one-line if/else statements, as in 'if(...) b++;'. +nl_if_leave_one_liners = false # true/false + +# Don't split one-line while statements, as in 'while(...) b++;'. +nl_while_leave_one_liners = false # true/false + +# Don't split one-line do statements, as in 'do { b++; } while(...);'. +nl_do_leave_one_liners = false # true/false + +# Don't split one-line for statements, as in 'for(...) b++;'. +nl_for_leave_one_liners = false # true/false + +# (OC) Don't split one-line Objective-C messages. +nl_oc_msg_leave_one_liner = false # true/false + +# (OC) Add or remove newline between method declaration and '{'. +nl_oc_mdef_brace = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove newline between Objective-C block signature and '{'. +nl_oc_block_brace = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove blank line before '@interface' statement. +nl_oc_before_interface = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove blank line before '@implementation' statement. +nl_oc_before_implementation = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove blank line before '@end' statement. +nl_oc_before_end = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove newline between '@interface' and '{'. +nl_oc_interface_brace = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove newline between '@implementation' and '{'. +nl_oc_implementation_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newlines at the start of the file. +nl_start_of_file = ignore # ignore/add/remove/force/not_defined + +# The minimum number of newlines at the start of the file (only used if +# nl_start_of_file is 'add' or 'force'). +nl_start_of_file_min = 0 # unsigned number + +# Add or remove newline at the end of the file. +nl_end_of_file = ignore # ignore/add/remove/force/not_defined + +# The minimum number of newlines at the end of the file (only used if +# nl_end_of_file is 'add' or 'force'). +nl_end_of_file_min = 0 # unsigned number + +# Add or remove newline between '=' and '{'. +nl_assign_brace = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove newline between '=' and '['. +nl_assign_square = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between '[]' and '{'. +nl_tsquare_brace = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove newline after '= ['. Will also affect the newline before +# the ']'. +nl_after_square_assign = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between a function call's ')' and '{', as in +# 'list_for_each(item, &list) { }'. +nl_fcall_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'enum' and '{'. +nl_enum_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'enum' and 'class'. +nl_enum_class = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'enum class' and the identifier. +nl_enum_class_identifier = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'enum class' type and ':'. +nl_enum_identifier_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'enum class identifier :' and type. +nl_enum_colon_type = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'struct and '{'. +nl_struct_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'union' and '{'. +nl_union_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'if' and '{'. +nl_if_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between '}' and 'else'. +nl_brace_else = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'else if' and '{'. If set to ignore, +# nl_if_brace is used instead. +nl_elseif_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'else' and '{'. +nl_else_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'else' and 'if'. +nl_else_if = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline before '{' opening brace +nl_before_opening_brace_func_class_def = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline before 'if'/'else if' closing parenthesis. +nl_before_if_closing_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between '}' and 'finally'. +nl_brace_finally = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'finally' and '{'. +nl_finally_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'try' and '{'. +nl_try_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between get/set and '{'. +nl_getset_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'for' and '{'. +nl_for_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline before the '{' of a 'catch' statement, as in +# 'catch (decl) <here> {'. +nl_catch_brace = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove newline before the '{' of a '@catch' statement, as in +# '@catch (decl) <here> {'. If set to ignore, nl_catch_brace is used. +nl_oc_catch_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between '}' and 'catch'. +nl_brace_catch = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove newline between '}' and '@catch'. If set to ignore, +# nl_brace_catch is used. +nl_oc_brace_catch = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between '}' and ']'. +nl_brace_square = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between '}' and ')' in a function invocation. +nl_brace_fparen = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'while' and '{'. +nl_while_brace = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove newline between 'scope (x)' and '{'. +nl_scope_brace = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove newline between 'unittest' and '{'. +nl_unittest_brace = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove newline between 'version (x)' and '{'. +nl_version_brace = ignore # ignore/add/remove/force/not_defined + +# (C#) Add or remove newline between 'using' and '{'. +nl_using_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between two open or close braces. Due to general +# newline/brace handling, REMOVE may not work. +nl_brace_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'do' and '{'. +nl_do_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between '}' and 'while' of 'do' statement. +nl_brace_while = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'switch' and '{'. +nl_switch_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'synchronized' and '{'. +nl_synchronized_brace = ignore # ignore/add/remove/force/not_defined + +# Add a newline between ')' and '{' if the ')' is on a different line than the +# if/for/etc. +# +# Overrides nl_for_brace, nl_if_brace, nl_switch_brace, nl_while_switch and +# nl_catch_brace. +nl_multi_line_cond = false # true/false + +# Add a newline after '(' if an if/for/while/switch condition spans multiple +# lines +nl_multi_line_sparen_open = ignore # ignore/add/remove/force/not_defined + +# Add a newline before ')' if an if/for/while/switch condition spans multiple +# lines. Overrides nl_before_if_closing_paren if both are specified. +nl_multi_line_sparen_close = ignore # ignore/add/remove/force/not_defined + +# Force a newline in a define after the macro name for multi-line defines. +nl_multi_line_define = false # true/false + +# Whether to add a newline before 'case', and a blank line before a 'case' +# statement that follows a ';' or '}'. +nl_before_case = false # true/false + +# Whether to add a newline after a 'case' statement. +nl_after_case = false # true/false + +# Add or remove newline between a case ':' and '{'. +# +# Overrides nl_after_case. +nl_case_colon_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between ')' and 'throw'. +nl_before_throw = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'namespace' and '{'. +nl_namespace_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<...>' of a template class. +nl_template_class = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<...>' of a template class declaration. +# +# Overrides nl_template_class. +nl_template_class_decl = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<>' of a specialized class declaration. +# +# Overrides nl_template_class_decl. +nl_template_class_decl_special = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<...>' of a template class definition. +# +# Overrides nl_template_class. +nl_template_class_def = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<>' of a specialized class definition. +# +# Overrides nl_template_class_def. +nl_template_class_def_special = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<...>' of a template function. +nl_template_func = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<...>' of a template function +# declaration. +# +# Overrides nl_template_func. +nl_template_func_decl = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<>' of a specialized function +# declaration. +# +# Overrides nl_template_func_decl. +nl_template_func_decl_special = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<...>' of a template function +# definition. +# +# Overrides nl_template_func. +nl_template_func_def = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<>' of a specialized function +# definition. +# +# Overrides nl_template_func_def. +nl_template_func_def_special = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<...>' of a template variable. +nl_template_var = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'template<...>' and 'using' of a templated +# type alias. +nl_template_using = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'class' and '{'. +nl_class_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline before or after (depending on pos_class_comma, +# may not be IGNORE) each',' in the base class list. +nl_class_init_args = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after each ',' in the constructor member +# initialization. Related to nl_constr_colon, pos_constr_colon and +# pos_constr_comma. +nl_constr_init_args = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline before first element, after comma, and after last +# element, in 'enum'. +nl_enum_own_lines = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between return type and function name in a function +# definition. +# might be modified by nl_func_leave_one_liners +nl_func_type_name = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between return type and function name inside a class +# definition. If set to ignore, nl_func_type_name or nl_func_proto_type_name +# is used instead. +nl_func_type_name_class = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between class specification and '::' +# in 'void A::f() { }'. Only appears in separate member implementation (does +# not appear with in-line implementation). +nl_func_class_scope = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between function scope and name, as in +# 'void A :: <here> f() { }'. +nl_func_scope_name = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between return type and function name in a prototype. +nl_func_proto_type_name = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between a function name and the opening '(' in the +# declaration. +nl_func_paren = ignore # ignore/add/remove/force/not_defined + +# Overrides nl_func_paren for functions with no parameters. +nl_func_paren_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between a function name and the opening '(' in the +# definition. +nl_func_def_paren = ignore # ignore/add/remove/force/not_defined + +# Overrides nl_func_def_paren for functions with no parameters. +nl_func_def_paren_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between a function name and the opening '(' in the +# call. +nl_func_call_paren = ignore # ignore/add/remove/force/not_defined + +# Overrides nl_func_call_paren for functions with no parameters. +nl_func_call_paren_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after '(' in a function declaration. +nl_func_decl_start = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after '(' in a function definition. +nl_func_def_start = ignore # ignore/add/remove/force/not_defined + +# Overrides nl_func_decl_start when there is only one parameter. +nl_func_decl_start_single = ignore # ignore/add/remove/force/not_defined + +# Overrides nl_func_def_start when there is only one parameter. +nl_func_def_start_single = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline after '(' in a function declaration if '(' and ')' +# are in different lines. If false, nl_func_decl_start is used instead. +nl_func_decl_start_multi_line = false # true/false + +# Whether to add a newline after '(' in a function definition if '(' and ')' +# are in different lines. If false, nl_func_def_start is used instead. +nl_func_def_start_multi_line = false # true/false + +# Add or remove newline after each ',' in a function declaration. +nl_func_decl_args = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after each ',' in a function definition. +nl_func_def_args = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after each ',' in a function call. +nl_func_call_args = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline after each ',' in a function declaration if '(' +# and ')' are in different lines. If false, nl_func_decl_args is used instead. +nl_func_decl_args_multi_line = false # true/false + +# Whether to add a newline after each ',' in a function definition if '(' +# and ')' are in different lines. If false, nl_func_def_args is used instead. +nl_func_def_args_multi_line = false # true/false + +# Add or remove newline before the ')' in a function declaration. +nl_func_decl_end = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline before the ')' in a function definition. +nl_func_def_end = ignore # ignore/add/remove/force/not_defined + +# Overrides nl_func_decl_end when there is only one parameter. +nl_func_decl_end_single = ignore # ignore/add/remove/force/not_defined + +# Overrides nl_func_def_end when there is only one parameter. +nl_func_def_end_single = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline before ')' in a function declaration if '(' and ')' +# are in different lines. If false, nl_func_decl_end is used instead. +nl_func_decl_end_multi_line = false # true/false + +# Whether to add a newline before ')' in a function definition if '(' and ')' +# are in different lines. If false, nl_func_def_end is used instead. +nl_func_def_end_multi_line = false # true/false + +# Add or remove newline between '()' in a function declaration. +nl_func_decl_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between '()' in a function definition. +nl_func_def_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between '()' in a function call. +nl_func_call_empty = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline after '(' in a function call, +# has preference over nl_func_call_start_multi_line. +nl_func_call_start = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline before ')' in a function call. +nl_func_call_end = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline after '(' in a function call if '(' and ')' are in +# different lines. +nl_func_call_start_multi_line = false # true/false + +# Whether to add a newline after each ',' in a function call if '(' and ')' +# are in different lines. +nl_func_call_args_multi_line = false # true/false + +# Whether to add a newline before ')' in a function call if '(' and ')' are in +# different lines. +nl_func_call_end_multi_line = false # true/false + +# Whether to respect nl_func_call_XXX option in case of closure args. +nl_func_call_args_multi_line_ignore_closures = false # true/false + +# Whether to add a newline after '<' of a template parameter list. +nl_template_start = false # true/false + +# Whether to add a newline after each ',' in a template parameter list. +nl_template_args = false # true/false + +# Whether to add a newline before '>' of a template parameter list. +nl_template_end = false # true/false + +# (OC) Whether to put each Objective-C message parameter on a separate line. +# See nl_oc_msg_leave_one_liner. +nl_oc_msg_args = false # true/false + +# Add or remove newline between function signature and '{'. +nl_fdef_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between function signature and '{', +# if signature ends with ')'. Overrides nl_fdef_brace. +nl_fdef_brace_cond = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between C++11 lambda signature and '{'. +nl_cpp_ldef_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'return' and the return expression. +nl_return_expr = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline after semicolons, except in 'for' statements. +nl_after_semicolon = false # true/false + +# (Java) Add or remove newline between the ')' and '{{' of the double brace +# initializer. +nl_paren_dbrace_open = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline after the type in an unnamed temporary +# direct-list-initialization, better: +# before a direct-list-initialization. +nl_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline after the open brace in an unnamed temporary +# direct-list-initialization. +nl_type_brace_init_lst_open = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline before the close brace in an unnamed temporary +# direct-list-initialization. +nl_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline before '{'. +nl_before_brace_open = false # true/false + +# Whether to add a newline after '{'. +nl_after_brace_open = false # true/false + +# Whether to add a newline between the open brace and a trailing single-line +# comment. Requires nl_after_brace_open=true. +nl_after_brace_open_cmt = false # true/false + +# Whether to add a newline after a virtual brace open with a non-empty body. +# These occur in un-braced if/while/do/for statement bodies. +nl_after_vbrace_open = false # true/false + +# Whether to add a newline after a virtual brace open with an empty body. +# These occur in un-braced if/while/do/for statement bodies. +nl_after_vbrace_open_empty = false # true/false + +# Whether to add a newline after '}'. Does not apply if followed by a +# necessary ';'. +nl_after_brace_close = false # true/false + +# Whether to add a newline after a virtual brace close, +# as in 'if (foo) a++; <here> return;'. +nl_after_vbrace_close = false # true/false + +# Add or remove newline between the close brace and identifier, +# as in 'struct { int a; } <here> b;'. Affects enumerations, unions and +# structures. If set to ignore, uses nl_after_brace_close. +nl_brace_struct_var = ignore # ignore/add/remove/force/not_defined + +# Whether to alter newlines in '#define' macros. +nl_define_macro = false # true/false + +# Whether to alter newlines between consecutive parenthesis closes. The number +# of closing parentheses in a line will depend on respective open parenthesis +# lines. +nl_squeeze_paren_close = false # true/false + +# Whether to remove blanks after '#ifxx' and '#elxx', or before '#elxx' and +# '#endif'. Does not affect top-level #ifdefs. +nl_squeeze_ifdef = false # true/false + +# Makes the nl_squeeze_ifdef option affect the top-level #ifdefs as well. +nl_squeeze_ifdef_top_level = false # true/false + +# Add or remove blank line before 'if'. +nl_before_if = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line after 'if' statement. Add/Force work only if the +# next token is not a closing brace. +nl_after_if = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line before 'for'. +nl_before_for = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line after 'for' statement. +nl_after_for = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line before 'while'. +nl_before_while = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line after 'while' statement. +nl_after_while = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line before 'switch'. +nl_before_switch = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line after 'switch' statement. +nl_after_switch = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line before 'synchronized'. +nl_before_synchronized = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line after 'synchronized' statement. +nl_after_synchronized = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line before 'do'. +nl_before_do = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line after 'do/while' statement. +nl_after_do = ignore # ignore/add/remove/force/not_defined + +# Ignore nl_before_{if,for,switch,do,synchronized} if the control +# statement is immediately after a case statement. +# if nl_before_{if,for,switch,do} is set to remove, this option +# does nothing. +nl_before_ignore_after_case = false # true/false + +# Whether to put a blank line before 'return' statements, unless after an open +# brace. +nl_before_return = false # true/false + +# Whether to put a blank line after 'return' statements, unless followed by a +# close brace. +nl_after_return = false # true/false + +# Whether to put a blank line before a member '.' or '->' operators. +nl_before_member = ignore # ignore/add/remove/force/not_defined + +# (Java) Whether to put a blank line after a member '.' or '->' operators. +nl_after_member = ignore # ignore/add/remove/force/not_defined + +# Whether to double-space commented-entries in 'struct'/'union'/'enum'. +nl_ds_struct_enum_cmt = false # true/false + +# Whether to force a newline before '}' of a 'struct'/'union'/'enum'. +# (Lower priority than eat_blanks_before_close_brace.) +nl_ds_struct_enum_close_brace = false # true/false + +# Add or remove newline before or after (depending on pos_class_colon) a class +# colon, as in 'class Foo <here> : <or here> public Bar'. +nl_class_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline around a class constructor colon. The exact position +# depends on nl_constr_init_args, pos_constr_colon and pos_constr_comma. +nl_constr_colon = ignore # ignore/add/remove/force/not_defined + +# Whether to collapse a two-line namespace, like 'namespace foo\n{ decl; }' +# into a single line. If true, prevents other brace newline rules from turning +# such code into four lines. If true, it also preserves one-liner namespaces. +nl_namespace_two_to_one_liner = false # true/false + +# Whether to remove a newline in simple unbraced if statements, turning them +# into one-liners, as in 'if(b)\n i++;' => 'if(b) i++;'. +nl_create_if_one_liner = false # true/false + +# Whether to remove a newline in simple unbraced for statements, turning them +# into one-liners, as in 'for (...)\n stmt;' => 'for (...) stmt;'. +nl_create_for_one_liner = false # true/false + +# Whether to remove a newline in simple unbraced while statements, turning +# them into one-liners, as in 'while (expr)\n stmt;' => 'while (expr) stmt;'. +nl_create_while_one_liner = false # true/false + +# Whether to collapse a function definition whose body (not counting braces) +# is only one line so that the entire definition (prototype, braces, body) is +# a single line. +nl_create_func_def_one_liner = false # true/false + +# Whether to split one-line simple list definitions into three lines by +# adding newlines, as in 'int a[12] = { <here> 0 <here> };'. +nl_create_list_one_liner = false # true/false + +# Whether to split one-line simple unbraced if statements into two lines by +# adding a newline, as in 'if(b) <here> i++;'. +nl_split_if_one_liner = false # true/false + +# Whether to split one-line simple unbraced for statements into two lines by +# adding a newline, as in 'for (...) <here> stmt;'. +nl_split_for_one_liner = false # true/false + +# Whether to split one-line simple unbraced while statements into two lines by +# adding a newline, as in 'while (expr) <here> stmt;'. +nl_split_while_one_liner = false # true/false + +# Don't add a newline before a cpp-comment in a parameter list of a function +# call. +donot_add_nl_before_cpp_comment = false # true/false + +# +# Blank line options +# + +# The maximum number of consecutive newlines (3 = 2 blank lines). +nl_max = 0 # unsigned number + +# The maximum number of consecutive newlines in a function. +nl_max_blank_in_func = 0 # unsigned number + +# The number of newlines inside an empty function body. +# This option overrides eat_blanks_after_open_brace and +# eat_blanks_before_close_brace, but is ignored when +# nl_collapse_empty_body=true +nl_inside_empty_func = 0 # unsigned number + +# The number of newlines before a function prototype. +nl_before_func_body_proto = 0 # unsigned number + +# The number of newlines before a multi-line function definition. Where +# applicable, this option is overridden with eat_blanks_after_open_brace=true +nl_before_func_body_def = 0 # unsigned number + +# The number of newlines before a class constructor/destructor prototype. +nl_before_func_class_proto = 0 # unsigned number + +# The number of newlines before a class constructor/destructor definition. +nl_before_func_class_def = 0 # unsigned number + +# The number of newlines after a function prototype. +nl_after_func_proto = 0 # unsigned number + +# The number of newlines after a function prototype, if not followed by +# another function prototype. +nl_after_func_proto_group = 0 # unsigned number + +# The number of newlines after a class constructor/destructor prototype. +nl_after_func_class_proto = 0 # unsigned number + +# The number of newlines after a class constructor/destructor prototype, +# if not followed by another constructor/destructor prototype. +nl_after_func_class_proto_group = 0 # unsigned number + +# Whether one-line method definitions inside a class body should be treated +# as if they were prototypes for the purposes of adding newlines. +# +# Requires nl_class_leave_one_liners=true. Overrides nl_before_func_body_def +# and nl_before_func_class_def for one-liners. +nl_class_leave_one_liner_groups = false # true/false + +# The number of newlines after '}' of a multi-line function body. +nl_after_func_body = 0 # unsigned number + +# The number of newlines after '}' of a multi-line function body in a class +# declaration. Also affects class constructors/destructors. +# +# Overrides nl_after_func_body. +nl_after_func_body_class = 0 # unsigned number + +# The number of newlines after '}' of a single line function body. Also +# affects class constructors/destructors. +# +# Overrides nl_after_func_body and nl_after_func_body_class. +nl_after_func_body_one_liner = 0 # unsigned number + +# The number of blank lines after a block of variable definitions at the top +# of a function body. +# +# 0: No change (default). +nl_func_var_def_blk = 0 # unsigned number + +# The number of newlines before a block of typedefs. If nl_after_access_spec +# is non-zero, that option takes precedence. +# +# 0: No change (default). +nl_typedef_blk_start = 0 # unsigned number + +# The number of newlines after a block of typedefs. +# +# 0: No change (default). +nl_typedef_blk_end = 0 # unsigned number + +# The maximum number of consecutive newlines within a block of typedefs. +# +# 0: No change (default). +nl_typedef_blk_in = 0 # unsigned number + +# The number of empty newlines before a block of variable definitions +# not at the top of a function body. If nl_after_access_spec is non-zero, +# that option takes precedence. +# +# 0: No change (default). +nl_var_def_blk_start = 0 # unsigned number + +# The number of empty newlines after a block of variable definitions +# not at the top of a function body. +# +# 0: No change (default). +nl_var_def_blk_end = 0 # unsigned number + +# The maximum number of consecutive newlines within a block of variable +# definitions. +# +# 0: No change (default). +nl_var_def_blk_in = 0 # unsigned number + +# The minimum number of newlines before a multi-line comment. +# Doesn't apply if after a brace open or another multi-line comment. +nl_before_block_comment = 0 # unsigned number + +# The minimum number of newlines before a single-line C comment. +# Doesn't apply if after a brace open or other single-line C comments. +nl_before_c_comment = 0 # unsigned number + +# The minimum number of newlines before a CPP comment. +# Doesn't apply if after a brace open or other CPP comments. +nl_before_cpp_comment = 0 # unsigned number + +# Whether to force a newline after a multi-line comment. +nl_after_multiline_comment = false # true/false + +# Whether to force a newline after a label's colon. +nl_after_label_colon = false # true/false + +# The number of newlines before a struct definition. +nl_before_struct = 0 # unsigned number + +# The number of newlines after '}' or ';' of a struct/enum/union definition. +nl_after_struct = 0 # unsigned number + +# The number of newlines before a class definition. +nl_before_class = 0 # unsigned number + +# The number of newlines after '}' or ';' of a class definition. +nl_after_class = 0 # unsigned number + +# The number of newlines before a namespace. +nl_before_namespace = 0 # unsigned number + +# The number of newlines after '{' of a namespace. This also adds newlines +# before the matching '}'. +# +# 0: Apply eat_blanks_after_open_brace or eat_blanks_before_close_brace if +# applicable, otherwise no change. +# +# Overrides eat_blanks_after_open_brace and eat_blanks_before_close_brace. +nl_inside_namespace = 0 # unsigned number + +# The number of newlines after '}' of a namespace. +nl_after_namespace = 0 # unsigned number + +# The number of newlines before an access specifier label. This also includes +# the Qt-specific 'signals:' and 'slots:'. Will not change the newline count +# if after a brace open. +# +# 0: No change (default). +nl_before_access_spec = 0 # unsigned number + +# The number of newlines after an access specifier label. This also includes +# the Qt-specific 'signals:' and 'slots:'. Will not change the newline count +# if after a brace open. +# +# 0: No change (default). +# +# Overrides nl_typedef_blk_start and nl_var_def_blk_start. +nl_after_access_spec = 0 # unsigned number + +# The number of newlines between a function definition and the function +# comment, as in '// comment\n <here> void foo() {...}'. +# +# 0: No change (default). +nl_comment_func_def = 0 # unsigned number + +# The number of newlines after a try-catch-finally block that isn't followed +# by a brace close. +# +# 0: No change (default). +nl_after_try_catch_finally = 0 # unsigned number + +# (C#) The number of newlines before and after a property, indexer or event +# declaration. +# +# 0: No change (default). +nl_around_cs_property = 0 # unsigned number + +# (C#) The number of newlines between the get/set/add/remove handlers. +# +# 0: No change (default). +nl_between_get_set = 0 # unsigned number + +# (C#) Add or remove newline between property and the '{'. +nl_property_brace = ignore # ignore/add/remove/force/not_defined + +# Whether to remove blank lines after '{'. +eat_blanks_after_open_brace = false # true/false + +# Whether to remove blank lines before '}'. +eat_blanks_before_close_brace = false # true/false + +# How aggressively to remove extra newlines not in preprocessor. +# +# 0: No change (default) +# 1: Remove most newlines not handled by other config +# 2: Remove all newlines and reformat completely by config +nl_remove_extra_newlines = 0 # unsigned number + +# (Java) Add or remove newline after an annotation statement. Only affects +# annotations that are after a newline. +nl_after_annotation = ignore # ignore/add/remove/force/not_defined + +# (Java) Add or remove newline between two annotations. +nl_between_annotation = ignore # ignore/add/remove/force/not_defined + +# The number of newlines before a whole-file #ifdef. +# +# 0: No change (default). +nl_before_whole_file_ifdef = 0 # unsigned number + +# The number of newlines after a whole-file #ifdef. +# +# 0: No change (default). +nl_after_whole_file_ifdef = 0 # unsigned number + +# The number of newlines before a whole-file #endif. +# +# 0: No change (default). +nl_before_whole_file_endif = 0 # unsigned number + +# The number of newlines after a whole-file #endif. +# +# 0: No change (default). +nl_after_whole_file_endif = 0 # unsigned number + +# +# Positioning options +# + +# The position of arithmetic operators in wrapped expressions. +pos_arith = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of assignment in wrapped expressions. Do not affect '=' +# followed by '{'. +pos_assign = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of Boolean operators in wrapped expressions. +pos_bool = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of comparison operators in wrapped expressions. +pos_compare = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of conditional operators, as in the '?' and ':' of +# 'expr ? stmt : stmt', in wrapped expressions. +pos_conditional = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of the comma in wrapped expressions. +pos_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of the comma in enum entries. +pos_enum_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of the comma in the base class list if there is more than one +# line. Affects nl_class_init_args. +pos_class_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of the comma in the constructor initialization list. +# Related to nl_constr_colon, nl_constr_init_args and pos_constr_colon. +pos_constr_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of trailing/leading class colon, between class and base class +# list. Affects nl_class_colon. +pos_class_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of colons between constructor and member initialization. +# Related to nl_constr_colon, nl_constr_init_args and pos_constr_comma. +pos_constr_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of shift operators in wrapped expressions. +pos_shift = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# +# Line splitting options +# + +# Try to limit code width to N columns. +code_width = 0 # unsigned number + +# Whether to fully split long 'for' statements at semi-colons. +ls_for_split_full = false # true/false + +# Whether to fully split long function prototypes/calls at commas. +# The option ls_code_width has priority over the option ls_func_split_full. +ls_func_split_full = false # true/false + +# Whether to split lines as close to code_width as possible and ignore some +# groupings. +# The option ls_code_width has priority over the option ls_func_split_full. +ls_code_width = false # true/false + +# +# Code alignment options (not left column spaces/tabs) +# + +# Whether to keep non-indenting tabs. +align_keep_tabs = false # true/false + +# Whether to use tabs for aligning. +align_with_tabs = false # true/false + +# Whether to bump out to the next tab when aligning. +align_on_tabstop = false # true/false + +# Whether to right-align numbers. +align_number_right = false # true/false + +# Whether to keep whitespace not required for alignment. +align_keep_extra_space = false # true/false + +# Whether to align variable definitions in prototypes and functions. +align_func_params = false # true/false + +# The span for aligning parameter definitions in function on parameter name. +# +# 0: Don't align (default). +align_func_params_span = 0 # unsigned number + +# The threshold for aligning function parameter definitions. +# Use a negative number for absolute thresholds. +# +# 0: No limit (default). +align_func_params_thresh = 0 # number + +# The gap for aligning function parameter definitions. +align_func_params_gap = 0 # unsigned number + +# The span for aligning constructor value. +# +# 0: Don't align (default). +align_constr_value_span = 0 # unsigned number + +# The threshold for aligning constructor value. +# Use a negative number for absolute thresholds. +# +# 0: No limit (default). +align_constr_value_thresh = 0 # number + +# The gap for aligning constructor value. +align_constr_value_gap = 0 # unsigned number + +# Whether to align parameters in single-line functions that have the same +# name. The function names must already be aligned with each other. +align_same_func_call_params = false # true/false + +# The span for aligning function-call parameters for single line functions. +# +# 0: Don't align (default). +align_same_func_call_params_span = 0 # unsigned number + +# The threshold for aligning function-call parameters for single line +# functions. +# Use a negative number for absolute thresholds. +# +# 0: No limit (default). +align_same_func_call_params_thresh = 0 # number + +# The span for aligning variable definitions. +# +# 0: Don't align (default). +align_var_def_span = 0 # unsigned number + +# How to consider (or treat) the '*' in the alignment of variable definitions. +# +# 0: Part of the type 'void * foo;' (default) +# 1: Part of the variable 'void *foo;' +# 2: Dangling 'void *foo;' +# Dangling: the '*' will not be taken into account when aligning. +align_var_def_star_style = 0 # unsigned number + +# How to consider (or treat) the '&' in the alignment of variable definitions. +# +# 0: Part of the type 'long & foo;' (default) +# 1: Part of the variable 'long &foo;' +# 2: Dangling 'long &foo;' +# Dangling: the '&' will not be taken into account when aligning. +align_var_def_amp_style = 0 # unsigned number + +# The threshold for aligning variable definitions. +# Use a negative number for absolute thresholds. +# +# 0: No limit (default). +align_var_def_thresh = 0 # number + +# The gap for aligning variable definitions. +align_var_def_gap = 0 # unsigned number + +# Whether to align the colon in struct bit fields. +align_var_def_colon = false # true/false + +# The gap for aligning the colon in struct bit fields. +align_var_def_colon_gap = 0 # unsigned number + +# Whether to align any attribute after the variable name. +align_var_def_attribute = false # true/false + +# Whether to align inline struct/enum/union variable definitions. +align_var_def_inline = false # true/false + +# The span for aligning on '=' in assignments. +# +# 0: Don't align (default). +align_assign_span = 0 # unsigned number + +# The span for aligning on '{' in braced init list. +# +# 0: Don't align (default). +align_braced_init_list_span = 0 # unsigned number + +# The span for aligning on '=' in function prototype modifier. +# +# 0: Don't align (default). +align_assign_func_proto_span = 0 # unsigned number + +# The threshold for aligning on '=' in assignments. +# Use a negative number for absolute thresholds. +# +# 0: No limit (default). +align_assign_thresh = 0 # number + +# Whether to align on the left most assignment when multiple +# definitions are found on the same line. +# Depends on 'align_assign_span' and 'align_assign_thresh' settings. +align_assign_on_multi_var_defs = false # true/false + +# The threshold for aligning on '{' in braced init list. +# Use a negative number for absolute thresholds. +# +# 0: No limit (default). +align_braced_init_list_thresh = 0 # number + +# How to apply align_assign_span to function declaration "assignments", i.e. +# 'virtual void foo() = 0' or '~foo() = {default|delete}'. +# +# 0: Align with other assignments (default) +# 1: Align with each other, ignoring regular assignments +# 2: Don't align +align_assign_decl_func = 0 # unsigned number + +# The span for aligning on '=' in enums. +# +# 0: Don't align (default). +align_enum_equ_span = 0 # unsigned number + +# The threshold for aligning on '=' in enums. +# Use a negative number for absolute thresholds. +# +# 0: no limit (default). +align_enum_equ_thresh = 0 # number + +# The span for aligning class member definitions. +# +# 0: Don't align (default). +align_var_class_span = 0 # unsigned number + +# The threshold for aligning class member definitions. +# Use a negative number for absolute thresholds. +# +# 0: No limit (default). +align_var_class_thresh = 0 # number + +# The gap for aligning class member definitions. +align_var_class_gap = 0 # unsigned number + +# The span for aligning struct/union member definitions. +# +# 0: Don't align (default). +align_var_struct_span = 0 # unsigned number + +# The threshold for aligning struct/union member definitions. +# Use a negative number for absolute thresholds. +# +# 0: No limit (default). +align_var_struct_thresh = 0 # number + +# The gap for aligning struct/union member definitions. +align_var_struct_gap = 0 # unsigned number + +# The span for aligning struct initializer values. +# +# 0: Don't align (default). +align_struct_init_span = 0 # unsigned number + +# The span for aligning single-line typedefs. +# +# 0: Don't align (default). +align_typedef_span = 0 # unsigned number + +# The minimum space between the type and the synonym of a typedef. +align_typedef_gap = 0 # unsigned number + +# How to align typedef'd functions with other typedefs. +# +# 0: Don't mix them at all (default) +# 1: Align the open parenthesis with the types +# 2: Align the function type name with the other type names +align_typedef_func = 0 # unsigned number + +# How to consider (or treat) the '*' in the alignment of typedefs. +# +# 0: Part of the typedef type, 'typedef int * pint;' (default) +# 1: Part of type name: 'typedef int *pint;' +# 2: Dangling: 'typedef int *pint;' +# Dangling: the '*' will not be taken into account when aligning. +align_typedef_star_style = 0 # unsigned number + +# How to consider (or treat) the '&' in the alignment of typedefs. +# +# 0: Part of the typedef type, 'typedef int & intref;' (default) +# 1: Part of type name: 'typedef int &intref;' +# 2: Dangling: 'typedef int &intref;' +# Dangling: the '&' will not be taken into account when aligning. +align_typedef_amp_style = 0 # unsigned number + +# The span for aligning comments that end lines. +# +# 0: Don't align (default). +align_right_cmt_span = 0 # unsigned number + +# Minimum number of columns between preceding text and a trailing comment in +# order for the comment to qualify for being aligned. Must be non-zero to have +# an effect. +align_right_cmt_gap = 0 # unsigned number + +# If aligning comments, whether to mix with comments after '}' and #endif with +# less than three spaces before the comment. +align_right_cmt_mix = false # true/false + +# Whether to only align trailing comments that are at the same brace level. +align_right_cmt_same_level = false # true/false + +# Minimum column at which to align trailing comments. Comments which are +# aligned beyond this column, but which can be aligned in a lesser column, +# may be "pulled in". +# +# 0: Ignore (default). +align_right_cmt_at_col = 0 # unsigned number + +# The span for aligning function prototypes. +# +# 0: Don't align (default). +align_func_proto_span = 0 # unsigned number + +# How to consider (or treat) the '*' in the alignment of function prototypes. +# +# 0: Part of the type 'void * foo();' (default) +# 1: Part of the function 'void *foo();' +# 2: Dangling 'void *foo();' +# Dangling: the '*' will not be taken into account when aligning. +align_func_proto_star_style = 0 # unsigned number + +# How to consider (or treat) the '&' in the alignment of function prototypes. +# +# 0: Part of the type 'long & foo();' (default) +# 1: Part of the function 'long &foo();' +# 2: Dangling 'long &foo();' +# Dangling: the '&' will not be taken into account when aligning. +align_func_proto_amp_style = 0 # unsigned number + +# The threshold for aligning function prototypes. +# Use a negative number for absolute thresholds. +# +# 0: No limit (default). +align_func_proto_thresh = 0 # number + +# Minimum gap between the return type and the function name. +align_func_proto_gap = 0 # unsigned number + +# Whether to align function prototypes on the 'operator' keyword instead of +# what follows. +align_on_operator = false # true/false + +# Whether to mix aligning prototype and variable declarations. If true, +# align_var_def_XXX options are used instead of align_func_proto_XXX options. +align_mix_var_proto = false # true/false + +# Whether to align single-line functions with function prototypes. +# Uses align_func_proto_span. +align_single_line_func = false # true/false + +# Whether to align the open brace of single-line functions. +# Requires align_single_line_func=true. Uses align_func_proto_span. +align_single_line_brace = false # true/false + +# Gap for align_single_line_brace. +align_single_line_brace_gap = 0 # unsigned number + +# (OC) The span for aligning Objective-C message specifications. +# +# 0: Don't align (default). +align_oc_msg_spec_span = 0 # unsigned number + +# Whether to align macros wrapped with a backslash and a newline. This will +# not work right if the macro contains a multi-line comment. +align_nl_cont = false # true/false + +# Whether to align macro functions and variables together. +align_pp_define_together = false # true/false + +# The span for aligning on '#define' bodies. +# +# =0: Don't align (default) +# >0: Number of lines (including comments) between blocks +align_pp_define_span = 0 # unsigned number + +# The minimum space between label and value of a preprocessor define. +align_pp_define_gap = 0 # unsigned number + +# Whether to align lines that start with '<<' with previous '<<'. +# +# Default: true +align_left_shift = true # true/false + +# Whether to align comma-separated statements following '<<' (as used to +# initialize Eigen matrices). +align_eigen_comma_init = false # true/false + +# Whether to align text after 'asm volatile ()' colons. +align_asm_colon = false # true/false + +# (OC) Span for aligning parameters in an Objective-C message call +# on the ':'. +# +# 0: Don't align. +align_oc_msg_colon_span = 0 # unsigned number + +# (OC) Whether to always align with the first parameter, even if it is too +# short. +align_oc_msg_colon_first = false # true/false + +# (OC) Whether to align parameters in an Objective-C '+' or '-' declaration +# on the ':'. +align_oc_decl_colon = false # true/false + +# (OC) Whether to not align parameters in an Objectve-C message call if first +# colon is not on next line of the message call (the same way Xcode does +# alignment) +align_oc_msg_colon_xcode_like = false # true/false + +# +# Comment modification options +# + +# Try to wrap comments at N columns. +cmt_width = 0 # unsigned number + +# How to reflow comments. +# +# 0: No reflowing (apart from the line wrapping due to cmt_width) (default) +# 1: No touching at all +# 2: Full reflow (enable cmt_indent_multi for indent with line wrapping due to cmt_width) +cmt_reflow_mode = 0 # unsigned number + +# Path to a file that contains regular expressions describing patterns for +# which the end of one line and the beginning of the next will be folded into +# the same sentence or paragraph during full comment reflow. The regular +# expressions are described using ECMAScript syntax. The syntax for this +# specification is as follows, where "..." indicates the custom regular +# expression and "n" indicates the nth end_of_prev_line_regex and +# beg_of_next_line_regex regular expression pair: +# +# end_of_prev_line_regex[1] = "...$" +# beg_of_next_line_regex[1] = "^..." +# end_of_prev_line_regex[2] = "...$" +# beg_of_next_line_regex[2] = "^..." +# . +# . +# . +# end_of_prev_line_regex[n] = "...$" +# beg_of_next_line_regex[n] = "^..." +# +# Note that use of this option overrides the default reflow fold regular +# expressions, which are internally defined as follows: +# +# end_of_prev_line_regex[1] = "[\w,\]\)]$" +# beg_of_next_line_regex[1] = "^[\w,\[\(]" +# end_of_prev_line_regex[2] = "\.$" +# beg_of_next_line_regex[2] = "^[A-Z]" +cmt_reflow_fold_regex_file = "" # string + +# Whether to indent wrapped lines to the start of the encompassing paragraph +# during full comment reflow (cmt_reflow_mode = 2). Overrides the value +# specified by cmt_sp_after_star_cont. +# +# Note that cmt_align_doxygen_javadoc_tags overrides this option for +# paragraphs associated with javadoc tags +cmt_reflow_indent_to_paragraph_start = false # true/false + +# Whether to convert all tabs to spaces in comments. If false, tabs in +# comments are left alone, unless used for indenting. +cmt_convert_tab_to_spaces = false # true/false + +# Whether to apply changes to multi-line comments, including cmt_width, +# keyword substitution and leading chars. +# +# Default: true +cmt_indent_multi = true # true/false + +# Whether to align doxygen javadoc-style tags ('@param', '@return', etc.) +# and corresponding fields such that groups of consecutive block tags, +# parameter names, and descriptions align with one another. Overrides that +# which is specified by the cmt_sp_after_star_cont. If cmt_width > 0, it may +# be necessary to enable cmt_indent_multi and set cmt_reflow_mode = 2 +# in order to achieve the desired alignment for line-wrapping. +cmt_align_doxygen_javadoc_tags = false # true/false + +# The number of spaces to insert after the star and before doxygen +# javadoc-style tags (@param, @return, etc). Requires enabling +# cmt_align_doxygen_javadoc_tags. Overrides that which is specified by the +# cmt_sp_after_star_cont. +# +# Default: 1 +cmt_sp_before_doxygen_javadoc_tags = 1 # unsigned number + +# Whether to change trailing, single-line c-comments into cpp-comments. +cmt_trailing_single_line_c_to_cpp = false # true/false + +# Whether to group c-comments that look like they are in a block. +cmt_c_group = false # true/false + +# Whether to put an empty '/*' on the first line of the combined c-comment. +cmt_c_nl_start = false # true/false + +# Whether to add a newline before the closing '*/' of the combined c-comment. +cmt_c_nl_end = false # true/false + +# Whether to change cpp-comments into c-comments. +cmt_cpp_to_c = false # true/false + +# Whether to group cpp-comments that look like they are in a block. Only +# meaningful if cmt_cpp_to_c=true. +cmt_cpp_group = false # true/false + +# Whether to put an empty '/*' on the first line of the combined cpp-comment +# when converting to a c-comment. +# +# Requires cmt_cpp_to_c=true and cmt_cpp_group=true. +cmt_cpp_nl_start = false # true/false + +# Whether to add a newline before the closing '*/' of the combined cpp-comment +# when converting to a c-comment. +# +# Requires cmt_cpp_to_c=true and cmt_cpp_group=true. +cmt_cpp_nl_end = false # true/false + +# Whether to put a star on subsequent comment lines. +cmt_star_cont = false # true/false + +# The number of spaces to insert at the start of subsequent comment lines. +cmt_sp_before_star_cont = 0 # unsigned number + +# The number of spaces to insert after the star on subsequent comment lines. +cmt_sp_after_star_cont = 0 # unsigned number + +# For multi-line comments with a '*' lead, remove leading spaces if the first +# and last lines of the comment are the same length. +# +# Default: true +cmt_multi_check_last = true # true/false + +# For multi-line comments with a '*' lead, remove leading spaces if the first +# and last lines of the comment are the same length AND if the length is +# bigger as the first_len minimum. +# +# Default: 4 +cmt_multi_first_len_minimum = 4 # unsigned number + +# Path to a file that contains text to insert at the beginning of a file if +# the file doesn't start with a C/C++ comment. If the inserted text contains +# '$(filename)', that will be replaced with the current file's name. +cmt_insert_file_header = "" # string + +# Path to a file that contains text to insert at the end of a file if the +# file doesn't end with a C/C++ comment. If the inserted text contains +# '$(filename)', that will be replaced with the current file's name. +cmt_insert_file_footer = "" # string + +# Path to a file that contains text to insert before a function definition if +# the function isn't preceded by a C/C++ comment. If the inserted text +# contains '$(function)', '$(javaparam)' or '$(fclass)', these will be +# replaced with, respectively, the name of the function, the javadoc '@param' +# and '@return' stuff, or the name of the class to which the member function +# belongs. +cmt_insert_func_header = "" # string + +# Path to a file that contains text to insert before a class if the class +# isn't preceded by a C/C++ comment. If the inserted text contains '$(class)', +# that will be replaced with the class name. +cmt_insert_class_header = "" # string + +# Path to a file that contains text to insert before an Objective-C message +# specification, if the method isn't preceded by a C/C++ comment. If the +# inserted text contains '$(message)' or '$(javaparam)', these will be +# replaced with, respectively, the name of the function, or the javadoc +# '@param' and '@return' stuff. +cmt_insert_oc_msg_header = "" # string + +# Whether a comment should be inserted if a preprocessor is encountered when +# stepping backwards from a function name. +# +# Applies to cmt_insert_oc_msg_header, cmt_insert_func_header and +# cmt_insert_class_header. +cmt_insert_before_preproc = false # true/false + +# Whether a comment should be inserted if a function is declared inline to a +# class definition. +# +# Applies to cmt_insert_func_header. +# +# Default: true +cmt_insert_before_inlines = true # true/false + +# Whether a comment should be inserted if the function is a class constructor +# or destructor. +# +# Applies to cmt_insert_func_header. +cmt_insert_before_ctor_dtor = false # true/false + +# +# Code modifying options (non-whitespace) +# + +# Add or remove braces on a single-line 'do' statement. +mod_full_brace_do = ignore # ignore/add/remove/force/not_defined + +# Add or remove braces on a single-line 'for' statement. +mod_full_brace_for = ignore # ignore/add/remove/force/not_defined + +# (Pawn) Add or remove braces on a single-line function definition. +mod_full_brace_function = ignore # ignore/add/remove/force/not_defined + +# Add or remove braces on a single-line 'if' statement. Braces will not be +# removed if the braced statement contains an 'else'. +mod_full_brace_if = ignore # ignore/add/remove/force/not_defined + +# Whether to enforce that all blocks of an 'if'/'else if'/'else' chain either +# have, or do not have, braces. Overrides mod_full_brace_if. +# +# 0: Don't override mod_full_brace_if +# 1: Add braces to all blocks if any block needs braces and remove braces if +# they can be removed from all blocks +# 2: Add braces to all blocks if any block already has braces, regardless of +# whether it needs them +# 3: Add braces to all blocks if any block needs braces and remove braces if +# they can be removed from all blocks, except if all blocks have braces +# despite none needing them +mod_full_brace_if_chain = 0 # unsigned number + +# Whether to add braces to all blocks of an 'if'/'else if'/'else' chain. +# If true, mod_full_brace_if_chain will only remove braces from an 'if' that +# does not have an 'else if' or 'else'. +mod_full_brace_if_chain_only = false # true/false + +# Add or remove braces on single-line 'while' statement. +mod_full_brace_while = ignore # ignore/add/remove/force/not_defined + +# Add or remove braces on single-line 'using ()' statement. +mod_full_brace_using = ignore # ignore/add/remove/force/not_defined + +# Don't remove braces around statements that span N newlines +mod_full_brace_nl = 0 # unsigned number + +# Whether to prevent removal of braces from 'if'/'for'/'while'/etc. blocks +# which span multiple lines. +# +# Affects: +# mod_full_brace_for +# mod_full_brace_if +# mod_full_brace_if_chain +# mod_full_brace_if_chain_only +# mod_full_brace_while +# mod_full_brace_using +# +# Does not affect: +# mod_full_brace_do +# mod_full_brace_function +mod_full_brace_nl_block_rem_mlcond = false # true/false + +# Add or remove unnecessary parenthesis on 'return' statement. +mod_paren_on_return = ignore # ignore/add/remove/force/not_defined + +# (Pawn) Whether to change optional semicolons to real semicolons. +mod_pawn_semicolon = false # true/false + +# Whether to fully parenthesize Boolean expressions in 'while' and 'if' +# statement, as in 'if (a && b > c)' => 'if (a && (b > c))'. +mod_full_paren_if_bool = false # true/false + +# Whether to fully parenthesize Boolean expressions after '=' +# statement, as in 'x = a && b > c;' => 'x = (a && (b > c));'. +mod_full_paren_assign_bool = false # true/false + +# Whether to fully parenthesize Boolean expressions after '=' +# statement, as in 'return a && b > c;' => 'return (a && (b > c));'. +mod_full_paren_return_bool = false # true/false + +# Whether to remove superfluous semicolons. +mod_remove_extra_semicolon = false # true/false + +# Whether to remove duplicate include. +mod_remove_duplicate_include = false # true/false + +# If a function body exceeds the specified number of newlines and doesn't have +# a comment after the close brace, a comment will be added. +mod_add_long_function_closebrace_comment = 0 # unsigned number + +# If a namespace body exceeds the specified number of newlines and doesn't +# have a comment after the close brace, a comment will be added. +mod_add_long_namespace_closebrace_comment = 0 # unsigned number + +# If a class body exceeds the specified number of newlines and doesn't have a +# comment after the close brace, a comment will be added. +mod_add_long_class_closebrace_comment = 0 # unsigned number + +# If a switch body exceeds the specified number of newlines and doesn't have a +# comment after the close brace, a comment will be added. +mod_add_long_switch_closebrace_comment = 0 # unsigned number + +# If an #ifdef body exceeds the specified number of newlines and doesn't have +# a comment after the #endif, a comment will be added. +mod_add_long_ifdef_endif_comment = 0 # unsigned number + +# If an #ifdef or #else body exceeds the specified number of newlines and +# doesn't have a comment after the #else, a comment will be added. +mod_add_long_ifdef_else_comment = 0 # unsigned number + +# Whether to take care of the case by the mod_sort_xx options. +mod_sort_case_sensitive = false # true/false + +# Whether to sort consecutive single-line 'import' statements. +mod_sort_import = false # true/false + +# (C#) Whether to sort consecutive single-line 'using' statements. +mod_sort_using = false # true/false + +# Whether to sort consecutive single-line '#include' statements (C/C++) and +# '#import' statements (Objective-C). Be aware that this has the potential to +# break your code if your includes/imports have ordering dependencies. +mod_sort_include = false # true/false + +# Whether to prioritize '#include' and '#import' statements that contain +# filename without extension when sorting is enabled. +mod_sort_incl_import_prioritize_filename = false # true/false + +# Whether to prioritize '#include' and '#import' statements that does not +# contain extensions when sorting is enabled. +mod_sort_incl_import_prioritize_extensionless = false # true/false + +# Whether to prioritize '#include' and '#import' statements that contain +# angle over quotes when sorting is enabled. +mod_sort_incl_import_prioritize_angle_over_quotes = false # true/false + +# Whether to ignore file extension in '#include' and '#import' statements +# for sorting comparison. +mod_sort_incl_import_ignore_extension = false # true/false + +# Whether to group '#include' and '#import' statements when sorting is enabled. +mod_sort_incl_import_grouping_enabled = false # true/false + +# Whether to move a 'break' that appears after a fully braced 'case' before +# the close brace, as in 'case X: { ... } break;' => 'case X: { ... break; }'. +mod_move_case_break = false # true/false + +# Whether to move a 'return' that appears after a fully braced 'case' before +# the close brace, as in 'case X: { ... } return;' => 'case X: { ... return; }'. +mod_move_case_return = false # true/false + +# Add or remove braces around a fully braced case statement. Will only remove +# braces if there are no variable declarations in the block. +mod_case_brace = ignore # ignore/add/remove/force/not_defined + +# Whether to remove a void 'return;' that appears as the last statement in a +# function. +mod_remove_empty_return = false # true/false + +# Add or remove the comma after the last value of an enumeration. +mod_enum_last_comma = ignore # ignore/add/remove/force/not_defined + +# (OC) Whether to organize the properties. If true, properties will be +# rearranged according to the mod_sort_oc_property_*_weight factors. +mod_sort_oc_properties = false # true/false + +# (OC) Weight of a class property modifier. +mod_sort_oc_property_class_weight = 0 # number + +# (OC) Weight of 'atomic' and 'nonatomic'. +mod_sort_oc_property_thread_safe_weight = 0 # number + +# (OC) Weight of 'readwrite' when organizing properties. +mod_sort_oc_property_readwrite_weight = 0 # number + +# (OC) Weight of a reference type specifier ('retain', 'copy', 'assign', +# 'weak', 'strong') when organizing properties. +mod_sort_oc_property_reference_weight = 0 # number + +# (OC) Weight of getter type ('getter=') when organizing properties. +mod_sort_oc_property_getter_weight = 0 # number + +# (OC) Weight of setter type ('setter=') when organizing properties. +mod_sort_oc_property_setter_weight = 0 # number + +# (OC) Weight of nullability type ('nullable', 'nonnull', 'null_unspecified', +# 'null_resettable') when organizing properties. +mod_sort_oc_property_nullability_weight = 0 # number + +# +# Preprocessor options +# + +# Add or remove indentation of preprocessor directives inside #if blocks +# at brace level 0 (file-level). +pp_indent = ignore # ignore/add/remove/force/not_defined + +# Whether to indent #if/#else/#endif at the brace level. If false, these are +# indented from column 1. +pp_indent_at_level = false # true/false + +# Whether to indent #if/#else/#endif at the parenthesis level if the brace +# level is 0. If false, these are indented from column 1. +pp_indent_at_level0 = false # true/false + +# Specifies the number of columns to indent preprocessors per level +# at brace level 0 (file-level). If pp_indent_at_level=false, also specifies +# the number of columns to indent preprocessors per level +# at brace level > 0 (function-level). +# +# Default: 1 +pp_indent_count = 1 # unsigned number + +# Add or remove space after # based on pp_level of #if blocks. +pp_space = ignore # ignore/add/remove/force/not_defined + +# Sets the number of spaces per level added with pp_space. +pp_space_count = 0 # unsigned number + +# The indent for '#region' and '#endregion' in C# and '#pragma region' in +# C/C++. Negative values decrease indent down to the first column. +pp_indent_region = 0 # number + +# Whether to indent the code between #region and #endregion. +pp_region_indent_code = false # true/false + +# If pp_indent_at_level=true, sets the indent for #if, #else and #endif when +# not at file-level. Negative values decrease indent down to the first column. +# +# =0: Indent preprocessors using output_tab_size +# >0: Column at which all preprocessors will be indented +pp_indent_if = 0 # number + +# Whether to indent the code between #if, #else and #endif. +pp_if_indent_code = false # true/false + +# Whether to indent the body of an #if that encompasses all the code in the file. +pp_indent_in_guard = false # true/false + +# Whether to indent '#define' at the brace level. If false, these are +# indented from column 1. +pp_define_at_level = false # true/false + +# Whether to indent '#include' at the brace level. +pp_include_at_level = false # true/false + +# Whether to ignore the '#define' body while formatting. +pp_ignore_define_body = false # true/false + +# Whether to indent case statements between #if, #else, and #endif. +# Only applies to the indent of the preprocesser that the case statements +# directly inside of. +# +# Default: true +pp_indent_case = true # true/false + +# Whether to indent whole function definitions between #if, #else, and #endif. +# Only applies to the indent of the preprocesser that the function definition +# is directly inside of. +# +# Default: true +pp_indent_func_def = true # true/false + +# Whether to indent extern C blocks between #if, #else, and #endif. +# Only applies to the indent of the preprocesser that the extern block is +# directly inside of. +# +# Default: true +pp_indent_extern = true # true/false + +# How to indent braces directly inside #if, #else, and #endif. +# Requires pp_if_indent_code=true and only applies to the indent of the +# preprocesser that the braces are directly inside of. +# 0: No extra indent +# 1: Indent by one level +# -1: Preserve original indentation +# +# Default: 1 +pp_indent_brace = 1 # number + +# Whether to print warning messages for unbalanced #if and #else blocks. +# This will print a message in the following cases: +# - if an #ifdef block ends on a different indent level than +# where it started from. Example: +# +# #ifdef TEST +# int i; +# { +# int j; +# #endif +# +# - an #elif/#else block ends on a different indent level than +# the corresponding #ifdef block. Example: +# +# #ifdef TEST +# int i; +# #else +# } +# int j; +# #endif +pp_warn_unbalanced_if = false # true/false + +# +# Sort includes options +# + +# The regex for include category with priority 0. +include_category_0 = "" # string + +# The regex for include category with priority 1. +include_category_1 = "" # string + +# The regex for include category with priority 2. +include_category_2 = "" # string + +# +# Use or Do not Use options +# + +# true: indent_func_call_param will be used (default) +# false: indent_func_call_param will NOT be used +# +# Default: true +use_indent_func_call_param = true # true/false + +# The value of the indentation for a continuation line is calculated +# differently if the statement is: +# - a declaration: your case with QString fileName ... +# - an assignment: your case with pSettings = new QSettings( ... +# +# At the second case the indentation value might be used twice: +# - at the assignment +# - at the function call (if present) +# +# To prevent the double use of the indentation value, use this option with the +# value 'true'. +# +# true: indent_continue will be used only once +# false: indent_continue will be used every time (default) +# +# Requires indent_ignore_first_continue=false. +use_indent_continue_only_once = false # true/false + +# The indentation can be: +# - after the assignment, at the '[' character +# - at the begin of the lambda body +# +# true: indentation will be after the assignment +# false: indentation will be at the begin of the lambda body (default) +indent_cpp_lambda_only_once = false # true/false + +# Whether sp_after_angle takes precedence over sp_inside_fparen. This was the +# historic behavior, but is probably not the desired behavior, so this is off +# by default. +use_sp_after_angle_always = false # true/false + +# Whether to apply special formatting for Qt SIGNAL/SLOT macros. Essentially, +# this tries to format these so that they match Qt's normalized form (i.e. the +# result of QMetaObject::normalizedSignature), which can slightly improve the +# performance of the QObject::connect call, rather than how they would +# otherwise be formatted. +# +# See options_for_QT.cpp for details. +# +# Default: true +use_options_overriding_for_qt_macros = true # true/false + +# If true: the form feed character is removed from the list of whitespace +# characters. See https://en.cppreference.com/w/cpp/string/byte/isspace. +use_form_feed_no_more_as_whitespace_character = false # true/false + +# +# Warn levels - 1: error, 2: warning (default), 3: note +# + +# (C#) Warning is given if doing tab-to-\t replacement and we have found one +# in a C# verbatim string literal. +# +# Default: 2 +warn_level_tabs_found_in_verbatim_string_literals = 2 # unsigned number + +# Limit the number of loops. +# Used by uncrustify.cpp to exit from infinite loop. +# 0: no limit. +debug_max_number_of_loops = 0 # number + +# Set the number of the line to protocol; +# Used in the function prot_the_line if the 2. parameter is zero. +# 0: nothing protocol. +debug_line_number_to_protocol = 0 # number + +# Set the number of second(s) before terminating formatting the current file, +# 0: no timeout. +# only for linux +debug_timeout = 0 # number + +# Set the number of characters to be printed if the text is too long, +# 0: do not truncate. +debug_truncate = 0 # unsigned number + +# Meaning of the settings: +# Ignore - do not do any changes +# Add - makes sure there is 1 or more space/brace/newline/etc +# Force - makes sure there is exactly 1 space/brace/newline/etc, +# behaves like Add in some contexts +# Remove - removes space/brace/newline/etc +# +# +# - Token(s) can be treated as specific type(s) with the 'set' option: +# `set tokenType tokenString [tokenString...]` +# +# Example: +# `set BOOL __AND__ __OR__` +# +# tokenTypes are defined in src/token_enum.h, use them without the +# 'CT_' prefix: 'CT_BOOL' => 'BOOL' +# +# +# - Token(s) can be treated as type(s) with the 'type' option. +# `type tokenString [tokenString...]` +# +# Example: +# `type int c_uint_8 Rectangle` +# +# This can also be achieved with `set TYPE int c_uint_8 Rectangle` +# +# +# To embed whitespace in tokenStrings use the '\' escape character, or quote +# the tokenStrings. These quotes are supported: "'` +# +# +# - Support for the auto detection of languages through the file ending can be +# added using the 'file_ext' command. +# `file_ext langType langString [langString..]` +# +# Example: +# `file_ext CPP .ch .cxx .cpp.in` +# +# langTypes are defined in uncrusify_types.h in the lang_flag_e enum, use +# them without the 'LANG_' prefix: 'LANG_CPP' => 'CPP' +# +# +# - Custom macro-based indentation can be set up using 'macro-open', +# 'macro-else' and 'macro-close'. +# `(macro-open | macro-else | macro-close) tokenString` +# +# Example: +# `macro-open BEGIN_TEMPLATE_MESSAGE_MAP` +# `macro-open BEGIN_MESSAGE_MAP` +# `macro-close END_MESSAGE_MAP` +# +# +# option(s) with 'not default' value: 0 +# diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/configuration.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/configuration.txt new file mode 100644 index 00000000..f61b1176 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/configuration.txt @@ -0,0 +1,67 @@ +Quick documentation (probably out of date - see options.h) + +There are five type of arguments: + - boolean (true/false) + - numeric + - ignore/add/remove/force + - LF/CRLF/CR/AUTO + - ignore/lead/trail + +"Ignore" means do not change it. +"Add" in the context of spaces means make sure there is at least 1. +"Add" elsewhere means make sure one is present. +"Remove" mean remove the space/brace/newline/etc. +"Force" in the context of spaces means ensure that there is exactly 1. +"Force" in other contexts means the same as "add". + +Configuration items may reference previously defined configuration items. +Numeric items may be prefixed with a '-' to invert the number. +Boolean items may be prefixed with a '-' or '~' to invert the value. +For example, the following is valid: + output_tab_size = 4 + indent_columns = output_tab_size + + +All items default to false/0/ignore except: + - newlines = auto + - input_tab_size = 8 + - output_tab_size = 8 + - indent_columns = 8 + - indent_with_tabs = 1 + - indent_label = 1 + - indent_access_spec = 1 + - sp_before_comma = remove + - string_escape_char = 92 # '\' + + Refer to set_option_defaults() + +Terminology: + There are three types of parenthesis: sparen, fparen, paren. + sparen are found with if/for/switch/while statements. + fparen are found with function prototypes, calls and implementations. + paren are everything else, such as those found with arithmetic ops. + + A 'span' is the maximum number of lines that a aligning feature will be + considered. This is done to limit the scope of the aligning. + So, if a span is set to 3 and more than 3 lines do not contain the item + that is to be aligned, then the aligning set is closed. + + A 'gap' is the minimum spacing for aligned items. + So, if it is set to 3 for typedefs, then there are a minimum of three + spaces between the type and the typedef name. + + A 'threshold' is the maximum number of columns that a aligning feature + will be considered. This is done to limit the scope of the aligning. + This prevents really longs lines from being aligned with short lines. + + +A list of all the options with documentation can be acquired by running +uncrustify with the following options: + +$ uncrustify --show-config + + +To get a valid configuration file with all defaults, run this: + +$ uncrustify -c /dev/null --update-config-with-doc + diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/default.cfg b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/default.cfg new file mode 100644 index 00000000..571f4038 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/default.cfg @@ -0,0 +1,3493 @@ +# Uncrustify-0.75.0 + +# +# General options +# + +# The type of line endings. +# +# Default: auto +newlines = auto # lf/crlf/cr/auto + +# The original size of tabs in the input. +# +# Default: 8 +input_tab_size = 8 # unsigned number + +# The size of tabs in the output (only used if align_with_tabs=true). +# +# Default: 8 +output_tab_size = 8 # unsigned number + +# The ASCII value of the string escape char, usually 92 (\) or (Pawn) 94 (^). +# +# Default: 92 +string_escape_char = 92 # unsigned number + +# Alternate string escape char (usually only used for Pawn). +# Only works right before the quote char. +string_escape_char2 = 0 # unsigned number + +# Replace tab characters found in string literals with the escape sequence \t +# instead. +string_replace_tab_chars = false # true/false + +# Allow interpreting '>=' and '>>=' as part of a template in code like +# 'void f(list<list<B>>=val);'. If true, 'assert(x<0 && y>=3)' will be broken. +# Improvements to template detection may make this option obsolete. +tok_split_gte = false # true/false + +# Disable formatting of NL_CONT ('\\n') ended lines (e.g. multi-line macros). +disable_processing_nl_cont = false # true/false + +# Specify the marker used in comments to disable processing of part of the +# file. +# +# Default: *INDENT-OFF* +disable_processing_cmt = " *INDENT-OFF*" # string + +# Specify the marker used in comments to (re)enable processing in a file. +# +# Default: *INDENT-ON* +enable_processing_cmt = " *INDENT-ON*" # string + +# Enable parsing of digraphs. +enable_digraphs = false # true/false + +# Option to allow both disable_processing_cmt and enable_processing_cmt +# strings, if specified, to be interpreted as ECMAScript regular expressions. +# If true, a regex search will be performed within comments according to the +# specified patterns in order to disable/enable processing. +processing_cmt_as_regex = false # true/false + +# Add or remove the UTF-8 BOM (recommend 'remove'). +utf8_bom = ignore # ignore/add/remove/force/not_defined + +# If the file contains bytes with values between 128 and 255, but is not +# UTF-8, then output as UTF-8. +utf8_byte = false # true/false + +# Force the output encoding to UTF-8. +utf8_force = false # true/false + +# +# Spacing options +# + +# Add or remove space around non-assignment symbolic operators ('+', '/', '%', +# '<<', and so forth). +sp_arith = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around arithmetic operators '+' and '-'. +# +# Overrides sp_arith. +sp_arith_additive = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around assignment operator '=', '+=', etc. +sp_assign = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around '=' in C++11 lambda capture specifications. +# +# Overrides sp_assign. +sp_cpp_lambda_assign = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the capture specification of a C++11 lambda when +# an argument list is present, as in '[] <here> (int x){ ... }'. +sp_cpp_lambda_square_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the capture specification of a C++11 lambda with +# no argument list is present, as in '[] <here> { ... }'. +sp_cpp_lambda_square_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the opening parenthesis and before the closing +# parenthesis of a argument list of a C++11 lambda, as in +# '[]( <here> int x <here> ){ ... }'. +sp_cpp_lambda_argument_list = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the argument list of a C++11 lambda, as in +# '[](int x) <here> { ... }'. +sp_cpp_lambda_paren_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between a lambda body and its call operator of an +# immediately invoked lambda, as in '[]( ... ){ ... } <here> ( ... )'. +sp_cpp_lambda_fparen = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around assignment operator '=' in a prototype. +# +# If set to ignore, use sp_assign. +sp_assign_default = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before assignment operator '=', '+=', etc. +# +# Overrides sp_assign. +sp_before_assign = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after assignment operator '=', '+=', etc. +# +# Overrides sp_assign. +sp_after_assign = ignore # ignore/add/remove/force/not_defined + +# Add or remove space in 'enum {'. +# +# Default: add +sp_enum_brace = add # ignore/add/remove/force/not_defined + +# Add or remove space in 'NS_ENUM ('. +sp_enum_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around assignment '=' in enum. +sp_enum_assign = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before assignment '=' in enum. +# +# Overrides sp_enum_assign. +sp_enum_before_assign = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after assignment '=' in enum. +# +# Overrides sp_enum_assign. +sp_enum_after_assign = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around assignment ':' in enum. +sp_enum_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around preprocessor '##' concatenation operator. +# +# Default: add +sp_pp_concat = add # ignore/add/remove/force/not_defined + +# Add or remove space after preprocessor '#' stringify operator. +# Also affects the '#@' charizing operator. +sp_pp_stringify = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before preprocessor '#' stringify operator +# as in '#define x(y) L#y'. +sp_before_pp_stringify = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around boolean operators '&&' and '||'. +sp_bool = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around compare operator '<', '>', '==', etc. +sp_compare = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside '(' and ')'. +sp_inside_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between nested parentheses, i.e. '((' vs. ') )'. +sp_paren_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between back-to-back parentheses, i.e. ')(' vs. ') ('. +sp_cparen_oparen = ignore # ignore/add/remove/force/not_defined + +# Whether to balance spaces inside nested parentheses. +sp_balance_nested_parens = false # true/false + +# Add or remove space between ')' and '{'. +sp_paren_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between nested braces, i.e. '{{' vs. '{ {'. +sp_brace_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before pointer star '*'. +sp_before_ptr_star = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before pointer star '*' that isn't followed by a +# variable name. If set to ignore, sp_before_ptr_star is used instead. +sp_before_unnamed_ptr_star = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between pointer stars '*', as in 'int ***a;'. +sp_between_ptr_star = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after pointer star '*', if followed by a word. +# +# Overrides sp_type_func. +sp_after_ptr_star = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after pointer caret '^', if followed by a word. +sp_after_ptr_block_caret = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after pointer star '*', if followed by a qualifier. +sp_after_ptr_star_qualifier = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after a pointer star '*', if followed by a function +# prototype or function definition. +# +# Overrides sp_after_ptr_star and sp_type_func. +sp_after_ptr_star_func = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after a pointer star '*' in the trailing return of a +# function prototype or function definition. +sp_after_ptr_star_trailing = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between the pointer star '*' and the name of the variable +# in a function pointer definition. +sp_ptr_star_func_var = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between the pointer star '*' and the name of the type +# in a function pointer type definition. +sp_ptr_star_func_type = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after a pointer star '*', if followed by an open +# parenthesis, as in 'void* (*)()'. +sp_ptr_star_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before a pointer star '*', if followed by a function +# prototype or function definition. +sp_before_ptr_star_func = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before a pointer star '*' in the trailing return of a +# function prototype or function definition. +sp_before_ptr_star_trailing = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before a reference sign '&'. +sp_before_byref = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before a reference sign '&' that isn't followed by a +# variable name. If set to ignore, sp_before_byref is used instead. +sp_before_unnamed_byref = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after reference sign '&', if followed by a word. +# +# Overrides sp_type_func. +sp_after_byref = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after a reference sign '&', if followed by a function +# prototype or function definition. +# +# Overrides sp_after_byref and sp_type_func. +sp_after_byref_func = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before a reference sign '&', if followed by a function +# prototype or function definition. +sp_before_byref_func = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after a reference sign '&', if followed by an open +# parenthesis, as in 'char& (*)()'. +sp_byref_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between type and word. In cases where total removal of +# whitespace would be a syntax error, a value of 'remove' is treated the same +# as 'force'. +# +# This also affects some other instances of space following a type that are +# not covered by other options; for example, between the return type and +# parenthesis of a function type template argument, between the type and +# parenthesis of an array parameter, or between 'decltype(...)' and the +# following word. +# +# Default: force +sp_after_type = force # ignore/add/remove/force/not_defined + +# Add or remove space between 'decltype(...)' and word, +# brace or function call. +sp_after_decltype = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove space before the parenthesis in the D constructs +# 'template Foo(' and 'class Foo('. +sp_before_template_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'template' and '<'. +# If set to ignore, sp_before_angle is used. +sp_template_angle = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before '<'. +sp_before_angle = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside '<' and '>'. +sp_inside_angle = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside '<>'. +sp_inside_angle_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '>' and ':'. +sp_angle_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after '>'. +sp_after_angle = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '>' and '(' as found in 'new List<byte>(foo);'. +sp_angle_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '>' and '()' as found in 'new List<byte>();'. +sp_angle_paren_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '>' and a word as in 'List<byte> m;' or +# 'template <typename T> static ...'. +sp_angle_word = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '>' and '>' in '>>' (template stuff). +# +# Default: add +sp_angle_shift = add # ignore/add/remove/force/not_defined + +# (C++11) Permit removal of the space between '>>' in 'foo<bar<int> >'. Note +# that sp_angle_shift cannot remove the space without this option. +sp_permit_cpp11_shift = false # true/false + +# Add or remove space before '(' of control statements ('if', 'for', 'switch', +# 'while', etc.). +sp_before_sparen = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside '(' and ')' of control statements other than +# 'for'. +sp_inside_sparen = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after '(' of control statements other than 'for'. +# +# Overrides sp_inside_sparen. +sp_inside_sparen_open = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before ')' of control statements other than 'for'. +# +# Overrides sp_inside_sparen. +sp_inside_sparen_close = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside '(' and ')' of 'for' statements. +sp_inside_for = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after '(' of 'for' statements. +# +# Overrides sp_inside_for. +sp_inside_for_open = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before ')' of 'for' statements. +# +# Overrides sp_inside_for. +sp_inside_for_close = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '((' or '))' of control statements. +sp_sparen_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after ')' of control statements. +sp_after_sparen = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between ')' and '{' of control statements. +sp_sparen_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'do' and '{'. +sp_do_brace_open = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '}' and 'while'. +sp_brace_close_while = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'while' and '('. Overrides sp_before_sparen. +sp_while_paren_open = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove space between 'invariant' and '('. +sp_invariant_paren = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove space after the ')' in 'invariant (C) c'. +sp_after_invariant_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before empty statement ';' on 'if', 'for' and 'while'. +sp_special_semi = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before ';'. +# +# Default: remove +sp_before_semi = remove # ignore/add/remove/force/not_defined + +# Add or remove space before ';' in non-empty 'for' statements. +sp_before_semi_for = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before a semicolon of an empty left part of a for +# statement, as in 'for ( <here> ; ; )'. +sp_before_semi_for_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between the semicolons of an empty middle part of a for +# statement, as in 'for ( ; <here> ; )'. +sp_between_semi_for_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after ';', except when followed by a comment. +# +# Default: add +sp_after_semi = add # ignore/add/remove/force/not_defined + +# Add or remove space after ';' in non-empty 'for' statements. +# +# Default: force +sp_after_semi_for = force # ignore/add/remove/force/not_defined + +# Add or remove space after the final semicolon of an empty part of a for +# statement, as in 'for ( ; ; <here> )'. +sp_after_semi_for_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before '[' (except '[]'). +sp_before_square = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before '[' for a variable definition. +# +# Default: remove +sp_before_vardef_square = remove # ignore/add/remove/force/not_defined + +# Add or remove space before '[' for asm block. +sp_before_square_asm_block = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before '[]'. +sp_before_squares = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before C++17 structured bindings. +sp_cpp_before_struct_binding = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside a non-empty '[' and ']'. +sp_inside_square = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside '[]'. +sp_inside_square_empty = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space inside a non-empty Objective-C boxed array '@[' and +# ']'. If set to ignore, sp_inside_square is used. +sp_inside_square_oc_array = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after ',', i.e. 'a,b' vs. 'a, b'. +sp_after_comma = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before ',', i.e. 'a,b' vs. 'a ,b'. +# +# Default: remove +sp_before_comma = remove # ignore/add/remove/force/not_defined + +# (C#) Add or remove space between ',' and ']' in multidimensional array type +# like 'int[,,]'. +sp_after_mdatype_commas = ignore # ignore/add/remove/force/not_defined + +# (C#) Add or remove space between '[' and ',' in multidimensional array type +# like 'int[,,]'. +sp_before_mdatype_commas = ignore # ignore/add/remove/force/not_defined + +# (C#) Add or remove space between ',' in multidimensional array type +# like 'int[,,]'. +sp_between_mdatype_commas = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between an open parenthesis and comma, +# i.e. '(,' vs. '( ,'. +# +# Default: force +sp_paren_comma = force # ignore/add/remove/force/not_defined + +# Add or remove space between a type and ':'. +sp_type_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the variadic '...' when preceded by a +# non-punctuator. +# The value REMOVE will be overridden with FORCE +sp_after_ellipsis = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before the variadic '...' when preceded by a +# non-punctuator. +# The value REMOVE will be overridden with FORCE +sp_before_ellipsis = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between a type and '...'. +sp_type_ellipsis = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between a '*' and '...'. +sp_ptr_type_ellipsis = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between ')' and '...'. +sp_paren_ellipsis = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '&&' and '...'. +sp_byref_ellipsis = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between ')' and a qualifier such as 'const'. +sp_paren_qualifier = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between ')' and 'noexcept'. +sp_paren_noexcept = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after class ':'. +sp_after_class_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before class ':'. +sp_before_class_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after class constructor ':'. +# +# Default: add +sp_after_constr_colon = add # ignore/add/remove/force/not_defined + +# Add or remove space before class constructor ':'. +# +# Default: add +sp_before_constr_colon = add # ignore/add/remove/force/not_defined + +# Add or remove space before case ':'. +# +# Default: remove +sp_before_case_colon = remove # ignore/add/remove/force/not_defined + +# Add or remove space between 'operator' and operator sign. +sp_after_operator = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between the operator symbol and the open parenthesis, as +# in 'operator ++('. +sp_after_operator_sym = ignore # ignore/add/remove/force/not_defined + +# Overrides sp_after_operator_sym when the operator has no arguments, as in +# 'operator *()'. +sp_after_operator_sym_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after C/D cast, i.e. 'cast(int)a' vs. 'cast(int) a' or +# '(int)a' vs. '(int) a'. +sp_after_cast = ignore # ignore/add/remove/force/not_defined + +# Add or remove spaces inside cast parentheses. +sp_inside_paren_cast = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between the type and open parenthesis in a C++ cast, +# i.e. 'int(exp)' vs. 'int (exp)'. +sp_cpp_cast_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'sizeof' and '('. +sp_sizeof_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'sizeof' and '...'. +sp_sizeof_ellipsis = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'sizeof...' and '('. +sp_sizeof_ellipsis_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '...' and a parameter pack. +sp_ellipsis_parameter_pack = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between a parameter pack and '...'. +sp_parameter_pack_ellipsis = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'decltype' and '('. +sp_decltype_paren = ignore # ignore/add/remove/force/not_defined + +# (Pawn) Add or remove space after the tag keyword. +sp_after_tag = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside enum '{' and '}'. +sp_inside_braces_enum = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside struct/union '{' and '}'. +sp_inside_braces_struct = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space inside Objective-C boxed dictionary '{' and '}' +sp_inside_braces_oc_dict = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after open brace in an unnamed temporary +# direct-list-initialization +# if statement is a brace_init_lst +# works only if sp_brace_brace is set to ignore. +sp_after_type_brace_init_lst_open = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before close brace in an unnamed temporary +# direct-list-initialization +# if statement is a brace_init_lst +# works only if sp_brace_brace is set to ignore. +sp_before_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside an unnamed temporary direct-list-initialization +# if statement is a brace_init_lst +# works only if sp_brace_brace is set to ignore +# works only if sp_before_type_brace_init_lst_close is set to ignore. +sp_inside_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside '{' and '}'. +sp_inside_braces = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside '{}'. +sp_inside_braces_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around trailing return operator '->'. +sp_trailing_return = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between return type and function name. A minimum of 1 +# is forced except for pointer return types. +sp_type_func = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between type and open brace of an unnamed temporary +# direct-list-initialization. +sp_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between function name and '(' on function declaration. +sp_func_proto_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between function name and '()' on function declaration +# without parameters. +sp_func_proto_paren_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between function name and '(' with a typedef specifier. +sp_func_type_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between alias name and '(' of a non-pointer function type typedef. +sp_func_def_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between function name and '()' on function definition +# without parameters. +sp_func_def_paren_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside empty function '()'. +# Overrides sp_after_angle unless use_sp_after_angle_always is set to true. +sp_inside_fparens = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside function '(' and ')'. +sp_inside_fparen = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside the first parentheses in a function type, as in +# 'void (*x)(...)'. +sp_inside_tparen = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between the ')' and '(' in a function type, as in +# 'void (*x)(...)'. +sp_after_tparen_close = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between ']' and '(' when part of a function call. +sp_square_fparen = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between ')' and '{' of function. +sp_fparen_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between ')' and '{' of a function call in object +# initialization. +# +# Overrides sp_fparen_brace. +sp_fparen_brace_initializer = ignore # ignore/add/remove/force/not_defined + +# (Java) Add or remove space between ')' and '{{' of double brace initializer. +sp_fparen_dbrace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between function name and '(' on function calls. +sp_func_call_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between function name and '()' on function calls without +# parameters. If set to ignore (the default), sp_func_call_paren is used. +sp_func_call_paren_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between the user function name and '(' on function +# calls. You need to set a keyword to be a user function in the config file, +# like: +# set func_call_user tr _ i18n +sp_func_call_user_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside user function '(' and ')'. +sp_func_call_user_inside_fparen = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between nested parentheses with user functions, +# i.e. '((' vs. '( ('. +sp_func_call_user_paren_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between a constructor/destructor and the open +# parenthesis. +sp_func_class_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between a constructor without parameters or destructor +# and '()'. +sp_func_class_paren_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after 'return'. +# +# Default: force +sp_return = force # ignore/add/remove/force/not_defined + +# Add or remove space between 'return' and '('. +sp_return_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'return' and '{'. +sp_return_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '__attribute__' and '('. +sp_attribute_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'defined' and '(' in '#if defined (FOO)'. +sp_defined_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'throw' and '(' in 'throw (something)'. +sp_throw_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'throw' and anything other than '(' as in +# '@throw [...];'. +sp_after_throw = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'catch' and '(' in 'catch (something) { }'. +# If set to ignore, sp_before_sparen is used. +sp_catch_paren = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space between '@catch' and '(' +# in '@catch (something) { }'. If set to ignore, sp_catch_paren is used. +sp_oc_catch_paren = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space before Objective-C protocol list +# as in '@protocol Protocol<here><Protocol_A>' or '@interface MyClass : NSObject<here><MyProtocol>'. +sp_before_oc_proto_list = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space between class name and '(' +# in '@interface className(categoryName)<ProtocolName>:BaseClass' +sp_oc_classname_paren = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove space between 'version' and '(' +# in 'version (something) { }'. If set to ignore, sp_before_sparen is used. +sp_version_paren = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove space between 'scope' and '(' +# in 'scope (something) { }'. If set to ignore, sp_before_sparen is used. +sp_scope_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'super' and '(' in 'super (something)'. +# +# Default: remove +sp_super_paren = remove # ignore/add/remove/force/not_defined + +# Add or remove space between 'this' and '(' in 'this (something)'. +# +# Default: remove +sp_this_paren = remove # ignore/add/remove/force/not_defined + +# Add or remove space between a macro name and its definition. +sp_macro = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between a macro function ')' and its definition. +sp_macro_func = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'else' and '{' if on the same line. +sp_else_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '}' and 'else' if on the same line. +sp_brace_else = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '}' and the name of a typedef on the same line. +sp_brace_typedef = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before the '{' of a 'catch' statement, if the '{' and +# 'catch' are on the same line, as in 'catch (decl) <here> {'. +sp_catch_brace = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space before the '{' of a '@catch' statement, if the '{' +# and '@catch' are on the same line, as in '@catch (decl) <here> {'. +# If set to ignore, sp_catch_brace is used. +sp_oc_catch_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '}' and 'catch' if on the same line. +sp_brace_catch = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space between '}' and '@catch' if on the same line. +# If set to ignore, sp_brace_catch is used. +sp_oc_brace_catch = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'finally' and '{' if on the same line. +sp_finally_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between '}' and 'finally' if on the same line. +sp_brace_finally = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'try' and '{' if on the same line. +sp_try_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between get/set and '{' if on the same line. +sp_getset_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between a variable and '{' for C++ uniform +# initialization. +sp_word_brace_init_lst = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between a variable and '{' for a namespace. +# +# Default: add +sp_word_brace_ns = add # ignore/add/remove/force/not_defined + +# Add or remove space before the '::' operator. +sp_before_dc = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the '::' operator. +sp_after_dc = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove around the D named array initializer ':' operator. +sp_d_array_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the '!' (not) unary operator. +# +# Default: remove +sp_not = remove # ignore/add/remove/force/not_defined + +# Add or remove space between two '!' (not) unary operators. +# If set to ignore, sp_not will be used. +sp_not_not = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the '~' (invert) unary operator. +# +# Default: remove +sp_inv = remove # ignore/add/remove/force/not_defined + +# Add or remove space after the '&' (address-of) unary operator. This does not +# affect the spacing after a '&' that is part of a type. +# +# Default: remove +sp_addr = remove # ignore/add/remove/force/not_defined + +# Add or remove space around the '.' or '->' operators. +# +# Default: remove +sp_member = remove # ignore/add/remove/force/not_defined + +# Add or remove space after the '*' (dereference) unary operator. This does +# not affect the spacing after a '*' that is part of a type. +# +# Default: remove +sp_deref = remove # ignore/add/remove/force/not_defined + +# Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'. +# +# Default: remove +sp_sign = remove # ignore/add/remove/force/not_defined + +# Add or remove space between '++' and '--' the word to which it is being +# applied, as in '(--x)' or 'y++;'. +# +# Default: remove +sp_incdec = remove # ignore/add/remove/force/not_defined + +# Add or remove space before a backslash-newline at the end of a line. +# +# Default: add +sp_before_nl_cont = add # ignore/add/remove/force/not_defined + +# (OC) Add or remove space after the scope '+' or '-', as in '-(void) foo;' +# or '+(int) bar;'. +sp_after_oc_scope = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space after the colon in message specs, +# i.e. '-(int) f:(int) x;' vs. '-(int) f: (int) x;'. +sp_after_oc_colon = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space before the colon in message specs, +# i.e. '-(int) f: (int) x;' vs. '-(int) f : (int) x;'. +sp_before_oc_colon = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space after the colon in immutable dictionary expression +# 'NSDictionary *test = @{@"foo" :@"bar"};'. +sp_after_oc_dict_colon = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space before the colon in immutable dictionary expression +# 'NSDictionary *test = @{@"foo" :@"bar"};'. +sp_before_oc_dict_colon = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space after the colon in message specs, +# i.e. '[object setValue:1];' vs. '[object setValue: 1];'. +sp_after_send_oc_colon = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space before the colon in message specs, +# i.e. '[object setValue:1];' vs. '[object setValue :1];'. +sp_before_send_oc_colon = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space after the (type) in message specs, +# i.e. '-(int)f: (int) x;' vs. '-(int)f: (int)x;'. +sp_after_oc_type = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space after the first (type) in message specs, +# i.e. '-(int) f:(int)x;' vs. '-(int)f:(int)x;'. +sp_after_oc_return_type = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space between '@selector' and '(', +# i.e. '@selector(msgName)' vs. '@selector (msgName)'. +# Also applies to '@protocol()' constructs. +sp_after_oc_at_sel = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space between '@selector(x)' and the following word, +# i.e. '@selector(foo) a:' vs. '@selector(foo)a:'. +sp_after_oc_at_sel_parens = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space inside '@selector' parentheses, +# i.e. '@selector(foo)' vs. '@selector( foo )'. +# Also applies to '@protocol()' constructs. +sp_inside_oc_at_sel_parens = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space before a block pointer caret, +# i.e. '^int (int arg){...}' vs. ' ^int (int arg){...}'. +sp_before_oc_block_caret = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space after a block pointer caret, +# i.e. '^int (int arg){...}' vs. '^ int (int arg){...}'. +sp_after_oc_block_caret = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space between the receiver and selector in a message, +# as in '[receiver selector ...]'. +sp_after_oc_msg_receiver = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space after '@property'. +sp_after_oc_property = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove space between '@synchronized' and the open parenthesis, +# i.e. '@synchronized(foo)' vs. '@synchronized (foo)'. +sp_after_oc_synchronized = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around the ':' in 'b ? t : f'. +sp_cond_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before the ':' in 'b ? t : f'. +# +# Overrides sp_cond_colon. +sp_cond_colon_before = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the ':' in 'b ? t : f'. +# +# Overrides sp_cond_colon. +sp_cond_colon_after = ignore # ignore/add/remove/force/not_defined + +# Add or remove space around the '?' in 'b ? t : f'. +sp_cond_question = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before the '?' in 'b ? t : f'. +# +# Overrides sp_cond_question. +sp_cond_question_before = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the '?' in 'b ? t : f'. +# +# Overrides sp_cond_question. +sp_cond_question_after = ignore # ignore/add/remove/force/not_defined + +# In the abbreviated ternary form '(a ?: b)', add or remove space between '?' +# and ':'. +# +# Overrides all other sp_cond_* options. +sp_cond_ternary_short = ignore # ignore/add/remove/force/not_defined + +# Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make +# sense here. +sp_case_label = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove space around the D '..' operator. +sp_range = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after ':' in a Java/C++11 range-based 'for', +# as in 'for (Type var : <here> expr)'. +sp_after_for_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before ':' in a Java/C++11 range-based 'for', +# as in 'for (Type var <here> : expr)'. +sp_before_for_colon = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove space between 'extern' and '(' as in 'extern <here> (C)'. +sp_extern_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the opening of a C++ comment, as in '// <here> A'. +sp_cmt_cpp_start = ignore # ignore/add/remove/force/not_defined + +# Add or remove space in a C++ region marker comment, as in '// <here> BEGIN'. +# A region marker is defined as a comment which is not preceded by other text +# (i.e. the comment is the first non-whitespace on the line), and which starts +# with either 'BEGIN' or 'END'. +# +# Overrides sp_cmt_cpp_start. +sp_cmt_cpp_region = ignore # ignore/add/remove/force/not_defined + +# If true, space added with sp_cmt_cpp_start will be added after Doxygen +# sequences like '///', '///<', '//!' and '//!<'. +sp_cmt_cpp_doxygen = false # true/false + +# If true, space added with sp_cmt_cpp_start will be added after Qt translator +# or meta-data comments like '//:', '//=', and '//~'. +sp_cmt_cpp_qttr = false # true/false + +# Add or remove space between #else or #endif and a trailing comment. +sp_endif_cmt = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after 'new', 'delete' and 'delete[]'. +sp_after_new = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between 'new' and '(' in 'new()'. +sp_between_new_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space between ')' and type in 'new(foo) BAR'. +sp_after_newop_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space inside parenthesis of the new operator +# as in 'new(foo) BAR'. +sp_inside_newop_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after the open parenthesis of the new operator, +# as in 'new(foo) BAR'. +# +# Overrides sp_inside_newop_paren. +sp_inside_newop_paren_open = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before the close parenthesis of the new operator, +# as in 'new(foo) BAR'. +# +# Overrides sp_inside_newop_paren. +sp_inside_newop_paren_close = ignore # ignore/add/remove/force/not_defined + +# Add or remove space before a trailing comment. +sp_before_tr_cmt = ignore # ignore/add/remove/force/not_defined + +# Number of spaces before a trailing comment. +sp_num_before_tr_cmt = 0 # unsigned number + +# Add or remove space before an embedded comment. +# +# Default: force +sp_before_emb_cmt = force # ignore/add/remove/force/not_defined + +# Number of spaces before an embedded comment. +# +# Default: 1 +sp_num_before_emb_cmt = 1 # unsigned number + +# Add or remove space after an embedded comment. +# +# Default: force +sp_after_emb_cmt = force # ignore/add/remove/force/not_defined + +# Number of spaces after an embedded comment. +# +# Default: 1 +sp_num_after_emb_cmt = 1 # unsigned number + +# (Java) Add or remove space between an annotation and the open parenthesis. +sp_annotation_paren = ignore # ignore/add/remove/force/not_defined + +# If true, vbrace tokens are dropped to the previous token and skipped. +sp_skip_vbrace_tokens = false # true/false + +# Add or remove space after 'noexcept'. +sp_after_noexcept = ignore # ignore/add/remove/force/not_defined + +# Add or remove space after '_'. +sp_vala_after_translation = ignore # ignore/add/remove/force/not_defined + +# If true, a <TAB> is inserted after #define. +force_tab_after_define = false # true/false + +# +# Indenting options +# + +# The number of columns to indent per level. Usually 2, 3, 4, or 8. +# +# Default: 8 +indent_columns = 8 # unsigned number + +# Whether to ignore indent for the first continuation line. Subsequent +# continuation lines will still be indented to match the first. +indent_ignore_first_continue = false # true/false + +# The continuation indent. If non-zero, this overrides the indent of '(', '[' +# and '=' continuation indents. Negative values are OK; negative value is +# absolute and not increased for each '(' or '[' level. +# +# For FreeBSD, this is set to 4. +# Requires indent_ignore_first_continue=false. +indent_continue = 0 # number + +# The continuation indent, only for class header line(s). If non-zero, this +# overrides the indent of 'class' continuation indents. +# Requires indent_ignore_first_continue=false. +indent_continue_class_head = 0 # unsigned number + +# Whether to indent empty lines (i.e. lines which contain only spaces before +# the newline character). +indent_single_newlines = false # true/false + +# The continuation indent for func_*_param if they are true. If non-zero, this +# overrides the indent. +indent_param = 0 # unsigned number + +# How to use tabs when indenting code. +# +# 0: Spaces only +# 1: Indent with tabs to brace level, align with spaces (default) +# 2: Indent and align with tabs, using spaces when not on a tabstop +# +# Default: 1 +indent_with_tabs = 1 # unsigned number + +# Whether to indent comments that are not at a brace level with tabs on a +# tabstop. Requires indent_with_tabs=2. If false, will use spaces. +indent_cmt_with_tabs = false # true/false + +# Whether to indent strings broken by '\' so that they line up. +indent_align_string = false # true/false + +# The number of spaces to indent multi-line XML strings. +# Requires indent_align_string=true. +indent_xml_string = 0 # unsigned number + +# Spaces to indent '{' from level. +indent_brace = 0 # unsigned number + +# Whether braces are indented to the body level. +indent_braces = false # true/false + +# Whether to disable indenting function braces if indent_braces=true. +indent_braces_no_func = false # true/false + +# Whether to disable indenting class braces if indent_braces=true. +indent_braces_no_class = false # true/false + +# Whether to disable indenting struct braces if indent_braces=true. +indent_braces_no_struct = false # true/false + +# Whether to indent based on the size of the brace parent, +# i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc. +indent_brace_parent = false # true/false + +# Whether to indent based on the open parenthesis instead of the open brace +# in '({\n'. +indent_paren_open_brace = false # true/false + +# (C#) Whether to indent the brace of a C# delegate by another level. +indent_cs_delegate_brace = false # true/false + +# (C#) Whether to indent a C# delegate (to handle delegates with no brace) by +# another level. +indent_cs_delegate_body = false # true/false + +# Whether to indent the body of a 'namespace'. +indent_namespace = false # true/false + +# Whether to indent only the first namespace, and not any nested namespaces. +# Requires indent_namespace=true. +indent_namespace_single_indent = false # true/false + +# The number of spaces to indent a namespace block. +# If set to zero, use the value indent_columns +indent_namespace_level = 0 # unsigned number + +# If the body of the namespace is longer than this number, it won't be +# indented. Requires indent_namespace=true. 0 means no limit. +indent_namespace_limit = 0 # unsigned number + +# Whether to indent only in inner namespaces (nested in other namespaces). +# Requires indent_namespace=true. +indent_namespace_inner_only = false # true/false + +# Whether the 'extern "C"' body is indented. +indent_extern = false # true/false + +# Whether the 'class' body is indented. +indent_class = false # true/false + +# Whether to ignore indent for the leading base class colon. +indent_ignore_before_class_colon = false # true/false + +# Additional indent before the leading base class colon. +# Negative values decrease indent down to the first column. +# Requires indent_ignore_before_class_colon=false and a newline break before +# the colon (see pos_class_colon and nl_class_colon) +indent_before_class_colon = 0 # number + +# Whether to indent the stuff after a leading base class colon. +indent_class_colon = false # true/false + +# Whether to indent based on a class colon instead of the stuff after the +# colon. Requires indent_class_colon=true. +indent_class_on_colon = false # true/false + +# Whether to ignore indent for a leading class initializer colon. +indent_ignore_before_constr_colon = false # true/false + +# Whether to indent the stuff after a leading class initializer colon. +indent_constr_colon = false # true/false + +# Virtual indent from the ':' for leading member initializers. +# +# Default: 2 +indent_ctor_init_leading = 2 # unsigned number + +# Virtual indent from the ':' for following member initializers. +# +# Default: 2 +indent_ctor_init_following = 2 # unsigned number + +# Additional indent for constructor initializer list. +# Negative values decrease indent down to the first column. +indent_ctor_init = 0 # number + +# Whether to indent 'if' following 'else' as a new block under the 'else'. +# If false, 'else\nif' is treated as 'else if' for indenting purposes. +indent_else_if = false # true/false + +# Amount to indent variable declarations after a open brace. +# +# <0: Relative +# >=0: Absolute +indent_var_def_blk = 0 # number + +# Whether to indent continued variable declarations instead of aligning. +indent_var_def_cont = false # true/false + +# How to indent continued shift expressions ('<<' and '>>'). +# Set align_left_shift=false when using this. +# 0: Align shift operators instead of indenting them (default) +# 1: Indent by one level +# -1: Preserve original indentation +indent_shift = 0 # number + +# Whether to force indentation of function definitions to start in column 1. +indent_func_def_force_col1 = false # true/false + +# Whether to indent continued function call parameters one indent level, +# rather than aligning parameters under the open parenthesis. +indent_func_call_param = false # true/false + +# Whether to indent continued function definition parameters one indent level, +# rather than aligning parameters under the open parenthesis. +indent_func_def_param = false # true/false + +# for function definitions, only if indent_func_def_param is false +# Allows to align params when appropriate and indent them when not +# behave as if it was true if paren position is more than this value +# if paren position is more than the option value +indent_func_def_param_paren_pos_threshold = 0 # unsigned number + +# Whether to indent continued function call prototype one indent level, +# rather than aligning parameters under the open parenthesis. +indent_func_proto_param = false # true/false + +# Whether to indent continued function call declaration one indent level, +# rather than aligning parameters under the open parenthesis. +indent_func_class_param = false # true/false + +# Whether to indent continued class variable constructors one indent level, +# rather than aligning parameters under the open parenthesis. +indent_func_ctor_var_param = false # true/false + +# Whether to indent continued template parameter list one indent level, +# rather than aligning parameters under the open parenthesis. +indent_template_param = false # true/false + +# Double the indent for indent_func_xxx_param options. +# Use both values of the options indent_columns and indent_param. +indent_func_param_double = false # true/false + +# Indentation column for standalone 'const' qualifier on a function +# prototype. +indent_func_const = 0 # unsigned number + +# Indentation column for standalone 'throw' qualifier on a function +# prototype. +indent_func_throw = 0 # unsigned number + +# How to indent within a macro followed by a brace on the same line +# This allows reducing the indent in macros that have (for example) +# `do { ... } while (0)` blocks bracketing them. +# +# true: add an indent for the brace on the same line as the macro +# false: do not add an indent for the brace on the same line as the macro +# +# Default: true +indent_macro_brace = true # true/false + +# The number of spaces to indent a continued '->' or '.'. +# Usually set to 0, 1, or indent_columns. +indent_member = 0 # unsigned number + +# Whether lines broken at '.' or '->' should be indented by a single indent. +# The indent_member option will not be effective if this is set to true. +indent_member_single = false # true/false + +# Spaces to indent single line ('//') comments on lines before code. +indent_single_line_comments_before = 0 # unsigned number + +# Spaces to indent single line ('//') comments on lines after code. +indent_single_line_comments_after = 0 # unsigned number + +# When opening a paren for a control statement (if, for, while, etc), increase +# the indent level by this value. Negative values decrease the indent level. +indent_sparen_extra = 0 # number + +# Whether to indent trailing single line ('//') comments relative to the code +# instead of trying to keep the same absolute column. +indent_relative_single_line_comments = false # true/false + +# Spaces to indent 'case' from 'switch'. Usually 0 or indent_columns. +# It might be wise to choose the same value for the option indent_case_brace. +indent_switch_case = 0 # unsigned number + +# Spaces to indent the body of a 'switch' before any 'case'. +# Usually the same as indent_columns or indent_switch_case. +indent_switch_body = 0 # unsigned number + +# Whether to ignore indent for '{' following 'case'. +indent_ignore_case_brace = false # true/false + +# Spaces to indent '{' from 'case'. By default, the brace will appear under +# the 'c' in case. Usually set to 0 or indent_columns. Negative values are OK. +# It might be wise to choose the same value for the option indent_switch_case. +indent_case_brace = 0 # number + +# indent 'break' with 'case' from 'switch'. +indent_switch_break_with_case = false # true/false + +# Whether to indent preprocessor statements inside of switch statements. +# +# Default: true +indent_switch_pp = true # true/false + +# Spaces to shift the 'case' line, without affecting any other lines. +# Usually 0. +indent_case_shift = 0 # unsigned number + +# Whether to align comments before 'case' with the 'case'. +# +# Default: true +indent_case_comment = true # true/false + +# Whether to indent comments not found in first column. +# +# Default: true +indent_comment = true # true/false + +# Whether to indent comments found in first column. +indent_col1_comment = false # true/false + +# Whether to indent multi string literal in first column. +indent_col1_multi_string_literal = false # true/false + +# Align comments on adjacent lines that are this many columns apart or less. +# +# Default: 3 +indent_comment_align_thresh = 3 # unsigned number + +# Whether to ignore indent for goto labels. +indent_ignore_label = false # true/false + +# How to indent goto labels. Requires indent_ignore_label=false. +# +# >0: Absolute column where 1 is the leftmost column +# <=0: Subtract from brace indent +# +# Default: 1 +indent_label = 1 # number + +# How to indent access specifiers that are followed by a +# colon. +# +# >0: Absolute column where 1 is the leftmost column +# <=0: Subtract from brace indent +# +# Default: 1 +indent_access_spec = 1 # number + +# Whether to indent the code after an access specifier by one level. +# If true, this option forces 'indent_access_spec=0'. +indent_access_spec_body = false # true/false + +# If an open parenthesis is followed by a newline, whether to indent the next +# line so that it lines up after the open parenthesis (not recommended). +indent_paren_nl = false # true/false + +# How to indent a close parenthesis after a newline. +# +# 0: Indent to body level (default) +# 1: Align under the open parenthesis +# 2: Indent to the brace level +# -1: Preserve original indentation +indent_paren_close = 0 # number + +# Whether to indent the open parenthesis of a function definition, +# if the parenthesis is on its own line. +indent_paren_after_func_def = false # true/false + +# Whether to indent the open parenthesis of a function declaration, +# if the parenthesis is on its own line. +indent_paren_after_func_decl = false # true/false + +# Whether to indent the open parenthesis of a function call, +# if the parenthesis is on its own line. +indent_paren_after_func_call = false # true/false + +# How to indent a comma when inside braces. +# 0: Indent by one level (default) +# 1: Align under the open brace +# -1: Preserve original indentation +indent_comma_brace = 0 # number + +# How to indent a comma when inside parentheses. +# 0: Indent by one level (default) +# 1: Align under the open parenthesis +# -1: Preserve original indentation +indent_comma_paren = 0 # number + +# How to indent a Boolean operator when inside parentheses. +# 0: Indent by one level (default) +# 1: Align under the open parenthesis +# -1: Preserve original indentation +indent_bool_paren = 0 # number + +# Whether to ignore the indentation of a Boolean operator when outside +# parentheses. +indent_ignore_bool = false # true/false + +# Whether to ignore the indentation of an arithmetic operator. +indent_ignore_arith = false # true/false + +# Whether to indent a semicolon when inside a for parenthesis. +# If true, aligns under the open for parenthesis. +indent_semicolon_for_paren = false # true/false + +# Whether to ignore the indentation of a semicolon outside of a 'for' +# statement. +indent_ignore_semicolon = false # true/false + +# Whether to align the first expression to following ones +# if indent_bool_paren=1. +indent_first_bool_expr = false # true/false + +# Whether to align the first expression to following ones +# if indent_semicolon_for_paren=true. +indent_first_for_expr = false # true/false + +# If an open square is followed by a newline, whether to indent the next line +# so that it lines up after the open square (not recommended). +indent_square_nl = false # true/false + +# (ESQL/C) Whether to preserve the relative indent of 'EXEC SQL' bodies. +indent_preserve_sql = false # true/false + +# Whether to ignore the indentation of an assignment operator. +indent_ignore_assign = false # true/false + +# Whether to align continued statements at the '='. If false or if the '=' is +# followed by a newline, the next line is indent one tab. +# +# Default: true +indent_align_assign = true # true/false + +# If true, the indentation of the chunks after a '=' sequence will be set at +# LHS token indentation column before '='. +indent_off_after_assign = false # true/false + +# Whether to align continued statements at the '('. If false or the '(' is +# followed by a newline, the next line indent is one tab. +# +# Default: true +indent_align_paren = true # true/false + +# (OC) Whether to indent Objective-C code inside message selectors. +indent_oc_inside_msg_sel = false # true/false + +# (OC) Whether to indent Objective-C blocks at brace level instead of usual +# rules. +indent_oc_block = false # true/false + +# (OC) Indent for Objective-C blocks in a message relative to the parameter +# name. +# +# =0: Use indent_oc_block rules +# >0: Use specified number of spaces to indent +indent_oc_block_msg = 0 # unsigned number + +# (OC) Minimum indent for subsequent parameters +indent_oc_msg_colon = 0 # unsigned number + +# (OC) Whether to prioritize aligning with initial colon (and stripping spaces +# from lines, if necessary). +# +# Default: true +indent_oc_msg_prioritize_first_colon = true # true/false + +# (OC) Whether to indent blocks the way that Xcode does by default +# (from the keyword if the parameter is on its own line; otherwise, from the +# previous indentation level). Requires indent_oc_block_msg=true. +indent_oc_block_msg_xcode_style = false # true/false + +# (OC) Whether to indent blocks from where the brace is, relative to a +# message keyword. Requires indent_oc_block_msg=true. +indent_oc_block_msg_from_keyword = false # true/false + +# (OC) Whether to indent blocks from where the brace is, relative to a message +# colon. Requires indent_oc_block_msg=true. +indent_oc_block_msg_from_colon = false # true/false + +# (OC) Whether to indent blocks from where the block caret is. +# Requires indent_oc_block_msg=true. +indent_oc_block_msg_from_caret = false # true/false + +# (OC) Whether to indent blocks from where the brace caret is. +# Requires indent_oc_block_msg=true. +indent_oc_block_msg_from_brace = false # true/false + +# When indenting after virtual brace open and newline add further spaces to +# reach this minimum indent. +indent_min_vbrace_open = 0 # unsigned number + +# Whether to add further spaces after regular indent to reach next tabstop +# when indenting after virtual brace open and newline. +indent_vbrace_open_on_tabstop = false # true/false + +# How to indent after a brace followed by another token (not a newline). +# true: indent all contained lines to match the token +# false: indent all contained lines to match the brace +# +# Default: true +indent_token_after_brace = true # true/false + +# Whether to indent the body of a C++11 lambda. +indent_cpp_lambda_body = false # true/false + +# How to indent compound literals that are being returned. +# true: add both the indent from return & the compound literal open brace +# (i.e. 2 indent levels) +# false: only indent 1 level, don't add the indent for the open brace, only +# add the indent for the return. +# +# Default: true +indent_compound_literal_return = true # true/false + +# (C#) Whether to indent a 'using' block if no braces are used. +# +# Default: true +indent_using_block = true # true/false + +# How to indent the continuation of ternary operator. +# +# 0: Off (default) +# 1: When the `if_false` is a continuation, indent it under `if_false` +# 2: When the `:` is a continuation, indent it under `?` +indent_ternary_operator = 0 # unsigned number + +# Whether to indent the statements inside ternary operator. +indent_inside_ternary_operator = false # true/false + +# If true, the indentation of the chunks after a `return` sequence will be set at return indentation column. +indent_off_after_return = false # true/false + +# If true, the indentation of the chunks after a `return new` sequence will be set at return indentation column. +indent_off_after_return_new = false # true/false + +# If true, the tokens after return are indented with regular single indentation. By default (false) the indentation is after the return token. +indent_single_after_return = false # true/false + +# Whether to ignore indent and alignment for 'asm' blocks (i.e. assume they +# have their own indentation). +indent_ignore_asm_block = false # true/false + +# Don't indent the close parenthesis of a function definition, +# if the parenthesis is on its own line. +donot_indent_func_def_close_paren = false # true/false + +# +# Newline adding and removing options +# + +# Whether to collapse empty blocks between '{' and '}'. +# If true, overrides nl_inside_empty_func +nl_collapse_empty_body = false # true/false + +# Don't split one-line braced assignments, as in 'foo_t f = { 1, 2 };'. +nl_assign_leave_one_liners = false # true/false + +# Don't split one-line braced statements inside a 'class xx { }' body. +nl_class_leave_one_liners = false # true/false + +# Don't split one-line enums, as in 'enum foo { BAR = 15 };' +nl_enum_leave_one_liners = false # true/false + +# Don't split one-line get or set functions. +nl_getset_leave_one_liners = false # true/false + +# (C#) Don't split one-line property get or set functions. +nl_cs_property_leave_one_liners = false # true/false + +# Don't split one-line function definitions, as in 'int foo() { return 0; }'. +# might modify nl_func_type_name +nl_func_leave_one_liners = false # true/false + +# Don't split one-line C++11 lambdas, as in '[]() { return 0; }'. +nl_cpp_lambda_leave_one_liners = false # true/false + +# Don't split one-line if/else statements, as in 'if(...) b++;'. +nl_if_leave_one_liners = false # true/false + +# Don't split one-line while statements, as in 'while(...) b++;'. +nl_while_leave_one_liners = false # true/false + +# Don't split one-line do statements, as in 'do { b++; } while(...);'. +nl_do_leave_one_liners = false # true/false + +# Don't split one-line for statements, as in 'for(...) b++;'. +nl_for_leave_one_liners = false # true/false + +# (OC) Don't split one-line Objective-C messages. +nl_oc_msg_leave_one_liner = false # true/false + +# (OC) Add or remove newline between method declaration and '{'. +nl_oc_mdef_brace = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove newline between Objective-C block signature and '{'. +nl_oc_block_brace = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove blank line before '@interface' statement. +nl_oc_before_interface = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove blank line before '@implementation' statement. +nl_oc_before_implementation = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove blank line before '@end' statement. +nl_oc_before_end = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove newline between '@interface' and '{'. +nl_oc_interface_brace = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove newline between '@implementation' and '{'. +nl_oc_implementation_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newlines at the start of the file. +nl_start_of_file = ignore # ignore/add/remove/force/not_defined + +# The minimum number of newlines at the start of the file (only used if +# nl_start_of_file is 'add' or 'force'). +nl_start_of_file_min = 0 # unsigned number + +# Add or remove newline at the end of the file. +nl_end_of_file = ignore # ignore/add/remove/force/not_defined + +# The minimum number of newlines at the end of the file (only used if +# nl_end_of_file is 'add' or 'force'). +nl_end_of_file_min = 0 # unsigned number + +# Add or remove newline between '=' and '{'. +nl_assign_brace = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove newline between '=' and '['. +nl_assign_square = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between '[]' and '{'. +nl_tsquare_brace = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove newline after '= ['. Will also affect the newline before +# the ']'. +nl_after_square_assign = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between a function call's ')' and '{', as in +# 'list_for_each(item, &list) { }'. +nl_fcall_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'enum' and '{'. +nl_enum_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'enum' and 'class'. +nl_enum_class = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'enum class' and the identifier. +nl_enum_class_identifier = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'enum class' type and ':'. +nl_enum_identifier_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'enum class identifier :' and type. +nl_enum_colon_type = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'struct and '{'. +nl_struct_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'union' and '{'. +nl_union_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'if' and '{'. +nl_if_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between '}' and 'else'. +nl_brace_else = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'else if' and '{'. If set to ignore, +# nl_if_brace is used instead. +nl_elseif_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'else' and '{'. +nl_else_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'else' and 'if'. +nl_else_if = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline before '{' opening brace +nl_before_opening_brace_func_class_def = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline before 'if'/'else if' closing parenthesis. +nl_before_if_closing_paren = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between '}' and 'finally'. +nl_brace_finally = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'finally' and '{'. +nl_finally_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'try' and '{'. +nl_try_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between get/set and '{'. +nl_getset_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'for' and '{'. +nl_for_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline before the '{' of a 'catch' statement, as in +# 'catch (decl) <here> {'. +nl_catch_brace = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove newline before the '{' of a '@catch' statement, as in +# '@catch (decl) <here> {'. If set to ignore, nl_catch_brace is used. +nl_oc_catch_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between '}' and 'catch'. +nl_brace_catch = ignore # ignore/add/remove/force/not_defined + +# (OC) Add or remove newline between '}' and '@catch'. If set to ignore, +# nl_brace_catch is used. +nl_oc_brace_catch = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between '}' and ']'. +nl_brace_square = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between '}' and ')' in a function invocation. +nl_brace_fparen = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'while' and '{'. +nl_while_brace = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove newline between 'scope (x)' and '{'. +nl_scope_brace = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove newline between 'unittest' and '{'. +nl_unittest_brace = ignore # ignore/add/remove/force/not_defined + +# (D) Add or remove newline between 'version (x)' and '{'. +nl_version_brace = ignore # ignore/add/remove/force/not_defined + +# (C#) Add or remove newline between 'using' and '{'. +nl_using_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between two open or close braces. Due to general +# newline/brace handling, REMOVE may not work. +nl_brace_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'do' and '{'. +nl_do_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between '}' and 'while' of 'do' statement. +nl_brace_while = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'switch' and '{'. +nl_switch_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'synchronized' and '{'. +nl_synchronized_brace = ignore # ignore/add/remove/force/not_defined + +# Add a newline between ')' and '{' if the ')' is on a different line than the +# if/for/etc. +# +# Overrides nl_for_brace, nl_if_brace, nl_switch_brace, nl_while_switch and +# nl_catch_brace. +nl_multi_line_cond = false # true/false + +# Add a newline after '(' if an if/for/while/switch condition spans multiple +# lines +nl_multi_line_sparen_open = ignore # ignore/add/remove/force/not_defined + +# Add a newline before ')' if an if/for/while/switch condition spans multiple +# lines. Overrides nl_before_if_closing_paren if both are specified. +nl_multi_line_sparen_close = ignore # ignore/add/remove/force/not_defined + +# Force a newline in a define after the macro name for multi-line defines. +nl_multi_line_define = false # true/false + +# Whether to add a newline before 'case', and a blank line before a 'case' +# statement that follows a ';' or '}'. +nl_before_case = false # true/false + +# Whether to add a newline after a 'case' statement. +nl_after_case = false # true/false + +# Add or remove newline between a case ':' and '{'. +# +# Overrides nl_after_case. +nl_case_colon_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between ')' and 'throw'. +nl_before_throw = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'namespace' and '{'. +nl_namespace_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<...>' of a template class. +nl_template_class = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<...>' of a template class declaration. +# +# Overrides nl_template_class. +nl_template_class_decl = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<>' of a specialized class declaration. +# +# Overrides nl_template_class_decl. +nl_template_class_decl_special = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<...>' of a template class definition. +# +# Overrides nl_template_class. +nl_template_class_def = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<>' of a specialized class definition. +# +# Overrides nl_template_class_def. +nl_template_class_def_special = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<...>' of a template function. +nl_template_func = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<...>' of a template function +# declaration. +# +# Overrides nl_template_func. +nl_template_func_decl = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<>' of a specialized function +# declaration. +# +# Overrides nl_template_func_decl. +nl_template_func_decl_special = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<...>' of a template function +# definition. +# +# Overrides nl_template_func. +nl_template_func_def = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<>' of a specialized function +# definition. +# +# Overrides nl_template_func_def. +nl_template_func_def_special = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after 'template<...>' of a template variable. +nl_template_var = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'template<...>' and 'using' of a templated +# type alias. +nl_template_using = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'class' and '{'. +nl_class_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline before or after (depending on pos_class_comma, +# may not be IGNORE) each',' in the base class list. +nl_class_init_args = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after each ',' in the constructor member +# initialization. Related to nl_constr_colon, pos_constr_colon and +# pos_constr_comma. +nl_constr_init_args = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline before first element, after comma, and after last +# element, in 'enum'. +nl_enum_own_lines = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between return type and function name in a function +# definition. +# might be modified by nl_func_leave_one_liners +nl_func_type_name = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between return type and function name inside a class +# definition. If set to ignore, nl_func_type_name or nl_func_proto_type_name +# is used instead. +nl_func_type_name_class = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between class specification and '::' +# in 'void A::f() { }'. Only appears in separate member implementation (does +# not appear with in-line implementation). +nl_func_class_scope = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between function scope and name, as in +# 'void A :: <here> f() { }'. +nl_func_scope_name = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between return type and function name in a prototype. +nl_func_proto_type_name = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between a function name and the opening '(' in the +# declaration. +nl_func_paren = ignore # ignore/add/remove/force/not_defined + +# Overrides nl_func_paren for functions with no parameters. +nl_func_paren_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between a function name and the opening '(' in the +# definition. +nl_func_def_paren = ignore # ignore/add/remove/force/not_defined + +# Overrides nl_func_def_paren for functions with no parameters. +nl_func_def_paren_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between a function name and the opening '(' in the +# call. +nl_func_call_paren = ignore # ignore/add/remove/force/not_defined + +# Overrides nl_func_call_paren for functions with no parameters. +nl_func_call_paren_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after '(' in a function declaration. +nl_func_decl_start = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after '(' in a function definition. +nl_func_def_start = ignore # ignore/add/remove/force/not_defined + +# Overrides nl_func_decl_start when there is only one parameter. +nl_func_decl_start_single = ignore # ignore/add/remove/force/not_defined + +# Overrides nl_func_def_start when there is only one parameter. +nl_func_def_start_single = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline after '(' in a function declaration if '(' and ')' +# are in different lines. If false, nl_func_decl_start is used instead. +nl_func_decl_start_multi_line = false # true/false + +# Whether to add a newline after '(' in a function definition if '(' and ')' +# are in different lines. If false, nl_func_def_start is used instead. +nl_func_def_start_multi_line = false # true/false + +# Add or remove newline after each ',' in a function declaration. +nl_func_decl_args = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after each ',' in a function definition. +nl_func_def_args = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline after each ',' in a function call. +nl_func_call_args = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline after each ',' in a function declaration if '(' +# and ')' are in different lines. If false, nl_func_decl_args is used instead. +nl_func_decl_args_multi_line = false # true/false + +# Whether to add a newline after each ',' in a function definition if '(' +# and ')' are in different lines. If false, nl_func_def_args is used instead. +nl_func_def_args_multi_line = false # true/false + +# Add or remove newline before the ')' in a function declaration. +nl_func_decl_end = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline before the ')' in a function definition. +nl_func_def_end = ignore # ignore/add/remove/force/not_defined + +# Overrides nl_func_decl_end when there is only one parameter. +nl_func_decl_end_single = ignore # ignore/add/remove/force/not_defined + +# Overrides nl_func_def_end when there is only one parameter. +nl_func_def_end_single = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline before ')' in a function declaration if '(' and ')' +# are in different lines. If false, nl_func_decl_end is used instead. +nl_func_decl_end_multi_line = false # true/false + +# Whether to add a newline before ')' in a function definition if '(' and ')' +# are in different lines. If false, nl_func_def_end is used instead. +nl_func_def_end_multi_line = false # true/false + +# Add or remove newline between '()' in a function declaration. +nl_func_decl_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between '()' in a function definition. +nl_func_def_empty = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between '()' in a function call. +nl_func_call_empty = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline after '(' in a function call, +# has preference over nl_func_call_start_multi_line. +nl_func_call_start = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline before ')' in a function call. +nl_func_call_end = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline after '(' in a function call if '(' and ')' are in +# different lines. +nl_func_call_start_multi_line = false # true/false + +# Whether to add a newline after each ',' in a function call if '(' and ')' +# are in different lines. +nl_func_call_args_multi_line = false # true/false + +# Whether to add a newline before ')' in a function call if '(' and ')' are in +# different lines. +nl_func_call_end_multi_line = false # true/false + +# Whether to respect nl_func_call_XXX option in case of closure args. +nl_func_call_args_multi_line_ignore_closures = false # true/false + +# Whether to add a newline after '<' of a template parameter list. +nl_template_start = false # true/false + +# Whether to add a newline after each ',' in a template parameter list. +nl_template_args = false # true/false + +# Whether to add a newline before '>' of a template parameter list. +nl_template_end = false # true/false + +# (OC) Whether to put each Objective-C message parameter on a separate line. +# See nl_oc_msg_leave_one_liner. +nl_oc_msg_args = false # true/false + +# Add or remove newline between function signature and '{'. +nl_fdef_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between function signature and '{', +# if signature ends with ')'. Overrides nl_fdef_brace. +nl_fdef_brace_cond = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between C++11 lambda signature and '{'. +nl_cpp_ldef_brace = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline between 'return' and the return expression. +nl_return_expr = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline after semicolons, except in 'for' statements. +nl_after_semicolon = false # true/false + +# (Java) Add or remove newline between the ')' and '{{' of the double brace +# initializer. +nl_paren_dbrace_open = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline after the type in an unnamed temporary +# direct-list-initialization, better: +# before a direct-list-initialization. +nl_type_brace_init_lst = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline after the open brace in an unnamed temporary +# direct-list-initialization. +nl_type_brace_init_lst_open = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline before the close brace in an unnamed temporary +# direct-list-initialization. +nl_type_brace_init_lst_close = ignore # ignore/add/remove/force/not_defined + +# Whether to add a newline before '{'. +nl_before_brace_open = false # true/false + +# Whether to add a newline after '{'. +nl_after_brace_open = false # true/false + +# Whether to add a newline between the open brace and a trailing single-line +# comment. Requires nl_after_brace_open=true. +nl_after_brace_open_cmt = false # true/false + +# Whether to add a newline after a virtual brace open with a non-empty body. +# These occur in un-braced if/while/do/for statement bodies. +nl_after_vbrace_open = false # true/false + +# Whether to add a newline after a virtual brace open with an empty body. +# These occur in un-braced if/while/do/for statement bodies. +nl_after_vbrace_open_empty = false # true/false + +# Whether to add a newline after '}'. Does not apply if followed by a +# necessary ';'. +nl_after_brace_close = false # true/false + +# Whether to add a newline after a virtual brace close, +# as in 'if (foo) a++; <here> return;'. +nl_after_vbrace_close = false # true/false + +# Add or remove newline between the close brace and identifier, +# as in 'struct { int a; } <here> b;'. Affects enumerations, unions and +# structures. If set to ignore, uses nl_after_brace_close. +nl_brace_struct_var = ignore # ignore/add/remove/force/not_defined + +# Whether to alter newlines in '#define' macros. +nl_define_macro = false # true/false + +# Whether to alter newlines between consecutive parenthesis closes. The number +# of closing parentheses in a line will depend on respective open parenthesis +# lines. +nl_squeeze_paren_close = false # true/false + +# Whether to remove blanks after '#ifxx' and '#elxx', or before '#elxx' and +# '#endif'. Does not affect top-level #ifdefs. +nl_squeeze_ifdef = false # true/false + +# Makes the nl_squeeze_ifdef option affect the top-level #ifdefs as well. +nl_squeeze_ifdef_top_level = false # true/false + +# Add or remove blank line before 'if'. +nl_before_if = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line after 'if' statement. Add/Force work only if the +# next token is not a closing brace. +nl_after_if = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line before 'for'. +nl_before_for = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line after 'for' statement. +nl_after_for = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line before 'while'. +nl_before_while = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line after 'while' statement. +nl_after_while = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line before 'switch'. +nl_before_switch = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line after 'switch' statement. +nl_after_switch = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line before 'synchronized'. +nl_before_synchronized = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line after 'synchronized' statement. +nl_after_synchronized = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line before 'do'. +nl_before_do = ignore # ignore/add/remove/force/not_defined + +# Add or remove blank line after 'do/while' statement. +nl_after_do = ignore # ignore/add/remove/force/not_defined + +# Ignore nl_before_{if,for,switch,do,synchronized} if the control +# statement is immediately after a case statement. +# if nl_before_{if,for,switch,do} is set to remove, this option +# does nothing. +nl_before_ignore_after_case = false # true/false + +# Whether to put a blank line before 'return' statements, unless after an open +# brace. +nl_before_return = false # true/false + +# Whether to put a blank line after 'return' statements, unless followed by a +# close brace. +nl_after_return = false # true/false + +# Whether to put a blank line before a member '.' or '->' operators. +nl_before_member = ignore # ignore/add/remove/force/not_defined + +# (Java) Whether to put a blank line after a member '.' or '->' operators. +nl_after_member = ignore # ignore/add/remove/force/not_defined + +# Whether to double-space commented-entries in 'struct'/'union'/'enum'. +nl_ds_struct_enum_cmt = false # true/false + +# Whether to force a newline before '}' of a 'struct'/'union'/'enum'. +# (Lower priority than eat_blanks_before_close_brace.) +nl_ds_struct_enum_close_brace = false # true/false + +# Add or remove newline before or after (depending on pos_class_colon) a class +# colon, as in 'class Foo <here> : <or here> public Bar'. +nl_class_colon = ignore # ignore/add/remove/force/not_defined + +# Add or remove newline around a class constructor colon. The exact position +# depends on nl_constr_init_args, pos_constr_colon and pos_constr_comma. +nl_constr_colon = ignore # ignore/add/remove/force/not_defined + +# Whether to collapse a two-line namespace, like 'namespace foo\n{ decl; }' +# into a single line. If true, prevents other brace newline rules from turning +# such code into four lines. If true, it also preserves one-liner namespaces. +nl_namespace_two_to_one_liner = false # true/false + +# Whether to remove a newline in simple unbraced if statements, turning them +# into one-liners, as in 'if(b)\n i++;' => 'if(b) i++;'. +nl_create_if_one_liner = false # true/false + +# Whether to remove a newline in simple unbraced for statements, turning them +# into one-liners, as in 'for (...)\n stmt;' => 'for (...) stmt;'. +nl_create_for_one_liner = false # true/false + +# Whether to remove a newline in simple unbraced while statements, turning +# them into one-liners, as in 'while (expr)\n stmt;' => 'while (expr) stmt;'. +nl_create_while_one_liner = false # true/false + +# Whether to collapse a function definition whose body (not counting braces) +# is only one line so that the entire definition (prototype, braces, body) is +# a single line. +nl_create_func_def_one_liner = false # true/false + +# Whether to split one-line simple list definitions into three lines by +# adding newlines, as in 'int a[12] = { <here> 0 <here> };'. +nl_create_list_one_liner = false # true/false + +# Whether to split one-line simple unbraced if statements into two lines by +# adding a newline, as in 'if(b) <here> i++;'. +nl_split_if_one_liner = false # true/false + +# Whether to split one-line simple unbraced for statements into two lines by +# adding a newline, as in 'for (...) <here> stmt;'. +nl_split_for_one_liner = false # true/false + +# Whether to split one-line simple unbraced while statements into two lines by +# adding a newline, as in 'while (expr) <here> stmt;'. +nl_split_while_one_liner = false # true/false + +# Don't add a newline before a cpp-comment in a parameter list of a function +# call. +donot_add_nl_before_cpp_comment = false # true/false + +# +# Blank line options +# + +# The maximum number of consecutive newlines (3 = 2 blank lines). +nl_max = 0 # unsigned number + +# The maximum number of consecutive newlines in a function. +nl_max_blank_in_func = 0 # unsigned number + +# The number of newlines inside an empty function body. +# This option overrides eat_blanks_after_open_brace and +# eat_blanks_before_close_brace, but is ignored when +# nl_collapse_empty_body=true +nl_inside_empty_func = 0 # unsigned number + +# The number of newlines before a function prototype. +nl_before_func_body_proto = 0 # unsigned number + +# The number of newlines before a multi-line function definition. Where +# applicable, this option is overridden with eat_blanks_after_open_brace=true +nl_before_func_body_def = 0 # unsigned number + +# The number of newlines before a class constructor/destructor prototype. +nl_before_func_class_proto = 0 # unsigned number + +# The number of newlines before a class constructor/destructor definition. +nl_before_func_class_def = 0 # unsigned number + +# The number of newlines after a function prototype. +nl_after_func_proto = 0 # unsigned number + +# The number of newlines after a function prototype, if not followed by +# another function prototype. +nl_after_func_proto_group = 0 # unsigned number + +# The number of newlines after a class constructor/destructor prototype. +nl_after_func_class_proto = 0 # unsigned number + +# The number of newlines after a class constructor/destructor prototype, +# if not followed by another constructor/destructor prototype. +nl_after_func_class_proto_group = 0 # unsigned number + +# Whether one-line method definitions inside a class body should be treated +# as if they were prototypes for the purposes of adding newlines. +# +# Requires nl_class_leave_one_liners=true. Overrides nl_before_func_body_def +# and nl_before_func_class_def for one-liners. +nl_class_leave_one_liner_groups = false # true/false + +# The number of newlines after '}' of a multi-line function body. +nl_after_func_body = 0 # unsigned number + +# The number of newlines after '}' of a multi-line function body in a class +# declaration. Also affects class constructors/destructors. +# +# Overrides nl_after_func_body. +nl_after_func_body_class = 0 # unsigned number + +# The number of newlines after '}' of a single line function body. Also +# affects class constructors/destructors. +# +# Overrides nl_after_func_body and nl_after_func_body_class. +nl_after_func_body_one_liner = 0 # unsigned number + +# The number of blank lines after a block of variable definitions at the top +# of a function body. +# +# 0: No change (default). +nl_func_var_def_blk = 0 # unsigned number + +# The number of newlines before a block of typedefs. If nl_after_access_spec +# is non-zero, that option takes precedence. +# +# 0: No change (default). +nl_typedef_blk_start = 0 # unsigned number + +# The number of newlines after a block of typedefs. +# +# 0: No change (default). +nl_typedef_blk_end = 0 # unsigned number + +# The maximum number of consecutive newlines within a block of typedefs. +# +# 0: No change (default). +nl_typedef_blk_in = 0 # unsigned number + +# The number of empty newlines before a block of variable definitions +# not at the top of a function body. If nl_after_access_spec is non-zero, +# that option takes precedence. +# +# 0: No change (default). +nl_var_def_blk_start = 0 # unsigned number + +# The number of empty newlines after a block of variable definitions +# not at the top of a function body. +# +# 0: No change (default). +nl_var_def_blk_end = 0 # unsigned number + +# The maximum number of consecutive newlines within a block of variable +# definitions. +# +# 0: No change (default). +nl_var_def_blk_in = 0 # unsigned number + +# The minimum number of newlines before a multi-line comment. +# Doesn't apply if after a brace open or another multi-line comment. +nl_before_block_comment = 0 # unsigned number + +# The minimum number of newlines before a single-line C comment. +# Doesn't apply if after a brace open or other single-line C comments. +nl_before_c_comment = 0 # unsigned number + +# The minimum number of newlines before a CPP comment. +# Doesn't apply if after a brace open or other CPP comments. +nl_before_cpp_comment = 0 # unsigned number + +# Whether to force a newline after a multi-line comment. +nl_after_multiline_comment = false # true/false + +# Whether to force a newline after a label's colon. +nl_after_label_colon = false # true/false + +# The number of newlines before a struct definition. +nl_before_struct = 0 # unsigned number + +# The number of newlines after '}' or ';' of a struct/enum/union definition. +nl_after_struct = 0 # unsigned number + +# The number of newlines before a class definition. +nl_before_class = 0 # unsigned number + +# The number of newlines after '}' or ';' of a class definition. +nl_after_class = 0 # unsigned number + +# The number of newlines before a namespace. +nl_before_namespace = 0 # unsigned number + +# The number of newlines after '{' of a namespace. This also adds newlines +# before the matching '}'. +# +# 0: Apply eat_blanks_after_open_brace or eat_blanks_before_close_brace if +# applicable, otherwise no change. +# +# Overrides eat_blanks_after_open_brace and eat_blanks_before_close_brace. +nl_inside_namespace = 0 # unsigned number + +# The number of newlines after '}' of a namespace. +nl_after_namespace = 0 # unsigned number + +# The number of newlines before an access specifier label. This also includes +# the Qt-specific 'signals:' and 'slots:'. Will not change the newline count +# if after a brace open. +# +# 0: No change (default). +nl_before_access_spec = 0 # unsigned number + +# The number of newlines after an access specifier label. This also includes +# the Qt-specific 'signals:' and 'slots:'. Will not change the newline count +# if after a brace open. +# +# 0: No change (default). +# +# Overrides nl_typedef_blk_start and nl_var_def_blk_start. +nl_after_access_spec = 0 # unsigned number + +# The number of newlines between a function definition and the function +# comment, as in '// comment\n <here> void foo() {...}'. +# +# 0: No change (default). +nl_comment_func_def = 0 # unsigned number + +# The number of newlines after a try-catch-finally block that isn't followed +# by a brace close. +# +# 0: No change (default). +nl_after_try_catch_finally = 0 # unsigned number + +# (C#) The number of newlines before and after a property, indexer or event +# declaration. +# +# 0: No change (default). +nl_around_cs_property = 0 # unsigned number + +# (C#) The number of newlines between the get/set/add/remove handlers. +# +# 0: No change (default). +nl_between_get_set = 0 # unsigned number + +# (C#) Add or remove newline between property and the '{'. +nl_property_brace = ignore # ignore/add/remove/force/not_defined + +# Whether to remove blank lines after '{'. +eat_blanks_after_open_brace = false # true/false + +# Whether to remove blank lines before '}'. +eat_blanks_before_close_brace = false # true/false + +# How aggressively to remove extra newlines not in preprocessor. +# +# 0: No change (default) +# 1: Remove most newlines not handled by other config +# 2: Remove all newlines and reformat completely by config +nl_remove_extra_newlines = 0 # unsigned number + +# (Java) Add or remove newline after an annotation statement. Only affects +# annotations that are after a newline. +nl_after_annotation = ignore # ignore/add/remove/force/not_defined + +# (Java) Add or remove newline between two annotations. +nl_between_annotation = ignore # ignore/add/remove/force/not_defined + +# The number of newlines before a whole-file #ifdef. +# +# 0: No change (default). +nl_before_whole_file_ifdef = 0 # unsigned number + +# The number of newlines after a whole-file #ifdef. +# +# 0: No change (default). +nl_after_whole_file_ifdef = 0 # unsigned number + +# The number of newlines before a whole-file #endif. +# +# 0: No change (default). +nl_before_whole_file_endif = 0 # unsigned number + +# The number of newlines after a whole-file #endif. +# +# 0: No change (default). +nl_after_whole_file_endif = 0 # unsigned number + +# +# Positioning options +# + +# The position of arithmetic operators in wrapped expressions. +pos_arith = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of assignment in wrapped expressions. Do not affect '=' +# followed by '{'. +pos_assign = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of Boolean operators in wrapped expressions. +pos_bool = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of comparison operators in wrapped expressions. +pos_compare = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of conditional operators, as in the '?' and ':' of +# 'expr ? stmt : stmt', in wrapped expressions. +pos_conditional = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of the comma in wrapped expressions. +pos_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of the comma in enum entries. +pos_enum_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of the comma in the base class list if there is more than one +# line. Affects nl_class_init_args. +pos_class_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of the comma in the constructor initialization list. +# Related to nl_constr_colon, nl_constr_init_args and pos_constr_colon. +pos_constr_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of trailing/leading class colon, between class and base class +# list. Affects nl_class_colon. +pos_class_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of colons between constructor and member initialization. +# Related to nl_constr_colon, nl_constr_init_args and pos_constr_comma. +pos_constr_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# The position of shift operators in wrapped expressions. +pos_shift = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force + +# +# Line splitting options +# + +# Try to limit code width to N columns. +code_width = 0 # unsigned number + +# Whether to fully split long 'for' statements at semi-colons. +ls_for_split_full = false # true/false + +# Whether to fully split long function prototypes/calls at commas. +# The option ls_code_width has priority over the option ls_func_split_full. +ls_func_split_full = false # true/false + +# Whether to split lines as close to code_width as possible and ignore some +# groupings. +# The option ls_code_width has priority over the option ls_func_split_full. +ls_code_width = false # true/false + +# +# Code alignment options (not left column spaces/tabs) +# + +# Whether to keep non-indenting tabs. +align_keep_tabs = false # true/false + +# Whether to use tabs for aligning. +align_with_tabs = false # true/false + +# Whether to bump out to the next tab when aligning. +align_on_tabstop = false # true/false + +# Whether to right-align numbers. +align_number_right = false # true/false + +# Whether to keep whitespace not required for alignment. +align_keep_extra_space = false # true/false + +# Whether to align variable definitions in prototypes and functions. +align_func_params = false # true/false + +# The span for aligning parameter definitions in function on parameter name. +# +# 0: Don't align (default). +align_func_params_span = 0 # unsigned number + +# The threshold for aligning function parameter definitions. +# Use a negative number for absolute thresholds. +# +# 0: No limit (default). +align_func_params_thresh = 0 # number + +# The gap for aligning function parameter definitions. +align_func_params_gap = 0 # unsigned number + +# The span for aligning constructor value. +# +# 0: Don't align (default). +align_constr_value_span = 0 # unsigned number + +# The threshold for aligning constructor value. +# Use a negative number for absolute thresholds. +# +# 0: No limit (default). +align_constr_value_thresh = 0 # number + +# The gap for aligning constructor value. +align_constr_value_gap = 0 # unsigned number + +# Whether to align parameters in single-line functions that have the same +# name. The function names must already be aligned with each other. +align_same_func_call_params = false # true/false + +# The span for aligning function-call parameters for single line functions. +# +# 0: Don't align (default). +align_same_func_call_params_span = 0 # unsigned number + +# The threshold for aligning function-call parameters for single line +# functions. +# Use a negative number for absolute thresholds. +# +# 0: No limit (default). +align_same_func_call_params_thresh = 0 # number + +# The span for aligning variable definitions. +# +# 0: Don't align (default). +align_var_def_span = 0 # unsigned number + +# How to consider (or treat) the '*' in the alignment of variable definitions. +# +# 0: Part of the type 'void * foo;' (default) +# 1: Part of the variable 'void *foo;' +# 2: Dangling 'void *foo;' +# Dangling: the '*' will not be taken into account when aligning. +align_var_def_star_style = 0 # unsigned number + +# How to consider (or treat) the '&' in the alignment of variable definitions. +# +# 0: Part of the type 'long & foo;' (default) +# 1: Part of the variable 'long &foo;' +# 2: Dangling 'long &foo;' +# Dangling: the '&' will not be taken into account when aligning. +align_var_def_amp_style = 0 # unsigned number + +# The threshold for aligning variable definitions. +# Use a negative number for absolute thresholds. +# +# 0: No limit (default). +align_var_def_thresh = 0 # number + +# The gap for aligning variable definitions. +align_var_def_gap = 0 # unsigned number + +# Whether to align the colon in struct bit fields. +align_var_def_colon = false # true/false + +# The gap for aligning the colon in struct bit fields. +align_var_def_colon_gap = 0 # unsigned number + +# Whether to align any attribute after the variable name. +align_var_def_attribute = false # true/false + +# Whether to align inline struct/enum/union variable definitions. +align_var_def_inline = false # true/false + +# The span for aligning on '=' in assignments. +# +# 0: Don't align (default). +align_assign_span = 0 # unsigned number + +# The span for aligning on '{' in braced init list. +# +# 0: Don't align (default). +align_braced_init_list_span = 0 # unsigned number + +# The span for aligning on '=' in function prototype modifier. +# +# 0: Don't align (default). +align_assign_func_proto_span = 0 # unsigned number + +# The threshold for aligning on '=' in assignments. +# Use a negative number for absolute thresholds. +# +# 0: No limit (default). +align_assign_thresh = 0 # number + +# Whether to align on the left most assignment when multiple +# definitions are found on the same line. +# Depends on 'align_assign_span' and 'align_assign_thresh' settings. +align_assign_on_multi_var_defs = false # true/false + +# The threshold for aligning on '{' in braced init list. +# Use a negative number for absolute thresholds. +# +# 0: No limit (default). +align_braced_init_list_thresh = 0 # number + +# How to apply align_assign_span to function declaration "assignments", i.e. +# 'virtual void foo() = 0' or '~foo() = {default|delete}'. +# +# 0: Align with other assignments (default) +# 1: Align with each other, ignoring regular assignments +# 2: Don't align +align_assign_decl_func = 0 # unsigned number + +# The span for aligning on '=' in enums. +# +# 0: Don't align (default). +align_enum_equ_span = 0 # unsigned number + +# The threshold for aligning on '=' in enums. +# Use a negative number for absolute thresholds. +# +# 0: no limit (default). +align_enum_equ_thresh = 0 # number + +# The span for aligning class member definitions. +# +# 0: Don't align (default). +align_var_class_span = 0 # unsigned number + +# The threshold for aligning class member definitions. +# Use a negative number for absolute thresholds. +# +# 0: No limit (default). +align_var_class_thresh = 0 # number + +# The gap for aligning class member definitions. +align_var_class_gap = 0 # unsigned number + +# The span for aligning struct/union member definitions. +# +# 0: Don't align (default). +align_var_struct_span = 0 # unsigned number + +# The threshold for aligning struct/union member definitions. +# Use a negative number for absolute thresholds. +# +# 0: No limit (default). +align_var_struct_thresh = 0 # number + +# The gap for aligning struct/union member definitions. +align_var_struct_gap = 0 # unsigned number + +# The span for aligning struct initializer values. +# +# 0: Don't align (default). +align_struct_init_span = 0 # unsigned number + +# The span for aligning single-line typedefs. +# +# 0: Don't align (default). +align_typedef_span = 0 # unsigned number + +# The minimum space between the type and the synonym of a typedef. +align_typedef_gap = 0 # unsigned number + +# How to align typedef'd functions with other typedefs. +# +# 0: Don't mix them at all (default) +# 1: Align the open parenthesis with the types +# 2: Align the function type name with the other type names +align_typedef_func = 0 # unsigned number + +# How to consider (or treat) the '*' in the alignment of typedefs. +# +# 0: Part of the typedef type, 'typedef int * pint;' (default) +# 1: Part of type name: 'typedef int *pint;' +# 2: Dangling: 'typedef int *pint;' +# Dangling: the '*' will not be taken into account when aligning. +align_typedef_star_style = 0 # unsigned number + +# How to consider (or treat) the '&' in the alignment of typedefs. +# +# 0: Part of the typedef type, 'typedef int & intref;' (default) +# 1: Part of type name: 'typedef int &intref;' +# 2: Dangling: 'typedef int &intref;' +# Dangling: the '&' will not be taken into account when aligning. +align_typedef_amp_style = 0 # unsigned number + +# The span for aligning comments that end lines. +# +# 0: Don't align (default). +align_right_cmt_span = 0 # unsigned number + +# Minimum number of columns between preceding text and a trailing comment in +# order for the comment to qualify for being aligned. Must be non-zero to have +# an effect. +align_right_cmt_gap = 0 # unsigned number + +# If aligning comments, whether to mix with comments after '}' and #endif with +# less than three spaces before the comment. +align_right_cmt_mix = false # true/false + +# Whether to only align trailing comments that are at the same brace level. +align_right_cmt_same_level = false # true/false + +# Minimum column at which to align trailing comments. Comments which are +# aligned beyond this column, but which can be aligned in a lesser column, +# may be "pulled in". +# +# 0: Ignore (default). +align_right_cmt_at_col = 0 # unsigned number + +# The span for aligning function prototypes. +# +# 0: Don't align (default). +align_func_proto_span = 0 # unsigned number + +# How to consider (or treat) the '*' in the alignment of function prototypes. +# +# 0: Part of the type 'void * foo();' (default) +# 1: Part of the function 'void *foo();' +# 2: Dangling 'void *foo();' +# Dangling: the '*' will not be taken into account when aligning. +align_func_proto_star_style = 0 # unsigned number + +# How to consider (or treat) the '&' in the alignment of function prototypes. +# +# 0: Part of the type 'long & foo();' (default) +# 1: Part of the function 'long &foo();' +# 2: Dangling 'long &foo();' +# Dangling: the '&' will not be taken into account when aligning. +align_func_proto_amp_style = 0 # unsigned number + +# The threshold for aligning function prototypes. +# Use a negative number for absolute thresholds. +# +# 0: No limit (default). +align_func_proto_thresh = 0 # number + +# Minimum gap between the return type and the function name. +align_func_proto_gap = 0 # unsigned number + +# Whether to align function prototypes on the 'operator' keyword instead of +# what follows. +align_on_operator = false # true/false + +# Whether to mix aligning prototype and variable declarations. If true, +# align_var_def_XXX options are used instead of align_func_proto_XXX options. +align_mix_var_proto = false # true/false + +# Whether to align single-line functions with function prototypes. +# Uses align_func_proto_span. +align_single_line_func = false # true/false + +# Whether to align the open brace of single-line functions. +# Requires align_single_line_func=true. Uses align_func_proto_span. +align_single_line_brace = false # true/false + +# Gap for align_single_line_brace. +align_single_line_brace_gap = 0 # unsigned number + +# (OC) The span for aligning Objective-C message specifications. +# +# 0: Don't align (default). +align_oc_msg_spec_span = 0 # unsigned number + +# Whether to align macros wrapped with a backslash and a newline. This will +# not work right if the macro contains a multi-line comment. +align_nl_cont = false # true/false + +# Whether to align macro functions and variables together. +align_pp_define_together = false # true/false + +# The span for aligning on '#define' bodies. +# +# =0: Don't align (default) +# >0: Number of lines (including comments) between blocks +align_pp_define_span = 0 # unsigned number + +# The minimum space between label and value of a preprocessor define. +align_pp_define_gap = 0 # unsigned number + +# Whether to align lines that start with '<<' with previous '<<'. +# +# Default: true +align_left_shift = true # true/false + +# Whether to align comma-separated statements following '<<' (as used to +# initialize Eigen matrices). +align_eigen_comma_init = false # true/false + +# Whether to align text after 'asm volatile ()' colons. +align_asm_colon = false # true/false + +# (OC) Span for aligning parameters in an Objective-C message call +# on the ':'. +# +# 0: Don't align. +align_oc_msg_colon_span = 0 # unsigned number + +# (OC) Whether to always align with the first parameter, even if it is too +# short. +align_oc_msg_colon_first = false # true/false + +# (OC) Whether to align parameters in an Objective-C '+' or '-' declaration +# on the ':'. +align_oc_decl_colon = false # true/false + +# (OC) Whether to not align parameters in an Objectve-C message call if first +# colon is not on next line of the message call (the same way Xcode does +# alignment) +align_oc_msg_colon_xcode_like = false # true/false + +# +# Comment modification options +# + +# Try to wrap comments at N columns. +cmt_width = 0 # unsigned number + +# How to reflow comments. +# +# 0: No reflowing (apart from the line wrapping due to cmt_width) (default) +# 1: No touching at all +# 2: Full reflow (enable cmt_indent_multi for indent with line wrapping due to cmt_width) +cmt_reflow_mode = 0 # unsigned number + +# Path to a file that contains regular expressions describing patterns for +# which the end of one line and the beginning of the next will be folded into +# the same sentence or paragraph during full comment reflow. The regular +# expressions are described using ECMAScript syntax. The syntax for this +# specification is as follows, where "..." indicates the custom regular +# expression and "n" indicates the nth end_of_prev_line_regex and +# beg_of_next_line_regex regular expression pair: +# +# end_of_prev_line_regex[1] = "...$" +# beg_of_next_line_regex[1] = "^..." +# end_of_prev_line_regex[2] = "...$" +# beg_of_next_line_regex[2] = "^..." +# . +# . +# . +# end_of_prev_line_regex[n] = "...$" +# beg_of_next_line_regex[n] = "^..." +# +# Note that use of this option overrides the default reflow fold regular +# expressions, which are internally defined as follows: +# +# end_of_prev_line_regex[1] = "[\w,\]\)]$" +# beg_of_next_line_regex[1] = "^[\w,\[\(]" +# end_of_prev_line_regex[2] = "\.$" +# beg_of_next_line_regex[2] = "^[A-Z]" +cmt_reflow_fold_regex_file = "" # string + +# Whether to indent wrapped lines to the start of the encompassing paragraph +# during full comment reflow (cmt_reflow_mode = 2). Overrides the value +# specified by cmt_sp_after_star_cont. +# +# Note that cmt_align_doxygen_javadoc_tags overrides this option for +# paragraphs associated with javadoc tags +cmt_reflow_indent_to_paragraph_start = false # true/false + +# Whether to convert all tabs to spaces in comments. If false, tabs in +# comments are left alone, unless used for indenting. +cmt_convert_tab_to_spaces = false # true/false + +# Whether to apply changes to multi-line comments, including cmt_width, +# keyword substitution and leading chars. +# +# Default: true +cmt_indent_multi = true # true/false + +# Whether to align doxygen javadoc-style tags ('@param', '@return', etc.) +# and corresponding fields such that groups of consecutive block tags, +# parameter names, and descriptions align with one another. Overrides that +# which is specified by the cmt_sp_after_star_cont. If cmt_width > 0, it may +# be necessary to enable cmt_indent_multi and set cmt_reflow_mode = 2 +# in order to achieve the desired alignment for line-wrapping. +cmt_align_doxygen_javadoc_tags = false # true/false + +# The number of spaces to insert after the star and before doxygen +# javadoc-style tags (@param, @return, etc). Requires enabling +# cmt_align_doxygen_javadoc_tags. Overrides that which is specified by the +# cmt_sp_after_star_cont. +# +# Default: 1 +cmt_sp_before_doxygen_javadoc_tags = 1 # unsigned number + +# Whether to change trailing, single-line c-comments into cpp-comments. +cmt_trailing_single_line_c_to_cpp = false # true/false + +# Whether to group c-comments that look like they are in a block. +cmt_c_group = false # true/false + +# Whether to put an empty '/*' on the first line of the combined c-comment. +cmt_c_nl_start = false # true/false + +# Whether to add a newline before the closing '*/' of the combined c-comment. +cmt_c_nl_end = false # true/false + +# Whether to change cpp-comments into c-comments. +cmt_cpp_to_c = false # true/false + +# Whether to group cpp-comments that look like they are in a block. Only +# meaningful if cmt_cpp_to_c=true. +cmt_cpp_group = false # true/false + +# Whether to put an empty '/*' on the first line of the combined cpp-comment +# when converting to a c-comment. +# +# Requires cmt_cpp_to_c=true and cmt_cpp_group=true. +cmt_cpp_nl_start = false # true/false + +# Whether to add a newline before the closing '*/' of the combined cpp-comment +# when converting to a c-comment. +# +# Requires cmt_cpp_to_c=true and cmt_cpp_group=true. +cmt_cpp_nl_end = false # true/false + +# Whether to put a star on subsequent comment lines. +cmt_star_cont = false # true/false + +# The number of spaces to insert at the start of subsequent comment lines. +cmt_sp_before_star_cont = 0 # unsigned number + +# The number of spaces to insert after the star on subsequent comment lines. +cmt_sp_after_star_cont = 0 # unsigned number + +# For multi-line comments with a '*' lead, remove leading spaces if the first +# and last lines of the comment are the same length. +# +# Default: true +cmt_multi_check_last = true # true/false + +# For multi-line comments with a '*' lead, remove leading spaces if the first +# and last lines of the comment are the same length AND if the length is +# bigger as the first_len minimum. +# +# Default: 4 +cmt_multi_first_len_minimum = 4 # unsigned number + +# Path to a file that contains text to insert at the beginning of a file if +# the file doesn't start with a C/C++ comment. If the inserted text contains +# '$(filename)', that will be replaced with the current file's name. +cmt_insert_file_header = "" # string + +# Path to a file that contains text to insert at the end of a file if the +# file doesn't end with a C/C++ comment. If the inserted text contains +# '$(filename)', that will be replaced with the current file's name. +cmt_insert_file_footer = "" # string + +# Path to a file that contains text to insert before a function definition if +# the function isn't preceded by a C/C++ comment. If the inserted text +# contains '$(function)', '$(javaparam)' or '$(fclass)', these will be +# replaced with, respectively, the name of the function, the javadoc '@param' +# and '@return' stuff, or the name of the class to which the member function +# belongs. +cmt_insert_func_header = "" # string + +# Path to a file that contains text to insert before a class if the class +# isn't preceded by a C/C++ comment. If the inserted text contains '$(class)', +# that will be replaced with the class name. +cmt_insert_class_header = "" # string + +# Path to a file that contains text to insert before an Objective-C message +# specification, if the method isn't preceded by a C/C++ comment. If the +# inserted text contains '$(message)' or '$(javaparam)', these will be +# replaced with, respectively, the name of the function, or the javadoc +# '@param' and '@return' stuff. +cmt_insert_oc_msg_header = "" # string + +# Whether a comment should be inserted if a preprocessor is encountered when +# stepping backwards from a function name. +# +# Applies to cmt_insert_oc_msg_header, cmt_insert_func_header and +# cmt_insert_class_header. +cmt_insert_before_preproc = false # true/false + +# Whether a comment should be inserted if a function is declared inline to a +# class definition. +# +# Applies to cmt_insert_func_header. +# +# Default: true +cmt_insert_before_inlines = true # true/false + +# Whether a comment should be inserted if the function is a class constructor +# or destructor. +# +# Applies to cmt_insert_func_header. +cmt_insert_before_ctor_dtor = false # true/false + +# +# Code modifying options (non-whitespace) +# + +# Add or remove braces on a single-line 'do' statement. +mod_full_brace_do = ignore # ignore/add/remove/force/not_defined + +# Add or remove braces on a single-line 'for' statement. +mod_full_brace_for = ignore # ignore/add/remove/force/not_defined + +# (Pawn) Add or remove braces on a single-line function definition. +mod_full_brace_function = ignore # ignore/add/remove/force/not_defined + +# Add or remove braces on a single-line 'if' statement. Braces will not be +# removed if the braced statement contains an 'else'. +mod_full_brace_if = ignore # ignore/add/remove/force/not_defined + +# Whether to enforce that all blocks of an 'if'/'else if'/'else' chain either +# have, or do not have, braces. Overrides mod_full_brace_if. +# +# 0: Don't override mod_full_brace_if +# 1: Add braces to all blocks if any block needs braces and remove braces if +# they can be removed from all blocks +# 2: Add braces to all blocks if any block already has braces, regardless of +# whether it needs them +# 3: Add braces to all blocks if any block needs braces and remove braces if +# they can be removed from all blocks, except if all blocks have braces +# despite none needing them +mod_full_brace_if_chain = 0 # unsigned number + +# Whether to add braces to all blocks of an 'if'/'else if'/'else' chain. +# If true, mod_full_brace_if_chain will only remove braces from an 'if' that +# does not have an 'else if' or 'else'. +mod_full_brace_if_chain_only = false # true/false + +# Add or remove braces on single-line 'while' statement. +mod_full_brace_while = ignore # ignore/add/remove/force/not_defined + +# Add or remove braces on single-line 'using ()' statement. +mod_full_brace_using = ignore # ignore/add/remove/force/not_defined + +# Don't remove braces around statements that span N newlines +mod_full_brace_nl = 0 # unsigned number + +# Whether to prevent removal of braces from 'if'/'for'/'while'/etc. blocks +# which span multiple lines. +# +# Affects: +# mod_full_brace_for +# mod_full_brace_if +# mod_full_brace_if_chain +# mod_full_brace_if_chain_only +# mod_full_brace_while +# mod_full_brace_using +# +# Does not affect: +# mod_full_brace_do +# mod_full_brace_function +mod_full_brace_nl_block_rem_mlcond = false # true/false + +# Add or remove unnecessary parenthesis on 'return' statement. +mod_paren_on_return = ignore # ignore/add/remove/force/not_defined + +# (Pawn) Whether to change optional semicolons to real semicolons. +mod_pawn_semicolon = false # true/false + +# Whether to fully parenthesize Boolean expressions in 'while' and 'if' +# statement, as in 'if (a && b > c)' => 'if (a && (b > c))'. +mod_full_paren_if_bool = false # true/false + +# Whether to fully parenthesize Boolean expressions after '=' +# statement, as in 'x = a && b > c;' => 'x = (a && (b > c));'. +mod_full_paren_assign_bool = false # true/false + +# Whether to fully parenthesize Boolean expressions after '=' +# statement, as in 'return a && b > c;' => 'return (a && (b > c));'. +mod_full_paren_return_bool = false # true/false + +# Whether to remove superfluous semicolons. +mod_remove_extra_semicolon = false # true/false + +# Whether to remove duplicate include. +mod_remove_duplicate_include = false # true/false + +# If a function body exceeds the specified number of newlines and doesn't have +# a comment after the close brace, a comment will be added. +mod_add_long_function_closebrace_comment = 0 # unsigned number + +# If a namespace body exceeds the specified number of newlines and doesn't +# have a comment after the close brace, a comment will be added. +mod_add_long_namespace_closebrace_comment = 0 # unsigned number + +# If a class body exceeds the specified number of newlines and doesn't have a +# comment after the close brace, a comment will be added. +mod_add_long_class_closebrace_comment = 0 # unsigned number + +# If a switch body exceeds the specified number of newlines and doesn't have a +# comment after the close brace, a comment will be added. +mod_add_long_switch_closebrace_comment = 0 # unsigned number + +# If an #ifdef body exceeds the specified number of newlines and doesn't have +# a comment after the #endif, a comment will be added. +mod_add_long_ifdef_endif_comment = 0 # unsigned number + +# If an #ifdef or #else body exceeds the specified number of newlines and +# doesn't have a comment after the #else, a comment will be added. +mod_add_long_ifdef_else_comment = 0 # unsigned number + +# Whether to take care of the case by the mod_sort_xx options. +mod_sort_case_sensitive = false # true/false + +# Whether to sort consecutive single-line 'import' statements. +mod_sort_import = false # true/false + +# (C#) Whether to sort consecutive single-line 'using' statements. +mod_sort_using = false # true/false + +# Whether to sort consecutive single-line '#include' statements (C/C++) and +# '#import' statements (Objective-C). Be aware that this has the potential to +# break your code if your includes/imports have ordering dependencies. +mod_sort_include = false # true/false + +# Whether to prioritize '#include' and '#import' statements that contain +# filename without extension when sorting is enabled. +mod_sort_incl_import_prioritize_filename = false # true/false + +# Whether to prioritize '#include' and '#import' statements that does not +# contain extensions when sorting is enabled. +mod_sort_incl_import_prioritize_extensionless = false # true/false + +# Whether to prioritize '#include' and '#import' statements that contain +# angle over quotes when sorting is enabled. +mod_sort_incl_import_prioritize_angle_over_quotes = false # true/false + +# Whether to ignore file extension in '#include' and '#import' statements +# for sorting comparison. +mod_sort_incl_import_ignore_extension = false # true/false + +# Whether to group '#include' and '#import' statements when sorting is enabled. +mod_sort_incl_import_grouping_enabled = false # true/false + +# Whether to move a 'break' that appears after a fully braced 'case' before +# the close brace, as in 'case X: { ... } break;' => 'case X: { ... break; }'. +mod_move_case_break = false # true/false + +# Whether to move a 'return' that appears after a fully braced 'case' before +# the close brace, as in 'case X: { ... } return;' => 'case X: { ... return; }'. +mod_move_case_return = false # true/false + +# Add or remove braces around a fully braced case statement. Will only remove +# braces if there are no variable declarations in the block. +mod_case_brace = ignore # ignore/add/remove/force/not_defined + +# Whether to remove a void 'return;' that appears as the last statement in a +# function. +mod_remove_empty_return = false # true/false + +# Add or remove the comma after the last value of an enumeration. +mod_enum_last_comma = ignore # ignore/add/remove/force/not_defined + +# (OC) Whether to organize the properties. If true, properties will be +# rearranged according to the mod_sort_oc_property_*_weight factors. +mod_sort_oc_properties = false # true/false + +# (OC) Weight of a class property modifier. +mod_sort_oc_property_class_weight = 0 # number + +# (OC) Weight of 'atomic' and 'nonatomic'. +mod_sort_oc_property_thread_safe_weight = 0 # number + +# (OC) Weight of 'readwrite' when organizing properties. +mod_sort_oc_property_readwrite_weight = 0 # number + +# (OC) Weight of a reference type specifier ('retain', 'copy', 'assign', +# 'weak', 'strong') when organizing properties. +mod_sort_oc_property_reference_weight = 0 # number + +# (OC) Weight of getter type ('getter=') when organizing properties. +mod_sort_oc_property_getter_weight = 0 # number + +# (OC) Weight of setter type ('setter=') when organizing properties. +mod_sort_oc_property_setter_weight = 0 # number + +# (OC) Weight of nullability type ('nullable', 'nonnull', 'null_unspecified', +# 'null_resettable') when organizing properties. +mod_sort_oc_property_nullability_weight = 0 # number + +# +# Preprocessor options +# + +# Add or remove indentation of preprocessor directives inside #if blocks +# at brace level 0 (file-level). +pp_indent = ignore # ignore/add/remove/force/not_defined + +# Whether to indent #if/#else/#endif at the brace level. If false, these are +# indented from column 1. +pp_indent_at_level = false # true/false + +# Whether to indent #if/#else/#endif at the parenthesis level if the brace +# level is 0. If false, these are indented from column 1. +pp_indent_at_level0 = false # true/false + +# Specifies the number of columns to indent preprocessors per level +# at brace level 0 (file-level). If pp_indent_at_level=false, also specifies +# the number of columns to indent preprocessors per level +# at brace level > 0 (function-level). +# +# Default: 1 +pp_indent_count = 1 # unsigned number + +# Add or remove space after # based on pp_level of #if blocks. +pp_space = ignore # ignore/add/remove/force/not_defined + +# Sets the number of spaces per level added with pp_space. +pp_space_count = 0 # unsigned number + +# The indent for '#region' and '#endregion' in C# and '#pragma region' in +# C/C++. Negative values decrease indent down to the first column. +pp_indent_region = 0 # number + +# Whether to indent the code between #region and #endregion. +pp_region_indent_code = false # true/false + +# If pp_indent_at_level=true, sets the indent for #if, #else and #endif when +# not at file-level. Negative values decrease indent down to the first column. +# +# =0: Indent preprocessors using output_tab_size +# >0: Column at which all preprocessors will be indented +pp_indent_if = 0 # number + +# Whether to indent the code between #if, #else and #endif. +pp_if_indent_code = false # true/false + +# Whether to indent the body of an #if that encompasses all the code in the file. +pp_indent_in_guard = false # true/false + +# Whether to indent '#define' at the brace level. If false, these are +# indented from column 1. +pp_define_at_level = false # true/false + +# Whether to indent '#include' at the brace level. +pp_include_at_level = false # true/false + +# Whether to ignore the '#define' body while formatting. +pp_ignore_define_body = false # true/false + +# Whether to indent case statements between #if, #else, and #endif. +# Only applies to the indent of the preprocesser that the case statements +# directly inside of. +# +# Default: true +pp_indent_case = true # true/false + +# Whether to indent whole function definitions between #if, #else, and #endif. +# Only applies to the indent of the preprocesser that the function definition +# is directly inside of. +# +# Default: true +pp_indent_func_def = true # true/false + +# Whether to indent extern C blocks between #if, #else, and #endif. +# Only applies to the indent of the preprocesser that the extern block is +# directly inside of. +# +# Default: true +pp_indent_extern = true # true/false + +# How to indent braces directly inside #if, #else, and #endif. +# Requires pp_if_indent_code=true and only applies to the indent of the +# preprocesser that the braces are directly inside of. +# 0: No extra indent +# 1: Indent by one level +# -1: Preserve original indentation +# +# Default: 1 +pp_indent_brace = 1 # number + +# Whether to print warning messages for unbalanced #if and #else blocks. +# This will print a message in the following cases: +# - if an #ifdef block ends on a different indent level than +# where it started from. Example: +# +# #ifdef TEST +# int i; +# { +# int j; +# #endif +# +# - an #elif/#else block ends on a different indent level than +# the corresponding #ifdef block. Example: +# +# #ifdef TEST +# int i; +# #else +# } +# int j; +# #endif +pp_warn_unbalanced_if = false # true/false + +# +# Sort includes options +# + +# The regex for include category with priority 0. +include_category_0 = "" # string + +# The regex for include category with priority 1. +include_category_1 = "" # string + +# The regex for include category with priority 2. +include_category_2 = "" # string + +# +# Use or Do not Use options +# + +# true: indent_func_call_param will be used (default) +# false: indent_func_call_param will NOT be used +# +# Default: true +use_indent_func_call_param = true # true/false + +# The value of the indentation for a continuation line is calculated +# differently if the statement is: +# - a declaration: your case with QString fileName ... +# - an assignment: your case with pSettings = new QSettings( ... +# +# At the second case the indentation value might be used twice: +# - at the assignment +# - at the function call (if present) +# +# To prevent the double use of the indentation value, use this option with the +# value 'true'. +# +# true: indent_continue will be used only once +# false: indent_continue will be used every time (default) +# +# Requires indent_ignore_first_continue=false. +use_indent_continue_only_once = false # true/false + +# The indentation can be: +# - after the assignment, at the '[' character +# - at the begin of the lambda body +# +# true: indentation will be after the assignment +# false: indentation will be at the begin of the lambda body (default) +indent_cpp_lambda_only_once = false # true/false + +# Whether sp_after_angle takes precedence over sp_inside_fparen. This was the +# historic behavior, but is probably not the desired behavior, so this is off +# by default. +use_sp_after_angle_always = false # true/false + +# Whether to apply special formatting for Qt SIGNAL/SLOT macros. Essentially, +# this tries to format these so that they match Qt's normalized form (i.e. the +# result of QMetaObject::normalizedSignature), which can slightly improve the +# performance of the QObject::connect call, rather than how they would +# otherwise be formatted. +# +# See options_for_QT.cpp for details. +# +# Default: true +use_options_overriding_for_qt_macros = true # true/false + +# If true: the form feed character is removed from the list of whitespace +# characters. See https://en.cppreference.com/w/cpp/string/byte/isspace. +use_form_feed_no_more_as_whitespace_character = false # true/false + +# +# Warn levels - 1: error, 2: warning (default), 3: note +# + +# (C#) Warning is given if doing tab-to-\t replacement and we have found one +# in a C# verbatim string literal. +# +# Default: 2 +warn_level_tabs_found_in_verbatim_string_literals = 2 # unsigned number + +# Limit the number of loops. +# Used by uncrustify.cpp to exit from infinite loop. +# 0: no limit. +debug_max_number_of_loops = 0 # number + +# Set the number of the line to protocol; +# Used in the function prot_the_line if the 2. parameter is zero. +# 0: nothing protocol. +debug_line_number_to_protocol = 0 # number + +# Set the number of second(s) before terminating formatting the current file, +# 0: no timeout. +# only for linux +debug_timeout = 0 # number + +# Set the number of characters to be printed if the text is too long, +# 0: do not truncate. +debug_truncate = 0 # unsigned number + +# Meaning of the settings: +# Ignore - do not do any changes +# Add - makes sure there is 1 or more space/brace/newline/etc +# Force - makes sure there is exactly 1 space/brace/newline/etc, +# behaves like Add in some contexts +# Remove - removes space/brace/newline/etc +# +# +# - Token(s) can be treated as specific type(s) with the 'set' option: +# `set tokenType tokenString [tokenString...]` +# +# Example: +# `set BOOL __AND__ __OR__` +# +# tokenTypes are defined in src/token_enum.h, use them without the +# 'CT_' prefix: 'CT_BOOL' => 'BOOL' +# +# +# - Token(s) can be treated as type(s) with the 'type' option. +# `type tokenString [tokenString...]` +# +# Example: +# `type int c_uint_8 Rectangle` +# +# This can also be achieved with `set TYPE int c_uint_8 Rectangle` +# +# +# To embed whitespace in tokenStrings use the '\' escape character, or quote +# the tokenStrings. These quotes are supported: "'` +# +# +# - Support for the auto detection of languages through the file ending can be +# added using the 'file_ext' command. +# `file_ext langType langString [langString..]` +# +# Example: +# `file_ext CPP .ch .cxx .cpp.in` +# +# langTypes are defined in uncrusify_types.h in the lang_flag_e enum, use +# them without the 'LANG_' prefix: 'LANG_CPP' => 'CPP' +# +# +# - Custom macro-based indentation can be set up using 'macro-open', +# 'macro-else' and 'macro-close'. +# `(macro-open | macro-else | macro-close) tokenString` +# +# Example: +# `macro-open BEGIN_TEMPLATE_MESSAGE_MAP` +# `macro-open BEGIN_MESSAGE_MAP` +# `macro-close END_MESSAGE_MAP` +# +# +# option(s) with 'not default' value: 0 +# diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/examples/c-1.in.c b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/examples/c-1.in.c new file mode 100644 index 00000000..c1a53476 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/examples/c-1.in.c @@ -0,0 +1,1234 @@ +/* i2c-core.c - a device driver for the iic-bus interface */ +/* ------------------------------------------------------------------------- */ +/* Copyright (C) 1995-99 Simon G. Vogl + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +/* ------------------------------------------------------------------------- */ + +/* With some changes from Ky�sti M�lkki <[email protected]>. + All SMBus-related things are written by Frodo Looijaard <[email protected]> + SMBus 2.0 support by Mark Studebaker <[email protected]> */ + +#include <linux/module.h> +#include <linux/kernel.h> +#include <linux/errno.h> +#include <linux/slab.h> +#include <linux/i2c.h> +#include <linux/init.h> +#include <linux/idr.h> +#include <linux/seq_file.h> +#include <asm/uaccess.h> + + +static LIST_HEAD(adapters); +static LIST_HEAD(drivers); +static DECLARE_MUTEX(core_lists); +static DEFINE_IDR(i2c_adapter_idr); + +static int i2c_device_match(struct device *dev, struct device_driver *drv) +{ + return 1; +} + +static int i2c_bus_suspend(struct device * dev, pm_message_t state) +{ + int rc = 0; + + if (dev->driver && dev->driver->suspend) + rc = dev->driver->suspend(dev,state,0); + return rc; +} + +static int i2c_bus_resume(struct device * dev) +{ + int rc = 0; + + if (dev->driver && dev->driver->resume) + rc = dev->driver->resume(dev,0); + return rc; +} + +struct bus_type i2c_bus_type = { + .name = "i2c", + .match = i2c_device_match, + .suspend = i2c_bus_suspend, + .resume = i2c_bus_resume, +}; + +static int i2c_device_probe(struct device *dev) +{ + return -ENODEV; +} + +static int i2c_device_remove(struct device *dev) +{ + return 0; +} + +void i2c_adapter_dev_release(struct device *dev) +{ + struct i2c_adapter *adap = dev_to_i2c_adapter(dev); + complete(&adap->dev_released); +} + +struct device_driver i2c_adapter_driver = { + .name = "i2c_adapter", + .bus = &i2c_bus_type, + .probe = i2c_device_probe, + .remove = i2c_device_remove, +}; + +static void i2c_adapter_class_dev_release(struct class_device *dev) +{ + struct i2c_adapter *adap = class_dev_to_i2c_adapter(dev); + complete(&adap->class_dev_released); +} + +struct class i2c_adapter_class = { + .name = "i2c-adapter", + .release =&i2c_adapter_class_dev_release, +}; + +static ssize_t show_adapter_name(struct device *dev, struct device_attribute *attr, char *buf) +{ + struct i2c_adapter *adap = dev_to_i2c_adapter(dev); + return sprintf(buf, "%s\n", adap->name); +} +static DEVICE_ATTR(name, S_IRUGO, show_adapter_name, NULL); + + +static void i2c_client_release(struct device *dev) +{ + struct i2c_client *client = to_i2c_client(dev); + complete(&client->released); +} + +static ssize_t show_client_name(struct device *dev, struct device_attribute *attr, char *buf) +{ + struct i2c_client *client = to_i2c_client(dev); + return sprintf(buf, "%s\n", client->name); +} + +/* + * We can't use the DEVICE_ATTR() macro here as we want the same filename for a + * different type of a device. So beware if the DEVICE_ATTR() macro ever + * changes, this definition will also have to change. + */ +static struct device_attribute dev_attr_client_name = { + .attr = {.name = "name", .mode = S_IRUGO, .owner = THIS_MODULE }, + .show = &show_client_name, +}; + + +/* --------------------------------------------------- + * registering functions + * --------------------------------------------------- + */ + +/* ----- + * i2c_add_adapter is called from within the algorithm layer, + * when a new hw adapter registers. A new device is register to be + * available for clients. + */ +int i2c_add_adapter(struct i2c_adapter *adap) +{ + int id, res = 0; + struct list_head *item; + struct i2c_driver *driver; + + down(&core_lists); + + if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0) { + res = -ENOMEM; + goto out_unlock; + } + + res = idr_get_new(&i2c_adapter_idr, adap, &id); + if (res < 0) { + if (res == -EAGAIN) + res = -ENOMEM; + goto out_unlock; + } + + adap->nr = id & MAX_ID_MASK; + init_MUTEX(&adap->bus_lock); + init_MUTEX(&adap->clist_lock); + list_add_tail(&adap->list,&adapters); + INIT_LIST_HEAD(&adap->clients); + + /* Add the adapter to the driver core. + * If the parent pointer is not set up, + * we add this adapter to the host bus. + */ + if (adap->dev.parent == NULL) + adap->dev.parent = &platform_bus; + sprintf(adap->dev.bus_id, "i2c-%d", adap->nr); + adap->dev.driver = &i2c_adapter_driver; + adap->dev.release = &i2c_adapter_dev_release; + device_register(&adap->dev); + device_create_file(&adap->dev, &dev_attr_name); + + /* Add this adapter to the i2c_adapter class */ + memset(&adap->class_dev, 0x00, sizeof(struct class_device)); + adap->class_dev.dev = &adap->dev; + adap->class_dev.class = &i2c_adapter_class; + strlcpy(adap->class_dev.class_id, adap->dev.bus_id, BUS_ID_SIZE); + class_device_register(&adap->class_dev); + + dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name); + + /* inform drivers of new adapters */ + list_for_each(item,&drivers) { + driver = list_entry(item, struct i2c_driver, list); + if (driver->flags & I2C_DF_NOTIFY) + /* We ignore the return code; if it fails, too bad */ + driver->attach_adapter(adap); + } + +out_unlock: + up(&core_lists); + return res; +} + + +int i2c_del_adapter(struct i2c_adapter *adap) +{ + struct list_head *item, *_n; + struct i2c_adapter *adap_from_list; + struct i2c_driver *driver; + struct i2c_client *client; + int res = 0; + + down(&core_lists); + + /* First make sure that this adapter was ever added */ + list_for_each_entry(adap_from_list, &adapters, list) { + if (adap_from_list == adap) + break; + } + if (adap_from_list != adap) { + pr_debug("i2c-core: attempting to delete unregistered " + "adapter [%s]\n", adap->name); + res = -EINVAL; + goto out_unlock; + } + + list_for_each(item,&drivers) { + driver = list_entry(item, struct i2c_driver, list); + if (driver->detach_adapter) + if ((res = driver->detach_adapter(adap))) { + dev_err(&adap->dev, "detach_adapter failed " + "for driver [%s]\n", driver->name); + goto out_unlock; + } + } + + /* detach any active clients. This must be done first, because + * it can fail; in which case we give up. */ + list_for_each_safe(item, _n, &adap->clients) { + client = list_entry(item, struct i2c_client, list); + + /* detaching devices is unconditional of the set notify + * flag, as _all_ clients that reside on the adapter + * must be deleted, as this would cause invalid states. + */ + if ((res=client->driver->detach_client(client))) { + dev_err(&adap->dev, "detach_client failed for client " + "[%s] at address 0x%02x\n", client->name, + client->addr); + goto out_unlock; + } + } + + /* clean up the sysfs representation */ + init_completion(&adap->dev_released); + init_completion(&adap->class_dev_released); + class_device_unregister(&adap->class_dev); + device_remove_file(&adap->dev, &dev_attr_name); + device_unregister(&adap->dev); + list_del(&adap->list); + + /* wait for sysfs to drop all references */ + wait_for_completion(&adap->dev_released); + wait_for_completion(&adap->class_dev_released); + + /* free dynamically allocated bus id */ + idr_remove(&i2c_adapter_idr, adap->nr); + + dev_dbg(&adap->dev, "adapter [%s] unregistered\n", adap->name); + + out_unlock: + up(&core_lists); + return res; +} + + +/* ----- + * What follows is the "upwards" interface: commands for talking to clients, + * which implement the functions to access the physical information of the + * chips. + */ + +int i2c_add_driver(struct i2c_driver *driver) +{ + struct list_head *item; + struct i2c_adapter *adapter; + int res = 0; + + down(&core_lists); + + /* add the driver to the list of i2c drivers in the driver core */ + driver->driver.name = driver->name; + driver->driver.bus = &i2c_bus_type; + driver->driver.probe = i2c_device_probe; + driver->driver.remove = i2c_device_remove; + + res = driver_register(&driver->driver); + if (res) + goto out_unlock; + + list_add_tail(&driver->list,&drivers); + pr_debug("i2c-core: driver [%s] registered\n", driver->name); + + /* now look for instances of driver on our adapters */ + if (driver->flags & I2C_DF_NOTIFY) { + list_for_each(item,&adapters) { + adapter = list_entry(item, struct i2c_adapter, list); + driver->attach_adapter(adapter); + } + } + + out_unlock: + up(&core_lists); + return res; +} + +int i2c_del_driver(struct i2c_driver *driver) +{ + struct list_head *item1, *item2, *_n; + struct i2c_client *client; + struct i2c_adapter *adap; + + int res = 0; + + down(&core_lists); + + /* Have a look at each adapter, if clients of this driver are still + * attached. If so, detach them to be able to kill the driver + * afterwards. + * + * Removing clients does not depend on the notify flag, else + * invalid operation might (will!) result, when using stale client + * pointers. + */ + list_for_each(item1,&adapters) { + adap = list_entry(item1, struct i2c_adapter, list); + if (driver->detach_adapter) { + if ((res = driver->detach_adapter(adap))) { + dev_err(&adap->dev, "detach_adapter failed " + "for driver [%s]\n", driver->name); + goto out_unlock; + } + } else { + list_for_each_safe(item2, _n, &adap->clients) { + client = list_entry(item2, struct i2c_client, list); + if (client->driver != driver) + continue; + dev_dbg(&adap->dev, "detaching client [%s] " + "at 0x%02x\n", client->name, + client->addr); + if ((res = driver->detach_client(client))) { + dev_err(&adap->dev, "detach_client " + "failed for client [%s] at " + "0x%02x\n", client->name, + client->addr); + goto out_unlock; + } + } + } + } + + driver_unregister(&driver->driver); + list_del(&driver->list); + pr_debug("i2c-core: driver [%s] unregistered\n", driver->name); + + out_unlock: + up(&core_lists); + return 0; +} + +static int __i2c_check_addr(struct i2c_adapter *adapter, unsigned int addr) +{ + struct list_head *item; + struct i2c_client *client; + + list_for_each(item,&adapter->clients) { + client = list_entry(item, struct i2c_client, list); + if (client->addr == addr) + return -EBUSY; + } + return 0; +} + +int i2c_check_addr(struct i2c_adapter *adapter, int addr) +{ + int rval; + + down(&adapter->clist_lock); + rval = __i2c_check_addr(adapter, addr); + up(&adapter->clist_lock); + + return rval; +} + +int i2c_attach_client(struct i2c_client *client) +{ + struct i2c_adapter *adapter = client->adapter; + + down(&adapter->clist_lock); + if (__i2c_check_addr(client->adapter, client->addr)) { + up(&adapter->clist_lock); + return -EBUSY; + } + list_add_tail(&client->list,&adapter->clients); + up(&adapter->clist_lock); + + if (adapter->client_register) { + if (adapter->client_register(client)) { + dev_dbg(&adapter->dev, "client_register " + "failed for client [%s] at 0x%02x\n", + client->name, client->addr); + } + } + + if (client->flags & I2C_CLIENT_ALLOW_USE) + client->usage_count = 0; + + client->dev.parent = &client->adapter->dev; + client->dev.driver = &client->driver->driver; + client->dev.bus = &i2c_bus_type; + client->dev.release = &i2c_client_release; + + snprintf(&client->dev.bus_id[0], sizeof(client->dev.bus_id), + "%d-%04x", i2c_adapter_id(adapter), client->addr); + dev_dbg(&adapter->dev, "client [%s] registered with bus id %s\n", + client->name, client->dev.bus_id); + device_register(&client->dev); + device_create_file(&client->dev, &dev_attr_client_name); + + return 0; +} + + +int i2c_detach_client(struct i2c_client *client) +{ + struct i2c_adapter *adapter = client->adapter; + int res = 0; + + if ((client->flags & I2C_CLIENT_ALLOW_USE) + && (client->usage_count > 0)) { + dev_warn(&client->dev, "Client [%s] still busy, " + "can't detach\n", client->name); + return -EBUSY; + } + + if (adapter->client_unregister) { + res = adapter->client_unregister(client); + if (res) { + dev_err(&client->dev, + "client_unregister [%s] failed, " + "client not detached\n", client->name); + goto out; + } + } + + down(&adapter->clist_lock); + list_del(&client->list); + init_completion(&client->released); + device_remove_file(&client->dev, &dev_attr_client_name); + device_unregister(&client->dev); + up(&adapter->clist_lock); + wait_for_completion(&client->released); + + out: + return res; +} + +static int i2c_inc_use_client(struct i2c_client *client) +{ + + if (!try_module_get(client->driver->owner)) + return -ENODEV; + if (!try_module_get(client->adapter->owner)) { + module_put(client->driver->owner); + return -ENODEV; + } + + return 0; +} + +static void i2c_dec_use_client(struct i2c_client *client) +{ + module_put(client->driver->owner); + module_put(client->adapter->owner); +} + +int i2c_use_client(struct i2c_client *client) +{ + int ret; + + ret = i2c_inc_use_client(client); + if (ret) + return ret; + + if (client->flags & I2C_CLIENT_ALLOW_USE) { + if (client->flags & I2C_CLIENT_ALLOW_MULTIPLE_USE) + client->usage_count++; + else if (client->usage_count > 0) + goto busy; + else + client->usage_count++; + } + + return 0; + busy: + i2c_dec_use_client(client); + return -EBUSY; +} + +int i2c_release_client(struct i2c_client *client) +{ + if(client->flags & I2C_CLIENT_ALLOW_USE) { + if(client->usage_count>0) + client->usage_count--; + else { + pr_debug("i2c-core: %s used one too many times\n", + __FUNCTION__); + return -EPERM; + } + } + + i2c_dec_use_client(client); + + return 0; +} + +void i2c_clients_command(struct i2c_adapter *adap, unsigned int cmd, void *arg) +{ + struct list_head *item; + struct i2c_client *client; + + down(&adap->clist_lock); + list_for_each(item,&adap->clients) { + client = list_entry(item, struct i2c_client, list); + if (!try_module_get(client->driver->owner)) + continue; + if (NULL != client->driver->command) { + up(&adap->clist_lock); + client->driver->command(client,cmd,arg); + down(&adap->clist_lock); + } + module_put(client->driver->owner); + } + up(&adap->clist_lock); +} + +static int __init i2c_init(void) +{ + int retval; + + retval = bus_register(&i2c_bus_type); + if (retval) + return retval; + retval = driver_register(&i2c_adapter_driver); + if (retval) + return retval; + return class_register(&i2c_adapter_class); +} + +static void __exit i2c_exit(void) +{ + class_unregister(&i2c_adapter_class); + driver_unregister(&i2c_adapter_driver); + bus_unregister(&i2c_bus_type); +} + +subsys_initcall(i2c_init); +module_exit(i2c_exit); + +/* ---------------------------------------------------- + * the functional interface to the i2c busses. + * ---------------------------------------------------- + */ + +int i2c_transfer(struct i2c_adapter * adap, struct i2c_msg *msgs, int num) +{ + int ret; + + if (adap->algo->master_xfer) { +#ifdef DEBUG + for (ret = 0; ret < num; ret++) { + dev_dbg(&adap->dev, "master_xfer[%d] %c, addr=0x%02x, " + "len=%d\n", ret, msgs[ret].flags & I2C_M_RD ? + 'R' : 'W', msgs[ret].addr, msgs[ret].len); + } +#endif + + down(&adap->bus_lock); + ret = adap->algo->master_xfer(adap,msgs,num); + up(&adap->bus_lock); + + return ret; + } else { + dev_dbg(&adap->dev, "I2C level transfers not supported\n"); + return -ENOSYS; + } +} + +int i2c_master_send(struct i2c_client *client,const char *buf ,int count) +{ + int ret; + struct i2c_adapter *adap=client->adapter; + struct i2c_msg msg; + + msg.addr = client->addr; + msg.flags = client->flags & I2C_M_TEN; + msg.len = count; + msg.buf = (char *)buf; + + ret = i2c_transfer(adap, &msg, 1); + + /* If everything went ok (i.e. 1 msg transmitted), return #bytes + transmitted, else error code. */ + return (ret == 1) ? count : ret; +} + +int i2c_master_recv(struct i2c_client *client, char *buf ,int count) +{ + struct i2c_adapter *adap=client->adapter; + struct i2c_msg msg; + int ret; + + msg.addr = client->addr; + msg.flags = client->flags & I2C_M_TEN; + msg.flags |= I2C_M_RD; + msg.len = count; + msg.buf = buf; + + ret = i2c_transfer(adap, &msg, 1); + + /* If everything went ok (i.e. 1 msg transmitted), return #bytes + transmitted, else error code. */ + return (ret == 1) ? count : ret; +} + + +int i2c_control(struct i2c_client *client, + unsigned int cmd, unsigned long arg) +{ + int ret = 0; + struct i2c_adapter *adap = client->adapter; + + dev_dbg(&client->adapter->dev, "i2c ioctl, cmd: 0x%x, arg: %#lx\n", cmd, arg); + switch (cmd) { + case I2C_RETRIES: + adap->retries = arg; + break; + case I2C_TIMEOUT: + adap->timeout = arg; + break; + default: + if (adap->algo->algo_control!=NULL) + ret = adap->algo->algo_control(adap,cmd,arg); + } + return ret; +} + +/* ---------------------------------------------------- + * the i2c address scanning function + * Will not work for 10-bit addresses! + * ---------------------------------------------------- + */ +static int i2c_probe_address(struct i2c_adapter *adapter, int addr, int kind, + int (*found_proc) (struct i2c_adapter *, int, int)) +{ + int err; + + /* Make sure the address is valid */ + if (addr < 0x03 || addr > 0x77) { + dev_warn(&adapter->dev, "Invalid probe address 0x%02x\n", + addr); + return -EINVAL; + } + + /* Skip if already in use */ + if (i2c_check_addr(adapter, addr)) + return 0; + + /* Make sure there is something at this address, unless forced */ + if (kind < 0) { + if (i2c_smbus_xfer(adapter, addr, 0, 0, 0, + I2C_SMBUS_QUICK, NULL) < 0) + return 0; + + /* prevent 24RF08 corruption */ + if ((addr & ~0x0f) == 0x50) + i2c_smbus_xfer(adapter, addr, 0, 0, 0, + I2C_SMBUS_QUICK, NULL); + } + + /* Finally call the custom detection function */ + err = found_proc(adapter, addr, kind); + + /* -ENODEV can be returned if there is a chip at the given address + but it isn't supported by this chip driver. We catch it here as + this isn't an error. */ + return (err == -ENODEV) ? 0 : err; +} + +int i2c_probe(struct i2c_adapter *adapter, + struct i2c_client_address_data *address_data, + int (*found_proc) (struct i2c_adapter *, int, int)) +{ + int i, err; + int adap_id = i2c_adapter_id(adapter); + + /* Forget it if we can't probe using SMBUS_QUICK */ + if (! i2c_check_functionality(adapter,I2C_FUNC_SMBUS_QUICK)) + return -1; + + /* Force entries are done first, and are not affected by ignore + entries */ + if (address_data->forces) { + unsigned short **forces = address_data->forces; + int kind; + + for (kind = 0; forces[kind]; kind++) { + for (i = 0; forces[kind][i] != I2C_CLIENT_END; + i += 2) { + if (forces[kind][i] == adap_id + || forces[kind][i] == ANY_I2C_BUS) { + dev_dbg(&adapter->dev, "found force " + "parameter for adapter %d, " + "addr 0x%02x, kind %d\n", + adap_id, forces[kind][i + 1], + kind); + err = i2c_probe_address(adapter, + forces[kind][i + 1], + kind, found_proc); + if (err) + return err; + } + } + } + } + + /* Probe entries are done second, and are not affected by ignore + entries either */ + for (i = 0; address_data->probe[i] != I2C_CLIENT_END; i += 2) { + if (address_data->probe[i] == adap_id + || address_data->probe[i] == ANY_I2C_BUS) { + dev_dbg(&adapter->dev, "found probe parameter for " + "adapter %d, addr 0x%02x\n", adap_id, + address_data->probe[i + 1]); + err = i2c_probe_address(adapter, + address_data->probe[i + 1], + -1, found_proc); + if (err) + return err; + } + } + + /* Normal entries are done last, unless shadowed by an ignore entry */ + for (i = 0; address_data->normal_i2c[i] != I2C_CLIENT_END; i += 1) { + int j, ignore; + + ignore = 0; + for (j = 0; address_data->ignore[j] != I2C_CLIENT_END; + j += 2) { + if ((address_data->ignore[j] == adap_id || + address_data->ignore[j] == ANY_I2C_BUS) + && address_data->ignore[j + 1] + == address_data->normal_i2c[i]) { + dev_dbg(&adapter->dev, "found ignore " + "parameter for adapter %d, " + "addr 0x%02x\n", adap_id, + address_data->ignore[j + 1]); + } + ignore = 1; + break; + } + if (ignore) + continue; + + dev_dbg(&adapter->dev, "found normal entry for adapter %d, " + "addr 0x%02x\n", adap_id, + address_data->normal_i2c[i]); + err = i2c_probe_address(adapter, address_data->normal_i2c[i], + -1, found_proc); + if (err) + return err; + } + + return 0; +} + +struct i2c_adapter* i2c_get_adapter(int id) +{ + struct i2c_adapter *adapter; + + down(&core_lists); + adapter = (struct i2c_adapter *)idr_find(&i2c_adapter_idr, id); + if (adapter && !try_module_get(adapter->owner)) + adapter = NULL; + + up(&core_lists); + return adapter; +} + +void i2c_put_adapter(struct i2c_adapter *adap) +{ + module_put(adap->owner); +} + +/* The SMBus parts */ + +#define POLY (0x1070U << 3) +static u8 +crc8(u16 data) +{ + int i; + + for(i = 0; i < 8; i++) { + if (data & 0x8000) + data = data ^ POLY; + data = data << 1; + } + return (u8)(data >> 8); +} + +/* CRC over count bytes in the first array plus the bytes in the rest + array if it is non-null. rest[0] is the (length of rest) - 1 + and is included. */ +static u8 i2c_smbus_partial_pec(u8 crc, int count, u8 *first, u8 *rest) +{ + int i; + + for(i = 0; i < count; i++) + crc = crc8((crc ^ first[i]) << 8); + if(rest != NULL) + for(i = 0; i <= rest[0]; i++) + crc = crc8((crc ^ rest[i]) << 8); + return crc; +} + +static u8 i2c_smbus_pec(int count, u8 *first, u8 *rest) +{ + return i2c_smbus_partial_pec(0, count, first, rest); +} + +/* Returns new "size" (transaction type) + Note that we convert byte to byte_data and byte_data to word_data + rather than invent new xxx_PEC transactions. */ +static int i2c_smbus_add_pec(u16 addr, u8 command, int size, + union i2c_smbus_data *data) +{ + u8 buf[3]; + + buf[0] = addr << 1; + buf[1] = command; + switch(size) { + case I2C_SMBUS_BYTE: + data->byte = i2c_smbus_pec(2, buf, NULL); + size = I2C_SMBUS_BYTE_DATA; + break; + case I2C_SMBUS_BYTE_DATA: + buf[2] = data->byte; + data->word = buf[2] || + (i2c_smbus_pec(3, buf, NULL) << 8); + size = I2C_SMBUS_WORD_DATA; + break; + case I2C_SMBUS_WORD_DATA: + /* unsupported */ + break; + case I2C_SMBUS_BLOCK_DATA: + data->block[data->block[0] + 1] = + i2c_smbus_pec(2, buf, data->block); + size = I2C_SMBUS_BLOCK_DATA_PEC; + break; + } + return size; +} + +static int i2c_smbus_check_pec(u16 addr, u8 command, int size, u8 partial, + union i2c_smbus_data *data) +{ + u8 buf[3], rpec, cpec; + + buf[1] = command; + switch(size) { + case I2C_SMBUS_BYTE_DATA: + buf[0] = (addr << 1) | 1; + cpec = i2c_smbus_pec(2, buf, NULL); + rpec = data->byte; + break; + case I2C_SMBUS_WORD_DATA: + buf[0] = (addr << 1) | 1; + buf[2] = data->word & 0xff; + cpec = i2c_smbus_pec(3, buf, NULL); + rpec = data->word >> 8; + break; + case I2C_SMBUS_WORD_DATA_PEC: + /* unsupported */ + cpec = rpec = 0; + break; + case I2C_SMBUS_PROC_CALL_PEC: + /* unsupported */ + cpec = rpec = 0; + break; + case I2C_SMBUS_BLOCK_DATA_PEC: + buf[0] = (addr << 1); + buf[2] = (addr << 1) | 1; + cpec = i2c_smbus_pec(3, buf, data->block); + rpec = data->block[data->block[0] + 1]; + break; + case I2C_SMBUS_BLOCK_PROC_CALL_PEC: + buf[0] = (addr << 1) | 1; + rpec = i2c_smbus_partial_pec(partial, 1, + buf, data->block); + cpec = data->block[data->block[0] + 1]; + break; + default: + cpec = rpec = 0; + break; + } + if (rpec != cpec) { + pr_debug("i2c-core: Bad PEC 0x%02x vs. 0x%02x\n", + rpec, cpec); + return -1; + } + return 0; +} + +s32 i2c_smbus_write_quick(struct i2c_client *client, u8 value) +{ + return i2c_smbus_xfer(client->adapter,client->addr,client->flags, + value,0,I2C_SMBUS_QUICK,NULL); +} + +s32 i2c_smbus_read_byte(struct i2c_client *client) +{ + union i2c_smbus_data data; + if (i2c_smbus_xfer(client->adapter,client->addr,client->flags, + I2C_SMBUS_READ,0,I2C_SMBUS_BYTE, &data)) + return -1; + else + return 0x0FF & data.byte; +} + +s32 i2c_smbus_write_byte(struct i2c_client *client, u8 value) +{ + union i2c_smbus_data data; /* only for PEC */ + return i2c_smbus_xfer(client->adapter,client->addr,client->flags, + I2C_SMBUS_WRITE,value, I2C_SMBUS_BYTE,&data); +} + +s32 i2c_smbus_read_byte_data(struct i2c_client *client, u8 command) +{ + union i2c_smbus_data data; + if (i2c_smbus_xfer(client->adapter,client->addr,client->flags, + I2C_SMBUS_READ,command, I2C_SMBUS_BYTE_DATA,&data)) + return -1; + else + return 0x0FF & data.byte; +} + +s32 i2c_smbus_write_byte_data(struct i2c_client *client, u8 command, u8 value) +{ + union i2c_smbus_data data; + data.byte = value; + return i2c_smbus_xfer(client->adapter,client->addr,client->flags, + I2C_SMBUS_WRITE,command, + I2C_SMBUS_BYTE_DATA,&data); +} + +s32 i2c_smbus_read_word_data(struct i2c_client *client, u8 command) +{ + union i2c_smbus_data data; + if (i2c_smbus_xfer(client->adapter,client->addr,client->flags, + I2C_SMBUS_READ,command, I2C_SMBUS_WORD_DATA, &data)) + return -1; + else + return 0x0FFFF & data.word; +} + +s32 i2c_smbus_write_word_data(struct i2c_client *client, u8 command, u16 value) +{ + union i2c_smbus_data data; + data.word = value; + return i2c_smbus_xfer(client->adapter,client->addr,client->flags, + I2C_SMBUS_WRITE,command, + I2C_SMBUS_WORD_DATA,&data); +} + +s32 i2c_smbus_write_block_data(struct i2c_client *client, u8 command, + u8 length, u8 *values) +{ + union i2c_smbus_data data; + int i; + if (length > I2C_SMBUS_BLOCK_MAX) + length = I2C_SMBUS_BLOCK_MAX; + for (i = 1; i <= length; i++) + data.block[i] = values[i-1]; + data.block[0] = length; + return i2c_smbus_xfer(client->adapter,client->addr,client->flags, + I2C_SMBUS_WRITE,command, + I2C_SMBUS_BLOCK_DATA,&data); +} + +/* Returns the number of read bytes */ +s32 i2c_smbus_read_i2c_block_data(struct i2c_client *client, u8 command, u8 *values) +{ + union i2c_smbus_data data; + int i; + if (i2c_smbus_xfer(client->adapter,client->addr,client->flags, + I2C_SMBUS_READ,command, + I2C_SMBUS_I2C_BLOCK_DATA,&data)) + return -1; + else { + for (i = 1; i <= data.block[0]; i++) + values[i-1] = data.block[i]; + return data.block[0]; + } +} + +/* Simulate a SMBus command using the i2c protocol + No checking of parameters is done! */ +static s32 i2c_smbus_xfer_emulated(struct i2c_adapter * adapter, u16 addr, + unsigned short flags, + char read_write, u8 command, int size, + union i2c_smbus_data * data) +{ + /* So we need to generate a series of msgs. In the case of writing, we + need to use only one message; when reading, we need two. We initialize + most things with sane defaults, to keep the code below somewhat + simpler. */ + unsigned char msgbuf0[34]; + unsigned char msgbuf1[34]; + int num = read_write == I2C_SMBUS_READ?2:1; + struct i2c_msg msg[2] = { { addr, flags, 1, msgbuf0 }, + { addr, flags | I2C_M_RD, 0, msgbuf1 } + }; + int i; + + msgbuf0[0] = command; + switch(size) { + case I2C_SMBUS_QUICK: + msg[0].len = 0; + /* Special case: The read/write field is used as data */ + msg[0].flags = flags | (read_write==I2C_SMBUS_READ)?I2C_M_RD:0; + num = 1; + break; + case I2C_SMBUS_BYTE: + if (read_write == I2C_SMBUS_READ) { + /* Special case: only a read! */ + msg[0].flags = I2C_M_RD | flags; + num = 1; + } + break; + case I2C_SMBUS_BYTE_DATA: + if (read_write == I2C_SMBUS_READ) + msg[1].len = 1; + else { + msg[0].len = 2; + msgbuf0[1] = data->byte; + } + break; + case I2C_SMBUS_WORD_DATA: + if (read_write == I2C_SMBUS_READ) + msg[1].len = 2; + else { + msg[0].len=3; + msgbuf0[1] = data->word & 0xff; + msgbuf0[2] = (data->word >> 8) & 0xff; + } + break; + case I2C_SMBUS_PROC_CALL: + num = 2; /* Special case */ + read_write = I2C_SMBUS_READ; + msg[0].len = 3; + msg[1].len = 2; + msgbuf0[1] = data->word & 0xff; + msgbuf0[2] = (data->word >> 8) & 0xff; + break; + case I2C_SMBUS_BLOCK_DATA: + case I2C_SMBUS_BLOCK_DATA_PEC: + if (read_write == I2C_SMBUS_READ) { + dev_err(&adapter->dev, "Block read not supported " + "under I2C emulation!\n"); + return -1; + } else { + msg[0].len = data->block[0] + 2; + if (msg[0].len > I2C_SMBUS_BLOCK_MAX + 2) { + dev_err(&adapter->dev, "smbus_access called with " + "invalid block write size (%d)\n", + data->block[0]); + return -1; + } + if(size == I2C_SMBUS_BLOCK_DATA_PEC) + (msg[0].len)++; + for (i = 1; i <= msg[0].len; i++) + msgbuf0[i] = data->block[i-1]; + } + break; + case I2C_SMBUS_BLOCK_PROC_CALL: + case I2C_SMBUS_BLOCK_PROC_CALL_PEC: + dev_dbg(&adapter->dev, "Block process call not supported " + "under I2C emulation!\n"); + return -1; + case I2C_SMBUS_I2C_BLOCK_DATA: + if (read_write == I2C_SMBUS_READ) { + msg[1].len = I2C_SMBUS_I2C_BLOCK_MAX; + } else { + msg[0].len = data->block[0] + 1; + if (msg[0].len > I2C_SMBUS_I2C_BLOCK_MAX + 1) { + dev_err(&adapter->dev, "i2c_smbus_xfer_emulated called with " + "invalid block write size (%d)\n", + data->block[0]); + return -1; + } + for (i = 1; i <= data->block[0]; i++) + msgbuf0[i] = data->block[i]; + } + break; + default: + dev_err(&adapter->dev, "smbus_access called with invalid size (%d)\n", + size); + return -1; + } + + if (i2c_transfer(adapter, msg, num) < 0) + return -1; + + if (read_write == I2C_SMBUS_READ) + switch(size) { + case I2C_SMBUS_BYTE: + data->byte = msgbuf0[0]; + break; + case I2C_SMBUS_BYTE_DATA: + data->byte = msgbuf1[0]; + break; + case I2C_SMBUS_WORD_DATA: + case I2C_SMBUS_PROC_CALL: + data->word = msgbuf1[0] | (msgbuf1[1] << 8); + break; + case I2C_SMBUS_I2C_BLOCK_DATA: + /* fixed at 32 for now */ + data->block[0] = I2C_SMBUS_I2C_BLOCK_MAX; + for (i = 0; i < I2C_SMBUS_I2C_BLOCK_MAX; i++) + data->block[i+1] = msgbuf1[i]; + break; + } + return 0; +} + + +s32 i2c_smbus_xfer(struct i2c_adapter * adapter, u16 addr, unsigned short flags, + char read_write, u8 command, int size, + union i2c_smbus_data * data) +{ + s32 res; + int swpec = 0; + u8 partial = 0; + + flags &= I2C_M_TEN | I2C_CLIENT_PEC; + if((flags & I2C_CLIENT_PEC) && + !(i2c_check_functionality(adapter, I2C_FUNC_SMBUS_HWPEC_CALC))) { + swpec = 1; + if(read_write == I2C_SMBUS_READ && + size == I2C_SMBUS_BLOCK_DATA) + size = I2C_SMBUS_BLOCK_DATA_PEC; + else if(size == I2C_SMBUS_PROC_CALL) + size = I2C_SMBUS_PROC_CALL_PEC; + else if(size == I2C_SMBUS_BLOCK_PROC_CALL) { + i2c_smbus_add_pec(addr, command, + I2C_SMBUS_BLOCK_DATA, data); + partial = data->block[data->block[0] + 1]; + size = I2C_SMBUS_BLOCK_PROC_CALL_PEC; + } else if(read_write == I2C_SMBUS_WRITE && + size != I2C_SMBUS_QUICK && + size != I2C_SMBUS_I2C_BLOCK_DATA) + size = i2c_smbus_add_pec(addr, command, size, data); + } + + if (adapter->algo->smbus_xfer) { + down(&adapter->bus_lock); + res = adapter->algo->smbus_xfer(adapter,addr,flags,read_write, + command,size,data); + up(&adapter->bus_lock); + } else + res = i2c_smbus_xfer_emulated(adapter,addr,flags,read_write, + command,size,data); + + if(res >= 0 && swpec && + size != I2C_SMBUS_QUICK && size != I2C_SMBUS_I2C_BLOCK_DATA && + (read_write == I2C_SMBUS_READ || size == I2C_SMBUS_PROC_CALL_PEC || + size == I2C_SMBUS_BLOCK_PROC_CALL_PEC)) { + if(i2c_smbus_check_pec(addr, command, size, partial, data)) + return -1; + } + return res; +} + + +/* Next four are needed by i2c-isa */ +EXPORT_SYMBOL_GPL(i2c_adapter_dev_release); +EXPORT_SYMBOL_GPL(i2c_adapter_driver); +EXPORT_SYMBOL_GPL(i2c_adapter_class); +EXPORT_SYMBOL_GPL(i2c_bus_type); + +EXPORT_SYMBOL(i2c_add_adapter); +EXPORT_SYMBOL(i2c_del_adapter); +EXPORT_SYMBOL(i2c_add_driver); +EXPORT_SYMBOL(i2c_del_driver); +EXPORT_SYMBOL(i2c_attach_client); +EXPORT_SYMBOL(i2c_detach_client); +EXPORT_SYMBOL(i2c_use_client); +EXPORT_SYMBOL(i2c_release_client); +EXPORT_SYMBOL(i2c_clients_command); +EXPORT_SYMBOL(i2c_check_addr); + +EXPORT_SYMBOL(i2c_master_send); +EXPORT_SYMBOL(i2c_master_recv); +EXPORT_SYMBOL(i2c_control); +EXPORT_SYMBOL(i2c_transfer); +EXPORT_SYMBOL(i2c_get_adapter); +EXPORT_SYMBOL(i2c_put_adapter); +EXPORT_SYMBOL(i2c_probe); + +EXPORT_SYMBOL(i2c_smbus_xfer); +EXPORT_SYMBOL(i2c_smbus_write_quick); +EXPORT_SYMBOL(i2c_smbus_read_byte); +EXPORT_SYMBOL(i2c_smbus_write_byte); +EXPORT_SYMBOL(i2c_smbus_read_byte_data); +EXPORT_SYMBOL(i2c_smbus_write_byte_data); +EXPORT_SYMBOL(i2c_smbus_read_word_data); +EXPORT_SYMBOL(i2c_smbus_write_word_data); +EXPORT_SYMBOL(i2c_smbus_write_block_data); +EXPORT_SYMBOL(i2c_smbus_read_i2c_block_data); + +MODULE_AUTHOR("Simon G. Vogl <[email protected]>"); +MODULE_DESCRIPTION("I2C-Bus main module"); +MODULE_LICENSE("GPL"); diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/examples/c-1.out.c b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/examples/c-1.out.c new file mode 100644 index 00000000..ceb484c6 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/examples/c-1.out.c @@ -0,0 +1,1245 @@ +/* i2c-core.c - a device driver for the iic-bus interface */ +/* ------------------------------------------------------------------------- */ +/* Copyright (C) 1995-99 Simon G. Vogl + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +/* ------------------------------------------------------------------------- */ + +/* With some changes from Ky�sti M�lkki <[email protected]>. + All SMBus-related things are written by Frodo Looijaard <[email protected]> + SMBus 2.0 support by Mark Studebaker <[email protected]> */ + +#include <linux/module.h> +#include <linux/kernel.h> +#include <linux/errno.h> +#include <linux/slab.h> +#include <linux/i2c.h> +#include <linux/init.h> +#include <linux/idr.h> +#include <linux/seq_file.h> +#include <asm/uaccess.h> + + +static LIST_HEAD(adapters); +static LIST_HEAD(drivers); +static DECLARE_MUTEX(core_lists); +static DEFINE_IDR(i2c_adapter_idr); + +static int i2c_device_match(struct device *dev, struct device_driver *drv) +{ + return 1; +} + +static int i2c_bus_suspend(struct device *dev, pm_message_t state) +{ + int rc = 0; + + if (dev->driver && dev->driver->suspend) + rc = dev->driver->suspend(dev, state, 0); + return rc; +} + +static int i2c_bus_resume(struct device *dev) +{ + int rc = 0; + + if (dev->driver && dev->driver->resume) + rc = dev->driver->resume(dev, 0); + return rc; +} + +struct bus_type i2c_bus_type = { + .name = "i2c", + .match = i2c_device_match, + .suspend = i2c_bus_suspend, + .resume = i2c_bus_resume, +}; + +static int i2c_device_probe(struct device *dev) +{ + return -ENODEV; +} + +static int i2c_device_remove(struct device *dev) +{ + return 0; +} + +void i2c_adapter_dev_release(struct device *dev) +{ + struct i2c_adapter *adap = dev_to_i2c_adapter(dev); + + complete(&adap->dev_released); +} + +struct device_driver i2c_adapter_driver = { + .name = "i2c_adapter", + .bus = &i2c_bus_type, + .probe = i2c_device_probe, + .remove = i2c_device_remove, +}; + +static void i2c_adapter_class_dev_release(struct class_device *dev) +{ + struct i2c_adapter *adap = class_dev_to_i2c_adapter(dev); + + complete(&adap->class_dev_released); +} + +struct class i2c_adapter_class = { + .name = "i2c-adapter", + .release = &i2c_adapter_class_dev_release, +}; + +static ssize_t show_adapter_name(struct device *dev, struct device_attribute *attr, char *buf) +{ + struct i2c_adapter *adap = dev_to_i2c_adapter(dev); + + return sprintf(buf, "%s\n", adap->name); +} +static DEVICE_ATTR(name, S_IRUGO, show_adapter_name, NULL); + + +static void i2c_client_release(struct device *dev) +{ + struct i2c_client *client = to_i2c_client(dev); + + complete(&client->released); +} + +static ssize_t show_client_name(struct device *dev, struct device_attribute *attr, char *buf) +{ + struct i2c_client *client = to_i2c_client(dev); + + return sprintf(buf, "%s\n", client->name); +} + +/* + * We can't use the DEVICE_ATTR() macro here as we want the same filename for a + * different type of a device. So beware if the DEVICE_ATTR() macro ever + * changes, this definition will also have to change. + */ +static struct device_attribute dev_attr_client_name = { + .attr = { .name = "name", .mode = S_IRUGO, .owner = THIS_MODULE }, + .show = &show_client_name, +}; + + +/* --------------------------------------------------- + * registering functions + * --------------------------------------------------- + */ + +/* ----- + * i2c_add_adapter is called from within the algorithm layer, + * when a new hw adapter registers. A new device is register to be + * available for clients. + */ +int i2c_add_adapter(struct i2c_adapter *adap) +{ + int id, res = 0; + struct list_head *item; + struct i2c_driver *driver; + + down(&core_lists); + + if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0) { + res = -ENOMEM; + goto out_unlock; + } + + res = idr_get_new(&i2c_adapter_idr, adap, &id); + if (res < 0) { + if (res == -EAGAIN) + res = -ENOMEM; + goto out_unlock; + } + + adap->nr = id & MAX_ID_MASK; + init_MUTEX(&adap->bus_lock); + init_MUTEX(&adap->clist_lock); + list_add_tail(&adap->list, &adapters); + INIT_LIST_HEAD(&adap->clients); + + /* Add the adapter to the driver core. + * If the parent pointer is not set up, + * we add this adapter to the host bus. + */ + if (adap->dev.parent == NULL) + adap->dev.parent = &platform_bus; + sprintf(adap->dev.bus_id, "i2c-%d", adap->nr); + adap->dev.driver = &i2c_adapter_driver; + adap->dev.release = &i2c_adapter_dev_release; + device_register(&adap->dev); + device_create_file(&adap->dev, &dev_attr_name); + + /* Add this adapter to the i2c_adapter class */ + memset(&adap->class_dev, 0x00, sizeof(struct class_device)); + adap->class_dev.dev = &adap->dev; + adap->class_dev.class = &i2c_adapter_class; + strlcpy(adap->class_dev.class_id, adap->dev.bus_id, BUS_ID_SIZE); + class_device_register(&adap->class_dev); + + dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name); + + /* inform drivers of new adapters */ + list_for_each(item, &drivers) { + driver = list_entry(item, struct i2c_driver, list); + if (driver->flags & I2C_DF_NOTIFY) + /* We ignore the return code; if it fails, too bad */ + driver->attach_adapter(adap); + } + + out_unlock: + up(&core_lists); + return res; +} + + +int i2c_del_adapter(struct i2c_adapter *adap) +{ + struct list_head *item, *_n; + struct i2c_adapter *adap_from_list; + struct i2c_driver *driver; + struct i2c_client *client; + int res = 0; + + down(&core_lists); + + /* First make sure that this adapter was ever added */ + list_for_each_entry(adap_from_list, &adapters, list) { + if (adap_from_list == adap) + break; + } + if (adap_from_list != adap) { + pr_debug("i2c-core: attempting to delete unregistered " + "adapter [%s]\n", adap->name); + res = -EINVAL; + goto out_unlock; + } + + list_for_each(item, &drivers) { + driver = list_entry(item, struct i2c_driver, list); + if (driver->detach_adapter) + if ((res = driver->detach_adapter(adap))) { + dev_err(&adap->dev, "detach_adapter failed " + "for driver [%s]\n", driver->name); + goto out_unlock; + } + } + + /* detach any active clients. This must be done first, because + * it can fail; in which case we give up. */ + list_for_each_safe(item, _n, &adap->clients) { + client = list_entry(item, struct i2c_client, list); + + /* detaching devices is unconditional of the set notify + * flag, as _all_ clients that reside on the adapter + * must be deleted, as this would cause invalid states. + */ + if ((res = client->driver->detach_client(client))) { + dev_err(&adap->dev, "detach_client failed for client " + "[%s] at address 0x%02x\n", client->name, + client->addr); + goto out_unlock; + } + } + + /* clean up the sysfs representation */ + init_completion(&adap->dev_released); + init_completion(&adap->class_dev_released); + class_device_unregister(&adap->class_dev); + device_remove_file(&adap->dev, &dev_attr_name); + device_unregister(&adap->dev); + list_del(&adap->list); + + /* wait for sysfs to drop all references */ + wait_for_completion(&adap->dev_released); + wait_for_completion(&adap->class_dev_released); + + /* free dynamically allocated bus id */ + idr_remove(&i2c_adapter_idr, adap->nr); + + dev_dbg(&adap->dev, "adapter [%s] unregistered\n", adap->name); + + out_unlock: + up(&core_lists); + return res; +} + + +/* ----- + * What follows is the "upwards" interface: commands for talking to clients, + * which implement the functions to access the physical information of the + * chips. + */ + +int i2c_add_driver(struct i2c_driver *driver) +{ + struct list_head *item; + struct i2c_adapter *adapter; + int res = 0; + + down(&core_lists); + + /* add the driver to the list of i2c drivers in the driver core */ + driver->driver.name = driver->name; + driver->driver.bus = &i2c_bus_type; + driver->driver.probe = i2c_device_probe; + driver->driver.remove = i2c_device_remove; + + res = driver_register(&driver->driver); + if (res) + goto out_unlock; + + list_add_tail(&driver->list, &drivers); + pr_debug("i2c-core: driver [%s] registered\n", driver->name); + + /* now look for instances of driver on our adapters */ + if (driver->flags & I2C_DF_NOTIFY) { + list_for_each(item, &adapters) { + adapter = list_entry(item, struct i2c_adapter, list); + driver->attach_adapter(adapter); + } + } + + out_unlock: + up(&core_lists); + return res; +} + +int i2c_del_driver(struct i2c_driver *driver) +{ + struct list_head *item1, *item2, *_n; + struct i2c_client *client; + struct i2c_adapter *adap; + + int res = 0; + + down(&core_lists); + + /* Have a look at each adapter, if clients of this driver are still + * attached. If so, detach them to be able to kill the driver + * afterwards. + * + * Removing clients does not depend on the notify flag, else + * invalid operation might (will!) result, when using stale client + * pointers. + */ + list_for_each(item1, &adapters) { + adap = list_entry(item1, struct i2c_adapter, list); + if (driver->detach_adapter) { + if ((res = driver->detach_adapter(adap))) { + dev_err(&adap->dev, "detach_adapter failed " + "for driver [%s]\n", driver->name); + goto out_unlock; + } + } else { + list_for_each_safe(item2, _n, &adap->clients) { + client = list_entry(item2, struct i2c_client, list); + if (client->driver != driver) + continue; + dev_dbg(&adap->dev, "detaching client [%s] " + "at 0x%02x\n", client->name, + client->addr); + if ((res = driver->detach_client(client))) { + dev_err(&adap->dev, "detach_client " + "failed for client [%s] at " + "0x%02x\n", client->name, + client->addr); + goto out_unlock; + } + } + } + } + + driver_unregister(&driver->driver); + list_del(&driver->list); + pr_debug("i2c-core: driver [%s] unregistered\n", driver->name); + + out_unlock: + up(&core_lists); + return 0; +} + +static int __i2c_check_addr(struct i2c_adapter *adapter, unsigned int addr) +{ + struct list_head *item; + struct i2c_client *client; + + list_for_each(item, &adapter->clients) { + client = list_entry(item, struct i2c_client, list); + if (client->addr == addr) + return -EBUSY; + } + return 0; +} + +int i2c_check_addr(struct i2c_adapter *adapter, int addr) +{ + int rval; + + down(&adapter->clist_lock); + rval = __i2c_check_addr(adapter, addr); + up(&adapter->clist_lock); + + return rval; +} + +int i2c_attach_client(struct i2c_client *client) +{ + struct i2c_adapter *adapter = client->adapter; + + down(&adapter->clist_lock); + if (__i2c_check_addr(client->adapter, client->addr)) { + up(&adapter->clist_lock); + return -EBUSY; + } + list_add_tail(&client->list, &adapter->clients); + up(&adapter->clist_lock); + + if (adapter->client_register) { + if (adapter->client_register(client)) { + dev_dbg(&adapter->dev, "client_register " + "failed for client [%s] at 0x%02x\n", + client->name, client->addr); + } + } + + if (client->flags & I2C_CLIENT_ALLOW_USE) + client->usage_count = 0; + + client->dev.parent = &client->adapter->dev; + client->dev.driver = &client->driver->driver; + client->dev.bus = &i2c_bus_type; + client->dev.release = &i2c_client_release; + + snprintf(&client->dev.bus_id[0], sizeof(client->dev.bus_id), + "%d-%04x", i2c_adapter_id(adapter), client->addr); + dev_dbg(&adapter->dev, "client [%s] registered with bus id %s\n", + client->name, client->dev.bus_id); + device_register(&client->dev); + device_create_file(&client->dev, &dev_attr_client_name); + + return 0; +} + + +int i2c_detach_client(struct i2c_client *client) +{ + struct i2c_adapter *adapter = client->adapter; + int res = 0; + + if ((client->flags & I2C_CLIENT_ALLOW_USE) + && (client->usage_count > 0)) { + dev_warn(&client->dev, "Client [%s] still busy, " + "can't detach\n", client->name); + return -EBUSY; + } + + if (adapter->client_unregister) { + res = adapter->client_unregister(client); + if (res) { + dev_err(&client->dev, + "client_unregister [%s] failed, " + "client not detached\n", client->name); + goto out; + } + } + + down(&adapter->clist_lock); + list_del(&client->list); + init_completion(&client->released); + device_remove_file(&client->dev, &dev_attr_client_name); + device_unregister(&client->dev); + up(&adapter->clist_lock); + wait_for_completion(&client->released); + + out: + return res; +} + +static int i2c_inc_use_client(struct i2c_client *client) +{ + + if (!try_module_get(client->driver->owner)) + return -ENODEV; + if (!try_module_get(client->adapter->owner)) { + module_put(client->driver->owner); + return -ENODEV; + } + + return 0; +} + +static void i2c_dec_use_client(struct i2c_client *client) +{ + module_put(client->driver->owner); + module_put(client->adapter->owner); +} + +int i2c_use_client(struct i2c_client *client) +{ + int ret; + + ret = i2c_inc_use_client(client); + if (ret) + return ret; + + if (client->flags & I2C_CLIENT_ALLOW_USE) { + if (client->flags & I2C_CLIENT_ALLOW_MULTIPLE_USE) + client->usage_count++; + else if (client->usage_count > 0) + goto busy; + else + client->usage_count++; + } + + return 0; + busy: + i2c_dec_use_client(client); + return -EBUSY; +} + +int i2c_release_client(struct i2c_client *client) +{ + if (client->flags & I2C_CLIENT_ALLOW_USE) { + if (client->usage_count > 0) + client->usage_count--; + else { + pr_debug("i2c-core: %s used one too many times\n", + __FUNCTION__); + return -EPERM; + } + } + + i2c_dec_use_client(client); + + return 0; +} + +void i2c_clients_command(struct i2c_adapter *adap, unsigned int cmd, void *arg) +{ + struct list_head *item; + struct i2c_client *client; + + down(&adap->clist_lock); + list_for_each(item, &adap->clients) { + client = list_entry(item, struct i2c_client, list); + if (!try_module_get(client->driver->owner)) + continue; + if (NULL != client->driver->command) { + up(&adap->clist_lock); + client->driver->command(client, cmd, arg); + down(&adap->clist_lock); + } + module_put(client->driver->owner); + } + up(&adap->clist_lock); +} + +static int __init i2c_init(void) +{ + int retval; + + retval = bus_register(&i2c_bus_type); + if (retval) + return retval; + retval = driver_register(&i2c_adapter_driver); + if (retval) + return retval; + return class_register(&i2c_adapter_class); +} + +static void __exit i2c_exit(void) +{ + class_unregister(&i2c_adapter_class); + driver_unregister(&i2c_adapter_driver); + bus_unregister(&i2c_bus_type); +} + +subsys_initcall(i2c_init); +module_exit(i2c_exit); + +/* ---------------------------------------------------- + * the functional interface to the i2c busses. + * ---------------------------------------------------- + */ + +int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) +{ + int ret; + + if (adap->algo->master_xfer) { +#ifdef DEBUG + for (ret = 0; ret < num; ret++) { + dev_dbg(&adap->dev, "master_xfer[%d] %c, addr=0x%02x, " + "len=%d\n", ret, msgs[ret].flags & I2C_M_RD ? + 'R' : 'W', msgs[ret].addr, msgs[ret].len); + } +#endif + + down(&adap->bus_lock); + ret = adap->algo->master_xfer(adap, msgs, num); + up(&adap->bus_lock); + + return ret; + } else { + dev_dbg(&adap->dev, "I2C level transfers not supported\n"); + return -ENOSYS; + } +} + +int i2c_master_send(struct i2c_client *client, const char *buf, int count) +{ + int ret; + struct i2c_adapter *adap = client->adapter; + struct i2c_msg msg; + + msg.addr = client->addr; + msg.flags = client->flags & I2C_M_TEN; + msg.len = count; + msg.buf = (char *)buf; + + ret = i2c_transfer(adap, &msg, 1); + + /* If everything went ok (i.e. 1 msg transmitted), return #bytes + transmitted, else error code. */ + return (ret == 1) ? count : ret; +} + +int i2c_master_recv(struct i2c_client *client, char *buf, int count) +{ + struct i2c_adapter *adap = client->adapter; + struct i2c_msg msg; + int ret; + + msg.addr = client->addr; + msg.flags = client->flags & I2C_M_TEN; + msg.flags |= I2C_M_RD; + msg.len = count; + msg.buf = buf; + + ret = i2c_transfer(adap, &msg, 1); + + /* If everything went ok (i.e. 1 msg transmitted), return #bytes + transmitted, else error code. */ + return (ret == 1) ? count : ret; +} + + +int i2c_control(struct i2c_client *client, + unsigned int cmd, unsigned long arg) +{ + int ret = 0; + struct i2c_adapter *adap = client->adapter; + + dev_dbg(&client->adapter->dev, "i2c ioctl, cmd: 0x%x, arg: %#lx\n", cmd, arg); + switch (cmd) { + case I2C_RETRIES: + adap->retries = arg; + break; + case I2C_TIMEOUT: + adap->timeout = arg; + break; + default: + if (adap->algo->algo_control != NULL) + ret = adap->algo->algo_control(adap, cmd, arg); + } + return ret; +} + +/* ---------------------------------------------------- + * the i2c address scanning function + * Will not work for 10-bit addresses! + * ---------------------------------------------------- + */ +static int i2c_probe_address(struct i2c_adapter *adapter, int addr, int kind, + int (*found_proc)(struct i2c_adapter *, int, int)) +{ + int err; + + /* Make sure the address is valid */ + if (addr < 0x03 || addr > 0x77) { + dev_warn(&adapter->dev, "Invalid probe address 0x%02x\n", + addr); + return -EINVAL; + } + + /* Skip if already in use */ + if (i2c_check_addr(adapter, addr)) + return 0; + + /* Make sure there is something at this address, unless forced */ + if (kind < 0) { + if (i2c_smbus_xfer(adapter, addr, 0, 0, 0, + I2C_SMBUS_QUICK, NULL) < 0) + return 0; + + /* prevent 24RF08 corruption */ + if ((addr & ~0x0f) == 0x50) + i2c_smbus_xfer(adapter, addr, 0, 0, 0, + I2C_SMBUS_QUICK, NULL); + } + + /* Finally call the custom detection function */ + err = found_proc(adapter, addr, kind); + + /* -ENODEV can be returned if there is a chip at the given address + but it isn't supported by this chip driver. We catch it here as + this isn't an error. */ + return (err == -ENODEV) ? 0 : err; +} + +int i2c_probe(struct i2c_adapter *adapter, + struct i2c_client_address_data *address_data, + int (*found_proc)(struct i2c_adapter *, int, int)) +{ + int i, err; + int adap_id = i2c_adapter_id(adapter); + + /* Forget it if we can't probe using SMBUS_QUICK */ + if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_QUICK)) + return -1; + + /* Force entries are done first, and are not affected by ignore + entries */ + if (address_data->forces) { + unsigned short **forces = address_data->forces; + int kind; + + for (kind = 0; forces[kind]; kind++) { + for (i = 0; forces[kind][i] != I2C_CLIENT_END; + i += 2) { + if (forces[kind][i] == adap_id + || forces[kind][i] == ANY_I2C_BUS) { + dev_dbg(&adapter->dev, "found force " + "parameter for adapter %d, " + "addr 0x%02x, kind %d\n", + adap_id, forces[kind][i + 1], + kind); + err = i2c_probe_address(adapter, + forces[kind][i + 1], + kind, found_proc); + if (err) + return err; + } + } + } + } + + /* Probe entries are done second, and are not affected by ignore + entries either */ + for (i = 0; address_data->probe[i] != I2C_CLIENT_END; i += 2) { + if (address_data->probe[i] == adap_id + || address_data->probe[i] == ANY_I2C_BUS) { + dev_dbg(&adapter->dev, "found probe parameter for " + "adapter %d, addr 0x%02x\n", adap_id, + address_data->probe[i + 1]); + err = i2c_probe_address(adapter, + address_data->probe[i + 1], + -1, found_proc); + if (err) + return err; + } + } + + /* Normal entries are done last, unless shadowed by an ignore entry */ + for (i = 0; address_data->normal_i2c[i] != I2C_CLIENT_END; i += 1) { + int j, ignore; + + ignore = 0; + for (j = 0; address_data->ignore[j] != I2C_CLIENT_END; + j += 2) { + if ((address_data->ignore[j] == adap_id || + address_data->ignore[j] == ANY_I2C_BUS) + && address_data->ignore[j + 1] + == address_data->normal_i2c[i]) { + dev_dbg(&adapter->dev, "found ignore " + "parameter for adapter %d, " + "addr 0x%02x\n", adap_id, + address_data->ignore[j + 1]); + } + ignore = 1; + break; + } + if (ignore) + continue; + + dev_dbg(&adapter->dev, "found normal entry for adapter %d, " + "addr 0x%02x\n", adap_id, + address_data->normal_i2c[i]); + err = i2c_probe_address(adapter, address_data->normal_i2c[i], + -1, found_proc); + if (err) + return err; + } + + return 0; +} + +struct i2c_adapter * i2c_get_adapter(int id) +{ + struct i2c_adapter *adapter; + + down(&core_lists); + adapter = (struct i2c_adapter *)idr_find(&i2c_adapter_idr, id); + if (adapter && !try_module_get(adapter->owner)) + adapter = NULL; + + up(&core_lists); + return adapter; +} + +void i2c_put_adapter(struct i2c_adapter *adap) +{ + module_put(adap->owner); +} + +/* The SMBus parts */ + +#define POLY (0x1070U << 3) +static u8 +crc8(u16 data) +{ + int i; + + for (i = 0; i < 8; i++) { + if (data & 0x8000) + data = data ^ POLY; + data = data << 1; + } + return (u8)(data >> 8); +} + +/* CRC over count bytes in the first array plus the bytes in the rest + array if it is non-null. rest[0] is the (length of rest) - 1 + and is included. */ +static u8 i2c_smbus_partial_pec(u8 crc, int count, u8 *first, u8 *rest) +{ + int i; + + for (i = 0; i < count; i++) + crc = crc8((crc ^ first[i]) << 8); + if (rest != NULL) + for (i = 0; i <= rest[0]; i++) + crc = crc8((crc ^ rest[i]) << 8); + return crc; +} + +static u8 i2c_smbus_pec(int count, u8 *first, u8 *rest) +{ + return i2c_smbus_partial_pec(0, count, first, rest); +} + +/* Returns new "size" (transaction type) + Note that we convert byte to byte_data and byte_data to word_data + rather than invent new xxx_PEC transactions. */ +static int i2c_smbus_add_pec(u16 addr, u8 command, int size, + union i2c_smbus_data *data) +{ + u8 buf[3]; + + buf[0] = addr << 1; + buf[1] = command; + switch (size) { + case I2C_SMBUS_BYTE: + data->byte = i2c_smbus_pec(2, buf, NULL); + size = I2C_SMBUS_BYTE_DATA; + break; + case I2C_SMBUS_BYTE_DATA: + buf[2] = data->byte; + data->word = buf[2] || + (i2c_smbus_pec(3, buf, NULL) << 8); + size = I2C_SMBUS_WORD_DATA; + break; + case I2C_SMBUS_WORD_DATA: + /* unsupported */ + break; + case I2C_SMBUS_BLOCK_DATA: + data->block[data->block[0] + 1] = + i2c_smbus_pec(2, buf, data->block); + size = I2C_SMBUS_BLOCK_DATA_PEC; + break; + } + return size; +} + +static int i2c_smbus_check_pec(u16 addr, u8 command, int size, u8 partial, + union i2c_smbus_data *data) +{ + u8 buf[3], rpec, cpec; + + buf[1] = command; + switch (size) { + case I2C_SMBUS_BYTE_DATA: + buf[0] = (addr << 1) | 1; + cpec = i2c_smbus_pec(2, buf, NULL); + rpec = data->byte; + break; + case I2C_SMBUS_WORD_DATA: + buf[0] = (addr << 1) | 1; + buf[2] = data->word & 0xff; + cpec = i2c_smbus_pec(3, buf, NULL); + rpec = data->word >> 8; + break; + case I2C_SMBUS_WORD_DATA_PEC: + /* unsupported */ + cpec = rpec = 0; + break; + case I2C_SMBUS_PROC_CALL_PEC: + /* unsupported */ + cpec = rpec = 0; + break; + case I2C_SMBUS_BLOCK_DATA_PEC: + buf[0] = (addr << 1); + buf[2] = (addr << 1) | 1; + cpec = i2c_smbus_pec(3, buf, data->block); + rpec = data->block[data->block[0] + 1]; + break; + case I2C_SMBUS_BLOCK_PROC_CALL_PEC: + buf[0] = (addr << 1) | 1; + rpec = i2c_smbus_partial_pec(partial, 1, + buf, data->block); + cpec = data->block[data->block[0] + 1]; + break; + default: + cpec = rpec = 0; + break; + } + if (rpec != cpec) { + pr_debug("i2c-core: Bad PEC 0x%02x vs. 0x%02x\n", + rpec, cpec); + return -1; + } + return 0; +} + +s32 i2c_smbus_write_quick(struct i2c_client *client, u8 value) +{ + return i2c_smbus_xfer(client->adapter, client->addr, client->flags, + value, 0, I2C_SMBUS_QUICK, NULL); +} + +s32 i2c_smbus_read_byte(struct i2c_client *client) +{ + union i2c_smbus_data data; + + if (i2c_smbus_xfer(client->adapter, client->addr, client->flags, + I2C_SMBUS_READ, 0, I2C_SMBUS_BYTE, &data)) + return -1; + else + return 0x0FF & data.byte; +} + +s32 i2c_smbus_write_byte(struct i2c_client *client, u8 value) +{ + union i2c_smbus_data data; /* only for PEC */ + + return i2c_smbus_xfer(client->adapter, client->addr, client->flags, + I2C_SMBUS_WRITE, value, I2C_SMBUS_BYTE, &data); +} + +s32 i2c_smbus_read_byte_data(struct i2c_client *client, u8 command) +{ + union i2c_smbus_data data; + + if (i2c_smbus_xfer(client->adapter, client->addr, client->flags, + I2C_SMBUS_READ, command, I2C_SMBUS_BYTE_DATA, &data)) + return -1; + else + return 0x0FF & data.byte; +} + +s32 i2c_smbus_write_byte_data(struct i2c_client *client, u8 command, u8 value) +{ + union i2c_smbus_data data; + + data.byte = value; + return i2c_smbus_xfer(client->adapter, client->addr, client->flags, + I2C_SMBUS_WRITE, command, + I2C_SMBUS_BYTE_DATA, &data); +} + +s32 i2c_smbus_read_word_data(struct i2c_client *client, u8 command) +{ + union i2c_smbus_data data; + + if (i2c_smbus_xfer(client->adapter, client->addr, client->flags, + I2C_SMBUS_READ, command, I2C_SMBUS_WORD_DATA, &data)) + return -1; + else + return 0x0FFFF & data.word; +} + +s32 i2c_smbus_write_word_data(struct i2c_client *client, u8 command, u16 value) +{ + union i2c_smbus_data data; + + data.word = value; + return i2c_smbus_xfer(client->adapter, client->addr, client->flags, + I2C_SMBUS_WRITE, command, + I2C_SMBUS_WORD_DATA, &data); +} + +s32 i2c_smbus_write_block_data(struct i2c_client *client, u8 command, + u8 length, u8 *values) +{ + union i2c_smbus_data data; + int i; + + if (length > I2C_SMBUS_BLOCK_MAX) + length = I2C_SMBUS_BLOCK_MAX; + for (i = 1; i <= length; i++) + data.block[i] = values[i - 1]; + data.block[0] = length; + return i2c_smbus_xfer(client->adapter, client->addr, client->flags, + I2C_SMBUS_WRITE, command, + I2C_SMBUS_BLOCK_DATA, &data); +} + +/* Returns the number of read bytes */ +s32 i2c_smbus_read_i2c_block_data(struct i2c_client *client, u8 command, u8 *values) +{ + union i2c_smbus_data data; + int i; + + if (i2c_smbus_xfer(client->adapter, client->addr, client->flags, + I2C_SMBUS_READ, command, + I2C_SMBUS_I2C_BLOCK_DATA, &data)) + return -1; + else { + for (i = 1; i <= data.block[0]; i++) + values[i - 1] = data.block[i]; + return data.block[0]; + } +} + +/* Simulate a SMBus command using the i2c protocol + No checking of parameters is done! */ +static s32 i2c_smbus_xfer_emulated(struct i2c_adapter *adapter, u16 addr, + unsigned short flags, + char read_write, u8 command, int size, + union i2c_smbus_data *data) +{ + /* So we need to generate a series of msgs. In the case of writing, we + need to use only one message; when reading, we need two. We initialize + most things with sane defaults, to keep the code below somewhat + simpler. */ + unsigned char msgbuf0[34]; + unsigned char msgbuf1[34]; + int num = read_write == I2C_SMBUS_READ ? 2 : 1; + struct i2c_msg msg[2] = { { addr, flags, 1, msgbuf0 }, + { addr, flags | I2C_M_RD, 0, msgbuf1 } }; + int i; + + msgbuf0[0] = command; + switch (size) { + case I2C_SMBUS_QUICK: + msg[0].len = 0; + /* Special case: The read/write field is used as data */ + msg[0].flags = flags | (read_write == I2C_SMBUS_READ) ? I2C_M_RD : 0; + num = 1; + break; + case I2C_SMBUS_BYTE: + if (read_write == I2C_SMBUS_READ) { + /* Special case: only a read! */ + msg[0].flags = I2C_M_RD | flags; + num = 1; + } + break; + case I2C_SMBUS_BYTE_DATA: + if (read_write == I2C_SMBUS_READ) + msg[1].len = 1; + else { + msg[0].len = 2; + msgbuf0[1] = data->byte; + } + break; + case I2C_SMBUS_WORD_DATA: + if (read_write == I2C_SMBUS_READ) + msg[1].len = 2; + else { + msg[0].len = 3; + msgbuf0[1] = data->word & 0xff; + msgbuf0[2] = (data->word >> 8) & 0xff; + } + break; + case I2C_SMBUS_PROC_CALL: + num = 2; /* Special case */ + read_write = I2C_SMBUS_READ; + msg[0].len = 3; + msg[1].len = 2; + msgbuf0[1] = data->word & 0xff; + msgbuf0[2] = (data->word >> 8) & 0xff; + break; + case I2C_SMBUS_BLOCK_DATA: + case I2C_SMBUS_BLOCK_DATA_PEC: + if (read_write == I2C_SMBUS_READ) { + dev_err(&adapter->dev, "Block read not supported " + "under I2C emulation!\n"); + return -1; + } else { + msg[0].len = data->block[0] + 2; + if (msg[0].len > I2C_SMBUS_BLOCK_MAX + 2) { + dev_err(&adapter->dev, "smbus_access called with " + "invalid block write size (%d)\n", + data->block[0]); + return -1; + } + if (size == I2C_SMBUS_BLOCK_DATA_PEC) + (msg[0].len)++; + for (i = 1; i <= msg[0].len; i++) + msgbuf0[i] = data->block[i - 1]; + } + break; + case I2C_SMBUS_BLOCK_PROC_CALL: + case I2C_SMBUS_BLOCK_PROC_CALL_PEC: + dev_dbg(&adapter->dev, "Block process call not supported " + "under I2C emulation!\n"); + return -1; + case I2C_SMBUS_I2C_BLOCK_DATA: + if (read_write == I2C_SMBUS_READ) + msg[1].len = I2C_SMBUS_I2C_BLOCK_MAX; + else { + msg[0].len = data->block[0] + 1; + if (msg[0].len > I2C_SMBUS_I2C_BLOCK_MAX + 1) { + dev_err(&adapter->dev, "i2c_smbus_xfer_emulated called with " + "invalid block write size (%d)\n", + data->block[0]); + return -1; + } + for (i = 1; i <= data->block[0]; i++) + msgbuf0[i] = data->block[i]; + } + break; + default: + dev_err(&adapter->dev, "smbus_access called with invalid size (%d)\n", + size); + return -1; + } + + if (i2c_transfer(adapter, msg, num) < 0) + return -1; + + if (read_write == I2C_SMBUS_READ) + switch (size) { + case I2C_SMBUS_BYTE: + data->byte = msgbuf0[0]; + break; + case I2C_SMBUS_BYTE_DATA: + data->byte = msgbuf1[0]; + break; + case I2C_SMBUS_WORD_DATA: + case I2C_SMBUS_PROC_CALL: + data->word = msgbuf1[0] | (msgbuf1[1] << 8); + break; + case I2C_SMBUS_I2C_BLOCK_DATA: + /* fixed at 32 for now */ + data->block[0] = I2C_SMBUS_I2C_BLOCK_MAX; + for (i = 0; i < I2C_SMBUS_I2C_BLOCK_MAX; i++) + data->block[i + 1] = msgbuf1[i]; + break; + } + return 0; +} + + +s32 i2c_smbus_xfer(struct i2c_adapter *adapter, u16 addr, unsigned short flags, + char read_write, u8 command, int size, + union i2c_smbus_data *data) +{ + s32 res; + int swpec = 0; + u8 partial = 0; + + flags &= I2C_M_TEN | I2C_CLIENT_PEC; + if ((flags & I2C_CLIENT_PEC) && + !(i2c_check_functionality(adapter, I2C_FUNC_SMBUS_HWPEC_CALC))) { + swpec = 1; + if (read_write == I2C_SMBUS_READ && + size == I2C_SMBUS_BLOCK_DATA) + size = I2C_SMBUS_BLOCK_DATA_PEC; + else if (size == I2C_SMBUS_PROC_CALL) + size = I2C_SMBUS_PROC_CALL_PEC; + else if (size == I2C_SMBUS_BLOCK_PROC_CALL) { + i2c_smbus_add_pec(addr, command, + I2C_SMBUS_BLOCK_DATA, data); + partial = data->block[data->block[0] + 1]; + size = I2C_SMBUS_BLOCK_PROC_CALL_PEC; + } else if (read_write == I2C_SMBUS_WRITE && + size != I2C_SMBUS_QUICK && + size != I2C_SMBUS_I2C_BLOCK_DATA) + size = i2c_smbus_add_pec(addr, command, size, data); + } + + if (adapter->algo->smbus_xfer) { + down(&adapter->bus_lock); + res = adapter->algo->smbus_xfer(adapter, addr, flags, read_write, + command, size, data); + up(&adapter->bus_lock); + } else + res = i2c_smbus_xfer_emulated(adapter, addr, flags, read_write, + command, size, data); + + if (res >= 0 && swpec && + size != I2C_SMBUS_QUICK && size != I2C_SMBUS_I2C_BLOCK_DATA && + (read_write == I2C_SMBUS_READ || size == I2C_SMBUS_PROC_CALL_PEC || + size == I2C_SMBUS_BLOCK_PROC_CALL_PEC)) + if (i2c_smbus_check_pec(addr, command, size, partial, data)) + return -1; + return res; +} + + +/* Next four are needed by i2c-isa */ +EXPORT_SYMBOL_GPL(i2c_adapter_dev_release); +EXPORT_SYMBOL_GPL(i2c_adapter_driver); +EXPORT_SYMBOL_GPL(i2c_adapter_class); +EXPORT_SYMBOL_GPL(i2c_bus_type); + +EXPORT_SYMBOL(i2c_add_adapter); +EXPORT_SYMBOL(i2c_del_adapter); +EXPORT_SYMBOL(i2c_add_driver); +EXPORT_SYMBOL(i2c_del_driver); +EXPORT_SYMBOL(i2c_attach_client); +EXPORT_SYMBOL(i2c_detach_client); +EXPORT_SYMBOL(i2c_use_client); +EXPORT_SYMBOL(i2c_release_client); +EXPORT_SYMBOL(i2c_clients_command); +EXPORT_SYMBOL(i2c_check_addr); + +EXPORT_SYMBOL(i2c_master_send); +EXPORT_SYMBOL(i2c_master_recv); +EXPORT_SYMBOL(i2c_control); +EXPORT_SYMBOL(i2c_transfer); +EXPORT_SYMBOL(i2c_get_adapter); +EXPORT_SYMBOL(i2c_put_adapter); +EXPORT_SYMBOL(i2c_probe); + +EXPORT_SYMBOL(i2c_smbus_xfer); +EXPORT_SYMBOL(i2c_smbus_write_quick); +EXPORT_SYMBOL(i2c_smbus_read_byte); +EXPORT_SYMBOL(i2c_smbus_write_byte); +EXPORT_SYMBOL(i2c_smbus_read_byte_data); +EXPORT_SYMBOL(i2c_smbus_write_byte_data); +EXPORT_SYMBOL(i2c_smbus_read_word_data); +EXPORT_SYMBOL(i2c_smbus_write_word_data); +EXPORT_SYMBOL(i2c_smbus_write_block_data); +EXPORT_SYMBOL(i2c_smbus_read_i2c_block_data); + +MODULE_AUTHOR("Simon G. Vogl <[email protected]>"); +MODULE_DESCRIPTION("I2C-Bus main module"); +MODULE_LICENSE("GPL"); diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/examples/example.c b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/examples/example.c new file mode 100644 index 00000000..7c8edf79 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/examples/example.c @@ -0,0 +1,117 @@ + +const char *token_names[] = +{ + [CT_POUND] = "POUND", + [CT_PREPROC] = "PREPROC", + [CT_PREPROC_BODY] = "PREPROC_BODY", + [CT_PP] = "PP", +}; + + +int main(int argc, char *argv[]) +{ + struct junk a[] = + { + { "version", 0, 0, 0 }, + { "file", 1, 150, 'f' }, + { "config", 1, 0, 'c' }, + { "parsed", 25, 0, 'p' }, + { NULL, 0, 0, 0 } + }; +} + + +color_t colors[] = +{ + { "red", { 255, 0, 0 } }, { "blue", { 0, 255, 0 } }, + { "green", { 0, 0, 255 } }, { "purple", { 255, 255, 0 } }, +}; + + +struct foo_t bar = +{ + .name = "bar", + .age = 21 +}; + + +struct foo_t bars[] = +{ + [0] = { .name = "bar", + .age = 21 }, + [1] = { .name = "barley", + .age = 55 }, +}; + +void foo(void) +{ + int i; + char *name; + + i = 5; + name = "bob"; +} + +/** + * This is your typical header comment + */ +int foo(int bar) +{ + int idx; + int res = 0; // trailing comment + // that spans two lines + for (idx = 1; idx < bar; idx++) + /* comment in virtual braces */ + res += idx; + + res *= idx; // some comment + + // almost continued, but a NL in between + +// col1 comment in level 1 + return(res); +} + +// col1 comment in level 0 + + +#define foobar(x) \ + { \ + for (i = 0; i < x; i++) \ + { \ + junk(i, x); \ + } \ + } + + +void foo(void) +{ + switch(ch) + { + case 'a': + { + handle_a(); + break; + } + + case 'b': + handle_b(); + break; + + case 'c': + case 'd': + handle_cd(); + break; + + case 'e': + { + handle_a(); + } + break; + + default: + handle_default(); + break; + } +} + diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/images/linuxlinks.gif b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/images/linuxlinks.gif Binary files differnew file mode 100644 index 00000000..d3adec5c --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/images/linuxlinks.gif diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/index.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/index.html new file mode 100644 index 00000000..452b53bf --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/index.html @@ -0,0 +1,183 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8" /> + <title>Uncrustify - Source Code Beautifier for C-like languages</title> + <link rel="stylesheet" type="text/css" href="uncrustify1.css" /> + <!-- <link rel="shortcut icon" href="images/favicon.ico" /> --> +</head> +<body lang="en-us" dir="ltr"> + +<div align="center"> +<table> +<tr> +<td align="center"> +<div class="node1" align="center"> +<div class="node2" align="left"> +<h1>Uncrustify</h1> +<h2>Source Code Beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA</h2> +<table> + <tr> + <td valign="top"> + <script type='text/javascript' language='JavaScript' src='http://www.ohloh.net/projects/4765/badge_js'></script> + </td> + <td valign="top"> + <a href="https://travis-ci.org/uncrustify/uncrustify/builds"> + <img alt="Travis CI Build Status" + src="https://travis-ci.org/uncrustify/uncrustify.svg?branch=master"/> + </a> + </td> + <td valign="top"> + <a href="https://scan.coverity.com/projects/uncrustify"> + <img alt="Coverity Scan Build Status" + src="https://scan.coverity.com/projects/8264/badge.svg"/> + </a> + </td> + </tr> +</table> + +<h2>Introduction</h2> +<p>The goals of this project are simple: +Create a highly configurable, easily modifiable source code beautifier.</p> + +<br /> + +<h2>Features</h2> +<ul> + <li>Indent code, aligning on parens, assignments, etc</li> + <li>Align on '=' and variable definitions</li> + <li>Align structure initializers</li> + <li>Align #define stuff</li> + <li>Align backslash-newline stuff</li> + <li>Reformat comments (a little bit)</li> + <li>Fix inter-character spacing</li> + <li>Add or remove parens on return statements</li> + <li>Add or remove braces on single-statement if/do/while/for statements</li> + <li>Supports embedded SQL 'EXEC SQL' stuff</li> + <li>Highly configurable - 808 configurable options as of version 0.75.0</li> +</ul> + +<p> + See some example <a href="examples/example.c">output</a>. +</p> + +<br /> + +<h2>Where to get Uncrustify</h2> + +<h3>Project Websites</h3> +<a href="http://sourceforge.net/projects/uncrustify/">Sourceforge project web site</a><BR> +<a href="http://sourceforge.net/projects/uncrustify/files/">Release downloads</a><br> +<a href="http://freshmeat.net/projects/uncrustify/">Freshmeat Project</a><BR> +<a href="http://github.com/uncrustify/uncrustify">Git Hub</a><br> + +<h3>Source Code</h3> +As of release 0.54, the source code is maintained in a <a href="http://git-scm.com/">Git</a> repository.<br> +<br> +The public Git URL for Sourceforge.net is <br> +<code>git://uncrustify.git.sourceforge.net/gitroot/uncrustify/uncrustify</code><br> +<br> +The public Git URL for github.com is <br> +<code>git://github.com/uncrustify/uncrustify.git</code><br> + +<h3>Prebuilt binaries</h3> +Windows (i386) : +<a href="http://sourceforge.net/project/showfiles.php?group_id=153164">Sourceforge</A><BR> + +<h3>Universal Indent GUI</h3> +<a href="http://universalindent.sourceforge.net/">Universal Indent GUI</a> is a +cross-platform graphical configuration file editor for many code beautifiers, including Uncrustify. + +<br /> + +<h2>Want to help?</h2> +<p> +The most helpful way is to try it out and give feedback. +Documentation and examples are available in the source tree, so check it out. +</p> +<p> +You can find the output from 'uncrustify --show-config' <a href="config.txt">here</a>.<br /> +Here is the <a href="default.cfg">default config file</a>. +And one I set up for <a href="linux.cfg.txt">Linux</a>.<br /> +And here is a <a href="examples/c-1.in.c">before</a> and <a href="examples/c-1.out.c">after</a> C source example.<br /> +That should give you a pretty good idea of what Uncrustify can do.<br /> +</p> + +<p> +If you find a bug, please do the following: +</p> +<ul> +<li>Reduce the input source file to the minimum that still has the problem</li> +<li>Use the sourceforget.net bug tracker</li> +<li>Attach the input source file, the configuration file, and a file that contains the expected output</li> +</ul> + +<p> +If you want to add a feature, fix a bug, or implement missing functionality, feel free to do so! Patches are welcome!<BR/> +Here are some areas that need attention: +</p> +<ul> + <li>Test Java support and provide feedback (or patches!)</li> + <li>Test Objective C support and provide feedback (or patches!)</li> + <li>Test Embedded SQL to see what works</li> + <li>This web page need a (re)design</li> + <li>A logo of some sort</li> + <li>Examples that can be put on this website to show off what Uncrustify can do</li> + <li>Anything else that you want to do to make it better?</li> +</ul> + +<h3>Project Mailing list</h3> +We don't have a mailing list for Uncrustify.<BR/> +We are using <a href="https://github.com/uncrustify/uncrustify/">github</a>. +<br> +You may use <a href="https://github.com/uncrustify/uncrustify/issues">Issues</a> to publish an error report. +<br> +Or <a href="https://github.com/uncrustify/uncrustify/pulls">PR</a> to make a bugfix proposal. + +<br /> + +<h2>Portability</h2> +<p> +I'm pretty sure that I'm not using anything that is OS-specific.<br /> +The software has been tested on the following operating systems: +</p> +<ul> + <li>Linux</li> + <li>QNX</li> + <li>OS X</li> + <li>FreeBSD, NetBSD, OpenBSD</li> + <li>Sun Solaris 9</li> + <li>Windows XP (binary available)</li> +</ul> + +<br /> + +<h2>Links</h2> +<ul> + <li><a href="http://universalindent.sourceforge.net/">Universal Indent GUI</a></li> + <li>Don't know what D is? Check out the <a href="http://dlang.org/index.html">D Programming Language website</a>.</li> + <li><a href="http://www.linuxlinks.com">Linux Links</a></li> +</ul> +<h2>Distributions that package Uncrustify</h2> +<ul> + <li><A href="http://www.debian.org/">Debian</A> + <li><A href="http://fedora.redhat.com/">Fedora</A></li> + <li><A href="http://www.altlinux.com/">ALT Linux</A></li> + <li><A href="http://www.t2-project.org/">T2</A></li> + <li><A href="http://www.macports.org/">MacPorts</a></li> + <li><A href="http://www.freebsd.org/cgi/ports.cgi?query=uncrustify">FreeBSD Ports (textproc/uncrustify)</a></li> + <li><A href="http://openports.se/textproc/uncrustify">OpenBSD Ports (textproc/uncrustify)</a></li> + <li>Others?</li> +</ul> +</div> +</div> +</td> +</tr> +</table> +</div> +<br /> +<a href="http://sourceforge.net/donate/index.php?group_id=153164">"Support This Project"</a> +<br /> + +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/linux.cfg.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/linux.cfg.txt new file mode 100644 index 00000000..baae9848 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/linux.cfg.txt @@ -0,0 +1,92 @@ +# +# uncrustify config file for the linux kernel +# + +indent_with_tabs = 2 # 1=indent to level only, 2=indent with tabs +input_tab_size = 8 # original tab size +output_tab_size = 8 # new tab size +indent_columns = output_tab_size + +indent_label = 1 # pos: absolute col, neg: relative column + + +# +# inter-symbol newlines +# + +nl_enum_brace = remove # "enum {" vs "enum \n {" +nl_union_brace = remove # "union {" vs "union \n {" +nl_struct_brace = remove # "struct {" vs "struct \n {" +nl_do_brace = remove # "do {" vs "do \n {" +nl_if_brace = remove # "if () {" vs "if () \n {" +nl_for_brace = remove # "for () {" vs "for () \n {" +nl_else_brace = remove # "else {" vs "else \n {" +nl_while_brace = remove # "while () {" vs "while () \n {" +nl_switch_brace = remove # "switch () {" vs "switch () \n {" +nl_brace_while = remove # "} while" vs "} \n while" - cuddle while +nl_brace_else = remove # "} else" vs "} \n else" - cuddle else +nl_func_var_def_blk = 1 +nl_fcall_brace = remove # "list_for_each() {" vs "list_for_each()\n{" +nl_fdef_brace = add # "int foo() {" vs "int foo()\n{" +# nl_after_return = TRUE; +# nl_before_case = 1 + + +# +# Source code modifications +# + +mod_paren_on_return = remove # "return 1;" vs "return (1);" +mod_full_brace_if = remove # "if (a) a--;" vs "if (a) { a--; }" +mod_full_brace_for = remove # "for () a--;" vs "for () { a--; }" +mod_full_brace_do = remove # "do a--; while ();" vs "do { a--; } while ();" +mod_full_brace_while = remove # "while (a) a--;" vs "while (a) { a--; }" +mod_full_brace_nl = 3 # don't remove if more than 3 newlines + + +# +# inter-character spacing options +# + +# sp_return_paren = force # "return (1);" vs "return(1);" +sp_sizeof_paren = remove # "sizeof (int)" vs "sizeof(int)" +sp_before_sparen = force # "if (" vs "if(" +sp_after_sparen = force # "if () {" vs "if (){" +sp_after_cast = remove # "(int) a" vs "(int)a" +sp_inside_braces = add # "{ 1 }" vs "{1}" +sp_inside_braces_struct = add # "{ 1 }" vs "{1}" +sp_inside_braces_enum = add # "{ 1 }" vs "{1}" +sp_assign = add +sp_arith = add +sp_bool = add +sp_compare = add +sp_assign = add +sp_after_comma = add +sp_func_def_paren = remove # "int foo (){" vs "int foo(){" +sp_func_call_paren = remove # "foo (" vs "foo(" +sp_func_proto_paren = remove # "int foo ();" vs "int foo();" + + +# +# Aligning stuff +# + +align_with_tabs = TRUE # use tabs to align +align_on_tabstop = TRUE # align on tabstops +# align_keep_tabs = true +align_enum_equ_span = 4 # '=' in enum definition +# align_nl_cont = TRUE +# align_var_def_span = 2 +# align_var_def_inline = TRUE +# align_var_def_star = FALSE +# align_var_def_colon = TRUE +# align_assign_span = 1 +align_struct_init_span = 3 # align stuff in a structure init '= { }' +align_right_cmt_span = 3 +# align_pp_define_span = 8; +# align_pp_define_gap = 4; + +# cmt_star_cont = FALSE + +# indent_brace = 0 + diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options.html new file mode 100644 index 00000000..554836c3 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options.html @@ -0,0 +1,23 @@ +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8"/> + <title>Uncrustify: where do the options work</title> +</head> +<body lang="en-US"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work?</h1> +Move the cursor to a caret to see which option operates at this part of the code. +<h2>New lines</h2> +You want to "add/ force/ ignore/ remove" a <a href="options_NewLines.html">new line.</a> +<h2>Namespace</h2> +You want to "add/ force/ ignore/ remove" a <a href="options_Namespace.html">new line.</a> +<h2>Positioning</h2> +You want to change a <a href="options_Positioning.html">position.</a> +<h2>Spaces</h2> +You want to "add/ force/ ignore/ remove" a <a href="options_Spaces.html">space</a> at some places. +<h2>Code modifying</h2> +You want to <a href="options_ModifyCode.html">modify the code.</a> +<h2>Indenting</h2> +You want to <a href="options_Indenting.html">indent the code.</a> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_ASM.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_ASM.html new file mode 100644 index 00000000..4de0e7bb --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_ASM.html @@ -0,0 +1,38 @@ +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8"/> + <title>Uncrustify: where do the Spaces options work-Java</title> +</head> +<body lang="en-US"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work ASM ?</h1> + +<p> +</p> +<h2>Spaces for ASM</h2> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> +void foo() +{ + int head, bar; + __asm__ __volatile__ + ( + "movq %0,%%xmm0\n\t" /* asm template */ + "0:\n\t" + "bar %0,<a title="sp_before_square_asm_block"><strong><font color="red">█</font></strong></a>[%4]\n\t" // in template + "1:\n\t" + : "=a", (bar) + : "=&b", (&head), "+m", (bar) + : "cc" + ); +} +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Align.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Align.html new file mode 100644 index 00000000..99edad58 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Align.html @@ -0,0 +1,44 @@ +#define SUCCESS 0 + █ +align_pp_define_gap +The minimum space between label and value of a preprocessor define + +#define set_chunk_type(pc, tt) do { \ + LOG_FUNC_CALL(); \ + set_chunk_type_real((pc), (tt)); \ +} while (false) +align_nl_cont = true + +#define LOG_STR(sev, str, len) \ + if (log_sev_on(sev)) { log_str(sev, str, len); } + █ +nl_after_brace_close + + +extern struct cp_data cpd; + +extern bool QT_SIGNAL_SLOT_found; +extern int QT_SIGNAL_SLOT_level; +extern bool restoreValues; +align_var_def_span █ + +enum argval_t +{ + AV_IGNORE = 0, + AV_ADD = 1, + AV_REMOVE = 2, + AV_FORCE = 3, /**< remove + add */ + AV_NOT_DEFINED = 4 /* to be used with QT, SIGNAL SLOT macros */ +}; + █ +align_var_struct_span + + + UO_indent_var_def_blk, // indent a variable def block that appears at the top + UO_indent_var_def_cont, + UO_indent_shift, // if a shift expression spans multiple lines, indent + + UO_indent_min_vbrace_open, // min. indent after virtual brace open and newline + UO_indent_vbrace_open_on_tabstop, // when identing after virtual brace open and newline add further spaces to reach next tabstop + +align_right_cmt_span diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_CLI_NET.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_CLI_NET.html new file mode 100644 index 00000000..8838cdf0 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_CLI_NET.html @@ -0,0 +1,28 @@ +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8"/> + <title>Uncrustify: where do the Spaces options work-Java</title> +</head> +<body lang="en-US"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work CLI .NET ?</h1> + +<p> +</p> +<h2>Spaces for CLI .NET</h2> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> + + Foo^ foo = dynamic_cast<Bar^>(bar); + <a title="sp_after_ptr_block_caret"><strong><font color="red"> █</font></strong></a> + +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_C_sharp.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_C_sharp.html new file mode 100644 index 00000000..74767b9d --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_C_sharp.html @@ -0,0 +1,28 @@ +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8"/> + <title>Uncrustify: where do the Spaces options work-Java</title> +</head> +<body lang="en-US"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work C-# ?</h1> + +<p> +</p> +<h2>Spaces for C-#</h2> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> + + int[ , , ] testArray = new int[4, 2, 3]; + <a title="sp_before_mdatype_commas"><strong><font color="red"> █</font></strong></a><a title="sp_between_mdatype_commas"><strong><font color="red"> █</font></strong></a><a title="sp_after_mdatype_commas"><strong><font color="red"> █</font></strong></a> + +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_D.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_D.html new file mode 100644 index 00000000..308b5c58 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_D.html @@ -0,0 +1,28 @@ +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8"/> + <title>Uncrustify: where do the Spaces options work-D</title> +</head> +<body lang="en-US"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work-D?</h1> + +<p> +</p> +<h2>Spaces-D</h2> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> + + invariant (C) c; + <a title="sp_after_invariant_paren"><strong><font color="red"> █</font></strong></a> + +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Indenting.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Indenting.html new file mode 100644 index 00000000..7887f759 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Indenting.html @@ -0,0 +1,130 @@ +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8"/> + <title>Uncrustify: where do the Indenting options work</title> +</head> +<body lang="en-US"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work?</h1> +<h2>Indenting</h2> +<p> +</p> +<table border="1"> +<tr> +<td> +<pre><a name="indent_with_tabs"></a><a name="indent_cmt_with_tabs"></a> +// indent_with_tabs = 0 spaces only +// indent_cmt_with_tabs = false +int foo::bar() +{<a name="indent_columns"></a> + int a; +<a title="indent_columns"><strong><font color="red">████</font></strong></a><a name="indent_continue"></a><a name="use_indent_continue_only_once"></a> + double a_very_long_variable = test (foobar1, + foobar5); + <a title="indent_continue, use_indent_continue_only_once"><strong><font color="red">████</font></strong></a> +} +</pre> +</td> +</tr> +<tr> +<td> +<pre> +class Test +{<a name="indent_access_spec"></a> + private: +<a title="indent_access_spec"><strong><font color="red">█</font></strong></a> + int a; +} +</pre> +</td> +</tr> +</table> +<p></p> +<h1>Register</h1> +<table> + <tr> + <td><a href="#indent_columns">indent_columns</a></td> + <td><a href="#indent_continue">indent_continue</a></td> + <td><a href="#indent_with_tabs">indent_with_tabs</a></td> + <td><a href="#indent_cmt_with_tabs">indent_cmt_with_tabs</a></td> + <td><a href="#indent_align_string">indent_align_string</a></td> + <td><a href="#indent_xml_string">indent_xml_string</a></td> + <td><a href="#indent_brace">indent_brace</a></td> + <td><a href="#indent_braces">indent_braces</a></td> + <td><a href="#indent_braces_no_func">indent_braces_no_func</a></td> + <td><a href="#indent_braces_no_class">indent_braces_no_class</a></td> + <td><a href="#indent_braces_no_struct">indent_braces_no_struct</a></td> + <td><a href="#indent_brace_parent">indent_brace_parent</a></td> + <td><a href="#indent_paren_open_brace">indent_paren_open_brace</a></td> + <td><a href="#indent_namespace">indent_namespace</a></td> + <td><a href="#indent_namespace_single_indent">indent_namespace_single_indent</a></td> + <td><a href="#indent_namespace_level">indent_namespace_level</a></td> + <td><a href="#indent_namespace_limit">indent_namespace_limit</a></td> + <td><a href="#indent_extern">indent_extern</a></td> + <td><a href="#indent_class">indent_class</a></td> + <td><a href="#indent_class_colon">indent_class_colon</a></td> + <td><a href="#indent_class_on_colon">indent_class_on_colon</a></td> + <td><a href="#indent_constr_colon">indent_constr_colon</a></td> + <td><a href="#indent_ctor_init_leading">indent_ctor_init_leading</a></td> + <td><a href="#indent_ctor_init">indent_ctor_init</a></td> + <td><a href="#indent_else_if">indent_else_if</a></td> + <td><a href="#indent_var_def_blk">indent_var_def_blk</a></td> + <td><a href="#indent_var_def_cont">indent_var_def_cont</a></td> + <td><a href="#indent_shift">indent_shift</a></td> + <td><a href="#indent_func_def_force_col1">indent_func_def_force_col1</a></td> + <td><a href="#indent_func_call_param">indent_func_call_param</a></td> + <td><a href="#indent_func_def_param">indent_func_def_param</a></td> + <td><a href="#indent_func_proto_param">indent_func_proto_param</a></td> + <td><a href="#indent_func_class_param">indent_func_class_param</a></td> + <td><a href="#indent_func_ctor_var_param">indent_func_ctor_var_param</a></td> + <td><a href="#indent_template_param">indent_template_param</a></td> + <td><a href="#indent_func_param_double">indent_func_param_double</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_member">indent_member</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_switch_case">indent_switch_case</a></td> + <td><a href="#indent_case_shift">indent_case_shift</a></td> + <td><a href="#indent_case_brace">indent_case_brace</a></td> + <td><a href="#indent_col1_comment">indent_col1_comment</a></td> + <td><a href="#indent_label">indent_label</a></td> + <td><a href="#indent_access_spec">indent_access_spec</a></td> + <td><a href="#indent_access_spec_body">indent_access_spec_body</a></td> + <td><a href="#indent_paren_nl">indent_paren_nl</a></td> + <td><a href="#indent_paren_close">indent_paren_close</a></td> + <td><a href="#indent_comma_paren">indent_comma_paren</a></td> + <td><a href="#indent_bool_paren">indent_bool_paren</a></td> + <td><a href="#indent_first_bool_expr">indent_first_bool_expr</a></td> + <td><a href="#indent_square_nl">indent_square_nl</a></td> + <td><a href="#indent_preserve_sql">indent_preserve_sql</a></td> + <td><a href="#indent_align_assign">indent_align_assign</a></td> + <td><a href="#indent_off_after_assign">indent_off_after_assign</a></td> + + <td><a href="#indent_min_vbrace_open">indent_min_vbrace_open</a></td> + <td><a href="#indent_vbrace_open_on_tabstop">indent_vbrace_open_on_tabstop</a></td> + <td><a href="#use_indent_continue_only_once">use_indent_continue_only_once</a></td> + </tr> + <tr> + </tr> +</table> + +<h2>not yet shown</h2> + +<h2>only for Pawn</h2> + +<h2>only for Java</h2> + +<h2>only for objective C</h2> +indent_oc_msg_colon<br> +indent_oc_msg_prioritize_first_colon<br> +indent_oc_block_msg_xcode_style<br> +indent_oc_block_msg_from_keyword<br> +indent_oc_block_msg_from_colon<br> +indent_oc_block_msg_from_caret<br> +indent_oc_block_msg_from_brace<br> +indent_oc_inside_msg_sel<br> + +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Java.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Java.html new file mode 100644 index 00000000..80083042 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Java.html @@ -0,0 +1,28 @@ +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8"/> + <title>Uncrustify: where do the Spaces options work-Java</title> +</head> +<body lang="en-US"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work-Java?</h1> + +<p> +</p> +<h2>Spaces-Java</h2> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> + + for (Type var : expr) + <a title="sp_after_for_colon"><strong><font color="red"> █</font></strong></a> + +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_ModifyCode.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_ModifyCode.html new file mode 100644 index 00000000..e20e1098 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_ModifyCode.html @@ -0,0 +1,151 @@ +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8"/> + <title>Uncrustify: where do the Positioning options work</title> +</head> +<body lang="en-US"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work?</h1> +<h2>Code modifying</h2> +<p> +</p> +<table border="1"> +<tr> +<td> +<pre> +namespace a::b +{ +int foo::bar() +{ + switch(xx) { + case 1: <a name="mod_full_brace_do"></a><a name="mod_full_brace_for"></a> + do { ++i; } while (++cnt < 1000); + <a title="mod_full_brace_do"><strong><font color="red"> █ █</font></strong></a> + for (i = 0; i < 5; i++) { bar(i); } + <a title="mod_full_brace_for"><strong><font color="red"> █ █</font></strong></a><a name="mod_full_brace_if"></a><a name="mod_full_brace_if_chain"></a><a name="mod_full_brace_nl"></a> + if (a != b) { + <a title="mod_full_brace_nl"><strong><font color="red"> █</a> + <a title="mod_full_brace_if"> █</a> + <a title="mod_full_brace_if_chain"> █</font></strong></a> + x = a; + if (c == d) + <a title="mod_full_brace_if"><strong><font color="red"> █</font></strong></a> + y = 5; + } + <a title="mod_full_brace_nl"><strong><font color="red">█</a> + <a title="mod_full_brace_if">█</a> + <a title="mod_full_brace_if_chain">█</font></strong></a><a name="mod_full_brace_while"></a> + while (a == b) + <a title="mod_full_brace_while"><strong><font color="red"> █</font></strong></a> + c++; + <a title="mod_full_brace_while"><strong><font color="red">█</font></strong></a><a name="mod_full_paren_if_bool"></a> + if (( a < b) && ( b > c)) { + <a title="mod_full_paren_if_bool"><strong><font color="red"> █ █ █ █</font></strong></a><a name="mod_paren_on_return"></a> + return (nCount); + <a title="mod_paren_on_return"><strong><font color="red"> █ █</font></strong></a><a name="mod_remove_extra_semicolon"></a> + if (a) { + foo();; + <a title="mod_remove_extra_semicolon"><strong><font color="red"> █</font></strong></a> + }; + <a title="mod_remove_extra_semicolon"><strong><font color="red"> █</font></strong></a> + break;<a name="mod_move_case_break"></a> + case 2: {<a name="mod_case_brace"></a> + int b; + b = 2; + } + <a title="mod_case_brace"><strong><font color="red">█</font></strong></a> + break; + <a title="mod_move_case_break"><strong><font color="red">█</font></strong></a> + default:<a name="mod_add_long_switch_closebrace_comment"></a> + handle_the_rest(); + break; + } // switch + <a title="mod_add_long_switch_closebrace_comment"><strong><font color="red"> █</font></strong></a><a name="mod_add_long_function_closebrace_comment"></a> +} // foo::bar +<a title="mod_add_long_function_closebrace_comment"><strong><font color="red"> █</font></strong></a><a name="mod_add_long_namespace_closebrace_comment"></a> +} // namespace a::b +<a title="mod_add_long_namespace_closebrace_comment"><strong><font color="red"> █</font></strong></a> +<a name="mod_remove_empty_return"></a> +void a() +{ + return; + <a title="mod_remove_empty_return"><strong><font color="red">█</font></strong></a> +} +</pre> +</td> +</tr> +</table> +<p></p> +<h1>Register</h1> +<table> + <tr> + <td><a href="#mod_add_long_function_closebrace_comment">mod_add_long_function_closebrace_comment</a></td> + <td><a href="#mod_add_long_ifdef_else_comment">mod_add_long_ifdef_else_comment</a></td> + </tr> + <tr> + <td><a href="#mod_add_long_ifdef_endif_comment">mod_add_long_ifdef_endif_comment</a></td> + <td><a href="#mod_add_long_namespace_closebrace_comment">mod_add_long_namespace_closebrace_comment</a></td> + </tr> + <tr> + <td><a href="#mod_add_long_switch_closebrace_comment">mod_add_long_switch_closebrace_comment</a></td> + <td><a href="#mod_case_brace">mod_case_brace</a></td> + </tr> + <tr> + <td><a href="#mod_full_brace_do">mod_full_brace_do</a></td> + <td><a href="#mod_full_brace_for">mod_full_brace_for</a></td> + </tr> + <tr> + <td><a href="#mod_full_brace_function">mod_full_brace_function</a></td> + <td><a href="#mod_full_brace_if_chain">mod_full_brace_if_chain</a></td> + </tr> + <tr> + <td><a href="#mod_full_brace_if">mod_full_brace_if</a></td> + <td><a href="#mod_full_brace_nl">mod_full_brace_nl</a></td> + </tr> + <tr> + <td><a href="#mod_full_brace_using">mod_full_brace_using</a></td> + <td><a href="#mod_full_brace_while">mod_full_brace_while</a></td> + </tr> + <tr> + <td><a href="#mod_full_paren_if_bool">mod_full_paren_if_bool</a></td> + <td><a href="#mod_move_case_break">mod_move_case_break</a></td> + </tr> + <tr> + <td><a href="#mod_paren_on_return">mod_paren_on_return</a></td> + <td><a href="#mod_pawn_semicolon">mod_pawn_semicolon</a></td> + </tr> + <tr> + <td><a href="#mod_remove_empty_return">mod_remove_empty_return</a></td> + <td><a href="#mod_remove_extra_semicolon">mod_remove_extra_semicolon</a></td> + </tr> + <tr> + <td><a href="#mod_sort_import">mod_sort_import</a></td> + <td><a href="#mod_sort_include">mod_sort_include</a></td> + <td><a href="#mod_sort_incl_import_prioritize_filename">mod_sort_incl_import_prioritize_filename</a></td> + <td><a href="#mod_sort_incl_import_prioritize_extensionless">mod_sort_incl_import_prioritize_extensionless</a></td> + <td><a href="#mod_sort_incl_import_prioritize_angle_over_quotes">mod_sort_incl_import_prioritize_angle_over_quotes</a></td> + <td><a href="#mod_sort_incl_import_ignore_extension">mod_sort_incl_import_ignore_extension</a></td> + <td><a href="#mod_sort_incl_import_grouping_enabled">mod_sort_incl_import_grouping_enabled</a></td> + </tr> + <tr> + <td><a href="#mod_sort_using">mod_sort_using</a></td> + </tr> +</table> + +<h2>not yet shown</h2> +mod_full_brace_using<br> +mod_add_long_ifdef_endif_comment<br> +mod_add_long_ifdef_else_comment<br> +mod_sort_include<br> + +<h2>only for Pawn</h2> +mod_full_brace_function<br> +mod_pawn_semicolon<br> + +<h2>only for Java</h2> +mod_sort_import<br> + +<h2>only for C#</h2> +mod_sort_using<br> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Namespace.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Namespace.html new file mode 100644 index 00000000..74589df0 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Namespace.html @@ -0,0 +1,69 @@ +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8"/> + <title>Uncrustify: where do the New Lines options work</title> +</head> +<body lang="en-US"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work?</h1> +<h2>Spaces and New lines for Namespace</h2> +<p> +</p> +<hr><a name="nl_namespace_brace"></a> +<pre> +namespace fooA { +<a title="nl_namespace_brace"><strong><font color="red"> █</font></strong></a> + // use here nl_namespace_brace=false + ... +<a name="sp_word_brace_ns"></a> +namespace fooB {<a name="nl_after_brace_open"></a> +<a title="sp_word_brace_ns"><strong><font color="red"> █</font></strong></a> +// sp_word_brace_ns=true +<a title="indent_namespace"><strong><font color="red"> █</font></strong></a><a title="indent_namespace_level"><strong><font color="red"> █</font></strong></a>void a(); +// indent_namespace=true" +// indent_namespace_level=5" + ... + +namespace foo1 {<a title="indent_namespace_single_indent"><strong><font color="red"> █</font></strong></a> + // indent_namespace_single_indent=true +namespace foo2 { +<a title="indent_namespace"><strong><font color="red"> █</font></strong></a>void a(); + // indent_namespace=true + ... + +namespace fooC { +<a title="indent_namespace"><strong><font color="red"> █</font></strong></a> + // indent_namespace=true +<a title="indent_namespace_limit"><strong><font color="red"> █</font></strong></a> + // indent_namespace_limit=3 +void a(); +void b(); +void c(); +} + +namespace dudeNamespace +<a title="nl_namespace_two_to_one_liner"><strong><font color="red">█</font></strong></a> +{ class ForwardFooClass; } + + +namespace fooD { +<a title="nl_inside_namespace"><strong><font color="red"> █</font></strong></a> + // nl_inside_namespace=2 + void a(); + void b(); + void c(); +<a title="nl_inside_namespace"><strong><font color="red"> █</font></strong></a> + // nl_inside_namespace=2 +} + +namespace fooD { + void a(); + void b(); + void c(); +}<a title="mod_add_long_namespace_closebrace_comment"><strong><font color="red"> █</font></strong></a>// namespace fooD + // mod_add_long_namespace_closebrace_comment=2 + + +</pre> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_NewLines.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_NewLines.html new file mode 100644 index 00000000..85a37821 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_NewLines.html @@ -0,0 +1,216 @@ +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8"/> + <title>Uncrustify: where do the New Lines options work</title> +</head> +<body lang="en-US"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work?</h1> +<h2>New lines</h2> +<p> +</p> +<hr> +<pre> +<a title="nl_remove_extra_newlines"><strong><font color="red">█</font></strong></a> +<a title="nl_start_of_file"><strong><font color="red"><strong><font color="red">█</font></strong></font></strong></a> +void bar_0(); // function definition +<a title="nl_func_paren"><strong><font color="red"> █</a><a title="nl_func_def_empty">█</font></strong></a> +void bar_0() // function declaration +<a title="nl_func_def_paren"><strong><font color="red"> █</a><a title="nl_func_decl_empty">█</font></strong></a> +void A::bar_1(int a); +<a title="nl_func_scope_name"><strong><font color="red"> █</a><a title="nl_func_def_start"> █</a><a title="nl_func_def_end_single"> █</font></strong></a> +void bar_2(int a) <a title="nl_fdef_brace"><strong><font color="red">█</font></strong></a> +<a title="nl_func_type_name"><strong><font color="red"> █</a><a title="nl_func_decl_start"> █</a><a title="nl_func_decl_end"> █</font></strong></a> +<a title="nl_func_decl_start_single"><strong><font color="red"> █</a><a title="nl_func_decl_end_single"> █</font></strong></a> +{<a title="nl_collapse_empty_body"><strong><font color="red">█</font></strong></a> +} +<a title="nl_after_func_body"><strong><font color="red">█</font></strong></a> +void bar_3(int x, + int y) +<a title="nl_func_def_args"><strong><font color="red"> █</a><a title="nl_func_decl_end"> █</font></strong></a> +{ + int a = 5;<a title="nl_after_semicolon"><strong><font color="red"> █</font></strong></a> + int b = 7; + <a title="nl_func_var_def_blk"><strong><font color="red"> █</font></strong></a> + a = 135; + list_for_each(item, list) { +<a title="nl_fcall_brace"><strong><font color="red"> █</font></strong></a> + } +<a title="nl_before_block_comment"><strong><font color="red"> █</font></strong></a> + /* c1 + * c2 + */ +<a title="nl_max"><strong><font color="red"> █</font></strong></a> + int x2; +<a title="nl_before_c_comment"><strong><font color="red"> █</font></strong></a> + /* single comment */ +<a title="nl_before_cpp_comment"><strong><font color="red"> █</font></strong></a> + // cpp comment + std::for_each(a, b, [] (int& b) -> foo { +<a title="nl_cpp_ldef_brace"><strong><font color="red"> █</font></strong></a> + b+=3; + } + A_function(parameter_for_A); +<a title="nl_func_call_start"><strong><font color="red"> █</font></strong></a><a title="nl_func_call_end"><strong><font color="red"> █</font></strong></a> +} +<a title="nl_end_of_file"><strong><font color="red">█</font></strong></a> +<hr> +class foo : public my_Class<a title="nl_class_brace"><strong><font color="red"> █</font></strong></a> +<a title="nl_class_colon"><strong><font color="red"> █</font></strong></a> +{ + void bar_c(int t, int u)<a title="nl_constr_colon"><strong><font color="red"> █</font></strong></a> +<a title="nl_func_type_name_class, nl_func_proto_type_name"><strong><font color="red"> █</a><a title="nl_func_decl_args"> █</font></strong></a> + : t(222) + , u(88) +<a title="nl_constr_init_args, pos_constr_comma"><strong><font color="red"> █</font></strong></a> + { +<a title="nl_typedef_blk_start"><strong><font color="red"> █</font></strong></a> + typedef char CHAR; +<a title="nl_typedef_blk_end"><strong><font color="red"> █</a><a title="nl_var_def_blk_start"> █</font></strong></a> + CHAR c; + int a; + int b; +<a title="nl_var_def_blk_end"><strong><font color="red"> █</font></strong></a> + c = 'a'; +<a title="nl_before_switch"><strong><font color="red"> █</font></strong></a> + switch (a) { +<a title="nl_switch_brace"><strong><font color="red"> █</font></strong></a> + case 0: + b = 1; + break; +<a title="nl_before_case"><strong><font color="red"> █</font></strong></a> + case 1: b = 5; break; +<a title="nl_after_case"><strong><font color="red"> █</font></strong></a> + case 13: { +<a title="nl_case_colon_brace"><strong><font color="red"> █</font></strong></a> + b = 15; + break; + } + } +<a title="nl_after_switch"><strong><font color="red"> █</a><a title="nl_before_do"> █</font></strong></a> + do { <a title="nl_do_brace"><strong><font color="red">█</font></strong></a> + do_something(); + } while (!d.isEmpty()); +<a title="nl_brace_while"><strong><font color="red"> █</a><a title="nl_after_do">█</a><a title="nl_before_if"> █</font></strong></a> + if (a) { <a title="nl_if_brace"><strong><font color="red">█</font></strong></a> + b = 1; + } else if (c) { +<a title="nl_brace_else"><strong><font color="red"> █</a><a title="nl_else_if"> █</a><a title="nl_elseif_brace"> █</font></strong></a> + b ; + } else { +<a title="nl_else_brace"><strong><font color="red"> █</font></strong></a> + b = 3; + } +<a title="nl_after_if"><strong><font color="red"> █</a><a title="nl_before_for"> █</font></strong></a> + for (a = 1; a < 5; a++) { +<a title="nl_for_brace"><strong><font color="red"> █</font></strong></a> + b = b + a; + } +<a title="nl_after_for"><strong><font color="red"> █</font></strong></a> + for (int a = 1; a < 5; + a++) { +<a title="nl_multi_line_cond"><strong><font color="red"> █</font></strong></a> + b = a + 4; + } + try { +<a title="nl_try_brace"><strong><font color="red"> █</font></strong></a> + b = 1; + if (err) { +<a title="nl_before_throw"><strong><font color="red"> █</font></strong></a> + throw std::runtime_error(std::string("nextKey: ") + err.asString()); + } + } catch (const std::exception &exc) { +<a title="nl_brace_catch"><strong><font color="red"> █</a><a title="nl_catch_brace"> █</font></strong></a> + b = 3; + } +<a title="nl_before_while"><strong><font color="red"> █</font></strong></a> + while (c) { +<a title="nl_while_brace"><strong><font color="red"> █</font></strong></a> + b ; + } +<a title="nl_after_while"><strong><font color="red"> █</font></strong></a> + } + enum CaseOfOne { +<a title="nl_enum_brace"><strong><font color="red"> █</font></strong></a> + a1, + b1, +<a title="nl_ds_struct_enum_cmt"><strong><font color="red"> █</font></strong></a> + // comment + c1, +<a title="nl_ds_struct_enum_close_brace"><strong><font color="red"> █</font></strong></a> + }; + struct indent_ptr_t <a title="nl_struct_brace"><strong><font color="red">█</font></strong></a> + { + Chunk *ref; +<a title="nl_ds_struct_enum_cmt"><strong><font color="red"> █</font></strong></a> + // comment + int delta; +<a title="nl_ds_struct_enum_close_brace"><strong><font color="red"> █</font></strong></a> + } ipt; +<a title="nl_brace_struct_var"><strong><font color="red"> █</font></strong></a> +<a title="nl_after_struct"><strong><font color="red"> █</font></strong></a> + union UnionOfOne { +<a title="nl_union_brace"><strong><font color="red"> █</font></strong></a> + a1, + b1, +<a title="nl_ds_struct_enum_cmt"><strong><font color="red"> █</font></strong></a> + // comment + c1, +<a title="nl_ds_struct_enum_close_brace"><strong><font color="red"> █</font></strong></a> + }; +<a title="nl_before_access_spec"><strong><font color="red"> █</a><a title="nl_after_func_body_class"> █</font></strong></a> + private: // same for protected:, signal: or slots: label +<a title="nl_after_access_spec"><strong><font color="red"> █</font></strong></a> + int ap; +}; +<a title="nl_after_class"><strong><font color="red">█</font></strong></a> +<hr> +namespace foo { +<a title="nl_namespace_brace"><strong><font color="red"> █</font></strong></a> +int foo() +{ + if (foo) a++; return; +<a title="nl_after_vbrace_open"><strong><font color="red"> █</a><a title="nl_after_vbrace_close"> █</font></strong></a> + if (a) + return; +<a title="nl_after_return"><strong><font color="red"> █</font></strong></a> +l123: <a title="nl_after_label_colon"><strong><font color="red">█</font></strong></a> + int a = 5; +<a title="nl_before_if"><strong><font color="red"> █</font></strong></a> + if (a > b) { + c = 7; +<a title="nl_before_return"><strong><font color="red"> █</font></strong></a> + return a + b; + } + std::for_each(a, b, [] (int& b)->foo{ b+=3; return(b); }); +<a title="nl_brace_fparen"><strong><font color="red"> █</font></strong></a> + QUrl dxOffEagle("http://something/newpage.html?[{\"foo: bar\"}]", QUrl::TolerantMode); +<a title="nl_brace_square"><strong><font color="red"> █</font></strong></a> +<a title="nl_before_return"><strong><font color="red"> █</font></strong></a> + return 0; +<a title="nl_return_expr"><strong><font color="red"> █</font></strong></a> +<hr> +/* c1 + * + */ +<a title="nl_comment_func_def"><strong><font color="red">█</font></strong></a> +void b(); +<a title="nl_after_func_proto"><strong><font color="red">█</font></strong></a> +void d(); +#define LOG_CONTTEXT() \ +<a title="nl_multi_line_define"><strong><font color="red"> █</font></strong></a> + LOG_FMT(LCONTTEXT \ + ,"%s:%d set cont_text to '%s'\n" \ + ,__func__, __LINE__, cmt.cont_text.c_str()) +template <class T> +<a title="nl_template_class"><strong><font color="red">█</font></strong></a> +ItemJob<T>::ItemJob(PlatformDependent *internals, const QNetworkRequest &request) + : GetJob(internals, request) +typedef int ia; +typedef int ib; +<a title="nl_typedef_blk_in"><strong><font color="red">█</font></strong></a> +typedef int ic; +typedef int id; +</pre> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Objectiv-C.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Objectiv-C.html new file mode 100644 index 00000000..993a1b95 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Objectiv-C.html @@ -0,0 +1,26 @@ +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8"/> + <title>Uncrustify: where do the Spaces options work-Objectiv-C</title> +</head> +<body lang="en-US"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work-Objectiv-C?</h1> + +<p> +</p> +<h2>Spaces-Objectiv-C</h2> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> + @selector (methodNameWithArg:); + <a title="sp_after_oc_at_sel"><strong><font color="red"> █</font></strong></a> +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Positioning.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Positioning.html new file mode 100644 index 00000000..4e8a36cc --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Positioning.html @@ -0,0 +1,71 @@ +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8"/> + <title>Uncrustify: where do the Positioning options work</title> +</head> +<body lang="en-US"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work?</h1> +<h2>Positioning</h2> +<p> +</p> +<table border="1"> +<tr> +<td> +<pre> +void Mode( TDistMode dm ) +{<a name="pos_arith"></a> + a = b + + c; + <a title="pos_arith"><strong><font color="red">█</font></strong></a><a name="pos_assign"></a> + ms_DistMode + = dm; + <a title="pos_assign"><strong><font color="red">█</font></strong></a> + if ( (count > 0)<a name="pos_bool"></a> + && (count < MAX_COUNT)) { ... } + <a title="pos_bool"><strong><font color="red">█</font></strong></a> + b = ( GetDistanceMode()<a name="pos_compare"></a> + == dmKM ) ? "km" : "Miles"; + <a title="pos_compare"><strong><font color="red">█</font></strong></a> + b = ( GetDistanceMode() == dmKM ) <a name="pos_conditional"></a> + ? "km" + : "Miles"; + <a title="pos_conditional"><strong><font color="red">█</font></strong></a> +} +{<a name="pos_comma"></a> + a = B(1 + , 2 + , 3); + <a title="pos_comma"><strong><font color="red">█</font></strong></a> +} +<a name="pos_class_colon"></a><a name="nl_class_colon"></a><a name="pos_class_comma"></a> +class GLOX_API ClientBase + : public Class + <a title="nl_class_colon"><strong><font color="red"> █</a><a title="pos_class_colon">█</font></strong></a><a name="nl_class_init_args"></strong></a> + , public OtherClass // if many lines are wanted + <a title="nl_class_init_args"><strong><font color="red">█</font></strong></a> + , public ThridClass + , public ForthClass + <a title="pos_class_comma"><strong><font color="red"> █</font></strong></a> + + // nl_class_colon=force + // pos_class_colon=lead_force + // nl_class_init_args=force + // pos_class_comma=lead_force +{ } +<a name="pos_constr_colon"></a><a name="pos_constr_comma"></a> +class foo : public +{ + void bar_c(int t, int u) + : t(222) +<a title="pos_constr_colon"><strong><font color="red"> █</font></strong></font></strong></a> + , u(88) +<a title="pos_constr_comma"><strong><font color="red"> █</font></strong></a> + {} +} +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Preprocessor.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Preprocessor.html new file mode 100644 index 00000000..1d99b69d --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Preprocessor.html @@ -0,0 +1,28 @@ +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8"/> + <title>Uncrustify: where do the Spaces options work-Preprocessor</title> +</head> +<body lang="en-US"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work-Preprocessor?</h1> + +<p> +</p> +<h2>Spaces-Preprocessor</h2> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> + #define x(y) L #y + <a title="sp_before_pp_stringify"><strong><font color="red"> █</font></strong></a> + #define msg0(x) printf("%c: %d\n", ??=@ x, x) + <a title="sp_pp_stringify"><strong><font color="red"> █</font></strong></a> +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Assign.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Assign.html new file mode 100644 index 00000000..10c8b6b0 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Assign.html @@ -0,0 +1,33 @@ +<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"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work?</h1> +<h2>Spaces for assign</h2> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> +int a = 5; +<a title="sp_assign"><strong><font color="red"> █ █</font></strong></a> +<a title="sp_before_assign"><strong><font color="red"> █ </a><a title="sp_after_assign">█</font></strong></a> +int decimal<a title="sp_assign"><font color="red">█</font></a>=<a title="sp_assign"><font color="red">█</font></a>1; +normal<a title="sp_assign"><font color="red">█</font></a>+=<a title="sp_assign"><font color="red">█</font></a>2; + +int find(size_t idx<a title="sp_assign_default"><font color="red">█</font></a>=<a title="sp_assign_default"><font color="red">█</font></a>0); + +enum FLAGS { + FLAGS_decimal<a title="sp_enum_assign, sp_enum_before_assign"><font color="red">█</font></a>=<a title="sp_enum_assign, sp_enum_after_assign"><font color="red">█</font></a>1, + +return [<a title="sp_cpp_lambda_assign"><font color="red">█</font></a>=<a title="sp_cpp_lambda_assign"><font color="red">█</font></a>](T* t) { }; +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Byref.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Byref.html new file mode 100644 index 00000000..7ad47f72 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Byref.html @@ -0,0 +1,25 @@ +<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"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work?</h1> +<h2>Spaces for byref</h2> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> + bool<a title="sp_before_byref_func"><font color="red">█</font>&<a title="sp_after_byref_func"><font color="red">█</font>foo(int<a title="sp_before_byref"><font color="red">█</font>&<a title="sp_after_byref"><font color="red">█</font>idx); + + MyType<a title="sp_before_unnamed_byref"><font color="red">█</font>&<a title="sp_after_byref_func"><font color="red">█</font>MyClass::myMethode() { + const MyType& t = getSomewhere(); +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Case.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Case.html new file mode 100644 index 00000000..e40bfc5b --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Case.html @@ -0,0 +1,32 @@ +<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"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work?</h1> +<h2>Spaces for case</h2> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> +{ + switch (a) + { + case<a title="sp_case_label"><font color="red">█████</font></a>1<a title="sp_before_case_colon"><font color="red">█</font></a>: + b = 5; + case 2<a title="sp_before_case_colon"><font color="red">█</font></a>: + b = 7; + default<a title="sp_before_case_colon"><font color="red">█</font></a>: + b = 0; + } +} +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Cast.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Cast.html new file mode 100644 index 00000000..9e0b6e2d --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Cast.html @@ -0,0 +1,22 @@ +<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"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work?</h1> +<h2>Spaces for cast</h2> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> + b = int<a title="sp_cpp_cast_paren"><font color="red">█</font>(<a title="sp_inside_paren_cast"><font color="red">█</font>a<a title="sp_inside_paren_cast"><font color="red">█</font>); +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Class.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Class.html new file mode 100644 index 00000000..1bd1c4a5 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Class.html @@ -0,0 +1,31 @@ +<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"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work?</h1> +<h2>Spaces for class</h2> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> +{ + class my_class<a title="sp_before_class_colon"><font color="red">█</font></a>:<a title="sp_after_class_colon"><font color="red">█</font></a>baseclass1, baseclass2 +{ +public: + my_class<a title="sp_func_class_paren"><font color="red">█</font></a>(int b)<a title="sp_before_constr_colon"><font color="red">█</font></a>:<a title="sp_after_constr_colon"><font color="red">█</font></a>x(b); + + my_class<a title="sp_func_class_paren_empty"><font color="red">█</font></a>() : c(2) + { + } +} +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Comma.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Comma.html new file mode 100644 index 00000000..3b3f0de1 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Comma.html @@ -0,0 +1,24 @@ +<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"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work?</h1> +<h2>Spaces for comma</h2> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> +{ + int A(bool a<a title="sp_before_comma"><font color="red">█</font></a>,<a title="sp_after_comma"><font color="red">█</font></a>bool b); +} +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Enum.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Enum.html new file mode 100644 index 00000000..f208c95f --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Enum.html @@ -0,0 +1,32 @@ +<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"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work?</h1> +<h2>Spaces for enum</h2> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> +enum FLAGS { + FLAGS_decimal<a title="sp_enum_assign, sp_enum_before_assign"><font color="red">█</font></a>=<a title="sp_enum_assign, sp_enum_after_assign"><font color="red">█</font></a>1 +}; + +enum Status {<a title="sp_inside_braces_enum"><font color="red">█</font></a>Unknown, Success, Error<a title="sp_inside_braces_enum"><font color="red">█</font></a>}; + +enum class comment_align_e<a title="sp_enum_colon"><font color="red">█</font></a>:<a title="sp_enum_colon"><font color="red">█</font></a>unsigned int +{ + REGULAR, BRACE, ENDIF, +}; + +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_For.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_For.html new file mode 100644 index 00000000..5107f89f --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_For.html @@ -0,0 +1,33 @@ +<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"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work?</h1> +<h2>Spaces for for loop</h2> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> +{ + for (i = 0<a title="sp_before_semi_for"><font color="red">█</font></a>;<a title="sp_after_semi_for"><font color="red">█</font></a>i < 10<a title="sp_before_semi_for"><font color="red">█</font></a>;<a title="sp_after_semi_for"><font color="red">█</font></a>i++<a title="sp_after_semi"><font color="red">█</font></a>) + { + b = i + 1; + } + + 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; + } + for(auto x<a title="sp_before_for_colon"><font color="red">█</font></a>:<a title="sp_after_for_colon"><font color="red">█</font></a>std::as_const(str)) {} +} +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_New.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_New.html new file mode 100644 index 00000000..587844ae --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_New.html @@ -0,0 +1,29 @@ +<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"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work?</h1> +<h2>Spaces for new/ delete</h2> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> +{ + Foo* foo = new<a title="sp_after_new"><font color="red">█</font></a>Foo(a,v); + // does'nt work at every place + + delete[]<a title="sp_after_new"><font color="red">█</font></a>m_used; + + Foo* foo = new<a title="sp_between_new_paren"><font color="red">█</font></a>(<a title="sp_inside_newop_paren, sp_inside_newop_paren_open"><font color="red">█</font></a>ptr,std::nothrow<a title="sp_inside_newop_paren"><font color="red">█</font></a>)<a title="sp_after_newop_paren, sp_inside_newop_paren_close"><font color="red">█</font></a>Foo[]; +} +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Operator.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Operator.html new file mode 100644 index 00000000..d73c964d --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Operator.html @@ -0,0 +1,33 @@ +<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"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work?</h1> +<h2>Spaces for operator</h2> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> +{ + bool operator<a title="sp_after_operator"><font color="red">█</font></a>()<a title="sp_after_operator_sym"><font color="red">█</font></a>(T1 const t1, T2 const t2) + { + ... + } + unc_text operator =<a title="sp_after_operator_sym, sp_after_operator_sym_empty"><font color="red">█</font></a>() + { + ... + } + auto max(int a, int b)<a title="sp_trailing_return"><font color="red">█</font></a>-><a title="sp_trailing_return"><font color="red">█</font></a>int; + auto max(int a, int b) const<a title="sp_trailing_return"><font color="red">█</font></a>-><a title="sp_trailing_return"><font color="red">█</font></a>int; +} +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Paren.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Paren.html new file mode 100644 index 00000000..caa4a5a5 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Paren.html @@ -0,0 +1,53 @@ +<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"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work?</h1> +<h2>Spaces for Parenthesis</h2> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> + +{ + auto a = + [=] (<a title="sp_inside_fparen"><font color="red">█</font></a>int *a, Something b<a title="sp_inside_fparen"><font color="red">█</font></a>)<a title="sp_cpp_lambda_paren_brace"><font color="red">█</font></a>{ + // ... + }; +} +void foo(<a title="sp_inside_fparen"><font color="red">█</font></a>int key, int value<a title="sp_inside_fparen"><font color="red">█</font></a>) +{ + a = (<a title="sp_inside_paren"><font color="red">█</font></a>b + c<a title="sp_inside_paren"><font color="red">█</font></a>); + a = B(<a title="sp_balance_nested_parens"><font color="red">█</font></a>(c) + (d)<a title="sp_balance_nested_parens"><font color="red">█</font></a>); + return A(<a title="sp_inside_fparen"><font color="red">█</font></a>key, value<a title="sp_inside_fparen"><font color="red">█</font></a>) + B(<a title="sp_inside_fparens"><font color="red">█</font></a>); +} +} +class STDMETHOD +{ + STDMETHOD(GetValues)<a title="sp_cparen_oparen"><font color="red">█</font></a>(BSTR bsName, REFDATA** pData); +}; +void (__attribute__(<a title="sp_paren_paren"><font color="red">█</font></a>(noreturn)<a title="sp_paren_paren"><font color="red">█</font></a>) ****f) (void); + +char *__attribute__(<a title="sp_paren_paren"><font color="red">█</font></a>(aligned(8)<a title="sp_paren_paren"><font color="red">█</font></a>)<a title="sp_paren_paren"><font color="red">█</font></a>) *f; + +(struct foo)<a title="sp_paren_brace"><font color="red">█</font></a>{...} + +typedef const char *<a title="sp_ptr_star_paren"><font color="red">█</font></a>(*somefunc_t)(void *barstool); + + + + + +if<a title="sp_before_sparen"><font color="red">█</font></a>(<a title="sp_inside_sparen, sp_inside_sparen_open"><font color="red">█</font></a>a<a title="sp_inside_sparen, sp_inside_sparen_close"><font color="red">█</font></a>)<a title="sp_after_sparen"><font color="red">█</font></a>{ b = 13; } + +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Template.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Template.html new file mode 100644 index 00000000..d8792888 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Template.html @@ -0,0 +1,33 @@ +<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"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work?</h1> +<h2>Spaces for template</h2> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> +{ + template<a title="sp_template_angle, sp_before_angle"><font color="red">█</font></a><<a title="sp_inside_angle"><font color="red">█</font></a>bool a<a title="sp_inside_angle"><font color="red">█</font></a>><a title="sp_after_angle"><font color="red">█</font></a>void f(); + + new List<byte><a title="sp_angle_paren"><font color="red">█</font></a>(foo); + + new List<byte>(<a title="sp_angle_paren_empty"><font color="red">█</font></a>); + + List<byte><a title="sp_angle_word"><font color="red">█</font></a>m; + template <typename T><a title="sp_angle_word"><font color="red">█</font></a>static ...; + + template<typename T> class Foo<Bar<T><a title="sp_angle_shift"><font color="red">█</font></a>> { }; +} +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Spaces.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Spaces.html new file mode 100644 index 00000000..35265fc6 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Spaces.html @@ -0,0 +1,432 @@ +<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"> +<h1><a href="https://github.com/uncrustify/uncrustify">Uncrustify</a>: +Where do the options work?</h1> + +<p> +</p> +<h2>Spaces</h2> +You want to "add/ force/ ignore/ remove" a +<ul> + <li><a href="options_Space_Assign.html">space for assign</a></li> + <li><a href="options_Space_Byref.html">space for byref</a></li> + <li><a href="options_Space_Case.html">space for case</a></li> + <li><a href="options_Space_Cast.html">space for cast</a></li> + <li><a href="options_Space_Class.html">space for class</a></li> + <li><a href="options_Space_Comma.html">space for comma</a></li> + <li><a href="options_Space_D.html">space for D</a></li> + <li><a href="options_Space_Enum.html">space for enum</a></li> + <li><a href="options_Space_For.html">space for for loop</a></li> + <li><a href="options_Space_New.html">space for new/ delete</a></li> + <li><a href="options_Space_Operator.html">space for operator</a></li> + <li><a href="options_Space_Paren.html">space for parenthesis</a></li> + <li><a href="options_Preprocessor.html">space for preprocessor</a></li> + <li><a href="options_Space_Template.html">space for template</a></li> + <li><a href="options_Java.html">options_Java</a></li> + <li><a href="options_Objectiv-C.html">options_Objectiv-C</a></li> + <li><a href="options_C_sharp.html">options_C#</a></li> + <li><a href="options_CLI_NET.html">options_CLI .NET</a></li> + <li><a href="options_ASM.html">options_ASM</a></li> +</ul> +at some places. +<p> +</p> +Some more options... +<p> +</p> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> +<pre> +// Comments +<a title="sp_cmt_cpp_start"><strong><font color="red"> █</font></strong></a> +int a; /* emb cmt */ int b; // trailing cmt +<a title="sp_before_emb_cmt"><strong><font color="red"> █</a><a title="sp_num_before_tr_cmt">..........█ █..........█</font></strong></a> + + union { + uint maxChars; + uint maxBytes; + } mLength; + union { int m_size; int m_any; }; + <a title="sp_inside_braces_struct"><strong><font color="red"> █ █</font></strong></a> + return { -1, -1, -1 }; + <a title="sp_inside_braces"><strong><font color="red"> █ █</font></strong></a> + +class Parser :: ParserPrivate { }; +<a title="sp_before_dc"><strong><font color="red"> █</a><a title="sp_after_dc"> █</a><a title="sp_inside_braces_empty"> █</font></strong></a> +template <typename T> class to { }; +<a title="sp_inside_braces_empty"><strong><font color="red"> █</font></strong></a> +my $all = { }; +<a title="sp_inside_braces_empty"><strong><font color="red"> █</font></strong></a> +enum FocusEffect { }; +<a title="sp_inside_braces_empty"><strong><font color="red"> █</font></strong></a> +struct error { }; +<a title="sp_inside_braces_empty"><strong><font color="red"> █</font></strong></a> +}; + +#define LOG_FMT (sev, args ...) \ +<a title="sp_defined_paren"><strong><font color="red"> █</a><a title="sp_before_ellipsis"> █</font></strong></a> + if (log_sev_on(sev)) { log_fmt(sev, ## args); } + <a title="sp_pp_concat"><strong><font color="red"> █ </a><a title="sp_pp_concat">█</font></strong></a> +#endif +#define FS_NOCOW_FL 0x00800000 +<a title="sp_macro"><strong><font color="red"> █</font></strong></a> +#define STRHACK(x) HACKSTR(x) +<a title="sp_macro_func"><strong><font color="red"> █</font></strong></a> +#define wakeUpCaller(cond) \ +<a title="sp_before_nl_cont"><strong><font color="red"> █</font></strong></a> + if (cond) { \ + <a title="sp_before_nl_cont"><strong><font color="red"> █</font></strong></a> + cond->release(); \ + <a title="sp_before_nl_cont"><strong><font color="red"> █</font></strong></a> + } +typedef struct { int val; int sel; } DiceInfo; +<a title="sp_brace_typedef"><strong><font color="red"> █</font></strong></a> +void * bar() +<a title="sp_before_ptr_star_func"><strong><font color="red"> █ </a><a title="sp_after_ptr_star_func">█</font></strong></a> +{ + int a = 5; + <a title="sp_assign"><strong><font color="red"> █ █</font></strong></a> + <a title="sp_before_assign"><strong><font color="red"> █ </a><a title="sp_after_assign">█</font></strong></a> + int * const i; + <a title="sp_after_ptr_star_qualifier"><strong><font color="red"> █</font></strong></a> + c = a + b; + <a title="sp_arith, sp_arith_additive"><strong><font color="red"> █ █</font></strong></a> + a = ~ b; + <a title="sp_inv"><strong><font color="red"> █</font></strong></a> + x = - 5; + <a title="sp_sign"><strong><font color="red"> █</font></strong></a> + y = + 7; + <a title="sp_sign"><strong><font color="red"> █</font></strong></a> + (-- a); + <a title="sp_incdec"><strong><font color="red"> █</font></strong></a> + i ++; + <a title="sp_incdec"><strong><font color="red"> █</font></strong></a> + b = ( a == d ) ? 55 : 88; + <a title="sp_cond_question"><strong><font color="red"> █ █</a><a title="sp_cond_colon"> █ █</font></strong></a> + <a title="sp_cond_question_before"><strong><font color="red"> █</a><a title="sp_cond_question_after"> █</a><a title="sp_cond_colon_before"> █</a><a title="sp_cond_colon_after"> █</font></strong></a> + b = ( a == d ) ? : 88; + <a title="sp_cond_ternary_short"><strong><font color="red"> █</font></strong></a> + if( ( a || b ) && c ) x = 1; + <a title="sp_bool"><strong><font color="red"> █ █ █ █</font></strong></a> + <a title="sp_inside_paren"><strong><font color="red"> █ █ █</font></strong></a> + <a title="sp_paren_paren"><strong><font color="red"> █</font></strong></a> + c = a > b; + <a title="sp_compare"><strong><font color="red"> █ █</font></strong></a> + int * i; + <a title="sp_before_ptr_star"><strong><font color="red"> █ </a><a title="sp_after_ptr_star">█</font></strong></a> + <a title="sp_before_unnamed_ptr_star"><strong><font color="red"> █</font></strong></a> + int * * j; + <a title="sp_between_ptr_star"><strong><font color="red"> █</font></strong></a> + throw (x); + <a title="sp_throw_paren"><strong><font color="red"> █</font></strong></a> + try { + <a title="sp_try_brace"><strong><font color="red"> █</font></strong></a> + } catch (const Exception &e) { } + <a title="sp_brace_catch"><strong><font color="red"> █</a><a title="sp_catch_paren"> █</font></strong></a> + } catch (...) { } + <a title="sp_brace_catch"><strong><font color="red"> █</a><a title="sp_catch_paren"> █</font></strong></a> + } catch { } + <a title="sp_brace_catch"><strong><font color="red"> █</a><a title="sp_catch_brace"> █</font></strong></a> + auto x1 = decltype(x) {0}; + <a title="sp_after_decltype"><strong><font color="red"> █</font></strong></a> + Foo() noexcept () {} + <a title="sp_after_noexcept"><strong><font color="red"> █</font></strong></a> + void operator ++ ( ); + <a title="sp_after_operator"><strong><font color="red"> █</font></strong></a><a title="sp_after_operator_sym"><strong><font color="red"> █</font></strong></a><a title="sp_after_operator_sym_empty"><strong><font color="red"> █</font></strong></a> + int a0[][] = { { 1 } }; + <a title="sp_after_type_brace_init_lst_open"><strong><font color="red"> █ █</font></strong></a><a title="sp_before_type_brace_init_lst_close"><strong><font color="red"> █ █</font></strong></a> + char m_array [256]; + <a title="sp_before_vardef_square"><strong><font color="red"> █</font></strong></a> + return { {crypt(_Nums, inSeed)} }; + <a title="sp_brace_brace"><strong><font color="red"> █ █</font></strong></a> + do { + <a title="sp_do_brace_open"><strong><font color="red"> █</font></strong></a> + xxx = _error; + } while(0) + <a title="sp_brace_close_while"><strong><font color="red"> █</font></strong></a> + bool CompareGenomeByFeatureResults::clickOnLink(std::string const& inLink) { + auto const [sequence, type, firstPosition, lastPosition] = parseLink(inLink); + <a title="sp_cpp_before_struct_binding"><strong><font color="red"> █</font></strong></a> + decltype (x) y; + <a title="sp_decltype_paren"><strong><font color="red"> █</font></strong></a> + using x_t = decltype (x); + <a title="sp_decltype_paren"><strong><font color="red"> █</font></strong></a> + foo( ABC ); + <a title="sp_func_call_user_inside_fparen"><strong><font color="red"> █ █</font></strong></a> + foo( ( ABC ) ) + <a title="sp_func_call_user_paren_paren"><strong><font color="red"> █ █</font></strong></a> + typedef void timer_cb (struct timer_node *n); + <a title="sp_func_type_paren"><strong><font color="red"> █</font></strong></a> + if (n) ; + <a title="sp_special_semi"><strong><font color="red"> █</font></strong></a> + a( , 1); + <a title="sp_paren_comma"><strong><font color="red"> █</font></strong></a> + foo() noexcept; + <a title="sp_paren_noexcept"><strong><font color="red"> █</font></strong></a> + return {x}; + <a title="sp_return_brace"><strong><font color="red"> █</font></strong></a> + void funcName() const; + <a title="sp_paren_qualifier"><strong><font color="red"> █</font></strong></a> + void ncName() override; + <a title="sp_paren_qualifier"><strong><font color="red"> █</font></strong></a> + template < int ... X > int bar2() + <a title="sp_type_ellipsis"><strong><font color="red"> █</font></strong></a> + { + auto s = sizeof ... ( X ); + <a title="sp_sizeof_ellipsis"><strong><font color="red"> █</font></strong></a><a title="sp_sizeof_ellipsis_paren"><strong><font color="red"> █</font></strong></a> + chomp( X ) ...; + <a title="sp_paren_ellipsis"><strong><font color="red"> █</font></strong></a> + return X + ...; + } + do amime3(); while (false); + <a title="sp_while_paren_open"><strong><font color="red"> █</font></strong></a> + auto b0 = unknown_kw { 2 }; + <a title="sp_word_brace_init_lst"><strong><font color="red"> █</font></strong></a> + if (data) go = new ClassA(); + <a title="sp_skip_vbrace_tokens"><strong><font color="red"> █</font></strong></a> + else go = new ClassB(); + <a title="sp_skip_vbrace_tokens"><strong><font color="red"> █</font></strong></a> + + auto f0(int a, int b) -> int; + <a title="sp_trailing_return"><strong><font color="red"> █ █</font></strong></a> +</pre> +</td> +</tr> +</table> +<p></p> +<table border="1", width="100%"> +<tr> +<td> + +<pre> +int main(int argc , char *argv []) +<a title="sp_before_comma"><strong><font color="red"> █</a><a title="sp_after_comma"> █</a><a title="sp_before_squares"> █</font></strong></a> +{ + int a [2]; + <a title="sp_before_square"><strong><font color="red"> █</font></strong></a> + a[ n ] = 3; + <a title="sp_inside_square"><strong><font color="red"> █ █</font></strong></a> + const char *names [] = + <a title="sp_before_squares"><strong><font color="red"> █</font></strong></a> + { + "{ False , True }", + <a title="sp_before_comma"><strong><font color="red"> █</a><a title="sp_after_comma"> █</font></strong></a> + "{ Ignore, Add, Remove, Force }", + + return (-1); + <a title="sp_return_paren"><strong><font color="red"> █</font></strong></a> + + + int a ( ); + <a title="sp_func_proto_paren"><strong><font color="red"> █</a><a title="sp_inside_fparens"> █</font></strong></a> + int a (int b) {}; + <a title="sp_func_def_paren"><strong><font color="red"> █</a><a title="sp_fparen_brace"> █</font></strong></a> + int foo () {}; + <a title="sp_func_def_paren_empty"><strong><font color="red"> █</font></strong></a> +void ( int a ) ( int b ); +<a title="sp_inside_tparen"><strong><font color="red"> █ █</a><a title="sp_after_tparen_close"> █</a><a title="sp_inside_fparen"> █ █</font></strong></a> +static void sockaddr_unmapped( + struct sockaddr *sa __attribute__ ((unused)), + <a title="sp_attribute_paren"><strong><font color="red"> █</font></strong></a> + socklen_t *len __attribute__ ((unused))) + <a title="sp_attribute_paren"><strong><font color="red"> █</font></strong></a> + +void (^ weak_recurseTreeNodes)(int a); +<a title="sp_after_ptr_block_caret"><strong><font color="red"> █</font></strong></a> +template< > +struct Bar< false > : Foo { }; +<a title="sp_angle_colon"><strong><font color="red"> █</font></strong></a> +</pre> +</td> +</tr> +</table> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> + +<pre> +template < typename T > inline static bool remove(T column) +<a title="sp_template_angle"><strong><font color="red"> █<a title="sp_inside_angle"> █<a title="sp_inside_angle"> █</font></strong></a> +<a title="sp_before_angle"><strong><font color="red"> █</a><a title="sp_after_angle"> █</font></strong></a> +</pre> + +<pre> +int & a(int & b); +<a title="sp_before_byref_func"><strong><font color="red"> █</a><a title="sp_after_byref_func"> █</a><a title="sp_before_byref"> █</a><a title="sp_after_byref"> █</font></strong></a> +int c(int &) +<a title="sp_type_func"><strong><font color="red"> █</a><a title="sp_before_unnamed_byref"> █</font></strong></a> +{ + d = aa (& y,& d) ; + <a title="sp_func_call_paren"><strong><font color="red"> █ </a><a title="sp_addr"> █ █</a><a title="sp_before_semi"> █</font></strong></a> + e = ee (); + <a title="sp_func_call_paren_empty"><strong><font color="red"> █</font></strong></a> + if ( a == 5 ) ... + <a title="sp_before_sparen"><strong><font color="red"> █</font></strong></a> + <a title="sp_inside_sparen"><strong><font color="red"> █ █</font></strong></a> + <a title="sp_inside_sparen_open"><strong><font color="red"> █</a><a title="sp_inside_sparen_close"> █</font></strong></a> + ... + if (b) ; + <a title="sp_special_semi"><strong><font color="red"> █</font></strong></a> + if ( a == 6 ) b = 66; + <a title="sp_after_sparen"><strong><font color="red"> █</font></strong></a> + if ( a == 7 ) { b = 77; } + <a title="sp_sparen_brace"><strong><font color="red"> █</font></strong></a> + if (! a) { + <a title="sp_not"><strong><font color="red"> █</font></strong></a> + b = 4; + } else { + <a title="sp_brace_else"><strong><font color="red"> █</a><a title="sp_else_brace"> █</font></strong></a> + b = 5; + } + for(a = 1 ; a < b ; a++) { + <a title="sp_before_semi_for"><strong><font color="red"> █</a><a title="sp_before_semi_for_empty"> █</font></strong></a> + ... + for( ; ; ) { + <a title="sp_before_semi_for_empty"><strong><font color="red"> █ █</a><a title="sp_after_semi_for_empty"> █</font></strong></a> + ... + switch (whatIsToDo) ... + <a title="sp_before_sparen"><strong><font color="red"> █</font></strong></a> + while (start < end) ... + <a title="sp_before_sparen"><strong><font color="red"> █</font></strong></a> + +</pre> +</td> +</tr> +</table> +<p> +</p> +<table border="1", width="100%"> +<tr> +<td> + +<pre> +namespace Server { +<a title="sp_word_brace_ns"><strong><font color="red"> █</font></strong></a> +class Cache : public QObject +<a title="sp_before_class_colon"><strong><font color="red"> █</a><a title="sp_after_class_colon"> █</font></strong></a> +Cache::StorageDebugger () +<a title="sp_func_class_paren"><strong><font color="red"> █</font></strong></a> + : mFile(0) +<a title="sp_before_constr_colon"><strong><font color="red"> █</a><a title="sp_after_constr_colon"> █</font></strong></a> +{ + new service; + <a title="sp_after_new"><strong><font color="red"> █</font></strong></a> + delete service; + <a title="sp_after_new"><strong><font color="red"> █</font></strong></a> + delete[] buffer; + <a title="sp_after_new"><strong><font color="red"> █</font></strong></a> + if (this == & other) return * this; + <a title="sp_addr"><strong><font color="red"> █</a><a title="sp_deref"> █</font></strong></a> + switch (a) { + case 1 : + <a title="sp_before_case_colon"><strong><font color="red"> █</font></strong></a> + b= 1; + break; + case 2 : { + b = 2; + break; + } + default : + break; + } + bool operator () (Entity::Id lhs, Entity::Id rhs) const + ...<a title="sp_after_operator"><strong><font color="red"> █</a><a title="sp_after_operator_sym"> █</font></strong></a> + + a = ( int ) 5.6; + <a title="sp_inside_paren_cast"><strong><font color="red"> █ █</a><a title="sp_after_cast"> █</font></strong></a> + cpp = int (7); + <a title="sp_cpp_cast_paren"><strong><font color="red"> █</font></strong></a> + len = sizeof (int); + <a title="sp_sizeof_paren"><strong><font color="red"> █</font></strong></a> + SomeStruct a = SomeStruct {1, 2, 3}; + <a title="sp_word_brace_init_lst"><strong><font color="red"> █</font></strong></a> + someFuncCall(SomeStruct {4, 5, 6}); + <a title="sp_word_brace_init_lst"><strong><font color="red"> █</font></strong></a> + log . foo . bar = 5; + <a title="sp_member"><strong><font color="red"> █ █ █ █</font></strong></a> + other -> foo -> bar = 123; + <a title="sp_member"><strong><font color="red"> █ █ █ █</font></strong></a> +} +/// doxygen sequence +<a title="sp_cmt_cpp_doxygen"><strong><font color="red"> █</font></strong></a> +///< doxygen sequence +<a title="sp_cmt_cpp_doxygen"><strong><font color="red"> █</font></strong></a> +//! doxygen sequence +<a title="sp_cmt_cpp_doxygen"><strong><font color="red"> █</font></strong></a> +//!< doxygen sequence +<a title="sp_cmt_cpp_doxygen"><strong><font color="red"> █</font></strong></a> +#if A +#else /* Comment A */ +<a title="sp_endif_cmt"><strong><font color="red"> █</font></strong></a> +#endif /* Comment B */ +<a title="sp_endif_cmt"><strong><font color="red"> █</font></strong></a> +</pre> +</td> +</tr> +</table> +<table border="1", width="100%"> +<tr> +<td> + +<pre> +void Initialize( BYTE nDelay = 100 ); +<a title="sp_assign_default"><strong><font color="red"> █ █</font></strong></a> +void f1() +{ + auto a = [<a title="sp_inside_square"><font color="red">█</font></a>=<a title="sp_inside_square"><font color="red">█</font></a>]<a title="sp_cpp_lambda_square_paren"><font color="red">█</font></a>(<a title="sp_cpp_lambda_argument_list"><font color="red">█</font></a>int *a, Something & b<a title="sp_cpp_lambda_argument_list"><font color="red">█</font></a>); + + parallel_for(0, 100, [<a title="sp_inside_square"><font color="red">█</font></a>&<a title="sp_inside_square"><font color="red">█</font></a>]<a title="sp_cpp_lambda_square_paren"><font color="red">█</font></a>(<a title="sp_cpp_lambda_argument_list"><font color="red">█</font></a>const int i<a title="sp_cpp_lambda_argument_list"><font color="red">█</font></a>)<a title="sp_cpp_lambda_paren_brace"><font color="red">█</font></a>{ + const std::vector<int> values = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }; + + list[idx] (param); + <a title="sp_square_fparen"><font color="red"> █</font></a> + +double foo() +{ + return( foo(n) ); + <a title="sp_balance_nested_parens"><strong><font color="red"> █ █</font></strong></a> + + +Vector2<double> () +<a title="sp_angle_paren"><strong><font color="red"> █</font></strong></a> + +{ + List<byte> bob = new List<byte> (); + <a title="sp_angle_word"><strong><font color="red"> █</font></strong></a> + QVector<QPair<Condition, QString> > mWhenThen; + <a title="sp_permit_cpp11_shift"><strong><font color="red"> █</font></strong></a> + +template<int i, int ... Indexes, typename IdxHolder, typename ... Elements> +<a title="sp_before_ellipsis"><strong><font color="red"> █ █</font></strong></a> +struct index_holder_impl<i, index_holder<Indexes ...>, IdxHolder, Elements ...> +<a title="sp_before_ellipsis"><strong><font color="red"> █ █</font></strong></a> +{ + typedef typename index_holder_impl<i + 1, index_holder<Indexes ... i>, Elements ...>::type type; + <a title="sp_before_ellipsis"><strong><font color="red"> █ █</font></strong></a> +</pre> +</td> +</tr> +</table> +<table border="1", width="100%">Java Sources +<tr> +<td> +<pre> + + for (Type var : expr) + <a title="sp_after_for_colon"><strong><font color="red"> █</font></strong></a> + +</pre> +</td> +</tr> +</table> +</body> +</html> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/project-support.jpg b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/project-support.jpg Binary files differnew file mode 100644 index 00000000..5d15550f --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/project-support.jpg diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/uncrustify.css b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/uncrustify.css new file mode 100644 index 00000000..240171e9 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/uncrustify.css @@ -0,0 +1,63 @@ +html, body { + background-color: #5a5f52; + color: #ffffff; +} + +div.node1 { + margin: 0em; + width: 70%; +} +div.node2 { + margin: 0em; + width: 90%; +} + +h1, h2, h3, h4 { + font-family: Verdana, sans-serif; + color: #d1c121; +} +h1 { + font-size: 18pt; +} +h2 { + font-size: 14pt; +} +h3 { + font-size: 11pt; +} +h4 { + font-size: 10pt; +} + +pre { + font-family: Verdana, sans-serif; + font-size: 11pt; + background-color: #6b6f63; +} + +a { + font-family: Verdana, sans-serif; + font-size: 11pt; + color: #d1c121; +} + +p, small, li { + font-family: Verdana, sans-serif; + color: #ffffff; +} + +p { + font-size: 11pt; +} + +small { + font-size: 7pt; +} + +li { + list-style-type: disc; + font-size: 11pt; + font-style: italic; +} + + diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/uncrustify.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/uncrustify.html new file mode 100644 index 00000000..0528eb63 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/uncrustify.html @@ -0,0 +1,29 @@ +<HTML> +<HEAD> + <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8"> + <TITLE></TITLE> +</HEAD> +<BODY LANG="en-US" DIR="LTR"> +<H1><A HREF="http://sourceforge.net/projects/uncrustify/">Uncrustify +your C code</A></H1> +<A HREF="http://sourceforge.net/projects/uncrustify/">Project +web site</A> +<P><A HREF="http://prdownloads.sourceforge.net/uncrustify/uncrustify-0.0.3.tgz?download">Download +Uncrustify 0.0.3</A></P> +<B>What it does:</B> +<UL> + <LI>Indent code + <LI>Align code on '=' and variable definitions + <LI>Align #define stuff + <LI>Align backslash-newline stuff + <LI>Reformat comments (a little bit) + <LI>Fix inter-character spacing +</UL> +<B>What it doesn't do (yet):</B> +<UL> + <LI>Split long lines + <LI>Handle format changing #if/#else stuff +</UL> + +</BODY> +</HTML> diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/not_a_compiler.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/not_a_compiler.txt new file mode 100644 index 00000000..439d4309 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/not_a_compiler.txt @@ -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 braces but only one closing brace. diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/overview.odt b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/overview.odt Binary files differnew file mode 100644 index 00000000..e14e3285 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/overview.odt diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/paren_stack.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/paren_stack.txt new file mode 100644 index 00000000..109709dc --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/paren_stack.txt @@ -0,0 +1,221 @@ + +=-----------------------------------------------------------------------------= +* * +* Paren Stack * +* * +=-----------------------------------------------------------------------------= + +At the heart of this algorithm are two stacks. +There is the Paren Stack (PS) and the Frame stack. + +The PS (pse in the code) keeps track of braces, parens, +if/else/switch/do/while/etc items -- anything that is nestable. + +Complex statements go through some of these BS_ stages: + BS_PAREN1 - paren on if/for/switch/while, etc + BS_PAREN2 - paren on do{}while() + BS_BRACE_DO - brace set on do{} + BS_BRACE2 - brace on if/else/for/switch/while + BS_ELSE - expecting 'else' after 'if' + BS_ELSEIF - expecting 'if' after 'else' + BS_WHILE - expecting 'while' after 'do' + +The file is processed one token at a time to support #if/#else/#endif +preprocessors at any point. + +Take this simple if statement as an example: + + if ( x ) + { + x--; + } + +The stack would look like so: +The format is first the token processed and then the PSE stack as it appears +AFTER the token is processed. + +'if' [IF - PAREN1] +'(' [IF - PAREN1] [SPAREN OPEN] +'x' [IF - PAREN1] [SPAREN OPEN] +')' [IF - BRACE2] <- note that the stage was changed on SPAREN_CLOSE +'{' [IF - BRACE2] [BRACE OPEN] +'x' [IF - BRACE2] [BRACE OPEN] +'--' [IF - BRACE2] [BRACE OPEN] +';' [IF - BRACE2] [BRACE OPEN] +'}' [IF - ELSE] + <- lack of else kills the ELSE, closes statement + +Virtual brace example: + if ( x ) + x--; + else if (y) + y--; + else + z++; + +'if' [IF - PAREN1] +'(' [IF - PAREN1] [SPAREN OPEN] +'x' [IF - PAREN1] [SPAREN OPEN] +')' [IF - BRACE2] +'x' [IF - BRACE2] [VBRACE OPEN] <- VBrace open inserted before because + the token was not '{' +'--' [IF - BRACE2] [VBRACE OPEN] +';' [IF - ELSE] <- Semicolon causes a VBrace close to be + inserted after the semicolon +'else' [ELSE - ELSEIF] <- IF changed into ELSE, expect IF or BRACE +'x' [ELSE - BRACE2] [VBRACE OPEN] <- lack of '{' -> VBrace +'++' [ELSE - BRACE2] [VBRACE OPEN] +';' <- VBrace close inserted after semicolon + ELSE removed after statement close + +Nested virtual brace example: (EOF represents the end of the file) + if ( x ) + if (y) + y--; + else + z++; + EOF + +'if' [IF - PAREN1] +'(' [IF - PAREN1] [PAREN OPEN] +'x' [IF - PAREN1] [PAREN OPEN] +')' [IF - BRACE2] +'if' [IF - BRACE2] [VBRACE OPEN] [IF - PAREN1] <- VBrace on BRACE2, IF opened +'(' [IF - BRACE2] [VBRACE OPEN] [IF - PAREN1] [SPAREN OPEN] +'y' [IF - BRACE2] [VBRACE OPEN] [IF - PAREN1] [SPAREN OPEN] +')' [IF - BRACE2] [VBRACE OPEN] [IF - BRACE2] +'y' [IF - BRACE2] [VBRACE OPEN] [IF - BRACE2] [VBRACE OPEN] +'--' [IF - BRACE2] [VBRACE OPEN] [IF - BRACE2] [VBRACE OPEN] +';' [IF - BRACE2] [VBRACE OPEN] [IF - ELSE] +'else' [IF - BRACE2] [VBRACE OPEN] [ELSE - ELSEIF] +'z' [IF - BRACE2] [VBRACE OPEN] [ELSE - BRACE2] [VBRACE OPEN] +'++' [IF - BRACE2] [VBRACE OPEN] [ELSE - BRACE2] [VBRACE OPEN] +';' [IF - BRACE2] [VBRACE OPEN] [ELSE - BRACE2] - step1 + [IF - BRACE2] [VBRACE OPEN] - step2 + [IF - ELSE] - step3 +EOF + +-- this last semi is more complicated - first it terminates the VBRACE and then + the else, which then, since it is the end of a statement, terminates the + VBRACE. That bumps the IF stage to ELSE. + The EOF kills that off (since it is not an else) + +Order of operation: +1) if TOS=VBRACE && PC=SEMI, insert VBRACE close, PC=>VBRACE close +2) if PC=VBRACE close or PC=BRACE close, and TOS is complex (if/else/etc) + then advance complex stage. If statement ends, pop and advance + + +Stages for each complex statement: +if +IF-PAREN1, IF-BRACE2, IF-ELSE + +if/else +IF-PAREN1, IF-BRACE2, IF-ELSE, ELSE-ELSEIF, ELSE-BRACE2 + +if/else if/else +IF-PAREN1, IF-BRACE2, IF-ELSE, ELSE-ELSEIF, IF-PAREN1, IF-BRACE2, IF-ELSE, ELSE-ELSEIF, ELSE-BRACE2 + +for +FOR-PAREN1, FOR-BRACE2 + +while +WHILE-PAREN1, WHILE-BRACE2 + +switch +SWITCH-PAREN1, SWITCH-BRACE2 + +synchronized +SYNCHRONIZED-PAREN1 + +do/while +DO-BRACE_DO, DO-WHILE, WHILE-PAREN2 + + +Another less-interesting example: + +{ + if (x) + volatile + { + y++; + } + return y; +} + +'{' [BRACE OPEN] +'if' [BRACE OPEN] [IF - PAREN1] +'(' [BRACE OPEN] [IF - PAREN1] [PAREN OPEN] +'x' [BRACE OPEN] [IF - PAREN1] [PAREN OPEN] +')' [BRACE OPEN] [IF - BRACE2] +'volatile' [BRACE OPEN] [IF - BRACE2] [VBRACE OPEN] [VOLATILE - BRACE2] +'{' [BRACE OPEN] [IF - BRACE2] [VBRACE OPEN] [VOLATILE - BRACE2] [BRACE OPEN] +'y' [BRACE OPEN] [IF - BRACE2] [VBRACE OPEN] [VOLATILE - BRACE2] [BRACE OPEN] +'++' [BRACE OPEN] [IF - BRACE2] [VBRACE OPEN] [VOLATILE - BRACE2] [BRACE OPEN] +';' [BRACE OPEN] [IF - BRACE2] [VBRACE OPEN] [VOLATILE - BRACE2] [BRACE OPEN] +'}' [BRACE OPEN] [IF - ELSE] <- the brace close ends brace-open, + volatile-brace2 and vbrace-open +'return' [BRACE OPEN] <- not else +'y' [BRACE OPEN] +';' [BRACE OPEN] +'}' <- empties the stack + + +=-----------------------------------------------------------------------------= +* * +* Parse Frames * +* * +=-----------------------------------------------------------------------------= + +The pse stack is kept on a frame stack. +The frame stack is need for languages that support preprocessors (C, C++, C#) +that can arbitrarily change code flow. It also isolates #define macros so +that they are indented independently and do not affect the rest of the program. + +When an #if is hit, a copy of the current frame is push on the frame stack. +When an #else/#elif is hit, a copy of the current stack is pushed under the +#if frame and the original (pre-#if) frame is copied to the current frame. +When #endif is hit, the top frame is popped. +This has the following effects: + - a simple #if / #endif does not affect program flow + - #if / #else /#endif - continues from the #if clause + +When a #define is entered, the current frame is pushed and cleared. +When a #define is exited, the frame is popped. + + +Take this example, which isn't very exciting, as both the #if and #else parts +end up with the same paren stack. This is the usual case. + +{ + foo(param1, +#ifdef DEBUG + "debug"); +#else + "release"); +#endif +} + +Right before the #ifdef, we have this for the paren stack: + Top> [BRACE OPEN] [PAREN OPEN] + +The #ifdef pushes a copy of the current stack, so we have this: + Top> [BRACE OPEN] [PAREN OPEN] + [BRACE OPEN] [PAREN OPEN] + +The close paren after "debug" closes out the PAREN-OPEN on the top of the stack. + Top> [BRACE OPEN] + [BRACE OPEN] [PAREN OPEN] + +The #else swaps the top two frames. + Top> [BRACE OPEN] [PAREN OPEN] + [BRACE OPEN] + +Right after the #else, we hit another close paren after the "release". + Top> [BRACE OPEN] + [BRACE OPEN] + +At the #endif, the top of stack is thrown out, which restores us to the #if path. + Top> [BRACE OPEN] + + diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/preprocessor_indentation.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/preprocessor_indentation.txt new file mode 100644 index 00000000..a82947cb --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/preprocessor_indentation.txt @@ -0,0 +1,414 @@ + +Preprocessor blocks can arbitrarily alter the program flow and make indenting +code a challenging task. + +This file covers the following topics: +1) Uncrustify approach to indentation of preprocessor blocks +2) Rationale for the chosen approach +3) Recommendations for the user + + +--------------------------------------------------------- +Uncrustify approach to indentation of preprocessor blocks +--------------------------------------------------------- + +Uncrustify handles different preprocessor blocks in different ways. +There are just three simple rules to remember. + +A. #ifdef/#endif block +---------------------- +The contents of the block are indented starting at the same brace level of the +code preceding the block. Once #endif is reached, any indentation change caused +by the block is discarded and the following code continues at the same brace +level of the code preceding the block. + +B. #ifdef/#elif/#else/#endif block +---------------------------------- +The contents of the #ifdef part of the block are indented starting at the same +brace level of the code preceding the block. +Once an #elif/#else is reached, the indentation restarts at the brace level of +the code preceding the #ifdef part of the block. This is repeated for each +#else and #elif part. +Once #endif is reached, the following code continues at the same brace level +reached at the end of the #ifdef part. + +C. #define block +---------------- +The contents of the block are indented starting anew, therefore not following the +indentation of the code preceding the block. Once the #define ends, any indentation +change caused by the block is discarded and the following code continues at the same +brace level of the code preceding the block. + + +--------------------------------- +Rationale for the chosen approach +--------------------------------- + +Preprocessor blocks can be very hard to handle and there is no definitive +correct way that works in all situations. Therefore a compromise approach is +required, coupled with warning to the user when tricky code is encountered. + +A. #ifdef/#endif block +---------------------- +Let's start with the simplest case, a balanced #ifdef/#endif block. This is a +block that starts and ends at the same brace level. For example: + + some code A + #ifdef TEST + some code B + #endif + some code C + +or + + some code A + #ifdef TEST + { + some code B + } + #endif + some code C + +These cases are very easy to handle, since the indentation before, through and after +the preprocessor block is consistent. There is no alteration of the brace level +from 'some code A' to 'some code C'. Rule A applies nicely to the above code. + +Let's now look at a more complex example. + + some code A + #ifdef TEST + { + some code B + #endif + some code C + #ifdef TEST + some code D + } + #endif + some code E + +This contains two unbalanced #ifdef blocks. Most likely the programmer intended to +use them in pair, but that is not important when it comes to indentation. The code +above could be indented as: + + some code A + #ifdef TEST + { + some code B + #endif + some code C + #ifdef TEST + some code D + } + #endif + some code E + +or as: + + some code A + #ifdef TEST + { + some code B + #endif + some code C + #ifdef TEST + some code D + } + #endif + some code E + +Note how 'some code C' is indented differently in the two cases: in the first, the +indentation change caused by the first #ifdef block is discarded, while in the +second it is taken into consideration. +Depending on the options used at compile time, the code in the preprocessor blocks +could be included or not included in the final code, therefore none of the two +options is superior to the other. A better approach would be to avoid the use +of unbalanced preprocessor blocks, so that indentation of the code could be uniquely +defined. +Uncrustify follows the first version, discarding indentation changes caused by +the #ifdef block. Warning messages about unbalanced preprocessor blocks can optionally +be printed by using the option 'pp_warn_unbalanced_if'. + +B. #ifdef/#elif/#else/#endif block +---------------------------------- +Let's start with the simplest case, a balanced #ifdef/#else/#endif block. This is a +block where each part starts and ends at the same brace level. For example: + + some code A + #ifdef TEST + some code B + #else + some code C + #endif + some code D + +or + + some code A + #ifdef TEST + { + some code B + } + #else + { + some code C + } + #endif + some code D + +or even: + + some code A + #ifdef TEST + { + some code B + } + #else + some code C + #endif + some code D + +These cases are very easy to handle, since the indentation before, through and after +the preprocessor blocks is consistent. There is no alteration of the brace level +from 'some code A' to 'some code D'. Rule B applies nicely to the above code. + +Let's now look at a more complex example. + + some code A + #ifdef TEST + { + some code B + #else + some code C + #endif + some code D + #ifdef TEST + some code E + } + #else + some code F + #endif + some code G + +This once again raises the question of where 'some code D' should be placed and +there is no unique best choice. +Uncrustify has chosen (for reasons explained further below) to: +- indent each part of an #ifdef/#elif/#else/#endif block starting at the brace +level of the code preceding #ifdef. +- continue after #endif at the indentation level reached at the end of the #ifdef +part. +This would result in the following formatted code: + + some code A + #ifdef TEST + { + some code B + #else + some code C + #endif + some code D + #ifdef TEST + some code E + } + #else + some code F + #endif + some code G + +And yes, the indentation of 'some code F' may surprise you a bit. +Here is an even trickier example: + + some code A + #ifdef TEST + some code B + #else + { + some code C + #endif + some code D + #ifndef TEST + some code E + } + #else + some code F + #endif + some code G + +which results in this bizarre output, where 'some code G' is no +longer aligned with 'some code A': + + some code A + #ifdef TEST + some code B + #else + { + some code C + #endif + some code D + #ifndef TEST + some code E + } + #else + some code F + #endif + some code G + +So why not simply discard all the indentation changes created by an +#ifdef/#elif/#else/#endif block? The answer is simple: to make sure things +still work fine after the #endif line! Without going into too much detail here +(see the overview.odt and theory.txt files for more info) in addition to the +visible braces, there is a thing called 'virtual braces' which also affects +indentation. A common use of #ifdef/#elif/#else/#endif blocks is to do some +different things on the same set of variables. In this case, there may not be +any visible brace, but virtual braces may get modified between the code before +and after the preprocessor block. Throwing away the whole thing would result +in the code after #endif being formatted in a completely wrong manner. +As an example, consider this piece of code: + + some code A + if (cond1) + some var = value1; + else + some var = + #ifdef TEST + value2; + #else + value3; + #endif + some code B + +The formatted version looks exactly like the original. But if the complete +#ifdef/#else/#endif block was thrown away, the result would be as if 'some code B' +was being indented as part of the else (not #else) block, at a position just after +the = symbol. By retaining the changes made in the #ifdef part, the 'else' block +is correctly handled and 'some code B' is indented as per its original position. + +C. #define block +---------------- +Here is an example showing how #define works. The following code: + + { + { + some code A + #define TEST \ + { \ + some defs \ + } + some code B + } + } + +would be formatted as: + + { + { + some code A + #define TEST \ + { \ + some defs \ + } + some code B + } + } + +Notice how 'some code B' and 'some code A' are indented in the same way, while the +#define body starts from anew. + + +---------------------------- +Recommendations for the user +---------------------------- +The golden rule is to avoid unbalanced preprocessor blocks. This keeps things +simple and indentation can be uniquely defined. Existing unbalanced blocks should +be reworked so that all braces are properly balanced, either outside or inside the +preprocessor blocks. +If you have a huge code base, it may be difficult to quickly find offending blocks. +If the option 'pp_warn_unbalanced_if' is set to true, Uncrustify will print warning +messages at the end of each unbalanced preprocessor block part based on the following rules: + +1) unbalanced #ifdef part +This works for either an #ifdef/#endif block or the first part of an #ifdef/#elif/#else/#endif +block. If the #ifdef ends at a brace level different from where it starts, a message will +be displayed, highlighting both the starting and ending indentation levels. + +2) unbalanced #elif or #else part +If such part ends at a different brace level than the corresponding #ifdef part, a message +will be displayed highlighting the ending indentation levels of both the part in question +and the respective #ifdef part. + +3) unbalanced #define +If a #define ends at a brace level different from where it starts, a message will +be displayed, highlighting the ending indentation level. + +Here is an example with a mix of balanced and unbalanced blocks, with line numbers in front +for easier reference: + + 1 void Fun(int &data) + 2 { + 3 data = 1; + 4 + 5 #ifdef MANUAL_LAYOUT + 6 { + 7 data = 2; + 8 } + 9 #endif + 10 + 11 #ifdef MANUAL_LAYOUT + 12 { + 13 { + 14 data = 2; + 15 #elif TEST1 + 16 data = 21; + 17 #elif TEST2 + 18 { + 19 data = 22; + 20 #elif TEST3 + 21 { + 22 { + 23 data = 22; + 24 #else + 25 { + 26 { + 27 data = 22; + 28 #endif + 29 + 30 data = 3; + 31 + 32 #ifdef MANUAL_LAYOUT + 33 { + 34 data = 4; + 35 #else + 36 data = 5; + 37 #endif + 38 + 39 #ifdef MANUAL_LAYOUT + 40 data = 6; + 41 #else + 42 data = 7; + 43 #endif + 44 + 45 #ifdef MANUAL_LAYOUT + 46 } + 47 } + 48 #endif + 49 + 50 #ifdef MANUAL_LAYOUT + 51 } + 52 #endif + 53 + 54 data = 8; + 55 + 56 data = 9; + 57 } + +These are the warning messages related to unbalanced preprocessor blocks +printed by Uncrustify when 'pp_warn_unbalanced_if' is true. + +fl_check(236): orig_line is 15, unbalanced #if block braces (1), in-level is 1, out-level is 3 +fl_check(248): orig_line is 17, unbalanced #if-#else block braces (1), #else out-level is 1, #if out-level is 3 +fl_check(248): orig_line is 20, unbalanced #if-#else block braces (1), #else out-level is 2, #if out-level is 3 +fl_check(236): orig_line is 35, unbalanced #if block braces (1), in-level is 3, out-level is 4 +fl_check(291): orig_line is 37, unbalanced #if-#else block braces (2), #else out-level is 3, #if out-level is 4 +fl_check(321): orig_line is 48, unbalanced #if block braces (2), in-level is 4, out-level is 2 +fl_check(321): orig_line is 52, unbalanced #if block braces (2), in-level is 4, out-level is 3 + diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/theory.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/theory.txt new file mode 100644 index 00000000..99324855 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/theory.txt @@ -0,0 +1,129 @@ + +------------------------------------------------------------------------------- +This document is too incomplete to be of much use. +Patches are welcome! + + +Theory of operation +------------------- + +Uncrustify goes through several steps to reformat code. +The first step, parsing, is the most complex and important. + + +Step 1 - Tokenize +----------------- +C code must be understood to some degree to be able to be properly indented. +The parsing step reads in a text buffer and breaks it into chunks and puts +those chunks in a list. + +When a chunk is parsed, the original column and line are recorded. + +These are the chunks that are parsed: + - punctuators + - numbers + - words (keywords, variables, etc) + - comments + - strings + - whitespace + - preprocessors + +See token_enum.h for a complete list. +See punctuators.cpp and keywords.cpp for examples of how they are used. + +In the code, chunk types are prefixed with 'CT_'. +The CT_WORD token is changed into a more specific token using the lookup table +in keywords.cpp + + +Step 2 - Tokenize Cleanup +------------------------- + +The second step is to change the token type for certain constructs that need +to be adjusted early on. +For example, the '<' token can be either a CT_COMPARE or CT_ANGLE_OPEN. +Both are handled very differently. +If a CT_WORD follows CT_ENUM/CT_STRUCT/CT_UNION, then it is marked as a CT_TYPE. +Basically, anything that doesn't depend on the nesting level can be done at this +stage. + + +Step 3 - Brace Cleanup +------------------------- + +This is possibly the most difficult step. +do/if/else/for/switch/while bodies are examined and virtual braces are added. +Brace parent types are set. +Statement start and expression starts are labeled. +And #ifdef constructs are handled. + +This step determines the levels (brace_level, level, & pp_level). + +REVISIT: + The code in brace_cleanup.cpp needs to be reworked to take advantage of being + able to scan forward and backward. The original code was going to be merged + into tokenize.cpp, but that was WAY too complex. + + +Step 4 - Fix Symbols (combine.cpp) +---------------------------------- + +This step is no longer properly named. +In the original design, neighboring chunks were to be combined into longer +chunks. This proved to be a silly idea. But the name of the file stuck. + +This is where most of the interesting identification stuff goes on. +Colons type are detected, variables are marked, functions are labeled, etc. +Also, all the punctuators are classified. Ie, CT_MINUS become CT_NEG or CT_ARITH. + + - Types are marked. + - Functions are marked. + - Parenthesis and braces are marked where appropriate. + - finds and marks casts + - finds and marks variable definitions (for aligning) + - finds and marks assignments that may be aligned + - changes CT_INCDEC_AFTER to CT_INCDEC_BEFORE + - changes CT_STAR to either CT_PTR_TYPE, CT_DEREF or CT_ARITH + - changes CT_MINUS to either CT_NEG or CT_ARITH + - changes CT_PLUS and CT_ADDR to CT_ARITH, if needed + - other stuff? + + +Casts +----- +Casts are detected as follows: + - paren pair not part of if/for/etc nor part of a function + - contains only CT_QUALIFIER, CT_TYPE, '*', and no more than one CT_WORD + - is not followed by CT_ARITH + +Tough cases: +(foo) * bar; + +If uncertain about a cast like this: (foo_t), some simple rules are applied. +If the word ends in '_t', it is a cast, unless followed by '+'. +If the word is all caps (FOO), it is a cast. +If you use custom types (very likely) that aren't detected properly (unlikely), +the add them to the config file like so: (example Using C-Sharp types) +type UInt32 UInt16 UInt8 Byte +type Int32 Int16 Int8 + + +Step 6+ Everything else +------------------------- + +From this point on, many filters are run on the chunk list to change the +token columns. + +indent.cpp sets the left-most column. +align.cpp set the column for individual chunks. +space.cpp sets the spacing between chunks. +Others insert newlines, change token position, etc. + + +Last Step - Output +------------------------- + +At the final step the list is printed to the output. +Everything except comments are printed as-is. +Comments are reformatted in the output stage. + diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/threads.txt b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/threads.txt new file mode 100644 index 00000000..f6ed4edd --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/threads.txt @@ -0,0 +1,111 @@ + +Notes on how to deal with the wicked corner case that is C/C++ +preprocessor #if magic. None of this is actually implemented. + +Languages not affected: + - D + - Java + - ECMA (Java Script) + +Langauges affected: + - C + - C++ + - C# + - Vala + - Pawn + - Objective C/C++ + + +Threads of code are created for functions that navigate the tokens. +There is the master list of the raw tokens parsed out. + +There is at least one thread, which, in the absense of any #if statements, is +the same as the raw token list. + +In the threads, a BARRIER is placed where ever code cannot move past. +This represents and #if or #else statement. +Normally, the barriers are skipped when navigating code. Only when removing a +newline does the code need to check for a barrier. + +For #if statements without an #else, there is an implicit #else added that contains +nothing. + +// example 1 +a +#if X +b +#endif +c + +Thread + #if #endif + V V +0 - a -+- b -+- c + | | +1 +-----+ <- empty else path (ie, for '#if 0') + +Max depth = 2 + + +// example 2 +a +#if X +b +#else +c +#endif +d + #if #endif + V V +0 - a -+- b -+- d + | | +1 +- c -+ <- else path + +Max depth = 2 + + +// example 3 +a +#if X +b +#elif Y +c +#elif Z +d +#else +e +#endif +f +#if A +g +#endif +h + #if X #endif #if A + V V V +0 - a -+- b -+- f -----------+- g -+- h + | | | | +1 +- c -+ <- elif Y +-----+ <- empty else + | | +2 +- d -+ <- elif Z + | | +3 +- e -+ <- else + +Max depth = 4 + +The detection routines need to be executed once for each thread, up to the maximum +thread depth. Note that the typical maximum thread depth is going to be 2-3. + +0 - a - b - f - g - h +1 - a - c - f ----- h +2 - a - d - f - g - h +3 - a - e - f - g - h + +The general rule is that if the current thread exceed the max, thread 0 is used. + +Identification is the primary use for the threads. +The secondary use is indentation. The indentation of each token at each thread +level is recorded. +The maximum indentation for the token is used, assuming the thread is without +error. ('#if 0' commented out code that is bad may not be handled.) + +I won't know if this will work for sure until I try it. diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/track.html b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/track.html new file mode 100644 index 00000000..e49e4370 --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/track.html @@ -0,0 +1,18 @@ +<html> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8"/> + <title>Uncrustify: where do the Spaces options work</title> +</head> +<body lang="en-US"> +<p> +</p> +<pre> +{ + a<a title="1,8,sp_assign"><font color="red">M</font></a>=<a title="2,9,16,sp_assign"><font color="red">M</font>< +/a>b<a title="3,10,17,22,sp_arith"><font color="red">M</font></a>+<a title="4,11,18,23,27,sp_arith"><font color="red">M< +/font></a>111<a title="5,12,19,24,28,31,sp_arith"><font color="red">M</font></a>-<a title="6,13,20,25,29,32,34,sp_arith" +><font color="red">M</font></a>55<a title="7,14,21,26,30,33,35,36,sp_before_semi"><font color="red">M</font></a>; +} +</pre> +</body> +</html> |