summaryrefslogtreecommitdiffstats
path: root/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation
diff options
context:
space:
mode:
Diffstat (limited to 'debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation')
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/Track.jpgbin0 -> 23478 bytes
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/Tracking.txt52
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/align-thresholds.txt219
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/control_the_spaces.txt22
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/dump-steps.txt53
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/example.c117
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/goals.txt24
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/how_to_configure_options.txt16
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/how_to_format_cpp_lambda_functions.rst58
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/align_typedef.html161
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/ben.cfg.txt113
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/config.txt3493
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/configuration.txt67
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/default.cfg3493
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/examples/c-1.in.c1234
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/examples/c-1.out.c1245
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/examples/example.c117
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/images/linuxlinks.gifbin0 -> 462 bytes
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/index.html183
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/linux.cfg.txt92
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options.html23
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_ASM.html38
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Align.html44
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_CLI_NET.html28
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_C_sharp.html28
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_D.html28
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Indenting.html130
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Java.html28
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_ModifyCode.html151
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Namespace.html69
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_NewLines.html216
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Objectiv-C.html26
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Positioning.html71
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Preprocessor.html28
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Assign.html33
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Byref.html25
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Case.html32
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Cast.html22
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Class.html31
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Comma.html24
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Enum.html32
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_For.html33
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_New.html29
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Operator.html33
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Paren.html53
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Space_Template.html33
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/options_Spaces.html432
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/project-support.jpgbin0 -> 3788 bytes
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/uncrustify.css63
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/uncrustify.html29
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/not_a_compiler.txt19
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/overview.odtbin0 -> 16651 bytes
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/paren_stack.txt221
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/preprocessor_indentation.txt414
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/theory.txt129
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/threads.txt111
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/track.html18
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
new file mode 100644
index 00000000..b18b0477
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/Track.jpg
Binary files differ
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
new file mode 100644
index 00000000..d3adec5c
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/images/linuxlinks.gif
Binary files differ
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 &lt;class T&gt;
+<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>&amp;<a title="sp_after_byref_func"><font color="red">█</font>foo(int<a title="sp_before_byref"><font color="red">█</font>&amp;<a title="sp_after_byref"><font color="red">█</font>idx);
+
+ MyType<a title="sp_before_unnamed_byref"><font color="red">█</font>&amp;<a title="sp_after_byref_func"><font color="red">█</font>MyClass::myMethode() {
+ const MyType&amp; 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>-&gt;<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>-&gt;<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>&lt;<a title="sp_inside_angle"><font color="red">█</font></a>bool a<a title="sp_inside_angle"><font color="red">█</font></a>&gt;<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&lt;byte&gt;<a title="sp_angle_word"><font color="red">█</font></a>m;
+ template &lt;typename T&gt;<a title="sp_angle_word"><font color="red">█</font></a>static ...;
+
+ template&lt;typename T&gt; class Foo&lt;Bar&lt;T&gt;<a title="sp_angle_shift"><font color="red">█</font></a>&gt; { };
+}
+</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 &lt;typename T&gt; 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 &lt; typename T &gt; 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&lt;double&gt; ()
+<a title="sp_angle_paren"><strong><font color="red"> █</font></strong></a>
+
+{
+ List&lt;byte&gt; bob = new List&lt;byte&gt; ();
+ <a title="sp_angle_word"><strong><font color="red"> █</font></strong></a>
+ QVector&lt;QPair&lt;Condition, QString&gt; &gt; mWhenThen;
+ <a title="sp_permit_cpp11_shift"><strong><font color="red"> █</font></strong></a>
+
+template&lt;int i, int ... Indexes, typename IdxHolder, typename ... Elements&gt;
+<a title="sp_before_ellipsis"><strong><font color="red"> █ █</font></strong></a>
+struct index_holder_impl&lt;i, index_holder&lt;Indexes ...&gt;, IdxHolder, Elements ...&gt;
+<a title="sp_before_ellipsis"><strong><font color="red"> █ █</font></strong></a>
+{
+ typedef typename index_holder_impl&lt;i + 1, index_holder&lt;Indexes ... i&gt;, Elements ...&gt;::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
new file mode 100644
index 00000000..5d15550f
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/htdocs/project-support.jpg
Binary files differ
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
new file mode 100644
index 00000000..e14e3285
--- /dev/null
+++ b/debian/uncrustify-trinity/uncrustify-trinity-0.75.0/documentation/overview.odt
Binary files differ
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>