Compare commits

..
50 Commits
Author SHA1 Message Date
saalen 0ffb5e4426 updated version string 2023-05-17 11:10:34 +02:00
saalen aa9a8beafa https://sourceforge.net/p/astyle/bugs/487/ fixed indent of brace initializer with new 2023-05-15 16:46:49 +02:00
saalen 56ddd730d9 updated release notes 2023-05-11 16:00:03 +02:00
André Simon 2ad0c5176a Merge branch 'meson_compat' into 'master'
Small CMake changes to make compatible with meson

See merge request saalen/astyle!1
2023-05-07 12:01:11 +00:00
Jacob Alexander c3383ee125 Small CMake changes to make compatible with meson
- Meson requires all subprojects to have a top-level build file
  (meson.build or CMakeLists.txt) to use them as a dependency.
- Also added a CMP0112 policy to disable warning in newer versions of CMake
2023-05-05 12:02:44 -07:00
saalen 204cf3d702 updated release notes 2023-05-05 16:51:22 +02:00
saalen 9bcfd5174e added new --pad-brackets and --unpad-brackets options 2023-05-05 16:17:57 +02:00
saalen 297825af4a https://sourceforge.net/p/astyle/bugs/537/ fixed padding of pointers separated by comma, checking for open parens 2023-05-02 14:19:18 +02:00
saalen c246d5ae46 updated help message 2023-04-24 16:41:04 +02:00
saalen 5e85ad4283 https://sourceforge.net/p/astyle/tickets/84/ added new --squeeze-lines option 2023-04-20 17:57:39 +02:00
saalen 631e24f690 https://gitlab.com/saalen/astyle/-/issues/4 fixed a regression related to #534 2023-04-20 16:46:27 +02:00
saalen df1613046f https://gitlab.com/saalen/astyle/-/issues/3 fixed a regression related to #534 2023-04-19 16:44:43 +02:00
saalen af89dfd3cb added new --squeeze-ws option 2023-04-18 17:11:35 +02:00
saalen 62713fe165 updated notes.html 2023-04-15 14:53:14 +02:00
saalen 0add646b21 refactored namespace std usage 2023-04-14 16:26:59 +02:00
saalen bb885d22ba https://sourceforge.net/p/astyle/bugs/516/ fixed indent of C++11 initializer lists 2023-04-14 14:54:24 +02:00
saalen 3f467c58de https://sourceforge.net/p/astyle/tickets/121/ fixed indent of lambda bodies in fct calls - new approach 2023-04-12 16:29:51 +02:00
saalen 8edb11ab09 version set to 3.3 beta 2023-04-06 16:52:58 +02:00
saalen 7171c3a9ec https://sourceforge.net/p/astyle/tickets/121/ fixed indent of lambda bodies in fct calls 2023-04-04 17:14:30 +02:00
saalen 62ed88a770 https://sourceforge.net/p/astyle/bugs/526/ fixed struct name indent 2023-04-04 15:24:19 +02:00
saalen 2e9fe14947 https://sourceforge.net/p/astyle/bugs/534/ fixed indent of struct initializer lists 2023-03-31 15:58:26 +02:00
saalen a865024320 Merge branch 'master' of gitlab.com:saalen/astyle 2023-03-31 14:21:10 +02:00
saalen 0c3eb8ec46 updated notes.html 2023-03-31 14:15:54 +02:00
saalen 785d52fa55 updated version number 2023-03-31 14:15:29 +02:00
saalen b637cbb6d2 #2 https://sourceforge.net/p/astyle/bugs/534/ fixed yet another regression 2023-03-31 14:03:32 +02:00
Andre Simon 9ae2751ce4 fixed merge conflict 2023-03-29 20:14:48 +02:00
saalen 3cf316a785 added local development.html 2023-03-29 15:13:25 +02:00
saalen a5b17494e3 added check for undefined HOME env var 2023-03-29 15:13:04 +02:00
saalen 6c530550af updated docs; version string 2023-03-28 17:12:39 +02:00
saalen fdbae61b21 updated astyle.html 2023-03-27 17:30:02 +02:00
saalen fd13fe36d5 updated news and notes 2023-03-27 16:02:08 +02:00
saalen a62e84df90 https://sourceforge.net/p/astyle/bugs/518/ fixed break-blocks format after struct 2023-03-24 16:26:43 +01:00
saalen 06ab3e60a1 added Objective C to conditions 2023-03-24 15:47:31 +01:00
Andre Simon 555b106346 Merge branch 'master' of https://gitlab.com/saalen/astyle 2023-03-15 20:30:52 +01:00
saalen 0d3113cfbb https://sourceforge.net/p/astyle/bugs/525/ avoid regression of align-method-colon 2023-03-15 17:27:06 +01:00
saalen 63973c381d fix pad-method-colon options in ObjectiveC mode 2023-03-15 14:07:05 +01:00
Andre Simon 9d566d77d4 Merge branch 'master' of https://gitlab.com/saalen/astyle 2023-03-14 17:48:34 +01:00
saalen f5c48f89e2 updated css definitions 2023-03-14 16:31:18 +01:00
Andre Simon 34a2afaa7e added undefined home env var check 2023-03-05 18:01:39 +01:00
saalen 26d2c5e1d6 https://sourceforge.net/p/astyle/bugs/525/ fix indent of ObjectiveC statements 2023-03-02 16:07:33 +01:00
saalen 61621517fc https://sourceforge.net/p/astyle/bugs/483/ fix parsing of C# interpolation strings 2023-03-01 16:00:08 +01:00
saalen 010c88cbee added INVALID_TYPE constant 2023-03-01 14:04:28 +01:00
Andre Simon 66796b7075 added man page to file install list 2023-02-27 21:25:43 +01:00
Andre Simon ff3cf03bb3 https://sourceforge.net/p/astyle/bugs/541/ fixed project file search on Linux 2023-02-27 20:40:39 +01:00
Andre Simon 529b93f073 fixed help messages of pad-param-type options 2023-02-23 21:32:15 +01:00
Andre Simon caafa42ade added shell completion scripts 2023-02-23 21:24:14 +01:00
saalen 378dda7c97 added --mode=objc option 2023-02-16 18:11:25 +01:00
saalen ceed0550ed updated libs-base test case 2023-02-16 18:11:15 +01:00
Andre Simon 85b22457a2 fixed project file search on Linux (https://sourceforge.net/p/astyle/bugs/541/) 2023-02-12 18:11:41 +01:00
André Simon b439d89c9d fixed project file search on windows (https://sourceforge.net/p/astyle/bugs/541/) 2023-02-12 17:35:39 +01:00
28 changed files with 3312 additions and 2226 deletions
+1 -1
View File
@@ -7,4 +7,4 @@ AStyleTest/file-py/*.tmp
AStyleTest/file-py/*.pyc
AStyleTest/file-py/test-diff.txt
AStyleTest/file-py/test.txt
AStyle/src/.idea/
+1
View File
@@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.8)
cmake_policy(SET CMP0112 OLD)
project(astyle CXX)
include( build/cmake/Options.cmake REQUIRED )
+1 -1
View File
@@ -27,6 +27,6 @@ else()
endif()
install(TARGETS astyle DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
install(FILES ${DOCS} DESTINATION "${CMAKE_INSTALL_PREFIX}/share/doc/astyle/html")
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/man/astyle.1 DESTINATION ${CMAKE_INSTALL_PREFIX}/man/man1)
INSTALL(FILES ${MAN} DESTINATION "${CMAKE_INSTALL_PREFIX}/man/man1")
endif()
endif()
+4 -1
View File
@@ -10,7 +10,7 @@ endif()
# Linux Soname Version
set(MAJORVER 3)
set(MINORVER 2)
set(MINORVER 3)
set(PATCHVER 0)
set(SOLIBVER ${MAJORVER}.${MINORVER}.${PATCHVER})
@@ -25,6 +25,9 @@ list(APPEND DOCS
doc/notes.html
doc/styles.css)
list(APPEND MAN
man/astyle.1)
# Define java as a shared library
if(BUILD_JAVA_LIBS)
set(BUILD_SHARED_LIBS ON)
+279 -196
View File
@@ -17,15 +17,16 @@
<style type="text/css">
hr { margin-left: -0.4in; }
/* the following styles are for formatting code samples */
div.code { background: #DADAFF; }
div.code { background: #fffdda; padding: 0.5em; border: 1px gray solid; border-radius: 5px;}
/* code */
p.code { margin-left: 0.3in; }
code { color: navy; }
code.title { font-size: larger; font-weight: bold; }
code { color: mediumblue; }
code.title { font-size: larger; font-weight: bold; }
/* spans */
span.brace { color: red; }
span.comment { color: dimgray; font-style: italic; }
span.option { color: saddlebrown; font-weight: bold; }
p.contents2 > a { margin-left: 2em; display: list-item;}
</style>
<!-- When the user scrolls down from the top of the document, show the button -->
@@ -59,164 +60,168 @@
<button onclick="topFunction()" id="topBtn" title="Go to Contents"><b>Top</b></button>
<h1>Artistic Style 3.2</h1>
<h1>Artistic Style 3.3</h1>
<h2>
A Free, Fast, and Small Automatic Formatter<br />
for C, C++, C++/CLI, Objective&#8209;C, C#, and Java Source Code
for C, C++, C++/CLI, Objective-C, C#, and Java Source Code
</h2>
<h3 id="Contents">Contents</h3>
<p class="contents1">
<a class="contents" href="#_General_Information">General&nbsp;Information</a></p>
<a href="#_General_Information">General&nbsp;Information</a></p>
<p class="contents1">
<a class="contents" href="#_Quick_Start">Quick&nbsp;Start</a></p>
<a href="#_Quick_Start">Quick&nbsp;Start</a></p>
<p class="contents1">
<a class="contents" href="#_Usage">Usage</a></p>
<a href="#_Usage">Usage</a></p>
<p class="contents1">
<a class="contents" href="#_Options">Options</a></p>
<a href="#_Options">Options</a></p>
<p class="contents1">
<a class="contents" href="#_Option_Files">Option&nbsp;Files</a></p>
<a href="#_Option_Files">Option&nbsp;Files</a></p>
<p class="contents1">
<a class="contents" href="#_Disable_Formatting">Disable&nbsp;Formatting</a></p>
<a href="#_Disable_Formatting">Disable&nbsp;Formatting</a></p>
<p class="contents1">
<a class="contents" href="#_Basic_Brace_Styles">Basic&nbsp;Brace&nbsp;Styles</a></p>
<a href="#_Basic_Brace_Styles">Basic&nbsp;Brace&nbsp;Styles</a></p>
<p class="contents1">
<a class="contents" href="#_Brace_Style_Options">Brace&nbsp;Style&nbsp;Options</a></p>
<a href="#_Brace_Style_Options">Brace&nbsp;Style&nbsp;Options</a></p>
<p class="contents2">
<a class="contents" href="#_default_brace_style">default&nbsp;brace&nbsp;style</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_style=allman">style=allman</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_style=java">style=java</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_style=kr">style=kr</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_style=stroustrup">style=stroustrup</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_style=whitesmith">style=whitesmith</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_style=vtk">style=vtk</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_style=ratliff">style=ratliff</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_style=gnu">style=gnu</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_style=linux">style=linux</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_style=horstmann">style=horstmann</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_style=1tbs">style=1tbs</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_style=google">style=google</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_style=mozilla">style=mozilla</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_style=webkit">style=webkit</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_style=pico">style=pico</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_style=lisp">style=lisp</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_default_brace_style">default&nbsp;brace&nbsp;style</a>
<a class="contents" href="#_style=allman">style=allman</a>
<a class="contents" href="#_style=java">style=java</a>
<a class="contents" href="#_style=kr">style=kr</a>
<a class="contents" href="#_style=stroustrup">style=stroustrup</a>
<a class="contents" href="#_style=whitesmith">style=whitesmith</a>
<a class="contents" href="#_style=vtk">style=vtk</a>
<a class="contents" href="#_style=ratliff">style=ratliff</a>
<a class="contents" href="#_style=gnu">style=gnu</a>
<a class="contents" href="#_style=linux">style=linux</a>
<a class="contents" href="#_style=horstmann">style=horstmann</a>
<a class="contents" href="#_style=1tbs">style=1tbs</a>
<a class="contents" href="#_style=google">style=google</a>
<a class="contents" href="#_style=mozilla">style=mozilla</a>
<a class="contents" href="#_style=webkit">style=webkit</a>
<a class="contents" href="#_style=pico">style=pico</a>
<a class="contents" href="#_style=lisp">style=lisp</a>
</p>
<p class="contents1">
<a class="contents" href="#_Tab_Options">Tab&nbsp;Options</a></p>
<a href="#_Tab_Options">Tab&nbsp;Options</a></p>
<p class="contents2">
<a class="contents" href="#_default_indent">default&nbsp;indent</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_indent=spaces">indent=spaces</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_indent=tab">indent=tab</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_indent=force-tab">indent=force&#8209;tab</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_indent=force-tab-x">--indent=force&#8209;tab&#8209;x</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_default_indent">default&nbsp;indent</a>
<a class="contents" href="#_indent=spaces">indent=spaces</a>
<a class="contents" href="#_indent=tab">indent=tab</a>
<a class="contents" href="#_indent=force-tab">indent=force-tab</a>
<a class="contents" href="#_indent=force-tab-x">--indent=force-tab-x</a>
</p>
<p class="contents1">
<a class="contents" href="#_Brace_Modify_Options">Brace&nbsp;Modify&nbsp;Options</a></p>
<a href="#_Brace_Modify_Options">Brace&nbsp;Modify&nbsp;Options</a></p>
<p class="contents2">
<a class="contents" href="#_attach_namespaces">attach&#8209;namespaces</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_attach_classes">attach&#8209;classes</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_attach_inlines">attach&#8209;inlines</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_attach-extern-c">attach&#8209;extern&#8209;c</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_attach-closing-while">attach&#8209;closing&#8209;while</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_attach_namespaces">attach-namespaces</a>
<a class="contents" href="#_attach_classes">attach-classes</a>
<a class="contents" href="#_attach_inlines">attach-inlines</a>
<a class="contents" href="#_attach-extern-c">attach-extern-c</a>
<a class="contents" href="#_attach-closing-while">attach-closing-while</a>
</p>
<p class="contents1">
<a class="contents" href="#_Indentation_Options">Indentation&nbsp;Options</a></p>
<a href="#_Indentation_Options">Indentation&nbsp;Options</a></p>
<p class="contents2">
<a class="contents" href="#_indent-classes">indent&#8209;classes</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_indent-modifiers">indent&#8209;modifiers</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_indent-switches">indent&#8209;switches</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_indent-cases">indent&#8209;cases</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_indent-namespaces">indent&#8209;namespaces</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_indent-after-parens">indent&#8209;after&#8209;parens</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_indent-continuation">indent&#8209;continuation</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_indent-labels">indent&#8209;labels</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_indent-preproc-block">indent&#8209;preproc&#8209;block</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_indent-preproc-define">indent&#8209;preproc&#8209;define</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_indent-preproc-cond">indent&#8209;preproc&#8209;cond</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_indent-col1-comments">indent&#8209;col1&#8209;comments</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_min-conditional-indent">min&#8209;conditional&#8209;indent</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_max-continuation-indent">max&#8209;continuation&#8209;indent</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_indent-classes">indent-classes</a>
<a class="contents" href="#_indent-modifiers">indent-modifiers</a>
<a class="contents" href="#_indent-switches">indent-switches</a>
<a class="contents" href="#_indent-cases">indent-cases</a>
<a class="contents" href="#_indent-namespaces">indent-namespaces</a>
<a class="contents" href="#_indent-after-parens">indent-after-parens</a>
<a class="contents" href="#_indent-continuation">indent-continuation</a>
<a class="contents" href="#_indent-labels">indent-labels</a>
<a class="contents" href="#_indent-preproc-block">indent-preproc-block</a>
<a class="contents" href="#_indent-preproc-define">indent-preproc-define</a>
<a class="contents" href="#_indent-preproc-cond">indent-preproc-cond</a>
<a class="contents" href="#_indent-col1-comments">indent-col1-comments</a>
<a class="contents" href="#_min-conditional-indent">min-conditional-indent</a>
<a class="contents" href="#_max-continuation-indent">max-continuation-indent</a>
</p>
<p class="contents1">
<a class="contents" href="#_Padding_Options">Padding&nbsp;Options</a></p>
<a href="#_Padding_Options">Padding&nbsp;Options</a></p>
<p class="contents2">
<a class="contents" href="#_break-blocks">break&#8209;blocks</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_break-blocks=all">break&#8209;blocks=all</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_pad-oper">pad&#8209;oper</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_pad-comma">pad&#8209;comma</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_pad-paren">pad&#8209;paren</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_pad-paren-out">pad&#8209;paren&#8209;out</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_pad-first-paren-out">pad&#8209;first&#8209;paren&#8209;out</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_pad-paren-in">pad&#8209;paren&#8209;in</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_pad-header">pad&#8209;header</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_unpad-paren">unpad&#8209;paren</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_delete-empty-lines">delete&#8209;empty&#8209;lines</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_fill-empty-lines">fill&#8209;empty&#8209;lines</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_align-pointer">align&#8209;pointer</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_align-reference">align&#8209;reference</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_break-blocks">break-blocks</a>
<a class="contents" href="#_break-blocks=all">break-blocks=all</a>
<a class="contents" href="#_pad-oper">pad-oper</a>
<a class="contents" href="#_pad-comma">pad-comma</a>
<a class="contents" href="#_pad-paren">pad-paren</a>
<a class="contents" href="#_pad-paren-out">pad-paren-out</a>
<a class="contents" href="#_pad-first-paren-out">pad-first-paren-out</a>
<a class="contents" href="#_pad-paren-in">pad-paren-in</a>
<a class="contents" href="#_pad-header">pad-header</a>
<a class="contents" href="#_unpad-paren">unpad-paren</a>
<a class="contents" href="#_pad-brackets">pad-brackets</a>
<a class="contents" href="#_unpad-brackets">unpad-brackets</a>
<a class="contents" href="#_delete-empty-lines">delete-empty-lines</a>
<a class="contents" href="#_fill-empty-lines">fill-empty-lines</a>
<a class="contents" href="#_squeeze-ws">squeeze-ws</a>
<a class="contents" href="#_squeeze-lines">squeeze-lines</a>
<a class="contents" href="#_align-pointer">align-pointer</a>
<a class="contents" href="#_align-reference">align-reference</a>
</p>
<p class="contents1">
<a class="contents" href="#_Formatting_Options">Formatting&nbsp;Options</a></p>
<a href="#_Formatting_Options">Formatting&nbsp;Options</a></p>
<p class="contents2">
<a class="contents" href="#_break-closing-braces">break&#8209;closing&#8209;braces</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_break-elseifs">break&#8209;elseifs</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_break-one-line-headers">break&#8209;one&#8209;line&#8209;headers</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_add-braces">add&#8209;braces</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_add-one-line-braces">add&#8209;one&#8209;line&#8209;braces</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_remove-braces">remove&#8209;braces</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_break-return-type">break&#8209;return&#8209;type</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_attach-return-type">attach&#8209;return&#8209;type</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_keep-one-line-blocks">keep&#8209;one&#8209;line&#8209;blocks</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_keep-one-line-statements">keep&#8209;one&#8209;line&#8209;statements</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_convert-tabs">convert&#8209;tabs</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_close-templates">close&#8209;templates</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_remove-comment-prefix">remove&#8209;comment&#8209;prefix</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_max-code-length">max&#8209;code&#8209;length</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_max-code-length">break&#8209;after&#8209;logical</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_mode">mode</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_break-closing-braces">break-closing-braces</a>
<a class="contents" href="#_break-elseifs">break-elseifs</a>
<a class="contents" href="#_break-one-line-headers">break-one-line-headers</a>
<a class="contents" href="#_add-braces">add-braces</a>
<a class="contents" href="#_add-one-line-braces">add-one-line-braces</a>
<a class="contents" href="#_remove-braces">remove-braces</a>
<a class="contents" href="#_break-return-type">break-return-type</a>
<a class="contents" href="#_attach-return-type">attach-return-type</a>
<a class="contents" href="#_keep-one-line-blocks">keep-one-line-blocks</a>
<a class="contents" href="#_keep-one-line-statements">keep-one-line-statements</a>
<a class="contents" href="#_convert-tabs">convert-tabs</a>
<a class="contents" href="#_close-templates">close-templates</a>
<a class="contents" href="#_remove-comment-prefix">remove-comment-prefix</a>
<a class="contents" href="#_max-code-length">max-code-length</a>
<a class="contents" href="#_max-code-length">break-after-logical</a>
<a class="contents" href="#_mode">mode</a>
</p>
<p class="contents1">
<a class="contents" href="#_Objective_C_Options">Objective&#8209;C&nbsp;Options</a></p>
<a href="#_Objective_C_Options">Objective-C&nbsp;Options</a></p>
<p class="contents2">
<a class="contents" href="#_pad-method-prefix">pad&#8209;method&#8209;prefix</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_unpad-method-prefix">unpad&#8209;method&#8209;prefix</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_pad-return-type">pad&#8209;return&#8209;type</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_unpad-return-type">unpad&#8209;return&#8209;type</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_pad-param-type">pad&#8209;param&#8209;type</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_unpad-param-type">unpad&#8209;param&#8209;type</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_align-method-colon">align&#8209;method&#8209;colon</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_pad-method-colon">pad&#8209;method&#8209;colon</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_pad-method-prefix">pad-method-prefix</a>
<a class="contents" href="#_unpad-method-prefix">unpad-method-prefix</a>
<a class="contents" href="#_pad-return-type">pad-return-type</a>
<a class="contents" href="#_unpad-return-type">unpad-return-type</a>
<a class="contents" href="#_pad-param-type">pad-param-type</a>
<a class="contents" href="#_unpad-param-type">unpad-param-type</a>
<a class="contents" href="#_align-method-colon">align-method-colon</a>
<a class="contents" href="#_pad-method-colon">pad-method-colon</a>
</p>
<p class="contents1">
<a class="contents" href="#_Other_Options">Other&nbsp;Options</a>&nbsp;&nbsp;&nbsp;</p>
<a href="#_Other_Options">Other&nbsp;Options</a> </p>
<p class="contents2">
<a class="contents" href="#_suffix">suffix</a>&nbsp;&nbsp;&nbsp; <a class="contents" href="#_suffix=none">suffix=none</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_recursive">recursive</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_dry-run">dry-run</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_exclude">exclude</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_ignore-exclude-errors">ignore&#8209;exclude&#8209;errors</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_ignore-exclude-errors-x">ignore&#8209;exclude&#8209;errors&#8209;x</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_errors-to-stdout">errors&#8209;to&#8209;stdout</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_preserve-date">preserve&#8209;date</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_verbose">verbose</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_formatted">formatted</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_quiet">quiet</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_lineend">lineend</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_suffix">suffix</a> <a class="contents" href="#_suffix=none">suffix=none</a>
<a class="contents" href="#_recursive">recursive</a>
<a class="contents" href="#_dry-run">dry-run</a>
<a class="contents" href="#_exclude">exclude</a>
<a class="contents" href="#_ignore-exclude-errors">ignore-exclude-errors</a>
<a class="contents" href="#_ignore-exclude-errors-x">ignore-exclude-errors-x</a>
<a class="contents" href="#_errors-to-stdout">errors-to-stdout</a>
<a class="contents" href="#_preserve-date">preserve-date</a>
<a class="contents" href="#_verbose">verbose</a>
<a class="contents" href="#_formatted">formatted</a>
<a class="contents" href="#_quiet">quiet</a>
<a class="contents" href="#_lineend">lineend</a>
</p>
<p class="contents1">
<a class="contents" href="#_Command_Line_Only">Command&nbsp;Line&nbsp;Only</a></p>
<a href="#_Command_Line_Only">Command&nbsp;Line&nbsp;Only</a></p>
<p class="contents2">
<a class="contents" href="#_options">options</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_project">project</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_ascii">ascii</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_version">version</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_help">help</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_html">html</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_html=">html=</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_stdin=">stdin=</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_stdout=">stdout=</a>&nbsp;&nbsp;&nbsp;
<a class="contents" href="#_options">options</a>
<a class="contents" href="#_project">project</a>
<a class="contents" href="#_ascii">ascii</a>
<a class="contents" href="#_version">version</a>
<a class="contents" href="#_help">help</a>
<a class="contents" href="#_html">html</a>
<a class="contents" href="#_html=">html=</a>
<a class="contents" href="#_stdin=">stdin=</a>
<a class="contents" href="#_stdout=">stdout=</a>
</p>
<p>
&nbsp;</p>
@@ -268,11 +273,11 @@
these settings. If no translation is available it will default to English. There is an "ascii" option to use English
instead of the system language.</p>
<p>
The source code for the translations is at the end of ASLocalizer.cpp in the form of an English&#8209;Translation
The source code for the translations is at the end of ASLocalizer.cpp in the form of an English-Translation
pair. If you make corrections to a translation, send the source as a bug report and it will be included in the
next release.</p>
<p>
To add a new language, add a new translation class to ASLocalizer.h. Add the English&#8209;Translation pair to
To add a new language, add a new translation class to ASLocalizer.h. Add the English-Translation pair to
the constructor in ASLocalizer.cpp. Update the WinLangCode array and add the language code to the function setTranslationClass().
The ASLocalizer.cpp program contains comments that give web pages for obtaining the LCIDs and language codes.
Send the source code as a bug report and it will be included in the next release.</p>
@@ -283,10 +288,10 @@
The names of special characters used in programming vary by region. The terminology used by Artistic Style,
followed by other common names, is<strong>:</strong></p>
<blockquote>
braces or curly braces { } &#8209; also called brackets, or curly brackets.<br />
parens or round brackets ( ) &#8209; also called parentheses, brackets, circle brackets, or soft brackets.<br />
square brackets [ ] &#8209; also called block parens, brackets, closed brackets, or hard brackets.<br />
angle brackets < > &#8209; also called brackets, pointy brackets, triangular brackets, diamond brackets, tuples,
braces or curly braces { } - also called brackets, or curly brackets.<br />
parens or round brackets ( ) - also called parentheses, brackets, circle brackets, or soft brackets.<br />
square brackets [ ] - also called block parens, brackets, closed brackets, or hard brackets.<br />
angle brackets < > - also called brackets, pointy brackets, triangular brackets, diamond brackets, tuples,
or chevrons.
</blockquote>
<p>
@@ -304,12 +309,12 @@
hanging indent format is used. If the "exec sql" statement is indented more than the following statements, the
SQL will be aligned in a single column.</p>
<p>
Unicode files encoded as UTF&#8209;16, both big and little endian, will be formatted. The files must begin with
a byte order mark (BOM) to be recognized. Files encoded as UTF&#8209;32 will be rejected. Some compilers do not
support these encodings. These files can be converted to UTF&#8209;8 encoding with the program "iconv". There
Unicode files encoded as UTF-16, both big and little endian, will be formatted. The files must begin with
a byte order mark (BOM) to be recognized. Files encoded as UTF-32 will be rejected. Some compilers do not
support these encodings. These files can be converted to UTF-8 encoding with the program "iconv". There
are Linux and Windows versions available (the Windows version does not seem to work for all encodings). Visual
Studio can convert the files from the "File &gt; Advanced Save Options" menu. There are other development environments
and text editors, such as SciTE, that can convert files to UTF&#8209;8.</p>
and text editors, such as SciTE, that can convert files to UTF-8.</p>
<p>
Embedded statements that are multiple-line and are NOT in a C-type format, such as Python, are usually mal-formatted
(a C-type format has blocks enclosed by braces and statements terminated by a semi-colon). Macros that define
@@ -451,7 +456,7 @@
<p>
Options may be set apart by new-lines, tabs, commas, or spaces. Long options in the option file may be written
without the preceding '--'. Lines within the option file that begin with '#' are considered line-comments.
The option files used in formatting and their location can be displayed by using the --verbose
The option files used in formatting and their location can be displayed by using the --verbose
option. </p>
<ol>
<li>The <strong>command line options</strong> have precedence. If there is a conflict between a command line option
@@ -465,18 +470,18 @@
<ul>
<li>the file name indicated by the --project= command line option.</li>
<li>the file named .astylerc or _ astylerc and the --project command line option. </li>
<li>the file name identified by the environment variable ARTISTIC_STYLE_PROJECT_OPTIONS if it exists. The value of
<li>the file name identified by the environment variable ARTISTIC_STYLE_PROJECT_OPTIONS if it exists. The value of
the variable should be a file name only, no path.</li>
<li>the file or environment variable can be disabled by specifying --project=none on the command line.</li>
</ul>
The file is expected to be in the top directory of the project being formatted. Only one file will be used per
execution and all files to be formatted are assumed to be in the same project. Artistic Style will search
execution and all files to be formatted are assumed to be in the same project. Artistic Style will search
backward in the directory path to find the project option file. The initial directory path for the search is obtained
from one of the following locations in the following order.
<ul>
<li>The first <em>SourceFilePath</em> entered on the command line.</li>
<li>The value of "--stdin=" if it is used for redirection.</li>
<li>The current directory if "<" is used for redirection. If the file to be formatted is not in the current
<li>The current directory if "<" is used for redirection. If the file to be formatted is not in the current
directory, use the "--stdin=" option instead.</li>
</ul>
</li>
@@ -486,11 +491,11 @@
following order.
<ul>
<li>the file path indicated by the --options= command line option.</li>
<li>the file path indicated by the environment variable ARTISTIC_STYLE_OPTIONS if it exists. The value of the
<li>the file path indicated by the environment variable ARTISTIC_STYLE_OPTIONS if it exists. The value of the
variable should be a path including the file name.</li>
<li>the file named .astylerc in the directory pointed to by the HOME environment variable
<li>the file named .astylerc in the directory pointed to by the HOME environment variable
(e.g. "$HOME<strong>/.</strong>astylerc" on Linux); </li>
<li>the file named astylerc in the directory pointed to by the APPDATA environment variable
<li>the file named astylerc in the directory pointed to by the APPDATA environment variable
(e.g. "%APPDATA%<strong>\</strong>astylerc" on Windows). </li>
<li>the file or environment variable can be disabled by specifying --options=none on the command line.</li>
</ul>
@@ -655,8 +660,8 @@ indent-switches <span class="comment"># cannot do this on the command line</
a function.</p>
<p>
Using the k&amp;r option may cause problems because of the &amp;. This can be resolved by enclosing the k&amp;r
in quotes (e.g. &#8209;&#8209;style="k&amp;r") or by using one of the alternates &#8209;&#8209;style=kr or
&#8209;&#8209;style=k/r.</p>
in quotes (e.g. --style="k&amp;r") or by using one of the alternates --style=kr or
--style=k/r.</p>
<div class="code">
<pre>int Foo(bool isBar)
<span class="brace">{</span>
@@ -675,7 +680,7 @@ indent-switches <span class="comment"># cannot do this on the command line</
Stroustrup style uses linux braces. Opening braces are broken from function definitions only. The opening braces
are attached to everything else, including namespaces, classes, arrays, structs, enums, and statements within
a function.&nbsp; The closing headers are broken from closing braces (e.g. --break-closing-headers). This style
frequently is used with attach&#8209;closing&#8209;while, tabbed indents, and an indent of 5
frequently is used with attach-closing-while, tabbed indents, and an indent of 5
spaces. </p>
<div class="code">
<pre>int Foo(bool isBar)
@@ -712,7 +717,7 @@ indent-switches <span class="comment"># cannot do this on the command line</
&nbsp;</p>
<p id="_style=vtk">
<code class="title">--style=vtk / -A15</code><br />
VTK (Visualization Toolkit) style uses broken, indented braces, except for the opening brace of classes,
VTK (Visualization Toolkit) style uses broken, indented braces, except for the opening brace of classes,
arrays, structs, enums, and function definitions.. Switch blocks are indented to prevent a 'hanging
indent' with following case statements. </p>
<div class="code">
@@ -750,7 +755,7 @@ indent-switches <span class="comment"># cannot do this on the command line</
<p id="_style=gnu">
<code class="title">--style=gnu / -A7</code><br />
GNU style uses broken braces. Extra indentation is added to blocks <strong>within a function</strong>
only. The entire block is indented, not just the brace. This style frequently is used with an indent of 2
only. The entire block is indented, not just the brace. This style frequently is used with an indent of 2
spaces. </p>
<div class="code">
<pre>int Foo(bool isBar)
@@ -814,7 +819,7 @@ indent-switches <span class="comment"># cannot do this on the command line</
else, including arrays, structs, enums, and statements within a function. </p>
<p>
In the following example, braces have been added to the "return 0;" statement. The option
&#8209;&#8209;add&#8209;one&#8209;line&#8209;braces can also be used with this style.</p>
--add-one-line-braces can also be used with this style.</p>
<div class="code">
<pre>int Foo(bool isBar)
<span class="brace">{</span>
@@ -852,7 +857,8 @@ indent-switches <span class="comment"># cannot do this on the command line</
The braces are attached to everything else, including namespaces, arrays, and statements within a function. This
style frequently is used with an indent of 2 spaces and --break-return-type.</p>
<div class="code">
<pre>int Foo(bool isBar)/span>
<pre>int Foo(bool isBar)
<span class="brace">{</span>
if (isBar) <span class="brace">{</span>
bar();
return 1;
@@ -867,7 +873,7 @@ indent-switches <span class="comment"># cannot do this on the command line</
<code class="title">--style=webkit / -A17</code><br />
WebKit style uses linux braces. Opening braces are broken from function definitions only. The opening braces are
attached to everything else, including namespaces, classes, arrays, structs, enums, and statements within a function.
This style frequently is used with attach&#8209;closing&#8209;while, and an indent of 4 spaces.
This style frequently is used with attach-closing-while, and an indent of 4 spaces.
</p>
<div class="code">
<pre>int Foo(bool isBar)
@@ -1157,7 +1163,7 @@ public:
<code class="title">--indent-modifiers / -xG</code><br />
Indent 'class ' and 'struct' access modifiers, 'public:', 'protected:'
and 'private:', one half indent. The rest of the class is not indented. This option is effective
for C++ files only. If used with indent&#8209;classes this option will be ignored.</p>
for C++ files only. If used with indent-classes this option will be ignored.</p>
<div class="code">
<pre>class Foo
<span class="brace">{</span>
@@ -1442,7 +1448,7 @@ error:
<p id="_indent-col1-comments">
<code class="title">--indent-col1-comments / -Y</code><br />
Indent C++ comments beginning in column one. By default C++ comments beginning in column one are
assumed to be commented&#8209;out code and not indented. This option will allow the comments to be indented with
assumed to be commented-out code and not indented. This option will allow the comments to be indented with
the code.</p>
<div class="code">
<pre>void Foo()\n"
@@ -1671,9 +1677,9 @@ isBar = false;
<br />
Insert space padding around the <strong>first</strong> paren in a series on the <strong>outside</strong>
only. Parens that are empty will not be padded. Any end of line comments will remain in the original column,
if possible. This can be used with unpad-paren below to remove unwanted spaces. If used with pad&#8209;paren or
pad&#8209;paren&#8209;out, this option will be ignored. If used with pad&#8209;paren&#8209;in, the result will
be the pad&#8209;paren.</p>
if possible. This can be used with unpad-paren below to remove unwanted spaces. If used with pad-paren or
pad-paren-out, this option will be ignored. If used with pad-paren-in, the result will
be the pad-paren.</p>
<div class="code">
<pre>if (isFoo((a+2), b))
bar(a, b);
@@ -1725,13 +1731,13 @@ isBar = false;
<br />
Remove extra space padding around parens on the inside and outside. Any end of line comments will remain
in the original column, if possible. This option can be used in combination with the paren padding options
pad&#8209;paren, pad&#8209;paren&#8209;out, pad&#8209;paren&#8209;in,
and pad&#8209;header above. Only padding that has not been requested by other options will be
pad-paren, pad-paren-out, pad-paren-in,
and pad-header above. Only padding that has not been requested by other options will be
removed.</p>
<p>
For example, if a source has parens padded on both the inside and outside, and you want inside only. You need
to use unpad-paren to remove the outside padding, and pad&#8209;paren&#8209;in to
retain the inside padding. Using only pad&#8209;paren&#8209;in> would not remove the outside
to use unpad-paren to remove the outside padding, and pad-paren-in to
retain the inside padding. Using only pad-paren-in> would not remove the outside
padding.</p>
<div class="code">
<pre>if ( isFoo( ( a+2 ), b ) )
@@ -1743,6 +1749,32 @@ isBar = false;
bar(a, b);
</pre>
</div>
<p id="_pad-brackets">
<code class="title">--pad-brackets</code>
<br />
Insert space padding around square brackets on both the <strong>outside</strong> and the <strong>inside</strong>.
</p>
<div class="code">
<pre>a = b[a[1]];</pre>
<p class="code">
becomes:</p>
<pre>a = b [ a [ 1 ] ];</pre>
</div>
<p id="_unpad-brackets">
<code class="title">--unpad-brackets</code>
<br />
Remove padding around square brackets on both the <strong>outside</strong> and the <strong>inside</strong>.
</p>
<div class="code">
<pre>a = b [ a [ 1 ] ];</pre>
<p class="code">
becomes:</p>
<pre>a = b[a[1]];</pre>
</div>
<p>
&nbsp;</p>
<p id="_delete-empty-lines">
@@ -1766,14 +1798,68 @@ isBar = false;
<span class="brace">{</span>
foo1 = 1;
foo2 = 2;
<span class="brace">}</span>
</pre>
<span class="brace">}</span></pre>
</div>
<p>
&nbsp;</p>
<p id="_fill-empty-lines">
<code class="title">--fill-empty-lines / -E</code><br />
Fill empty lines with the white space of the previous line.</p>
<p>
&nbsp;</p>
<p id="_squeeze-lines">
<code class="title">--squeeze-lines=#</code><br />
Remove superfluous empty lines exceeding the given number.</p>
<div class="code">
<pre>void Foo()
<span class="brace">{</span>
foo1 = 1;
<span class="brace">}</span>
void Foo2()
<span class="brace">{</span>
foo1 = 1;
<span class="brace">}</span>
</pre>
<p class="code">
becomes:</p>
<pre>void Foo()
<span class="brace">{</span>
foo1 = 1;
<span class="brace">}</span>
void Foo2()
<span class="brace">{</span>
foo1 = 1;
<span class="brace">}</span></pre>
</div>
<p>
&nbsp;</p>
<p id="_squeeze-ws">
<code class="title">--squeeze-ws</code><br />
Remove superfluous whitespace</p>
<div class="code">
<pre>void Foo ()
<span class="brace">{</span>
foo1 = 1;
<span class="brace">}</span>
</pre>
<p class="code">
becomes:</p>
<pre>void Foo ()
<span class="brace">{</span>
foo1 = 1;
<span class="brace">}</span></pre>
</div>
<p>
&nbsp;</p>
<p id="_align-pointer">
@@ -1895,7 +1981,7 @@ else if (isFoo1()) <span class="brace">{</span>
bar1();
<span class="brace">}</span>
else if (isFoo2()) <span class="brace">{</span>
bar2;
bar2();
<span class="brace">}</span>
</pre>
<p class="code">
@@ -2005,7 +2091,7 @@ else
<p>
&nbsp;</p>
<p id="_break-return-type">
<code class="title">--break-return-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / -xB</code><br />
<code class="title">--break-return-type &nbsp;&nbsp; / -xB</code><br />
<code class="title">--break-return-type-decl / -xD</code><br />
Break the return type from the function name. The two options are for the function definitions (-xB), and the
function declarations or signatures (-xD). If used with --attach-return-type, the result will be to break the
@@ -2020,11 +2106,11 @@ Foo(bool isFoo);</pre>
<p>
&nbsp;</p>
<p id="_attach-return-type">
<code class="title">--attach-return-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / -xf</code><br />
<code class="title">--attach-return-type &nbsp;&nbsp; / -xf</code><br />
<code class="title">--attach-return-type-decl / -xh</code><br />
Attach the return type to the function name. The two options are for the function definitions (-xf), and the
Attach the return type to the function name. The two options are for the function definitions (-xf), and the
function declarations or signatures (-xh). They are intended to undo the --break-return-type options. If used
with --break-return-type, the result will be to break the return type. This option has no effect on
with --break-return-type, the result will be to break the return type. This option has no effect on
Objective-C functions.</p>
<div class="code">
<pre>void
@@ -2110,19 +2196,19 @@ Foo(bool isFoo);</pre>
<code class="title">--max-code-length=<span class="option">#</span>&nbsp;&nbsp; / -xC<span class="option">#</span>
<br />
--break-after-logical / -xL</code><br />
The option max&#8209;code&#8209;length will break a line if the code exceeds <span class="option">#</span>
The option max-code-length will break a line if the code exceeds <span class="option">#</span>
characters. The valid values are <strong>50</strong> thru <strong>200</strong>. Lines without logical conditionals
will break on a logical conditional (||, &amp;&amp;, ...), comma, paren, semicolon, or space.</p>
<p>
Some code will not be broken, such as comments, quotes, and arrays. If used with keep&#8209;one&#8209;line&#8209;blocks
or add-one-line-braces the blocks will NOT be broken. If used with keep&#8209;one&#8209;line&#8209;statements
Some code will not be broken, such as comments, quotes, and arrays. If used with keep-one-line-blocks
or add-one-line-braces the blocks will NOT be broken. If used with keep-one-line-statements
the statements will be broken at a semicolon if the line goes over the maximum length. If there is no available
break point within the max code length, the line will be broken at the first available break point after the max
code length.</p>
<p>
By default logical conditionals will be placed first in the new line. The option
<strong>break&#8209;after&#8209;logical</strong> will cause the logical conditionals to be placed last on the
previous line. This option has no effect without max&#8209;code&#8209;length.</p>
<strong>break-after-logical</strong> will cause the logical conditionals to be placed last on the
previous line. This option has no effect without max-code-length.</p>
<div class="code">
<pre>if (thisVariable1 == thatVariable1 || thisVariable2 == thatVariable2 || thisVariable3 == thatVariable3)
bar();</pre>
@@ -2133,7 +2219,7 @@ Foo(bool isFoo);</pre>
|| thisVariable3 == thatVariable3)
bar();</pre>
<p class="code">
becomes (with break&#8209;after&#8209;logical):</p>
becomes (with break-after-logical):</p>
<pre>if (thisVariable1 == thatVariable1 ||
thisVariable2 == thatVariable2 ||
thisVariable3 == thatVariable3)
@@ -2144,8 +2230,10 @@ Foo(bool isFoo);</pre>
<p id="_mode">
<code class="title">--mode=c</code><br />
<code class="title">--mode=cs</code><br />
<code class="title">--mode=js</code><br />
<code class="title">--mode=java</code><br />
Indent a C type, C#, or Java file. C type files are C, C++, C++/CLI, and Objective-C. The option is usually
<code class="title">--mode=objc</code><br />
Indent a C type, C#, Javascript, Java or Objective-C file. C type files are C, C++, C++/CLI. The option is usually
set from the file extension for each file. You can override the setting with this entry. It will be used for all
files, regardless of the file extension. It allows the formatter to identify language specific syntax such as
C++ classes, templates, and keywords.</p>
@@ -2155,18 +2243,18 @@ Foo(bool isFoo);</pre>
<!-- * * * * * * * * * * * * * Objective-C Options * * * * * * * * * * * * * -->
<h3 id="_Objective_C_Options">Objective&#8209;C Options</h3>
<h3 id="_Objective_C_Options">Objective-C Options</h3>
<p>
These options are effective for Objective&#8209;C files only. The standard paren padding options will still apply
These options are effective for Objective-C files only. The standard paren padding options will still apply
to the Objective-C method prefix and return type unless overridden by the following options.</p>
<p>
Because of the longer indents sometimes needed for Objective&#8209;C, the option "max-continuation-indent" may
Because of the longer indents sometimes needed for Objective-C, the option "max-continuation-indent" may
need to be increased. If you are not getting the paren and square bracket alignment you want, try increasing
this value. The option is described in the "Indentation Options" section.</p>
<p id="_pad-method-prefix">
<code class="title">--pad-method-prefix / -xQ</code><br />
Insert space padding <strong>after</strong> the '-' or '+' Objective&#8209;C method prefix. This will add
Insert space padding <strong>after</strong> the '-' or '+' Objective-C method prefix. This will add
exactly one space. Any additional spaces will be deleted.</p>
<div class="code">
<pre>-(void)foo1;
@@ -2180,8 +2268,8 @@ Foo(bool isFoo);</pre>
&nbsp;</p>
<p id="_unpad-method-prefix">
<code class="title">--unpad-method-prefix / -xR</code><br />
Remove all space padding <strong>after</strong> the &#39;-&#39; or &#39;+&#39; Objective&#8209;C method prefix.&nbsp;
This option will be ignored if used with pad&#8209;method&#8209;prefix. This option takes precedence over the
Remove all space padding <strong>after</strong> the &#39;-&#39; or &#39;+&#39; Objective-C method prefix.&nbsp;
This option will be ignored if used with pad-method-prefix. This option takes precedence over the
pad paren outside option.</p>
<div class="code">
<pre>- (void) foo1;
@@ -2195,7 +2283,7 @@ Foo(bool isFoo);</pre>
&nbsp;</p>
<p id="_pad-return-type">
<code class="title">--pad-return-type / -xq</code><br />
Insert space padding <strong>after</strong> the Objective&#8209;C return type. This will add exactly one
Insert space padding <strong>after</strong> the Objective-C return type. This will add exactly one
space. Any additional spaces will be deleted. </p>
<div class="code">
<pre>-(void)foo1;
@@ -2209,8 +2297,8 @@ Foo(bool isFoo);</pre>
&nbsp;</p>
<p id="_unpad-return-type">
<code class="title">--unpad-return-type / -xr</code><br />
Remove all space padding <strong>after</strong> the Objective&#8209;C return type. This option
will be ignored if used with pad&#8209;return&#8209;type. This option takes precedence over the pad paren
Remove all space padding <strong>after</strong> the Objective-C return type. This option
will be ignored if used with pad-return-type. This option takes precedence over the pad paren
outside option. </p>
<div class="code">
<pre>-(void) foo1;
@@ -2224,7 +2312,7 @@ Foo(bool isFoo);</pre>
&nbsp;</p>
<p id="_pad-param-type">
<code class="title">--pad-param-type / -xS</code><br />
Insert space padding around an Objective&#8209;C parameter type. This will add exactly
Insert space padding around an Objective-C parameter type. This will add exactly
one space. Any additional spaces will be deleted. This has precedence over the pad method colon option and
will always cause space padding after a method colon.</p>
<div class="code">
@@ -2239,7 +2327,7 @@ Foo(bool isFoo);</pre>
&nbsp;</p>
<p id="_unpad-param-type">
<code class="title">--unpad-param-type / -xs</code><br />
Remove all space padding around an Objective&#8209;C parameter type. This option takes precedence over the
Remove all space padding around an Objective-C parameter type. This option takes precedence over the
pad paren outside option. The pad method colon option has precedence over the <strong>opening</strong> paren.
The closing paren will always be unpadded.</p>
<div class="code">
@@ -2259,7 +2347,7 @@ Foo(bool isFoo);</pre>
&nbsp;</p>
<p id="_align-method-colon">
<code class="title">--align-method-colon / -xM</code><br />
Align the colons in Objective&#8209;C method declarations
Align the colons in Objective-C method declarations
and method calls. If this option is not declared, method definitions will be indented uniformly, and method calls
will align with the first keyword.</p>
<div class="code">
@@ -2297,11 +2385,11 @@ Foo(bool isFoo);</pre>
&nbsp;</p>
<p id="_pad-method-colon">
<code class="title">--pad-method-colon=none&nbsp;&nbsp; / -xP0<br />
--pad-method-colon=all&nbsp;&nbsp;&nbsp; / -xP1<br />
--pad-method-colon=all / -xP1<br />
--pad-method-colon=after&nbsp; / -xP2<br />
--pad-method-colon=before / -xP3
</code><br />
Add or remove space padding before or after the colons in an Objective&#8209;C method call. These options will
Add or remove space padding before or after the colons in an Objective-C method call. These options will
pad exactly one space. Any additional spaces will be deleted. The space padding after the method colon can be
overridden by pad-param-type.</p>
<div class="code">
@@ -2361,7 +2449,7 @@ Foo(bool isFoo);</pre>
required files.</p>
<p>
Wildcards are NOT allowed. There may be more than one exclude statement. The file path and name may be placed
in double quotes (e.g. &#8209;&#8209;exclude="foo&nbsp;bar.cpp").</p>
in double quotes (e.g. --exclude="foo&nbsp;bar.cpp").</p>
<p id="_ignore-exclude-errors">
<code class="title">--ignore-exclude-errors / -i</code><br />
Allow processing to continue if there are errors in the "exclude=###" options.<br />
@@ -2386,7 +2474,7 @@ Foo(bool isFoo);</pre>
file.</p>
<p id="_verbose">
<code class="title">--verbose / -v</code><br />
Verbose display mode. Display optional information, such as release number, date,
Verbose display mode. Display optional information, such as release number, date,
option file locations, and statistical data.</p>
<p id="_formatted">
<code class="title">--formatted / -Q</code><br />
@@ -2408,7 +2496,7 @@ Foo(bool isFoo);</pre>
will be ignored.</p>
<p>
&nbsp;</p>
<hr style="margin-left: -0.4in;" />
<hr />
<!-- * * * * * * * * * * * * Command-Line Options * * * * * * * * * * * * -->
@@ -2420,7 +2508,7 @@ Foo(bool isFoo);</pre>
<code class="title">--options=<span class="option">####</span></code><br />
<code class="title">--options=none</code><br />
Specify an options file #### to read and use. It must contain a file path and a file name. This will allow
the file name to be changed from astylerc or .astylerc.</p>
the file name to be changed from .astylerc or _astylerc.</p>
<p>
The "none" option will disable the default options file if one exists. Only command-line parameters will be used.
</p>
@@ -2430,7 +2518,7 @@ Foo(bool isFoo);</pre>
<code class="title">--project</code><br />
<code class="title">--project=<span class="option">####</span></code><br />
<code class="title">--project=none</code> <br />
The first option specifies a project option file to use. The option file
The first option specifies a project option file to use. The option file
should have&nbsp; the default name of .astylerc or _astylerc and should be in the top directory of the project
being formatted. </p>
<p>
@@ -2484,19 +2572,14 @@ Foo(bool isFoo);</pre>
Do not use this with "&gt;" redirection.</p>
<p>
&nbsp;</p>
<hr style="margin-left: -0.4in;" />
<hr />
<p style="margin-left: -0.4in; text-align: center;">
<p >
<a href="http://sourceforge.net/projects/astyle">
<img src="http://sflogo.sourceforge.net/sflogo.php?group_id=2319&type=16" alt="" />
</a></p>
<p>
&nbsp;</p>
<p>
&nbsp;</p>
</body>
</html>
+157
View File
@@ -0,0 +1,157 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Artistic Style Developer</title>
<meta http-equiv="Content-Language" content="en-us" />
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
<link href="../favicon.ico" rel="shortcut icon" type="image/x-icon" />
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<!-- body text -->
<h1>Artistic Style Developer Information</h1>
<p class="noindent">
Artistic Style has compile options for creating a shared library (DLL) or static library for use with a Graphical
User Interface (GUI). The shared library can be called from a C++, Objective&#8209;C, C#, or Python program. There
are also compile options for a Java Native Interface (JNI) that allows it to be called from a Java program. Information
on compiling the various configurations of Artistic Style is in the Install Information.</p>
<p class="noindent">
The following Examples show how to call the Artistic Style shared library using the various programming languages.
They are command line programs and do NOT contain a Graphical User Interface for the Artistic Style options.
</p>
<p class="noindent">
Source code, documentation, and test files for all examples can be downloaded below or obtained from the <a href="subversion.html">source code repositories</a>.
These projects also require the source from Artistic Style in addition to the development examples.
</p>
<h3>Examples</h3>
<p>
Source code from the following examples can be copied and pasted into an editor or development environment for
compiling and running. Or the source code can be downloaded from the "Source Code Downloads" section below. The
code highlighting for the example html pages was done with <a href="http://www.andre-simon.de/"
target="_blank" title="open new window">Highlight</a>.
The examples were formatted with Artistic Style using the Horstmann style.</p>
<p>
<a href="https://astyle.sourceforge.net/develop/cpp.html">Calling Artistic Style from a C++ Program</a> contains information on calling Artistic Style
as a shared or static library from a C++ program. It includes a C++ sample program that can be used to test the
Artistic Style libraries.</p>
<p>
<a href="https://astyle.sourceforge.net/develop/objc.html">Calling Artistic Style from an Objective-C Program</a> contains information on calling Artistic
Style as a shared or static library from an Objective-C program. It includes an Objective-C sample program that
can be used to test the Artistic Style shared libraries.</p>
<p style="margin-left: 0.5in;">
<a href="https://astyle.sourceforge.net/develop/gnustep.html">Objective&#8209;C on Windows and Linux</a> contains information on compiling and running
Objective-C programs using GNUstep. It has instructions for compiling the Example program on Windows or
Linux.</p>
<p>
<a href="https://astyle.sourceforge.net/develop/jni.html">Calling Artistic Style as a Java Native Interface</a> contains information on calling Artistic
Style as a shared library from a Java program using the Java Native Interface (JNI). It includes a Java sample
program that can be used to test the shared library. The Java Development Kit (JDK) must be installed to compile
Artistic Style.</p>
<p>
<a href="https://astyle.sourceforge.net/develop/sharp.html">Calling Artistic Style from a C# Program</a> contains information on calling Artistic Style
as a shared library from a C# program. It includes a C# sample program that can be used to test the shared
library.</p>
<p style="margin-left: 0.5in;">
<a href="https://astyle.sourceforge.net/develop/sharp2.html">Calling Artistic Style from a C# Program Using Explicit Linking</a> contains information
on calling Artistic Style as a shared library from a C# program. It uses explicit linking to do a dynamic load
of the shared library. It includes a C# sample program that can be used to test the shared library.</p>
<p style="margin-left: 0.5in;">
With explicit linking the shared library name can be changed at runtime, allowing the C# program to load
either an x86 or x64 bit shared library. This provides the capability to make the program run on &quot;Any
CPU&quot;. The shared object can also be loaded from any directory, not just the directories searched by the
system.</p>
<p>
<a href="https://astyle.sourceforge.net/develop/python.html">Calling Artistic Style from a Python Script</a> contains information on calling Artistic
Style as a shared library from a Python script. It includes a sample Python script that can be used to test the
shared library.</p>
<h3>Source Code Downloads (old examples)</h3>
<p>
The downloads contain the above example source files and the test data. The test data is the same for all
downloads.</p>
<h4>
<a href="https://sourceforge.net/projects/astyle/files/OldFiles/examples/example-cpp.zip" target="_blank"
title="open new window">C++ Example</a>
</h4>
<p>
The example for C++ contains the methods to call Artistic Style from a static or shared library using a C++ program.
Compile Artistic Style as a static or shared library using the macro ASTYLE_LIB. Copy the shared library to the
same folder as the C++ Example executable. Compile Example.cpp as an executable and link it to the library. It
will format files in the test&#8209;data directory included in the download.</p>
<h4>
<a href="https://sourceforge.net/projects/astyle/files/OldFiles/examples/example-objc.zip" target="_blank"
title="open new window">Objective&#8209;C Example</a>
</h4>
<p>
The example for Objective&#8209;C contains the methods to call Artistic Style from a static or shared library
using an Objective&#8209;C program. Compile Artistic Style as a static or shared library using the macro ASTYLE_LIB.
Copy the shared library to the same folder as the Objective&#8209;C Example executable. It will format files in
the test&#8209;data directory included in the download.</p>
<h4>
<a href="https://sourceforge.net/projects/astyle/files/OldFiles/examples/example-java.zip" target="_blank"
title="open new window">Java Example</a>
</h4>
<p>
The example for Java includes an AStyleInterface class that calls the shared library using the Java Native Interface
(JNI). Artistic Style must be compiled as a shared library using the macro ASTYLE_JNI. Copy the shared library
to the same folder as the Java class files (it is loaded from the classpath directory). It will format files in
the test&#8209;data directory included in the download.</p>
<h4>
<a href="https://sourceforge.net/projects/astyle/files/OldFiles/examples/example-sharp.zip" target="_blank"
title="open new window">C# Example</a>
</h4>
<p>
This example for C# includes an AStyleInterface class that calls the shared library using a C# program. Compile
Artistic Style as a shared library using the macro ASTYLE_LIB. Copy the shared library to the same folder as the
C# class files (C# does a Windows type search for the shared library, looking first in the startup program's directory).
It will format files in the test&#8209;data directory included in the download.</p>
<h4 style="margin-left: 0.5in;">
<a href="https://sourceforge.net/projects/astyle/files/OldFiles/examples/example-sharp2.zip" target="_blank"
title="open new window">C# Example Using Explicit Linking</a>
</h4>
<p style="margin-left: 0.5in;">
This example for C# includes an AStyleInterface class that calls the shared library using a C# program.
It uses explicit linking to do a dynamic load of the shared library. Compile Artistic Style as a shared library
using the macro ASTYLE_LIB. Copy the shared library to the same folder as the C# class files. It will format files
in the test&#8209;data directory included in the download.</p>
<h4>
<a href="https://sourceforge.net/projects/astyle/files/OldFiles/examples/example-python.zip" target="_blank"
title="open new window">Python Examples</a>
</h4>
<p>
This download contains three Python scripts. The script ExampleExe.py calls an Artistic Style executable to format
C++ source code. The scripts ExampleByte.py and ExampleUnicode.py call the Artistic Style shared library. The
executable and shared library must be compiled using the macro ASTYLE_LIB. Copy the executable and shared library
to the same folder as the Python scripts. They will format files in the test&#8209;data directory included in
the download.</p>
<p style="margin-left: -0.4in; text-align: center;">
<a href="http://sourceforge.net/projects/astyle">
<img src="http://sflogo.sourceforge.net/sflogo.php?group_id=2319&type=16" alt="" />
</a></p>
</body>
</html>
+14 -25
View File
@@ -18,7 +18,7 @@
<h2>
A Free, Fast, and Small Automatic Formatter<br />
for C, C++, C++/CLI, Objective&#8209;C, C#, and Java Source Code
for C, C++, C++/CLI, Objective C, C#, and Java Source Code
</h2>
<center>
@@ -40,9 +40,8 @@
</table>
</center>
<p>
&nbsp;</p>
<p class="noindent">
<p class="noindent" style="margin-top: 2em">
Artistic Style is a source code indenter, formatter, and beautifier for the C, C++, C++/CLI, Objective&#8209;C,
C# and Java programming languages. Written in C++, it can be used from the command line or incorporated as
a library in another program. Options can be entered from the command line or from an option file. The library
@@ -52,7 +51,7 @@
<p>
There is complete documentation for using Artistic Style. The documentation needed to install and run Artistic
Style is included in the distribution package. It does not need an Internet connection.</p>
Style is included in the distribution package.</p>
<h3><a href="news.html">News</a> and <a href="notes.html">Release Notes</a></h3>
@@ -77,10 +76,10 @@
executable. Other platforms must compile the project. Follow the instructions for the appropriate platform (Linux,
Mac, or Windows).</p>
<h3><a href="subversion.html">Subversion</a></h3>
<h3><a href="subversion.html">Source Repositories</a></h3>
<p>
The latest development files can be checked out from the Artistic Style repository using Subversion.</p>
The latest development files can be checked out from the Artistic Style repository using Subversion or Git.</p>
<h3><a href="http://opensource.org/licenses/MIT">License</a></h3>
@@ -116,7 +115,7 @@
formatting of the source code, development environments for various platforms, and other software. There
are also links to style information and various style guides.</p>
<h3><a href="http://astyle.sourceforge.net/develop/">Developer Information</a></h3>
<h3><a href="development.html">Developer Information</a></h3>
<p>
Artistic Style has compile options for creating a shared library (DLL) or static library for use with a Graphical
@@ -127,10 +126,10 @@
<h3>Bug Reports, Change Requests, Update Notifications</h3>
<p>
Bug reports and change requests should be submitted to the Artistic Style <a href="https://sourceforge.net/p/astyle/bugs/">
bug tracker page</a>. You must be logged in to SourceForge to submit a report. Include an example that shows
Bug reports and change requests should be submitted to the <a href="https://sourceforge.net/p/astyle/bugs/">
Sourceforge</a> or <a href="https://gitlab.com/saalen/astyle/-/issues">Gitlab</a> bug trackers. Include an example that shows
the problem, reduced to the minimum that still has the problem. It does not need to be functional code.</p>
<p>
<p><strong>Sourceforge notes:</strong><br>
The bug report <strong>will not be indented</strong>
after the data is submitted. You may indicate the indentation when you submit the request (e.g. replace leading
spaces with periods). Or, you can use the &quot;Formatting Help&quot; button to the left of the ticket form. To
@@ -162,27 +161,17 @@
Arne&nbsp;F?rlie, Marvin&nbsp;Humphrey, J, Christopher&nbsp;Sean&nbsp;Morrison, Keith&nbsp;OHara, louis6g, Evmenov&nbsp;Georgiy,
beta100100, Ruzzz, Peter&nbsp;A.&nbsp;Bigot, HyungKi&nbsp;Jeong, David&nbsp;Faure, Carl&nbsp;Moore, Mofi, Travis&nbsp;Vitek,
Bunel&nbsp;Nicolas, Juan&nbsp;Alday, Rian&nbsp;Quinn, David&nbsp;Haney, Tam&aacute;s Kurucsai
for their patches and contributions to Artistic Style.</p>
<p>
Thanks to <strong><a href="http://sourceforge.net">SourceForge</a></strong> for giving Artistic Style its
home.</p>
<p>
Thanks to all the dedicated beta-testers and bug notifiers!</p>
<!-- bottom of document -->
for their patches and contributions to Artistic Style.
</p>
<p>
&nbsp;</p>
Thanks to all the dedicated beta-testers and bug notifiers!
</p>
<p style="margin-left: -0.4in; text-align: center;">
<a href="http://sourceforge.net/projects/astyle">
<img src="http://sflogo.sourceforge.net/sflogo.php?group_id=2319&type=16" alt="" />
</a></p>
<p>
&nbsp;</p>
</body>
</html>
+33 -21
View File
@@ -14,10 +14,24 @@
<h1>Artistic Style News</h1>
<p>
&nbsp;</p>
<h3>Artistic Style 3.3 (ongoing)</h3>
<h3>Artistic Style 3.2&nbsp; (January 2023. pending)</h3>
<p>
The source code has been refactored to no longer use the std namespace globally.
</p>
<p>
Some features of &quot;modern C++&quot; are now supported, ie. lambda function arguments and array initializers
with braces.
</p>
<p>
Two new options to remove superfluous whitespace and empty lines were added: &quot;squeeze-ws&quot; and
&quot;squeeze-lines=#&quot; (parameter value is the number of empty lines to keep).
</p>
<p>
Two new options to add or remove whitespace around square brackets were added: &quot;pad-brackets&quot; and &quot;unpad-brackets&quot;.
</p>
<h3>Artistic Style 3.2 (March 2023)</h3>
<p>
The Artistic Style source code has been updated to use C++11 features. It will need Visual Studio 2015 or GCC
@@ -31,8 +45,11 @@
<p>
Deprecated options have been removed.
</p>
<p>
Maintainer list was updated.
</p>
<h3>Artistic Style 3.1&nbsp; (January 2018)</h3>
<h3>Artistic Style 3.1 (January 2018)</h3>
<p>
The Windows default option file location has been changed from USERPROFILE to APPDATA. This
@@ -55,7 +72,7 @@
Several changes have been made to Objective-C which will improve formatting in certain cases.</p>
<p>
CMake can now be used to compile the AStyle builds. It is run from the top level folder instead of the
&quot;build&quot; folder, and builds a Release configuration by default. The &quot;Install&nbsp;Information&quot;
&quot;build&quot; folder, and builds a Release configuration by default. The &quot;Install Information&quot;
contains additional information. </p>
<p>
When formatting files from the command line, multiple file extensions may now be used. The file
@@ -87,7 +104,7 @@
When making changes to more than one file in a project, it may be desirable to format an entire folder. Wildcards
may be used in a single folder without recursive. The current directory is used if a path is not given. So,
for example, to format all changed files in the current directory using the project options, use the command:
&quot;astyle&nbsp;--project&nbsp;-A9s&nbsp;*.cpp,*.h&quot;. This example uses the project option file .astylerc
&quot;astyle --project -A9s *.cpp,*.h&quot;. This example uses the project option file .astylerc
or _astylerc and overrides the project options with the command line -A9s options.</p>
<p>
Language translations have been added for the new project option file. A few of the other messages were changed
@@ -112,7 +129,7 @@
<p>
Thanks to Rian Quinn, David Haney, and Tam&aacute;s Kurucsai for their contributions.</p>
<h3>Artistic Style 3.0&nbsp; (April 2017)</h3>
<h3>Artistic Style 3.0 (April 2017)</h3>
<p>
Release 3.0.1 (May 2017) is a maintenance release and no new features were added. A list of changes is in
@@ -290,7 +307,7 @@
method for finding the style options.
</p>
<h3>Artistic Style 2.06&nbsp; (December 2016)</h3>
<h3>Artistic Style 2.06 (December 2016)</h3>
<p>
A new bracket style option, &quot;style=mozilla&quot;, has been added. It uses linux brackets with
@@ -372,7 +389,7 @@
<p>
In order to be used on both Linux and Windows, the ASLocalizer.cpp UTF-8 file in Artistic Style does not
contain a Byte Order Mark (BOM).&nbsp; With Visual Studio 2015 there has been a change in how UTF-8 files
contain a Byte Order Mark (BOM). With Visual Studio 2015 there has been a change in how UTF-8 files
without a BOM are processed. The new procedure is described
<a href="https://blogs.msdn.microsoft.com/vcblog/2016/02/22/new-options-for-managing-character-sets-in-the-microsoft-cc-compiler/"
target="_blank" title="open new window">here</a>. It affects only the language translations in the &quot;.exe&quot;
@@ -462,7 +479,7 @@
To compile using XP there may need to be additional include and library directories added. If the compile gets
errors add the appropriate directories to the project properties.</p>
<h3>Artistic Style 2.05&nbsp; (November 2014)</h3>
<h3>Artistic Style 2.05 (November 2014)</h3>
<p>
Release 2.05.1 (December 2014) is a maintenance release and no new features were added. A list of changes is in
@@ -517,13 +534,13 @@
More information is in the "Command Line Only" section of the documentation.</p>
<p>
The "html" option on Linux uses the script "xdg-open" from the install package "xdg-utils" to find the default
browser. This should be available on most systems. &nbsp;If it is not available on your system you can file a
browser. This should be available on most systems. If it is not available on your system you can file a
bug report requesting a change. It would be helpful if you could determine how it is done before filing the report.
You can also file a bug report if the documentation is not installed to the above "default" directories. The HTML
documentation takes quite a bit of effort to maintain and I would like to make it easily available.</p>
<p>
The "help" option has been changed to send the output to stdout instead of stderr. This will allow piping and
redirection of the output. A common way to use the option on Linux is "astyle --help&nbsp;|&nbsp;less", which
redirection of the output. A common way to use the option on Linux is "astyle --help | less", which
will page the display. The "version" option has also been changed to stdout.</p>
<p>
A shared library error handler argument has been changed from &quot;char*&quot; to &quot;const char*&quot;. In
@@ -560,20 +577,15 @@
<p>
Thanks to Peter A. Bigot, HyungKi Jeong, David Faure, and Carl Moore for their contributions.</p>
<p>
&nbsp;</p>
<p>
<strong>Previous releases are available in the
<a href="http://astyle.sourceforge.net/newsArchives.html">News Archives</a>.</strong></p>
<p>
&nbsp;</p>
<a href="http://astyle.sourceforge.net/newsArchives.html">News Archives</a>.</strong>
</p>
<p style="margin-left: -0.4in; text-align: center;">
<a href="http://sourceforge.net/projects/astyle">
<img src="http://sflogo.sourceforge.net/sflogo.php?group_id=2319&type=16" alt="" /></a></p>
<p>
&nbsp;</p>
<img src="http://sflogo.sourceforge.net/sflogo.php?group_id=2319&type=16" alt="" /></a>
</p>
</body>
+31 -7
View File
@@ -14,7 +14,26 @@
<h1>Artistic Style Release Notes</h1>
<h3>Artistic Style 3.2 (pending; February 2023)</h3>
<h3>Artistic Style 3.3 (May 2023)</h3>
<ul>
<li>added new option "--squeeze-ws" to remove superfluous whitespace (experimental)</li>
<li>added new option "--squeeze-lines" to remove superfluous empty lines (experimental, #19, #22, #43, #72, #84, #93, #105, #517)</li>
<li>added new options "--pad-brackets" and "--unpad-brackets" to add or remove whitespace around square brackets (experimental)</li>
<li>fixed indent of lambda bodies in fct calls (#121)</li>
<li>fixed indent of struct names including &quot;struct&quot; (#526)</li>
<li>fixed indent of C++11 initializer lists (#516)</li>
<li>fixed padding of pointers separated by comma (#537)</li>
<li>refactored namespace std usage</li>
</ul>
<h3>Artistic Style 3.2.1 (March 2023)</h3>
<ul>
<li>fixed struct recognition related to SF #534 (https://gitlab.com/saalen/astyle/-/issues/1)</li>
</ul>
<h3>Artistic Style 3.2 (March 2023)</h3>
<ul>
<li>Add new option "style=webkit" for the WebKit brace style.</li>
@@ -30,10 +49,12 @@
<li>Changes from clang-tidy to modernize code.</li>
</ul>
</li>
<li>created man page</li>
<li>added man page</li>
<li>removed deprecated options</li>
<li>added shell completion scripts</li>
<li>added &quot;--mode=js&quot; option</li>
<li>removed upper limit of max-continuation-indent</li>
<li>added INVALID_TYPE constant</li>
<li>removed upper limit of &quot;max-continuation-indent&quot;</li>
<li>fixed raw string parsing (#535)</li>
<li>fixed recognition of rvalue operator as reference (#543)</li>
<li>fixed reverting effect of AttachReturnType option (#527)</li>
@@ -43,12 +64,15 @@
<li>fixed space deletion when aligning ref value name (#546)</li>
<li>fixed reverting effect of maxCodeLength and AttachReturnType options (#545)</li>
<li>fixed break of continued preprocessor strings with colon (#533)</li>
<li>fixed struct bitfield indentation (534)</li>
<li>replace PATH_MAX by realpath (549)</li>
<li>fixed struct bitfield indentation (#534)</li>
<li>replace PATH_MAX by realpath (#549)</li>
<li>fixed negative integer literal breaks initializer list (#485)</li>
<li>fixed documentation of --delete-empty-lines short option (508)</li>
<li>fixed documentation of --delete-empty-lines short option (#508)</li>
<li>fixed project file search (#541)</li>
<li>#1 fixed project file search with wildcard input paths</li>
<li>fixed indent of ObjectiveC statements (#525)</li>
<li>fixed parsing of C# interpolation strings (#483)</li>
<li>fixed break-blocks format after struct (#518)</li>
<li>fixed project file search with wildcard input paths (https://gitlab.com/saalen/astyle/-/issues/1)</li>
<li>https://sourceforge.net/p/astyle/tickets/130/ better description for stat errors</li>
<li>https://sourceforge.net/p/astyle/tickets/129/ applied IT localization patch</li>
<li>improved DE localization</li>
+7 -10
View File
@@ -14,18 +14,15 @@
/* margin: [top] [right] [bottom] [left] */
body { background-color: white; margin: 0.5in 0.8in 0.5in 1.3in; }
body { background-color: white; margin: 5em 15em 5em 2em; font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; }
h1 { color: mediumblue; text-align: center; font-style: italic; margin-top: 0.4in; margin-left: -0.5in; }
h2 { color: mediumblue; text-align: center; font-size: larger; margin-top: 0.4in; margin-left: -0.5in; }
h3 { color: mediumblue; margin-top: 0.4in; margin-left: -0.4in; }
h4 { color: mediumblue; margin-top: 0.3in; }
h1 { color: mediumblue; font-style: italic; margin-top: 3em; }
h2 { color: mediumblue; font-size: larger; margin-top: 2em; }
h3 { color: mediumblue; margin-top: 2em; }
h4 { color: mediumblue; margin-top: 2em; }
h5 { text-transform: uppercase }
/* paragraph classes */
.noindent { margin-left: -0.4in; }
.contents1 { font-size: 105%; margin: 0; }
.contents2 { margin: 0 0.4in 0 0.4in; }
p { line-height: 1.2em;}
a.contents:link, a.contents:visited { color: mediumblue; text-decoration: none; }
a.contents:hover { color: red; text-decoration: none; }
@@ -34,7 +31,7 @@ a:hover { color: red; text-decoration: underline; }
img { border: none; }
pre { margin-left: 0.3in; color: mediumblue; font-weight: bold; }
pre { color: mediumblue; font-family: 'Courier New', Courier, monospace; background-color: #fffdda; padding: 1em;}
/*- the following styles are for the 'top' button
the corresponding javascript is in the html document from
+19 -58
View File
@@ -12,41 +12,41 @@
<body>
<h1>Artistic Style Subversion Repository</h1>
<h1>Artistic Style Source Repositories</h1>
<h2>Git</h2>
<p>
The <a href="https://gitlab.com/saalen/astyle/-/tree/master">Git repository</a> is located at Gitlab. This repo is used for day to day development. The SVN repo mentioned below is kept up to date regularly.
</p>
<h2>Subversion</h2>
<p>
&nbsp;</p>
<h3>Artistic Style</h3>
<p>
The latest development source is in the Artistic Style repository at SourceForge. It can be checked out using
Subversion. The source code is under development and some changes take several weeks to complete. The intermediate
The <a href="https://svn.code.sf.net/p/astyle/code/">SVN repository</a> is located at SourceForge. The intermediate
source files have not been through the extensive system tests that are done before each release. Use reasonable
precautions when using source code from the repository.</p>
<p>
The current version is in the "trunk/AStyle" branch of the repository. The file and directory names are case
sensitive.</p>
The current version is in the "trunk/AStyle" branch of the repository. The file and directory names are case
sensitive.
</p>
<p>
A sample checkout is:<br />
<strong>svn&nbsp; checkout&nbsp; "https://svn.code.sf.net/p/astyle/code/trunk/AStyle"&nbsp;
<strong>svn&nbsp; checkout&nbsp; "https://svn.code.sf.net/p/astyle/code/trunk/AStyle"&nbsp;
"$HOME/astyle"</strong></p>
<p>
You can also <a href="https://sourceforge.net/p/astyle/code/HEAD/tree/" target="_blank" title="open new window">browse
the subversion repository</a>. The current development release is in the "trunk" directory. This gives you
a view into the current status of the project's code without actually checking-out the files.</p>
<p>
&nbsp;</p>
<h3>Other Projects</h3>
<p>
Two additional Artistic Style projects are available in the repository. They are not maintained for the general
public, but are available if you want them. You may have to create your own project files and scripts to use
public, but are available if you want them. You may have to create your own project files and scripts to use
them.</p>
<p>
All projects, and any additional source required, should be installed in the same top level folder. A sample file
directory containing ALL the projects should look as follows. The project dependencies are described
directory containing ALL the projects should look as follows. The project dependencies are described
below.</p>
<pre> Projects
AStyle
@@ -54,8 +54,7 @@
AStyleTest
AStyleWx
AStyleWxTest
googlemock
googletest</pre>
</pre>
<h4>AStyleDev</h4>
@@ -78,7 +77,7 @@
This project requires the Artistic Style project to compile.
In addition, the test program requires Google Mock and Google Test described below.</p>
<p>
The main test project, AStyleTest, can be run in Visual Studio using the graphical Visual Studio Test
The main test project, AStyleTest, can be run in Visual Studio using the graphical Visual Studio Test
Explorer. The procedure is described below.</p>
<p>
A sample checkout is:<br />
@@ -90,8 +89,8 @@
<p>
AStyleWx contains a GUI test program for Artistic Style that uses the wxWidgets C++ library.</p>
<p>
This project requires the Artistic Style project to compile.
Files for download are made available in the
This project requires the Artistic Style project to compile.
Files for download are made available in the
<a href="https://sourceforge.net/projects/astylewx.astyle.p/" target="_blank" title="open new window">Artistic Style
Wx</a> subproject. The download contains all files needed to compile the project. The subproject can be accessed
from the Artistic Style SourceForge pages.</p>
@@ -112,43 +111,6 @@
<strong>svn&nbsp; checkout&nbsp; "https://svn.code.sf.net/p/astyle/code/trunk/AStyleWxTest"&nbsp; "$HOME/astylewxtest"
</strong></p>
<h4>Google Mock and Google Test</h4>
<p>
Google Test and Google Mock is the Google multi-platform framework for writing C++ unit tests.
It is available on <a href="https://github.com/google/googletest" target="_blank" title="open new window">GitHub</a>
and can be downloaded as a zip file by pressing the green &quot;clone or download&quot; button and selecting
&quot;Download ZIP&quot;. The default is to download the master development branch. The latest stable release
can be obtained by using the drop-down box labeled &quot;Branch: master&quot;, selecting the &quot;tags&quot;
tab, and then selecting the latest release. The selected release can then be downloaded using the &quot;clone
or download&quot; button. Download the latest release for googletest and googlemock from the repository.</p>
<p>
The Artistic Style project files are set up to use googletest and googlemock installed in the top level folder
as indicated above. The library compile for googlemock includes googletest. The library compile for googletest
includes only googletest. The AStyle test programs have their own project files for compiling the test platform.
There are also compile project files in the downloaded google modules if you want to use them. They create a static
library file that is linked to the test program. The google downloads contain instructions for using the
package. </p>
<h4>Visual Studio Test Explorer</h4>
<p>
Some of the test projects can be run in Visual Studio Community using Visual Studio Test Explorer.
If there is a <strong>.gta.runsettings</strong> file in the solution directory for a test project,
the test will run in the Test Explorer.</p>
<p>
The &quot;Google Test Adapter&quot; extension must be installed from the Tools &gt; &quot;Extensions
and Updates&quot; menu. After restarting Visual Studio the test window is activated from the Test
&gt; Window &gt; &quot;Test Explorer&quot; menu option. After compiling, the tests will appear in
the test window. Then they may be run from the &quot;Test Explorer&quot; window or from the Test menu
options.</p>
<p>
Test Explorer may be used for other test projects. The tests can also be run as a command line program by using
the standard debug or run button on the menu or toolbar.</p>
<p>
&nbsp;</p>
<p style="margin-left: -0.4in; text-align: center;">
<a href="http://sourceforge.net/projects/astyle">
<img src="http://sflogo.sourceforge.net/sflogo.php?group_id=2319&type=16" alt="" /></a></p>
@@ -159,4 +121,3 @@
</body>
</html>
+123 -107
View File
@@ -1,4 +1,4 @@
.TH astyle 1 "2023-01-16" "Andre Simon" "user documentation"
.TH astyle 1 "2023-04-18" "Andre Simon" "user documentation"
.SH NAME
astyle - C syntax indenter and formatter
@@ -30,70 +30,70 @@ and NO formatting options.
If no brace style is requested, the opening braces will not be
changed and closing braces will be broken from the preceding line.
.IP "--style=allman OR --style=bsd OR --style=break OR -A1"
.IP "--style=allman OR --style=bsd OR --style=break OR -A1"
Allman style formatting/indenting.
Broken braces.
.IP "--style=java OR --style=attach OR -A2"
.IP "--style=java OR --style=attach OR -A2"
Java style formatting/indenting.
Attached braces.
.IP "--style=kr OR --style=k&r OR --style=k/r OR -A3"
.IP "--style=kr OR --style=k&r OR --style=k/r OR -A3"
Kernighan & Ritchie style formatting/indenting.
Linux braces.
.IP "--style=stroustrup OR -A4"
.IP "--style=stroustrup OR -A4"
Stroustrup style formatting/indenting.
Linux braces, with broken closing headers.
.IP "--style=whitesmith OR -A5"
.IP "--style=whitesmith OR -A5"
Whitesmith style formatting/indenting.
Broken, indented braces.
Indented class blocks and switch blocks.
.IP "--style=vtk OR -A15"
.IP "--style=vtk OR -A15"
VTK style formatting/indenting.
Broken, indented braces except for the opening braces.
.IP "--style=ratliff OR --style=banner OR -A6"
.IP "--style=ratliff OR --style=banner OR -A6"
Ratliff style formatting/indenting.
Attached, indented braces.
.IP "--style=gnu OR -A7"
.IP "--style=gnu OR -A7"
GNU style formatting/indenting.
Broken braces, indented blocks.
.IP "--style=linux OR --style=knf OR -A8"
.IP "--style=linux OR --style=knf OR -A8"
Linux style formatting/indenting.
Linux braces, minimum conditional indent is one-half indent.
.IP "--style=horstmann OR --style=run-in OR -A9"
.IP "--style=horstmann OR --style=run-in OR -A9"
Horstmann style formatting/indenting.
Run-in braces, indented switches.
.IP "--style=1tbs OR --style=otbs OR -A10"
.IP "--style=1tbs OR --style=otbs OR -A10"
One True Brace Style formatting/indenting.
Linux braces, add braces to all conditionals.
.IP "--style=google OR -A14"
.IP "--style=google OR -A14"
Google style formatting/indenting.
Attached braces, indented class modifiers.
.IP "--style=mozilla OR -A16"
.IP "--style=mozilla OR -A16"
Mozilla style formatting/indenting.
Linux braces, with broken braces for structs and enums,
and attached braces for namespaces.
.IP "--style=webkit OR -A17"
.IP "--style=webkit OR -A17"
WebKit style formatting/indenting.
Linux braces, with attached closing headers.
.IP "--style=pico OR -A11"
.IP "--style=pico OR -A11"
Pico style formatting/indenting.
Run-in opening braces and attached closing braces.
Uses keep one line blocks and keep one line statements.
.IP "--style=lisp OR -A12"
.IP "--style=lisp OR -A12"
Lisp style formatting/indenting.
Attached opening braces and attached closing braces.
Uses keep one line statements.
@@ -103,92 +103,92 @@ Uses keep one line statements.
If no indentation option is set, the default
option of 4 spaces per indent will be used.
.IP "--indent=spaces=# OR -s#"
.IP "--indent=spaces=# OR -s#"
Indent using # spaces per indent. Not specifying #
will result in a default of 4 spaces per indent.
.IP "--indent=tab OR --indent=tab=# OR -t OR -t#"
.IP "--indent=tab OR --indent=tab=# OR -t OR -t#"
Indent using tab characters, assuming that each
indent is # spaces long. Not specifying # will result
in a default assumption of 4 spaces per indent.
.IP "--indent=force-tab=# OR -T#"
.IP "--indent=force-tab=# OR -T#"
Indent using tab characters, assuming that each
indent is # spaces long. Force tabs to be used in areas
AStyle would prefer to use spaces.
.IP "--indent=force-tab-x=# OR -xT#"
.IP "--indent=force-tab-x=# OR -xT#"
Allows the tab length to be set to a length that is different
from the indent length. This may cause the indentation to be
a mix of both spaces and tabs. This option sets the tab length.
.SH Brace Modify Options:
.IP "--attach-namespaces OR -xn"
.IP "--attach-namespaces OR -xn"
Attach braces to a namespace statement.
.IP "--attach-classes OR -xc"
.IP "--attach-classes OR -xc"
Attach braces to a class statement.
.IP "--attach-inlines OR -xl"
.IP "--attach-inlines OR -xl"
Attach braces to class inline function definitions.
.IP "--attach-extern-c OR -xk"
.IP "--attach-extern-c OR -xk"
Attach braces to an extern "C" statement.
.IP "--attach-closing-while OR -xV"
.IP "--attach-closing-while OR -xV"
Attach closing while of do-while to the closing brace.
.SH Indentation Options:
.IP "--indent-classes OR -C"
.IP "--indent-classes OR -C"
Indent 'class' blocks so that the entire block is indented.
.IP "--indent-modifiers OR -xG"
.IP "--indent-modifiers OR -xG"
Indent 'class' access modifiers, 'public:', 'protected:' or
'private:', one half indent. The rest of the class is not
indented.
.IP "--indent-switches OR -S"
.IP "--indent-switches OR -S"
Indent 'switch' blocks, so that the inner 'case XXX:'
headers are indented in relation to the switch block.
.IP "--indent-cases OR -K"
.IP "--indent-cases OR -K"
Indent case blocks from the 'case XXX:' headers.
Case statements not enclosed in blocks are NOT indented.
.IP "--indent-namespaces OR -N"
.IP "--indent-namespaces OR -N"
Indent the contents of namespace blocks.
.IP "--indent-after-parens OR -xU"
.IP "--indent-after-parens OR -xU"
Indent, instead of align, continuation lines following lines
that contain an opening paren '(' or an assignment '='.
.IP "--indent-continuation=# OR -xt#"
.IP "--indent-continuation=# OR -xt#"
Indent continuation lines an additional # indents.
The valid values are 0 thru 4 indents.
The default value is 1 indent.
.IP "--indent-labels OR -L"
.IP "--indent-labels OR -L"
Indent labels so that they appear one indent less than
the current indentation level, rather than being
flushed completely to the left (which is the default).
.IP "--indent-preproc-block OR -xW"
.IP "--indent-preproc-block OR -xW"
Indent preprocessor blocks at brace level 0.
Without this option the preprocessor block is not indented.
.IP "--indent-preproc-cond OR -xw"
.IP "--indent-preproc-cond OR -xw"
Indent preprocessor conditional statements #if/#else/#endif
to the same level as the source code.
.IP "--indent-preproc-define OR -w"
.IP "--indent-preproc-define OR -w"
Indent multi-line preprocessor #define statements.
.IP "--indent-col1-comments OR -Y"
.IP "--indent-col1-comments OR -Y"
Indent line comments that start in column one.
.IP "--min-conditional-indent=# OR -m#"
.IP "--min-conditional-indent=# OR -m#"
Indent a minimal # spaces in a continuous conditional
belonging to a conditional header.
The valid values are:
@@ -198,122 +198,135 @@ The valid values are:
3 - indent at least one-half an additional indent.
The default value is 2, two additional indents.
.IP "--max-continuation-indent=# OR -M#"
.IP "--max-continuation-indent=# OR -M#"
Indent a maximal # spaces in a continuation line,
relative to the previous line.
The minimum and default value is 40.
.SH Padding Options
.IP "--break-blocks OR -f"
.IP "--break-blocks OR -f"
Insert empty lines around unrelated blocks, labels, classes, ...
.IP "--break-blocks=all OR -F"
.IP "--break-blocks=all OR -F"
Like --break-blocks, except also insert empty lines
around closing headers (e.g. 'else', 'catch', ...).
.IP "--pad-oper OR -p"
.IP "--pad-oper OR -p"
Insert space padding around operators.
.IP "--pad-comma OR -xg"
.IP "--pad-comma OR -xg"
Insert space padding after commas.
.IP "--pad-paren OR -P"
.IP "--pad-paren OR -P"
Insert space padding around parenthesis on both the outside
and the inside.
.IP "--pad-paren-out OR -d"
.IP "--pad-paren-out OR -d"
Insert space padding around parenthesis on the outside only.
.IP "--pad-first-paren-out OR -xd"
.IP "--pad-first-paren-out OR -xd"
Insert space padding around first parenthesis in a series on
the outside only.
.IP "--pad-paren-in OR -D"
.IP "--pad-paren-in OR -D"
Insert space padding around parenthesis on the inside only.
.IP "--pad-header OR -H"
.IP "--pad-header OR -H"
Insert space padding after paren headers (e.g. 'if', 'for'...).
.IP "--unpad-paren OR -U"
.IP "--unpad-paren OR -U"
Remove unnecessary space padding around parenthesis. This
can be used in combination with the 'pad' options above.
.IP "--delete-empty-lines OR -xe"
.IP "--pad-brackets"
Insert space padding around square brackets on both the outside
and the inside (experimental).
.IP "--unpad-brackets"
Remove unnecessary space padding around square brackets (experimental).
.IP "--delete-empty-lines OR -xe"
Delete empty lines within a function or method.
It will NOT delete lines added by the break-blocks options.
.IP "--fill-empty-lines OR -E"
.IP "--fill-empty-lines OR -E"
Fill empty lines with the white space of their
previous lines.
.IP "--align-pointer=type OR -k1"
.IP "--align-pointer=middle OR -k2"
.IP "--align-pointer=name OR -k3"
.IP "--align-pointer=type OR -k1"
.IP "--align-pointer=middle OR -k2"
.IP "--align-pointer=name OR -k3"
Attach a pointer or reference operator (*, &, or ^) to either
the operator type (left), middle, or operator name (right).
To align the reference separately use --align-reference.
.IP "--align-reference=none OR -W0"
.IP "--align-reference=type OR -W1"
.IP "--align-reference=middle OR -W2"
.IP "--align-reference=name OR -W3"
.IP "--align-reference=none OR -W0"
.IP "--align-reference=type OR -W1"
.IP "--align-reference=middle OR -W2"
.IP "--align-reference=name OR -W3"
Attach a reference operator (&) to either
the operator type (left), middle, or operator name (right).
If not set, follow pointer alignment.
.IP "--squeeze-lines=#"
Remove superfluous empty lines exceeding the given number (experimental).
.IP "--squeeze-ws"
Remove superfluous whitespace (experimental).
.SH Formatting Options
.IP "--break-closing-braces OR -y"
.IP "--break-closing-braces OR -y"
Break braces before closing headers (e.g. 'else', 'catch', ...).
Use with --style=java, --style=kr, --style=stroustrup, --style=linux, or --style=1tbs."
.IP "--break-elseifs OR -e"
.IP "--break-elseifs OR -e"
Break 'else if()' statements into two different lines.
.IP "--break-one-line-headers OR -xb"
.IP "--break-one-line-headers OR -xb"
Break one line headers (e.g. 'if', 'while', 'else', ...) from a
statement residing on the same line.
.IP "--add-braces OR -j"
.IP "--add-braces OR -j"
Add braces to unbraced one line conditional statements.
.IP "--add-one-line-braces OR -J"
.IP "--add-one-line-braces OR -J"
Add one line braces to unbraced one line conditional
statements.
.IP "--remove-braces OR -xj"
.IP "--remove-braces OR -xj"
Remove braces from a braced one line conditional statements.
.IP "--break-return-type OR -xB"
.IP "--break-return-type-decl OR -xD"
.IP "--break-return-type OR -xB"
.IP "--break-return-type-decl OR -xD"
Break the return type from the function name. Options are
for the function definitions and the function declarations.
.IP "--attach-return-type OR -xf"
.IP "--attach-return-type-decl OR -xh"
.IP "--attach-return-type OR -xf"
.IP "--attach-return-type-decl OR -xh"
Attach the return type to the function name. Options are
for the function definitions and the function declarations.
.IP "--keep-one-line-blocks OR -O"
.IP "--keep-one-line-blocks OR -O"
Don't break blocks residing completely on one line.
.IP "--keep-one-line-statements OR -o"
.IP "--keep-one-line-statements OR -o"
Don't break lines containing multiple statements into
multiple single-statement lines.
.IP "--convert-tabs OR -c"
.IP "--convert-tabs OR -c"
Convert tabs to the appropriate number of spaces.
.IP "--close-templates OR -xy"
.IP "--close-templates OR -xy"
Close ending angle brackets on template definitions.
.IP "--remove-comment-prefix OR -xp"
.IP "--remove-comment-prefix OR -xp"
Remove the leading '*' prefix on multi-line comments and
indent the comment text one indent.
.IP "--max-code-length=# OR -xC#"
.IP "--break-after-logical OR -xL"
.IP "--max-code-length=# OR -xC#"
.IP "--break-after-logical OR -xL"
max-code-length=# will break the line if it exceeds more than
# characters. The valid values are 50 thru 200.
If the line contains logical conditionals they will be placed
@@ -330,38 +343,41 @@ Indent a Java source file.
.IP "--mode=cs"
Indent a C# source file.
.IP "--mode=objc"
Indent an Objective-C source file.
.IP "--mode=js"
Indent a JavaScript source file (experimental).
.SH Objective-C Options
.IP "--pad-method-prefix OR -xQ"
.IP "--pad-method-prefix OR -xQ"
Insert space padding after the '-' or '+' Objective-C
method prefix.
.IP "--unpad-method-prefix OR -xR"
.IP "--unpad-method-prefix OR -xR"
Remove all space padding after the '-' or '+' Objective-C
method prefix.
.IP "--pad-return-type OR -xq"
.IP "--pad-return-type OR -xq"
Insert space padding after the Objective-C return type.
.IP "--unpad-return-type OR -xr"
.IP "--unpad-return-type OR -xr"
Remove all space padding after the Objective-C return type.
.IP "--pad-param-type OR -xS"
Insert space padding after the Objective-C return type.
.IP "--pad-param-type OR -xS"
Insert space padding after the Objective-C param type.
.IP "--unpad-param-type OR -xs"
Remove all space padding after the Objective-C return type.
.IP "--unpad-param-type OR -xs"
Remove all space padding after the Objective-C param type.
.IP "--align-method-colon OR -xM"
.IP "--align-method-colon OR -xM"
Align the colons in an Objective-C method definition.
.IP "--pad-method-colon=none OR -xP"
.IP "--pad-method-colon=all OR -xP1"
.IP "--pad-method-colon=after OR -xP2"
.IP "--pad-method-colon=before OR -xP3"
.IP "--pad-method-colon=none OR -xP"
.IP "--pad-method-colon=all OR -xP1"
.IP "--pad-method-colon=after OR -xP2"
.IP "--pad-method-colon=before OR -xP3"
Add or remove space padding before or after the colons in an
Objective-C method call.
@@ -370,10 +386,10 @@ Objective-C method call.
.IP "--suffix=####"
Append the suffix #### instead of '.orig' to original filename.
.IP "--suffix=none OR -n"
.IP "--suffix=none OR -n"
Do not retain a backup of the original file.
.IP "--recursive OR -r OR -R"
.IP "--recursive OR -r OR -R"
Process subdirectories recursively.
.IP "--dry-run"
@@ -382,35 +398,35 @@ Perform a trial run with no changes made to check for formatting.
.IP "--exclude=####"
Specify a file or directory #### to be excluded from processing.
.IP "--ignore-exclude-errors OR -i"
.IP "--ignore-exclude-errors OR -i"
Allow processing to continue if there are errors in the exclude=####
options. It will display the unmatched excludes.
.IP "--ignore-exclude-errors-x OR -xi"
.IP "--ignore-exclude-errors-x OR -xi"
Allow processing to continue if there are errors in the exclude=####
options. It will NOT display the unmatched excludes.
.IP "--errors-to-stdout OR -X"
.IP "--errors-to-stdout OR -X"
Print errors and help information to standard-output rather than
to standard-error.
.IP "--preserve-date OR -Z"
.IP "--preserve-date OR -Z"
Preserve the original file's date and time modified. The time
modified will be changed a few micro seconds to force a compile.
.IP "--verbose OR -v"
.IP "--verbose OR -v"
Verbose mode. Extra informational messages will be displayed.
.IP "--formatted OR -Q"
.IP "--formatted OR -Q"
Formatted display mode. Display only the files that have been
formatted.
.IP "--quiet OR -q"
.IP "--quiet OR -q"
Quiet mode. Suppress all output except error messages.
.IP "--lineend=windows OR -z1"
.IP "--lineend=linux OR -z2"
.IP "--lineend=macold OR -z3"
.IP "--lineend=windows OR -z1"
.IP "--lineend=linux OR -z2"
.IP "--lineend=macold OR -z3"
Force use of the specified line end style. Valid options
are windows (CRLF), linux (LF), and macold (CR).
@@ -431,16 +447,16 @@ The file should be included in the project top-level directory.
The default file name is .astylerc or _astylerc.
'none' disables the project or environment variable file.
.IP "--ascii OR -I"
.IP "--ascii OR -I"
The displayed output will be ascii characters only.
.IP "--version OR -V"
.IP "--version OR -V"
Print version number.
.IP "--help OR -h OR -?"
.IP "--help OR -h OR -?"
Print this help message.
.IP "--html OR -!"
.IP "--html OR -!"
Open the HTML help file "astyle.html" in the default browser.
The documentation must be installed in the standard install path.
@@ -482,7 +498,7 @@ Long options within the option files may be written without '--'.
.PP
Line-end comments begin with a '#'.
.SH Disable Formatting
.SH Disable Formatting
Blocks of code can be disabled with the comment tags *INDENT-OFF*
and *INDENT-ON*. It must be contained in a one-line comment.
@@ -503,4 +519,4 @@ astyle --style=allman < OriginalSourceFile > BeautifiedSourceFile
.SH AUTHORS
Andre Simon <a.simon@mailbox.org>
.SH SEE ALSO
More information at https://sourceforge.net/p/astyle/.
More information at https://sourceforge.net/p/astyle/.
+93
View File
@@ -0,0 +1,93 @@
_astyle() {
local IFS=$' \t\n'
local args cur prev cmd opts arg
args=("${COMP_WORDS[@]}")
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts="--style --indent --attach-namespaces --attach-classes --attach-inlines --attach-extern-c --attach-closing-while --indent-classes --indent-modifiers --indent-switches --indent-cases --indent-namespaces --indent-after-parens --indent-continuation --indent-labels --indent-preproc-block --indent-preproc-cond --indent-preproc-define --indent-col1-comments --min-conditional-indent --max-continuation-indent --break-blocks --pad-oper --pad-comma --pad-paren --pad-paren-out --pad-first-paren-out --pad-paren-in --pad-header --unpad-paren --pad-brackets --unpad-brackets --delete-empty-lines --fill-empty-lines --align-pointer --align-reference --break-closing-braces --break-elseifs --break-one-line-headers --add-braces --add-one-line-braces --remove-braces --break-return-type --attach-return-type-decl --keep-one-line-blocks --keep-one-line-statements --convert-tabs --close-templates --remove-comment-prefix --max-code-length --break-after-logical mode --pad-method-prefix --unpad-method-prefix --pad-return-type --unpad-return-type --pad-param-type --unpad-param-type --align-method-colon --pad-method-colon --suffix --recursive --dry-run --exclude --ignore-exclude-errors --ignore-exclude-errors-x --errors-to-stdout --preserve-date --verbose --formatted --quiet --lineend --options --project --ascii --version --help --html --stdin --stdout --squeeze-lines --squeeze-ws"
case "$prev" in
--style)
COMPREPLY=($(compgen -W "allman java kr stroustrup whitesmith vtk ratliff gnu linux horstmann 1tbs google mozilla webkit pico lisp" -- "$cur"))
return 0
;;
--indent)
COMPREPLY=($(compgen -W "spaces tab force-tab force-tab-x" -- "$cur"))
return 0
;;
--indent-continuation)
COMPREPLY=($(compgen -W "0 1 2 3 4" -- "$cur"))
return 0
;;
--min-conditional-indent)
COMPREPLY=($(compgen -W "0 1 2 3" -- "$cur"))
return 0
;;
--max-continuation-indent)
COMPREPLY=($(compgen -f -- "$cur"))
return 0
;;
--break-blocks)
COMPREPLY=($(compgen -W "all" -- "$cur"))
return 0
;;
--align-pointer)
COMPREPLY=($(compgen -W "type middle name" -- "$cur"))
return 0
;;
--align-reference)
COMPREPLY=($(compgen -W "none type middle name" -- "$cur"))
return 0
;;
--max-code-length)
COMPREPLY=($(compgen -f -- "$cur"))
return 0
;;
mode)
COMPREPLY=($(compgen -W "c java cs objc js" -- "$cur"))
return 0
;;
--pad-method-colon)
COMPREPLY=($(compgen -W "none all after before" -- "$cur"))
return 0
;;
--suffix)
COMPREPLY=($(compgen -f -- "$cur"))
return 0
;;
--exclude)
COMPREPLY=($(compgen -f -- "$cur"))
return 0
;;
--lineend)
COMPREPLY=($(compgen -W "windows linux macold" -- "$cur"))
return 0
;;
--options)
COMPREPLY=($(compgen -f -- "$cur"))
return 0
;;
--project)
COMPREPLY=($(compgen -f -- "$cur"))
return 0
;;
--stdin)
COMPREPLY=($(compgen -f -- "$cur"))
return 0
;;
--stdout)
COMPREPLY=($(compgen -f -- "$cur"))
return 0
;;
--squeeze-lines)
COMPREPLY=($(compgen -f -- "$cur"))
return 0
;;
esac
if [[ "$cur" = -* ]]; then
COMPREPLY=($(compgen -W "$opts" -- "$cur"))
fi
}
complete -F _astyle -o bashdefault -o default astyle
+83
View File
@@ -0,0 +1,83 @@
complete -c astyle -l style -xa 'allman java kr stroustrup whitesmith vtk ratliff gnu linux horstmann 1tbs google mozilla webkit pico lisp' -d 'Set a formatting and indenting style'
complete -c astyle -l indent -xa 'spaces tab force-tab force-tab-x' -d 'Set indentation option'
complete -c astyle -l attach-namespaces -d 'Attach braces to a namespace statement'
complete -c astyle -l attach-classes -d 'Attach braces to a class statement'
complete -c astyle -l attach-inlines -d 'Attach braces to class inline function definitions'
complete -c astyle -l attach-extern-c -d 'Attach braces to an extern C statement'
complete -c astyle -l attach-closing-while -d 'Attach closing while of do-while to the closing brace'
complete -c astyle -l indent-classes -d 'Indent \'class\' blocks so that the entire block is indented'
complete -c astyle -l indent-modifiers -d 'Indent \'class\' access modifiers, \'public:\', \'protected:\' or \'private:\', one half indent'
complete -c astyle -l indent-switches -d 'Indent \'switch\' blocks, so that the inner \'case XXX:\' headers are indented in relation to the switch block'
complete -c astyle -l indent-cases -d 'Indent case blocks from the \'case XXX:\' headers'
complete -c astyle -l indent-namespaces -d 'Indent the contents of namespace blocks'
complete -c astyle -l indent-after-parens -d 'Indent, instead of align, continuation lines following lines that contain an opening paren \'(\' or an assignment \'=\''
complete -c astyle -l indent-continuation -xa '0 1 2 3 4' -d 'Indent continuation lines an additional indents'
complete -c astyle -l indent-labels -d 'Indent labels so that they appear one indent less than the current indentation level, rather than being flushed completely to the left'
complete -c astyle -l indent-preproc-block -d 'Indent preprocessor blocks at brace level 0'
complete -c astyle -l indent-preproc-cond -d 'Indent preprocessor conditional statements #if/#else/#endif to the same level as the source code'
complete -c astyle -l indent-preproc-define -d 'Indent multi-line preprocessor #define statements'
complete -c astyle -l indent-col1-comments -d 'Indent line comments that start in column one'
complete -c astyle -l min-conditional-indent -xa '0 1 2 3' -d 'Indent a minimal # spaces in a continuous conditional belonging to a conditional header'
complete -c astyle -l max-continuation-indent -r -d 'Indent a maximal # spaces in a continuation line, relative to the previous line'
complete -c astyle -l break-blocks -xa 'all' -d 'Insert empty lines around unrelated blocks, labels, classes, ..'
complete -c astyle -l pad-oper -d 'Insert space padding around operators'
complete -c astyle -l pad-comma -d 'Insert space padding after commas'
complete -c astyle -l pad-paren -d 'Insert space padding around parenthesis on both the outside and the inside'
complete -c astyle -l pad-paren-out -d 'Insert space padding around parenthesis on the outside only'
complete -c astyle -l pad-first-paren-out -d 'Insert space padding around first parenthesis in a series on the outside only'
complete -c astyle -l pad-paren-in -d 'Insert space padding around parenthesis on the inside only'
complete -c astyle -l pad-header -d 'Insert space padding after paren headers (e.g'
complete -c astyle -l unpad-paren -d 'Remove unnecessary space padding around parenthesis'
complete -c astyle -l pad-brackets -d 'Insert space padding around square brackets on both the outside and the inside (experimental)'
complete -c astyle -l unpad-brackets -d 'Remove unnecessary space padding around square brackets (experimental)'
complete -c astyle -l delete-empty-lines -d 'Delete empty lines within a function or method'
complete -c astyle -l fill-empty-lines -d 'Fill empty lines with the white space of their previous lines'
complete -c astyle -l align-pointer -xa 'type middle name' -d 'Attach a pointer or reference operator (*, &, or ^) to either the operator type (left), middle, or operator name (right)'
complete -c astyle -l align-reference -xa 'none type middle name' -d 'Attach a reference operator (&) to either the operator type (left), middle, or operator name (right)'
complete -c astyle -l break-closing-braces -d 'Break braces before closing headers (e.g'
complete -c astyle -l break-elseifs -d 'Break \'else if()\' statements into two different lines'
complete -c astyle -l break-one-line-headers -d 'Break one line headers (e.g'
complete -c astyle -l add-braces -d 'Add braces to unbraced one line conditional statements'
complete -c astyle -l add-one-line-braces -d 'Add one line braces to unbraced one line conditional statements'
complete -c astyle -l remove-braces -d 'Remove braces from a braced one line conditional statements'
complete -c astyle -l break-return-type -d 'Break the return type from the function name definitions'
complete -c astyle -l attach-return-type-decl -d 'Break the return type from the function name declarations'
complete -c astyle -l keep-one-line-blocks -d 'Don\'t break blocks residing completely on one line'
complete -c astyle -l keep-one-line-statements -d 'Don\'t break lines containing multiple statements into multiple single-statement lines'
complete -c astyle -l convert-tabs -d 'Convert tabs to the appropriate number of spaces'
complete -c astyle -l close-templates -d 'Close ending angle brackets on template definitions'
complete -c astyle -l remove-comment-prefix -d 'Remove the leading \'*\' prefix on multi-line comments and indent the comment text one indent'
complete -c astyle -l max-code-length -r -d 'Break the line if it exceeds more than # characters'
complete -c astyle -l break-after-logical -d 'After break line using --max-code-length, place logical conditional last on the previous line'
complete -c astyle -xa 'c java cs objc js' -d 'Set input syntax mode'
complete -c astyle -l pad-method-prefix -d 'Insert space padding after the \'-\' or \'+\' Objective-C method prefix'
complete -c astyle -l unpad-method-prefix -d 'Remove all space padding after the \'-\' or \'+\' Objective-C method prefix'
complete -c astyle -l pad-return-type -d 'Insert space padding after the Objective-C return type'
complete -c astyle -l unpad-return-type -d 'Remove all space padding after the Objective-C return type'
complete -c astyle -l pad-param-type -d 'Insert space padding after the Objective-C param type'
complete -c astyle -l unpad-param-type -d 'Remove all space padding after the Objective-C param type'
complete -c astyle -l align-method-colon -d 'Align the colons in an Objective-C method definition'
complete -c astyle -l pad-method-colon -xa 'none all after before' -d 'Add or remove space padding before or after the colons in an Objective-C method call'
complete -c astyle -l suffix -r -d 'Append the suffix #### instead of \'.orig\' to original filename or do not retain a backup of the original file if set to none'
complete -c astyle -l recursive -d 'Process subdirectories recursively'
complete -c astyle -l dry-run -d 'Perform a trial run with no changes made to check for formatting'
complete -c astyle -l exclude -r -d 'Specify a file or directory #### to be excluded from processing'
complete -c astyle -l ignore-exclude-errors -d 'Allow processing to continue if there are errors in the --exclude options'
complete -c astyle -l ignore-exclude-errors-x -d 'Allow processing to continue if there are errors in the --exclude options'
complete -c astyle -l errors-to-stdout -d 'Print errors and help information to standard-output rather than to standard-error'
complete -c astyle -l preserve-date -d 'Preserve the original file\'s date and time modified'
complete -c astyle -l verbose -d 'Extra informational messages will be displayed'
complete -c astyle -l formatted -d 'Display only the files that have been formatted'
complete -c astyle -l quiet -d 'Suppress all output except error messages'
complete -c astyle -l lineend -xa 'windows linux macold' -d 'Force use of the specified line end style'
complete -c astyle -l options -r -d 'Specify a default option file to read and use'
complete -c astyle -l project -r -d 'Specify a project option file to read and use'
complete -c astyle -l ascii -d 'The displayed output will be ASCII characters only'
complete -c astyle -l version -d 'Print version number'
complete -c astyle -l help -d 'Print help message'
complete -c astyle -l html -d 'Open the HTML help file astyle.html in the default browser'
complete -c astyle -l stdin -r -d 'Use the file path as input to single file formatting'
complete -c astyle -l stdout -r -d 'Use the file path as output from single file formatting'
complete -c astyle -l squeeze-lines -r -d 'Remove superfluous empty lines exceeding the given number'
complete -c astyle -l squeeze-ws -d 'Remove superfluous whitespace'
+96
View File
@@ -0,0 +1,96 @@
#compdef astyle
_astyle() {
local -a options=(
"--style[Set a formatting and indenting style]: :(allman java kr stroustrup whitesmith vtk ratliff gnu linux horstmann 1tbs google mozilla webkit pico lisp)"
"--indent[Set indentation option]: :(spaces tab force-tab force-tab-x)"
"--attach-namespaces[Attach braces to a namespace statement]"
"--attach-classes[Attach braces to a class statement]"
"--attach-inlines[Attach braces to class inline function definitions]"
"--attach-extern-c[Attach braces to an extern C statement]"
"--attach-closing-while[Attach closing while of do-while to the closing brace]"
"--indent-classes[Indent 'class' blocks so that the entire block is indented]"
"--indent-modifiers[Indent 'class' access modifiers, 'public\:', 'protected\:' or 'private\:', one half indent]"
"--indent-switches[Indent 'switch' blocks, so that the inner 'case XXX\:' headers are indented in relation to the switch block]"
"--indent-cases[Indent case blocks from the 'case XXX\:' headers]"
"--indent-namespaces[Indent the contents of namespace blocks]"
"--indent-after-parens[Indent, instead of align, continuation lines following lines that contain an opening paren '(' or an assignment '=']"
"--indent-continuation[Indent continuation lines an additional indents]: :(0 1 2 3 4)"
"--indent-labels[Indent labels so that they appear one indent less than the current indentation level, rather than being flushed completely to the left]"
"--indent-preproc-block[Indent preprocessor blocks at brace level 0]"
"--indent-preproc-cond[Indent preprocessor conditional statements #if/#else/#endif to the same level as the source code]"
"--indent-preproc-define[Indent multi-line preprocessor #define statements]"
"--indent-col1-comments[Indent line comments that start in column one]"
"--min-conditional-indent[Indent a minimal # spaces in a continuous conditional belonging to a conditional header]: :(0 1 2 3)"
"--max-continuation-indent[Indent a maximal # spaces in a continuation line, relative to the previous line]: :_files"
"--break-blocks[Insert empty lines around unrelated blocks, labels, classes, ..]: :(all)"
"--pad-oper[Insert space padding around operators]"
"--pad-comma[Insert space padding after commas]"
"--pad-paren[Insert space padding around parenthesis on both the outside and the inside]"
"--pad-paren-out[Insert space padding around parenthesis on the outside only]"
"--pad-first-paren-out[Insert space padding around first parenthesis in a series on the outside only]"
"--pad-paren-in[Insert space padding around parenthesis on the inside only]"
"--pad-header[Insert space padding after paren headers (e.g]"
"--unpad-paren[Remove unnecessary space padding around parenthesis]"
"--pad-brackets[Insert space padding around square brackets on both the outside and the inside (experimental)]"
"--unpad-brackets[Remove unnecessary space padding around square brackets (experimental)]"
"--delete-empty-lines[Delete empty lines within a function or method]"
"--fill-empty-lines[Fill empty lines with the white space of their previous lines]"
"--align-pointer[Attach a pointer or reference operator (*, &, or ^) to either the operator type (left), middle, or operator name (right)]: :(type middle name)"
"--align-reference[Attach a reference operator (&) to either the operator type (left), middle, or operator name (right)]: :(none type middle name)"
"--break-closing-braces[Break braces before closing headers (e.g]"
"--break-elseifs[Break 'else if()' statements into two different lines]"
"--break-one-line-headers[Break one line headers (e.g]"
"--add-braces[Add braces to unbraced one line conditional statements]"
"--add-one-line-braces[Add one line braces to unbraced one line conditional statements]"
"--remove-braces[Remove braces from a braced one line conditional statements]"
"--break-return-type[Break the return type from the function name definitions]"
"--attach-return-type-decl[Break the return type from the function name declarations]"
"--keep-one-line-blocks[Don't break blocks residing completely on one line]"
"--keep-one-line-statements[Don't break lines containing multiple statements into multiple single-statement lines]"
"--convert-tabs[Convert tabs to the appropriate number of spaces]"
"--close-templates[Close ending angle brackets on template definitions]"
"--remove-comment-prefix[Remove the leading '*' prefix on multi-line comments and indent the comment text one indent]"
"--max-code-length[Break the line if it exceeds more than # characters]: :_files"
"--break-after-logical[After break line using --max-code-length, place logical conditional last on the previous line]"
"mode[Set input syntax mode]: :(c java cs objc js)"
"--pad-method-prefix[Insert space padding after the '-' or '+' Objective-C method prefix]"
"--unpad-method-prefix[Remove all space padding after the '-' or '+' Objective-C method prefix]"
"--pad-return-type[Insert space padding after the Objective-C return type]"
"--unpad-return-type[Remove all space padding after the Objective-C return type]"
"--pad-param-type[Insert space padding after the Objective-C param type]"
"--unpad-param-type[Remove all space padding after the Objective-C param type]"
"--align-method-colon[Align the colons in an Objective-C method definition]"
"--pad-method-colon[Add or remove space padding before or after the colons in an Objective-C method call]: :(none all after before)"
"--suffix[Append the suffix #### instead of '.orig' to original filename or do not retain a backup of the original file if set to none]: :_files"
"--recursive[Process subdirectories recursively]"
"--dry-run[Perform a trial run with no changes made to check for formatting]"
"--exclude[Specify a file or directory #### to be excluded from processing]: :_files"
"--ignore-exclude-errors[Allow processing to continue if there are errors in the --exclude options]"
"--ignore-exclude-errors-x[Allow processing to continue if there are errors in the --exclude options]"
"--errors-to-stdout[Print errors and help information to standard-output rather than to standard-error]"
"--preserve-date[Preserve the original file's date and time modified]"
"--verbose[Extra informational messages will be displayed]"
"--formatted[Display only the files that have been formatted]"
"--quiet[Suppress all output except error messages]"
"--lineend[Force use of the specified line end style]: :(windows linux macold)"
"--options[Specify a default option file to read and use]: :_files"
"--project[Specify a project option file to read and use]: :_files"
"--ascii[The displayed output will be ASCII characters only]"
"--version[Print version number]"
"--help[Print help message]"
"--html[Open the HTML help file astyle.html in the default browser]"
"--stdin[Use the file path as input to single file formatting]: :_files"
"--stdout[Use the file path as output from single file formatting]: :_files"
"--squeeze-lines[Remove superfluous empty lines exceeding the given number]: :_files"
"--squeeze-ws[Remove superfluous whitespace]"
)
_arguments -s -S \
$options \
"*: :_files" \
&& return 0
return 1
}
_astyle
+283
View File
@@ -0,0 +1,283 @@
#!/usr/bin/env lua
-- Based on the generator script written by Paul Ouellette for highlight:
-- https://gitlab.com/saalen/highlight/-/merge_requests/137
local argparse = require "argparse"
local parser = argparse "astyle"
:add_help(false)
parser:argument "file"
:args "*"
parser:option "--style"
:description "Set a formatting and indenting style"
:choices {"allman", "java", "kr", "stroustrup", "whitesmith", "vtk", "ratliff", "gnu", "linux", "horstmann", "1tbs", "google", "mozilla", "webkit", "pico", "lisp"}
parser:option "--indent"
:description "Set indentation option"
:choices {"spaces", "tab", "force-tab", "force-tab-x"}
parser:flag "--attach-namespaces"
:description "Attach braces to a namespace statement"
parser:flag "--attach-classes"
:description "Attach braces to a class statement"
parser:flag "--attach-inlines"
:description "Attach braces to class inline function definitions"
parser:flag "--attach-extern-c"
:description "Attach braces to an extern C statement"
parser:flag "--attach-closing-while"
:description "Attach closing while of do-while to the closing brace"
parser:flag "--indent-classes"
:description "Indent 'class' blocks so that the entire block is indented"
parser:flag "--indent-modifiers"
:description "Indent 'class' access modifiers, 'public:', 'protected:' or 'private:', one half indent."
parser:flag "--indent-switches"
:description "Indent 'switch' blocks, so that the inner 'case XXX:' headers are indented in relation to the switch block"
parser:flag "--indent-cases"
:description "Indent case blocks from the 'case XXX:' headers"
parser:flag "--indent-namespaces"
:description "Indent the contents of namespace blocks"
parser:flag "--indent-after-parens"
:description "Indent, instead of align, continuation lines following lines that contain an opening paren '(' or an assignment '='"
parser:option "--indent-continuation"
:description "Indent continuation lines an additional indents"
:choices {"0", "1", "2", "3", "4"}
parser:flag "--indent-labels"
:description "Indent labels so that they appear one indent less than the current indentation level, rather than being flushed completely to the left"
parser:flag "--indent-preproc-block"
:description "Indent preprocessor blocks at brace level 0. Without this option the preprocessor block is not indented"
parser:flag "--indent-preproc-cond"
:description "Indent preprocessor conditional statements #if/#else/#endif to the same level as the source code"
parser:flag "--indent-preproc-define"
:description "Indent multi-line preprocessor #define statements"
parser:flag "--indent-col1-comments"
:description "Indent line comments that start in column one"
parser:option "--min-conditional-indent"
:description "Indent a minimal # spaces in a continuous conditional belonging to a conditional header"
:choices {"0", "1", "2", "3"}
parser:option "--max-continuation-indent"
:description "Indent a maximal # spaces in a continuation line, relative to the previous line"
parser:option "--break-blocks"
:description "Insert empty lines around unrelated blocks, labels, classes, ..."
:args "?"
:choices {"all"}
parser:flag "--pad-oper"
:description "Insert space padding around operators"
parser:flag "--pad-comma"
:description "Insert space padding after commas"
parser:flag "--pad-paren"
:description "Insert space padding around parenthesis on both the outside and the inside"
parser:flag "--pad-paren-out"
:description "Insert space padding around parenthesis on the outside only"
parser:flag "--pad-first-paren-out"
:description "Insert space padding around first parenthesis in a series on the outside only"
parser:flag "--pad-paren-in"
:description "Insert space padding around parenthesis on the inside only"
parser:flag "--pad-header"
:description "Insert space padding after paren headers (e.g. 'if', 'for'...)"
parser:flag "--unpad-paren"
:description "Remove unnecessary space padding around parenthesis"
parser:flag "--pad-brackets"
:description "Insert space padding around square brackets on both the outside and the inside (experimental)."
parser:flag "--unpad-brackets"
:description "Remove unnecessary space padding around square brackets (experimental)."
parser:flag "--delete-empty-lines"
:description "Delete empty lines within a function or method"
parser:flag "--fill-empty-lines"
:description "Fill empty lines with the white space of their previous lines"
parser:option "--align-pointer"
:description "Attach a pointer or reference operator (*, &, or ^) to either the operator type (left), middle, or operator name (right)"
:choices {"type", "middle", "name"}
parser:option "--align-reference"
:description "Attach a reference operator (&) to either the operator type (left), middle, or operator name (right). If not set, follow pointer alignment"
:choices {"none", "type", "middle", "name"}
parser:flag "--break-closing-braces"
:description "Break braces before closing headers (e.g. 'else', 'catch', ...)"
parser:flag "--break-elseifs"
:description "Break 'else if()' statements into two different lines"
parser:flag "--break-one-line-headers"
:description "Break one line headers (e.g. 'if', 'while', 'else', ...) from a statement residing on the same line"
parser:flag "--add-braces"
:description "Add braces to unbraced one line conditional statements"
parser:flag "--add-one-line-braces"
:description "Add one line braces to unbraced one line conditional statements"
parser:flag "--remove-braces"
:description "Remove braces from a braced one line conditional statements"
parser:flag "--break-return-type"
:description "Break the return type from the function name definitions"
parser:flag "--attach-return-type-decl"
:description "Break the return type from the function name declarations"
parser:flag "--keep-one-line-blocks"
:description "Don't break blocks residing completely on one line"
parser:flag "--keep-one-line-statements"
:description "Don't break lines containing multiple statements into multiple single-statement lines"
parser:flag "--convert-tabs"
:description "Convert tabs to the appropriate number of spaces"
parser:flag "--close-templates"
:description "Close ending angle brackets on template definitions"
parser:flag "--remove-comment-prefix"
:description "Remove the leading '*' prefix on multi-line comments and indent the comment text one indent"
parser:option "--max-code-length"
:description "Break the line if it exceeds more than # characters"
parser:flag "--break-after-logical"
:description "After break line using --max-code-length, place logical conditional last on the previous line"
parser:option "mode"
:description "Set input syntax mode"
:choices {"c", "java", "cs", "objc", "js"}
parser:flag "--pad-method-prefix"
:description "Insert space padding after the '-' or '+' Objective-C method prefix"
parser:flag "--unpad-method-prefix"
:description "Remove all space padding after the '-' or '+' Objective-C method prefix"
parser:flag "--pad-return-type"
:description "Insert space padding after the Objective-C return type"
parser:flag "--unpad-return-type"
:description "Remove all space padding after the Objective-C return type"
parser:flag "--pad-param-type"
:description "Insert space padding after the Objective-C param type"
parser:flag "--unpad-param-type"
:description "Remove all space padding after the Objective-C param type"
parser:flag "--align-method-colon"
:description "Align the colons in an Objective-C method definition."
parser:option "--pad-method-colon"
:description "Add or remove space padding before or after the colons in an Objective-C method call"
:choices {"none", "all", "after", "before"}
parser:option "--suffix"
:description "Append the suffix #### instead of '.orig' to original filename or do not retain a backup of the original file if set to none"
parser:flag "--recursive"
:description "Process subdirectories recursively"
parser:flag "--dry-run"
:description "Perform a trial run with no changes made to check for formatting"
parser:option "--exclude"
:description "Specify a file or directory #### to be excluded from processing"
parser:flag "--ignore-exclude-errors"
:description "Allow processing to continue if there are errors in the --exclude options. It will display the unmatched excludes"
parser:flag "--ignore-exclude-errors-x"
:description "Allow processing to continue if there are errors in the --exclude options. It will NOT display the unmatched excludes"
parser:flag "--errors-to-stdout"
:description "Print errors and help information to standard-output rather than to standard-error"
parser:flag "--preserve-date"
:description "Preserve the original file's date and time modified"
parser:flag "--verbose"
:description "Extra informational messages will be displayed"
parser:flag "--formatted"
:description "Display only the files that have been formatted"
parser:flag "--quiet"
:description "Suppress all output except error messages"
parser:option "--lineend"
:description "Force use of the specified line end style"
:choices {"windows", "linux", "macold"}
parser:option "--options"
:description "Specify a default option file to read and use."
parser:option "--project"
:description "Specify a project option file to read and use"
parser:flag "--ascii"
:description "The displayed output will be ASCII characters only"
parser:flag "--version"
:description "Print version number"
parser:flag "--help"
:description "Print help message"
parser:flag "--html"
:description "Open the HTML help file astyle.html in the default browser"
parser:option "--stdin"
:description "Use the file path as input to single file formatting"
parser:option "--stdout"
:description "Use the file path as output from single file formatting"
parser:option "--squeeze-lines"
:description "Remove superfluous empty lines exceeding the given number"
parser:flag "--squeeze-ws"
:description "Remove superfluous whitespace"
local p = argparse "gen-completions"
p:argument "shell"
:choices {"bash", "zsh", "fish"}
local shell = p:parse().shell
if shell == "bash" then
io.write(parser:get_bash_complete())
elseif shell == "zsh" then
io.write(parser:get_zsh_complete())
else
io.write(parser:get_fish_complete())
end
File diff suppressed because it is too large Load Diff
+24 -24
View File
@@ -34,7 +34,7 @@ void ASEnhancer::init(int _fileType,
bool _preprocBlockIndent,
bool _preprocDefineIndent,
bool _emptyLineFill,
vector<const pair<const string, const string>* >* _indentableMacros)
std::vector<const std::pair<const std::string, const std::string>* >* _indentableMacros)
{
// formatting variables from ASFormatter and ASBeautifier
ASBase::init(_fileType);
@@ -84,7 +84,7 @@ void ASEnhancer::init(int _fileType,
*
* @param line the original formatted line will be updated if necessary.
*/
void ASEnhancer::enhance(string& line, bool isInNamespace, bool isInPreprocessor, bool isInSQL)
void ASEnhancer::enhance(std::string& line, bool isInNamespace, bool isInPreprocessor, bool isInSQL)
{
shouldUnindentLine = true;
shouldUnindentComment = false;
@@ -125,7 +125,7 @@ void ASEnhancer::enhance(string& line, bool isInNamespace, bool isInPreprocessor
if (isInDeclareSection)
{
size_t firstText = line.find_first_not_of(" \t");
if (firstText == string::npos || line[firstText] != '#')
if (firstText == std::string::npos || line[firstText] != '#')
indentLine(line, 1);
}
@@ -135,7 +135,7 @@ void ASEnhancer::enhance(string& line, bool isInNamespace, bool isInPreprocessor
|| (namespaceIndent && isInNamespace)))
{
size_t firstText = line.find_first_not_of(" \t");
if (firstText == string::npos || line[firstText] != '#')
if (firstText == std::string::npos || line[firstText] != '#')
indentLine(line, 1);
}
@@ -150,7 +150,7 @@ void ASEnhancer::enhance(string& line, bool isInNamespace, bool isInPreprocessor
*
* @param line a reference to the line that will be converted.
*/
void ASEnhancer::convertForceTabIndentToSpaces(string& line) const
void ASEnhancer::convertForceTabIndentToSpaces(std::string& line) const
{
// replace tab indents with spaces
for (size_t i = 0; i < line.length(); i++)
@@ -171,7 +171,7 @@ void ASEnhancer::convertForceTabIndentToSpaces(string& line) const
*
* @param line a reference to the line that will be converted.
*/
void ASEnhancer::convertSpaceIndentToForceTab(string& line) const
void ASEnhancer::convertSpaceIndentToForceTab(std::string& line) const
{
assert(tabLength > 0);
@@ -188,7 +188,7 @@ void ASEnhancer::convertSpaceIndentToForceTab(string& line) const
* @param caseIndex the line index of the case statement.
* @return the line index of the colon.
*/
size_t ASEnhancer::findCaseColon(const string& line, size_t caseIndex) const
size_t ASEnhancer::findCaseColon(const std::string& line, size_t caseIndex) const
{
size_t i = caseIndex;
bool isInQuote_ = false;
@@ -236,7 +236,7 @@ size_t ASEnhancer::findCaseColon(const string& line, size_t caseIndex) const
* @param indent the number of tabsets to insert.
* @return the number of characters inserted.
*/
int ASEnhancer::indentLine(string& line, int indent) const
int ASEnhancer::indentLine(std::string& line, int indent) const
{
if (line.length() == 0
&& !emptyLineFill)
@@ -276,15 +276,15 @@ int ASEnhancer::indentLine(string& line, int indent) const
* @param index the current line index.
* @return true if a hit.
*/
bool ASEnhancer::isBeginDeclareSectionSQL(const string& line, size_t index) const
bool ASEnhancer::isBeginDeclareSectionSQL(const std::string& line, size_t index) const
{
string word;
std::string word;
size_t hits = 0;
size_t i;
for (i = index; i < line.length(); i++)
{
i = line.find_first_not_of(" \t", i);
if (i == string::npos)
if (i == std::string::npos)
return false;
if (line[i] == ';')
break;
@@ -325,15 +325,15 @@ bool ASEnhancer::isBeginDeclareSectionSQL(const string& line, size_t index) cons
* @param index the current line index.
* @return true if a hit.
*/
bool ASEnhancer::isEndDeclareSectionSQL(const string& line, size_t index) const
bool ASEnhancer::isEndDeclareSectionSQL(const std::string& line, size_t index) const
{
string word;
std::string word;
size_t hits = 0;
size_t i;
for (i = index; i < line.length(); i++)
{
i = line.find_first_not_of(" \t", i);
if (i == string::npos)
if (i == std::string::npos)
return false;
if (line[i] == ';')
break;
@@ -374,7 +374,7 @@ bool ASEnhancer::isEndDeclareSectionSQL(const string& line, size_t index) const
* @return false = one-line brace has not been reached.
* true = one-line brace has been reached.
*/
bool ASEnhancer::isOneLineBlockReached(const string& line, int startChar) const
bool ASEnhancer::isOneLineBlockReached(const std::string& line, int startChar) const
{
assert(line[startChar] == '{');
@@ -446,7 +446,7 @@ bool ASEnhancer::isOneLineBlockReached(const string& line, int startChar) const
* parse characters in the current line to determine if an indent
* or unindent is needed.
*/
void ASEnhancer::parseCurrentLine(string& line, bool isInPreprocessor, bool isInSQL)
void ASEnhancer::parseCurrentLine(std::string& line, bool isInPreprocessor, bool isInSQL)
{
bool isSpecialChar = false; // is a backslash escape character
@@ -516,7 +516,7 @@ void ASEnhancer::parseCurrentLine(string& line, bool isInPreprocessor, bool isIn
shouldUnindentComment = true;
isInComment = true;
size_t commentEnd = line.find("*/", i);
if (commentEnd == string::npos)
if (commentEnd == std::string::npos)
i = line.length() - 1;
else
i = commentEnd - 1;
@@ -537,7 +537,7 @@ void ASEnhancer::parseCurrentLine(string& line, bool isInPreprocessor, bool isIn
if (sw.switchBraceCount == 1 && sw.unindentCase)
shouldUnindentComment = true;
size_t commentEnd = line.find("*/", i);
if (commentEnd == string::npos)
if (commentEnd == std::string::npos)
i = line.length() - 1;
else
i = commentEnd - 1;
@@ -555,7 +555,7 @@ void ASEnhancer::parseCurrentLine(string& line, bool isInPreprocessor, bool isIn
// check for preprocessor within an event table
if (isInEventTable && line[i] == '#' && preprocBlockIndent)
{
string preproc;
std::string preproc;
preproc = line.substr(i + 1);
if (preproc.substr(0, 2) == "if") // #if, #ifdef, #ifndef)
eventPreprocDepth += 1;
@@ -619,7 +619,7 @@ void ASEnhancer::parseCurrentLine(string& line, bool isInPreprocessor, bool isIn
// bypass the entire word
if (isPotentialKeyword)
{
string name = getCurrentWord(line, i);
std::string name = getCurrentWord(line, i);
i += name.length() - 1;
}
continue;
@@ -637,7 +637,7 @@ void ASEnhancer::parseCurrentLine(string& line, bool isInPreprocessor, bool isIn
* @param index the current line index.
* @return the new line index.
*/
size_t ASEnhancer::processSwitchBlock(string& line, size_t index)
size_t ASEnhancer::processSwitchBlock(std::string& line, size_t index)
{
size_t i = index;
bool isPotentialKeyword = isCharPotentialHeader(line, i);
@@ -712,7 +712,7 @@ size_t ASEnhancer::processSwitchBlock(string& line, size_t index)
}
if (isPotentialKeyword)
{
string name = getCurrentWord(line, i); // bypass the entire name
std::string name = getCurrentWord(line, i); // bypass the entire name
i += name.length() - 1;
}
return i;
@@ -726,11 +726,11 @@ size_t ASEnhancer::processSwitchBlock(string& line, size_t index)
* @param unindent the number of tabsets to erase.
* @return the number of characters erased.
*/
int ASEnhancer::unindentLine(string& line, int unindent) const
int ASEnhancer::unindentLine(std::string& line, int unindent) const
{
size_t whitespace = line.find_first_not_of(" \t");
if (whitespace == string::npos) // if line is blank
if (whitespace == std::string::npos) // if line is blank
whitespace = line.length(); // must remove padding, if any
if (whitespace == 0)
+419 -341
View File
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -183,7 +183,7 @@ void ASLocalizer::setLanguageFromLCID(size_t lcid)
#endif // _WIN32
string ASLocalizer::getLanguageID() const
std::string ASLocalizer::getLanguageID() const
// Returns the language ID in m_langID.
{
return m_langID;
@@ -217,13 +217,13 @@ void ASLocalizer::setLanguageFromName(const char* langID)
// de_DE.iso88591@euro
{
// the constants describing the format of lang_LANG locale string
string langStr = langID;
std::string langStr = langID;
m_langID = langStr.substr(0, 2);
// need the sublang for chinese
if (m_langID == "zh" && langStr[2] == '_')
{
string subLang = langStr.substr(3, 2);
std::string subLang = langStr.substr(3, 2);
if (subLang == "CN" || subLang == "SG")
m_subLangID = "CHS";
else
@@ -236,7 +236,7 @@ const char* ASLocalizer::settext(const char* textIn) const
// Call the settext class and return the value.
{
assert(m_translationClass);
const string stringIn = textIn;
const std::string stringIn = textIn;
return m_translationClass->translate(stringIn).c_str();
}
@@ -311,22 +311,22 @@ Translation::Translation()
m_translationVector.reserve(translationElements);
}
void Translation::addPair(const string& english, const wstring& translated)
void Translation::addPair(const std::string& english, const std::wstring& translated)
// Add a string pair to the translation vector.
{
pair<string, wstring> entry(english, translated);
std::pair<std::string, std::wstring> entry(english, translated);
m_translationVector.emplace_back(entry);
assert(m_translationVector.size() <= translationElements);
}
string Translation::convertToMultiByte(const wstring& wideStr) const
std::string Translation::convertToMultiByte(const std::wstring& wideStr) const
// Convert wchar_t to a multibyte string using the currently assigned locale.
// Return an empty string if an error occurs.
{
static bool msgDisplayed = false;
// get length of the output excluding the nullptr and validate the parameters
size_t mbLen = wcstombs(nullptr, wideStr.c_str(), 0);
if (mbLen == string::npos)
if (mbLen == std::string::npos)
{
if (!msgDisplayed)
{
@@ -336,7 +336,7 @@ string Translation::convertToMultiByte(const wstring& wideStr) const
return "";
}
// convert the characters
char* mbStr = new (nothrow) char[mbLen + 1];
char* mbStr = new (std::nothrow) char[mbLen + 1];
if (mbStr == nullptr)
{
if (!msgDisplayed)
@@ -348,16 +348,16 @@ string Translation::convertToMultiByte(const wstring& wideStr) const
}
wcstombs(mbStr, wideStr.c_str(), mbLen + 1);
// return the string
string mbTranslation = mbStr;
std::string mbTranslation = mbStr;
delete[] mbStr;
return mbTranslation;
}
string Translation::getTranslationString(size_t i) const
std::string Translation::getTranslationString(size_t i) const
// Return the translation ascii value. Used for testing.
{
if (i >= m_translationVector.size())
return string();
return std::string();
return m_translationVector[i].first;
}
@@ -367,10 +367,10 @@ size_t Translation::getTranslationVectorSize() const
return m_translationVector.size();
}
bool Translation::getWideTranslation(const string& stringIn, wstring& wideOut) const
bool Translation::getWideTranslation(const std::string& stringIn, std::wstring& wideOut) const
// Get the wide translation string. Used for testing.
{
for (const pair<string, wstring>& translation : m_translationVector)
for (const std::pair<std::string, std::wstring>& translation : m_translationVector)
{
if (translation.first == stringIn)
{
@@ -383,13 +383,13 @@ bool Translation::getWideTranslation(const string& stringIn, wstring& wideOut) c
return false;
}
string& Translation::translate(const string& stringIn) const
std::string& Translation::translate(const std::string& stringIn) const
// Translate a string.
// Return a mutable string so the method can have a "const" designation.
// This allows "settext" to be called from a "const" method.
{
m_mbTranslation.clear();
for (const pair<string, wstring>& translation : m_translationVector)
for (const std::pair<std::string, std::wstring>& translation : m_translationVector)
{
if (translation.first == stringIn)
{
+14 -16
View File
@@ -19,8 +19,6 @@
namespace astyle {
using namespace std;
#ifndef ASTYLE_LIB
//-----------------------------------------------------------------------------
@@ -35,7 +33,7 @@ class ASLocalizer
public: // functions
ASLocalizer();
virtual ~ASLocalizer();
string getLanguageID() const;
std::string getLanguageID() const;
const Translation* getTranslationClass() const;
#ifdef _WIN32
void setLanguageFromLCID(size_t lcid);
@@ -48,8 +46,8 @@ private: // functions
private: // variables
Translation* m_translationClass;// pointer to a polymorphic Translation class
string m_langID; // language identifier from the locale
string m_subLangID; // sub language identifier, if needed
std::string m_langID; // language identifier from the locale
std::string m_subLangID; // sub language identifier, if needed
#ifdef _WIN32
size_t m_lcid; // LCID of the user locale (Windows only)
size_t m_codepage; // active codepage, 65001 = utf-8
@@ -63,36 +61,36 @@ private: // variables
class Translation
// This base class is inherited by the language translation classes.
// Polymorphism is used to call the correct language translator.
// This class contains the translation vector and settext translation method.
// The language vector is built by the language sub classes.
// This class contains the translation std::vector and settext translation method.
// The language std::vector is built by the language sub classes.
// NOTE: This class must have virtual methods for typeid() to work.
// typeid() is used by AStyleTestI18n_Localizer.cpp.
{
public:
Translation();
virtual ~Translation() = default;
string convertToMultiByte(const wstring& wideStr) const;
string getTranslationString(size_t i) const;
std::string convertToMultiByte(const std::wstring& wideStr) const;
std::string getTranslationString(size_t i) const;
size_t getTranslationVectorSize() const;
bool getWideTranslation(const string& stringIn, wstring& wideOut) const;
string& translate(const string& stringIn) const;
bool getWideTranslation(const std::string& stringIn, std::wstring& wideOut) const;
std::string& translate(const std::string& stringIn) const;
protected:
void addPair(const string& english, const wstring& translated);
void addPair(const std::string& english, const std::wstring& translated);
// variables
vector<pair<string, wstring> > m_translationVector;
std::vector<std::pair<std::string, std::wstring> > m_translationVector;
private:
// the number of translation pairs added a constructor
static const size_t translationElements = 30; // need static for vs2013
// the translated string
mutable string m_mbTranslation;
// the translated std::string
mutable std::string m_mbTranslation;
};
//----------------------------------------------------------------------------
// Translation classes
// One class for each language.
// These classes have only a constructor which builds the language vector.
// These classes have only a constructor which builds the language std::vector.
//----------------------------------------------------------------------------
class Bulgarian : public Translation
+182 -172
View File
@@ -16,159 +16,159 @@
namespace astyle {
//
const string ASResource::_AS_EXCEPT = string("__except");
const string ASResource::_AS_FINALLY = string("__finally");
const string ASResource::_AS_TRY = string("__try");
const string ASResource::AS_ADD = string("add");
const string ASResource::AS_AUTO = string("auto");
const string ASResource::AS_AUTORELEASEPOOL = string("autoreleasepool");
const string ASResource::AS_CASE = string("case");
const string ASResource::AS_CATCH = string("catch");
const string ASResource::AS_CLASS = string("class");
const string ASResource::AS_CONST = string("const");
const string ASResource::AS_CONST_CAST = string("const_cast");
const string ASResource::AS_DEFAULT = string("default");
const string ASResource::AS_DELEGATE = string("delegate");
const string ASResource::AS_DELETE = string("delete");
const string ASResource::AS_DO = string("do");
const string ASResource::AS_DYNAMIC_CAST = string("dynamic_cast");
const string ASResource::AS_ELSE = string("else");
const string ASResource::AS_END = string("end");
const string ASResource::AS_ENUM = string("enum");
const string ASResource::AS_EXTERN = string("extern");
const string ASResource::AS_FINAL = string("final");
const string ASResource::AS_FINALLY = string("finally");
const string ASResource::AS_FIXED = string("fixed");
const string ASResource::AS_FOR = string("for");
const string ASResource::AS_FOREACH = string("foreach");
const string ASResource::AS_FOREVER = string("forever");
const string ASResource::AS_GET = string("get");
const string ASResource::AS_IF = string("if");
const string ASResource::AS_INTERFACE = string("interface");
const string ASResource::AS_INTERRUPT = string("interrupt");
const string ASResource::AS_LET = string("let");
const string ASResource::AS_LOCK = string("lock");
const string ASResource::AS_MODULE = string("module"); // CORBA IDL module definition
const string ASResource::AS_NAMESPACE = string("namespace");
const string ASResource::AS_NEW = string("new");
const string ASResource::AS_NOEXCEPT = string("noexcept");
const string ASResource::AS_NS_DURING = string("NS_DURING");
const string ASResource::AS_NS_HANDLER = string("NS_HANDLER");
const string ASResource::AS_OPERATOR = string("operator");
const string ASResource::AS_OVERRIDE = string("override");
const string ASResource::AS_PRIVATE = string("private");
const string ASResource::AS_PROTECTED = string("protected");
const string ASResource::AS_PUBLIC = string("public");
const string ASResource::AS_QFOREACH = string("Q_FOREACH");
const string ASResource::AS_QFOREVER = string("Q_FOREVER");
const string ASResource::AS_REINTERPRET_CAST = string("reinterpret_cast");
const string ASResource::AS_REMOVE = string("remove");
const string ASResource::AS_SEALED = string("sealed");
const string ASResource::AS_SELECTOR = string("selector");
const string ASResource::AS_SET = string("set");
const string ASResource::AS_STATIC = string("static");
const string ASResource::AS_STATIC_CAST = string("static_cast");
const string ASResource::AS_STRUCT = string("struct");
const string ASResource::AS_TYPEDEF_STRUCT = string("typedef struct");
const string ASResource::AS_SWITCH = string("switch");
const string ASResource::AS_SYNCHRONIZED = string("synchronized");
const string ASResource::AS_TEMPLATE = string("template");
const string ASResource::AS_THROW = string("throw");
const string ASResource::AS_THROWS = string("throws");
const string ASResource::AS_TRY = string("try");
const string ASResource::AS_UNCHECKED = string("unchecked");
const string ASResource::AS_UNION = string("union");
const string ASResource::AS_UNSAFE = string("unsafe");
const string ASResource::AS_USING = string("using");
const string ASResource::AS_VOLATILE = string("volatile");
const string ASResource::AS_WHERE = string("where");
const string ASResource::AS_WHILE = string("while");
const std::string ASResource::_AS_EXCEPT = std::string("__except");
const std::string ASResource::_AS_FINALLY = std::string("__finally");
const std::string ASResource::_AS_TRY = std::string("__try");
const std::string ASResource::AS_ADD = std::string("add");
const std::string ASResource::AS_AUTO = std::string("auto");
const std::string ASResource::AS_AUTORELEASEPOOL = std::string("autoreleasepool");
const std::string ASResource::AS_CASE = std::string("case");
const std::string ASResource::AS_CATCH = std::string("catch");
const std::string ASResource::AS_CLASS = std::string("class");
const std::string ASResource::AS_CONST = std::string("const");
const std::string ASResource::AS_CONST_CAST = std::string("const_cast");
const std::string ASResource::AS_DEFAULT = std::string("default");
const std::string ASResource::AS_DELEGATE = std::string("delegate");
const std::string ASResource::AS_DELETE = std::string("delete");
const std::string ASResource::AS_DO = std::string("do");
const std::string ASResource::AS_DYNAMIC_CAST = std::string("dynamic_cast");
const std::string ASResource::AS_ELSE = std::string("else");
const std::string ASResource::AS_END = std::string("end");
const std::string ASResource::AS_ENUM = std::string("enum");
const std::string ASResource::AS_EXTERN = std::string("extern");
const std::string ASResource::AS_FINAL = std::string("final");
const std::string ASResource::AS_FINALLY = std::string("finally");
const std::string ASResource::AS_FIXED = std::string("fixed");
const std::string ASResource::AS_FOR = std::string("for");
const std::string ASResource::AS_FOREACH = std::string("foreach");
const std::string ASResource::AS_FOREVER = std::string("forever");
const std::string ASResource::AS_GET = std::string("get");
const std::string ASResource::AS_IF = std::string("if");
const std::string ASResource::AS_INTERFACE = std::string("interface");
const std::string ASResource::AS_INTERRUPT = std::string("interrupt");
const std::string ASResource::AS_LET = std::string("let");
const std::string ASResource::AS_LOCK = std::string("lock");
const std::string ASResource::AS_MODULE = std::string("module"); // CORBA IDL module definition
const std::string ASResource::AS_NAMESPACE = std::string("namespace");
const std::string ASResource::AS_NEW = std::string("new");
const std::string ASResource::AS_NOEXCEPT = std::string("noexcept");
const std::string ASResource::AS_NS_DURING = std::string("NS_DURING");
const std::string ASResource::AS_NS_HANDLER = std::string("NS_HANDLER");
const std::string ASResource::AS_OPERATOR = std::string("operator");
const std::string ASResource::AS_OVERRIDE = std::string("override");
const std::string ASResource::AS_PRIVATE = std::string("private");
const std::string ASResource::AS_PROTECTED = std::string("protected");
const std::string ASResource::AS_PUBLIC = std::string("public");
const std::string ASResource::AS_QFOREACH = std::string("Q_FOREACH");
const std::string ASResource::AS_QFOREVER = std::string("Q_FOREVER");
const std::string ASResource::AS_REINTERPRET_CAST = std::string("reinterpret_cast");
const std::string ASResource::AS_REMOVE = std::string("remove");
const std::string ASResource::AS_SEALED = std::string("sealed");
const std::string ASResource::AS_SELECTOR = std::string("selector");
const std::string ASResource::AS_SET = std::string("set");
const std::string ASResource::AS_STATIC = std::string("static");
const std::string ASResource::AS_STATIC_CAST = std::string("static_cast");
const std::string ASResource::AS_STRUCT = std::string("struct");
const std::string ASResource::AS_TYPEDEF_STRUCT = std::string("typedef struct");
const std::string ASResource::AS_SWITCH = std::string("switch");
const std::string ASResource::AS_SYNCHRONIZED = std::string("synchronized");
const std::string ASResource::AS_TEMPLATE = std::string("template");
const std::string ASResource::AS_THROW = std::string("throw");
const std::string ASResource::AS_THROWS = std::string("throws");
const std::string ASResource::AS_TRY = std::string("try");
const std::string ASResource::AS_UNCHECKED = std::string("unchecked");
const std::string ASResource::AS_UNION = std::string("union");
const std::string ASResource::AS_UNSAFE = std::string("unsafe");
const std::string ASResource::AS_USING = std::string("using");
const std::string ASResource::AS_VOLATILE = std::string("volatile");
const std::string ASResource::AS_WHERE = std::string("where");
const std::string ASResource::AS_WHILE = std::string("while");
const string ASResource::AS_ASM = string("asm");
const string ASResource::AS__ASM__ = string("__asm__");
const string ASResource::AS_MS_ASM = string("_asm");
const string ASResource::AS_MS__ASM = string("__asm");
const std::string ASResource::AS_ASM = std::string("asm");
const std::string ASResource::AS__ASM__ = std::string("__asm__");
const std::string ASResource::AS_MS_ASM = std::string("_asm");
const std::string ASResource::AS_MS__ASM = std::string("__asm");
const string ASResource::AS_BAR_DEFINE = string("#define");
const string ASResource::AS_BAR_INCLUDE = string("#include");
const string ASResource::AS_BAR_IF = string("#if");
const string ASResource::AS_BAR_EL = string("#el");
const string ASResource::AS_BAR_ENDIF = string("#endif");
const std::string ASResource::AS_BAR_DEFINE = std::string("#define");
const std::string ASResource::AS_BAR_INCLUDE = std::string("#include");
const std::string ASResource::AS_BAR_IF = std::string("#if");
const std::string ASResource::AS_BAR_EL = std::string("#el");
const std::string ASResource::AS_BAR_ENDIF = std::string("#endif");
const string ASResource::AS_OPEN_PAREN = string("(");
const string ASResource::AS_CLOSE_PAREN = string(")");
const string ASResource::AS_OPEN_BRACE = string("{");
const string ASResource::AS_CLOSE_BRACE = string("}");
const string ASResource::AS_OPEN_LINE_COMMENT = string("//");
const string ASResource::AS_OPEN_COMMENT = string("/*");
const string ASResource::AS_CLOSE_COMMENT = string("*/");
const std::string ASResource::AS_OPEN_PAREN = std::string("(");
const std::string ASResource::AS_CLOSE_PAREN = std::string(")");
const std::string ASResource::AS_OPEN_BRACE = std::string("{");
const std::string ASResource::AS_CLOSE_BRACE = std::string("}");
const std::string ASResource::AS_OPEN_LINE_COMMENT = std::string("//");
const std::string ASResource::AS_OPEN_COMMENT = std::string("/*");
const std::string ASResource::AS_CLOSE_COMMENT = std::string("*/");
const string ASResource::AS_ASSIGN = string("=");
const string ASResource::AS_PLUS_ASSIGN = string("+=");
const string ASResource::AS_MINUS_ASSIGN = string("-=");
const string ASResource::AS_MULT_ASSIGN = string("*=");
const string ASResource::AS_DIV_ASSIGN = string("/=");
const string ASResource::AS_MOD_ASSIGN = string("%=");
const string ASResource::AS_OR_ASSIGN = string("|=");
const string ASResource::AS_AND_ASSIGN = string("&=");
const string ASResource::AS_XOR_ASSIGN = string("^=");
const string ASResource::AS_GR_GR_ASSIGN = string(">>=");
const string ASResource::AS_LS_LS_ASSIGN = string("<<=");
const string ASResource::AS_GR_GR_GR_ASSIGN = string(">>>=");
const string ASResource::AS_LS_LS_LS_ASSIGN = string("<<<=");
const string ASResource::AS_GCC_MIN_ASSIGN = string("<?");
const string ASResource::AS_GCC_MAX_ASSIGN = string(">?");
const std::string ASResource::AS_ASSIGN = std::string("=");
const std::string ASResource::AS_PLUS_ASSIGN = std::string("+=");
const std::string ASResource::AS_MINUS_ASSIGN = std::string("-=");
const std::string ASResource::AS_MULT_ASSIGN = std::string("*=");
const std::string ASResource::AS_DIV_ASSIGN = std::string("/=");
const std::string ASResource::AS_MOD_ASSIGN = std::string("%=");
const std::string ASResource::AS_OR_ASSIGN = std::string("|=");
const std::string ASResource::AS_AND_ASSIGN = std::string("&=");
const std::string ASResource::AS_XOR_ASSIGN = std::string("^=");
const std::string ASResource::AS_GR_GR_ASSIGN = std::string(">>=");
const std::string ASResource::AS_LS_LS_ASSIGN = std::string("<<=");
const std::string ASResource::AS_GR_GR_GR_ASSIGN = std::string(">>>=");
const std::string ASResource::AS_LS_LS_LS_ASSIGN = std::string("<<<=");
const std::string ASResource::AS_GCC_MIN_ASSIGN = std::string("<?");
const std::string ASResource::AS_GCC_MAX_ASSIGN = std::string(">?");
const string ASResource::AS_RETURN = string("return");
const string ASResource::AS_CIN = string("cin");
const string ASResource::AS_COUT = string("cout");
const string ASResource::AS_CERR = string("cerr");
const std::string ASResource::AS_RETURN = std::string("return");
const std::string ASResource::AS_CIN = std::string("cin");
const std::string ASResource::AS_COUT = std::string("cout");
const std::string ASResource::AS_CERR = std::string("cerr");
const string ASResource::AS_EQUAL = string("==");
const string ASResource::AS_PLUS_PLUS = string("++");
const string ASResource::AS_MINUS_MINUS = string("--");
const string ASResource::AS_NOT_EQUAL = string("!=");
const string ASResource::AS_GR_EQUAL = string(">=");
const string ASResource::AS_GR_GR = string(">>");
const string ASResource::AS_GR_GR_GR = string(">>>");
const string ASResource::AS_LS_EQUAL = string("<=");
const string ASResource::AS_LS_LS = string("<<");
const string ASResource::AS_LS_LS_LS = string("<<<");
const string ASResource::AS_QUESTION_QUESTION = string("??");
const string ASResource::AS_LAMBDA = string("=>"); // C# lambda expression arrow
const string ASResource::AS_ARROW = string("->");
const string ASResource::AS_AND = string("&&");
const string ASResource::AS_OR = string("||");
const string ASResource::AS_SCOPE_RESOLUTION = string("::");
const string ASResource::AS_SPACESHIP = string("<=>");
const string ASResource::AS_EQUAL_JS = string("===");
const std::string ASResource::AS_EQUAL = std::string("==");
const std::string ASResource::AS_PLUS_PLUS = std::string("++");
const std::string ASResource::AS_MINUS_MINUS = std::string("--");
const std::string ASResource::AS_NOT_EQUAL = std::string("!=");
const std::string ASResource::AS_GR_EQUAL = std::string(">=");
const std::string ASResource::AS_GR_GR = std::string(">>");
const std::string ASResource::AS_GR_GR_GR = std::string(">>>");
const std::string ASResource::AS_LS_EQUAL = std::string("<=");
const std::string ASResource::AS_LS_LS = std::string("<<");
const std::string ASResource::AS_LS_LS_LS = std::string("<<<");
const std::string ASResource::AS_QUESTION_QUESTION = std::string("??");
const std::string ASResource::AS_LAMBDA = std::string("=>"); // C# lambda expression arrow
const std::string ASResource::AS_ARROW = std::string("->");
const std::string ASResource::AS_AND = std::string("&&");
const std::string ASResource::AS_OR = std::string("||");
const std::string ASResource::AS_SCOPE_RESOLUTION = std::string("::");
const std::string ASResource::AS_SPACESHIP = std::string("<=>");
const std::string ASResource::AS_EQUAL_JS = std::string("===");
const string ASResource::AS_PLUS = string("+");
const string ASResource::AS_MINUS = string("-");
const string ASResource::AS_MULT = string("*");
const string ASResource::AS_DIV = string("/");
const string ASResource::AS_MOD = string("%");
const string ASResource::AS_GR = string(">");
const string ASResource::AS_LS = string("<");
const string ASResource::AS_NOT = string("!");
const string ASResource::AS_BIT_OR = string("|");
const string ASResource::AS_BIT_AND = string("&");
const string ASResource::AS_BIT_NOT = string("~");
const string ASResource::AS_BIT_XOR = string("^");
const string ASResource::AS_QUESTION = string("?");
const string ASResource::AS_COLON = string(":");
const string ASResource::AS_COMMA = string(",");
const string ASResource::AS_SEMICOLON = string(";");
const std::string ASResource::AS_PLUS = std::string("+");
const std::string ASResource::AS_MINUS = std::string("-");
const std::string ASResource::AS_MULT = std::string("*");
const std::string ASResource::AS_DIV = std::string("/");
const std::string ASResource::AS_MOD = std::string("%");
const std::string ASResource::AS_GR = std::string(">");
const std::string ASResource::AS_LS = std::string("<");
const std::string ASResource::AS_NOT = std::string("!");
const std::string ASResource::AS_BIT_OR = std::string("|");
const std::string ASResource::AS_BIT_AND = std::string("&");
const std::string ASResource::AS_BIT_NOT = std::string("~");
const std::string ASResource::AS_BIT_XOR = std::string("^");
const std::string ASResource::AS_QUESTION = std::string("?");
const std::string ASResource::AS_COLON = std::string(":");
const std::string ASResource::AS_COMMA = std::string(",");
const std::string ASResource::AS_SEMICOLON = std::string(";");
/**
* Sort comparison function.
* Compares the length of the value of pointers in the vectors.
* The LONGEST strings will be first in the vector.
* The LONGEST std::strings will be first in the vector.
*
* @param a and b, the string pointers to be compared.
* @param a and b, the std::string pointers to be compared.
*/
bool sortOnLength(const string* a, const string* b)
bool sortOnLength(const std::string* a, const std::string* b)
{
return (*a).length() > (*b).length();
}
@@ -177,9 +177,9 @@ bool sortOnLength(const string* a, const string* b)
* Sort comparison function.
* Compares the value of pointers in the vectors.
*
* @param a and b, the string pointers to be compared.
* @param a and b, the std::string pointers to be compared.
*/
bool sortOnName(const string* a, const string* b)
bool sortOnName(const std::string* a, const std::string* b)
{
return *a < *b;
}
@@ -190,7 +190,7 @@ bool sortOnName(const string* a, const string* b)
*
* @param assignmentOperators a reference to the vector to be built.
*/
void ASResource::buildAssignmentOperators(vector<const string*>* assignmentOperators)
void ASResource::buildAssignmentOperators(std::vector<const std::string*>* assignmentOperators)
{
const size_t elements = 15;
assignmentOperators->reserve(elements);
@@ -223,7 +223,7 @@ void ASResource::buildAssignmentOperators(vector<const string*>* assignmentOpera
*
* @param castOperators a reference to the vector to be built.
*/
void ASResource::buildCastOperators(vector<const string*>* castOperators)
void ASResource::buildCastOperators(std::vector<const std::string*>* castOperators)
{
const size_t elements = 5;
castOperators->reserve(elements);
@@ -243,7 +243,7 @@ void ASResource::buildCastOperators(vector<const string*>* castOperators)
*
* @param headers a reference to the vector to be built.
*/
void ASResource::buildHeaders(vector<const string*>* headers, int fileType, bool beautifier)
void ASResource::buildHeaders(std::vector<const std::string*>* headers, int fileType, bool beautifier)
{
const size_t elements = 25;
headers->reserve(elements);
@@ -263,7 +263,7 @@ void ASResource::buildHeaders(vector<const string*>* headers, int fileType, bool
headers->emplace_back(&AS_FOREACH); // QT & C#
headers->emplace_back(&AS_FOREVER); // Qt & Boost
if (fileType == C_TYPE)
if (fileType == C_TYPE || fileType == OBJC_TYPE)
{
headers->emplace_back(&_AS_TRY); // __try
headers->emplace_back(&_AS_FINALLY); // __finally
@@ -289,7 +289,7 @@ void ASResource::buildHeaders(vector<const string*>* headers, int fileType, bool
if (beautifier)
{
if (fileType == C_TYPE)
if (fileType == C_TYPE || fileType == OBJC_TYPE)
{
headers->emplace_back(&AS_TEMPLATE);
}
@@ -310,7 +310,7 @@ void ASResource::buildHeaders(vector<const string*>* headers, int fileType, bool
*
* @param indentableHeaders a reference to the vector to be built.
*/
void ASResource::buildIndentableHeaders(vector<const string*>* indentableHeaders)
void ASResource::buildIndentableHeaders(std::vector<const std::string*>* indentableHeaders)
{
indentableHeaders->emplace_back(&AS_RETURN);
@@ -323,13 +323,13 @@ void ASResource::buildIndentableHeaders(vector<const string*>* indentableHeaders
*
* @param indentableMacros a reference to the vector to be built.
*/
void ASResource::buildIndentableMacros(vector<const pair<const string, const string>* >* indentableMacros)
void ASResource::buildIndentableMacros(std::vector<const std::pair<const std::string, const std::string>* >* indentableMacros)
{
const size_t elements = 10;
indentableMacros->reserve(elements);
// the pairs must be retained in memory because of pair pointers
using macro_pair = pair<const string, const string>;
using macro_pair = std::pair<const std::string, const std::string>;
static const macro_pair macros[] =
{
// wxWidgets
@@ -354,7 +354,7 @@ void ASResource::buildIndentableMacros(vector<const pair<const string, const str
*
* @param nonAssignmentOperators a reference to the vector to be built.
*/
void ASResource::buildNonAssignmentOperators(vector<const string*>* nonAssignmentOperators)
void ASResource::buildNonAssignmentOperators(std::vector<const std::string*>* nonAssignmentOperators)
{
const size_t elements = 15;
nonAssignmentOperators->reserve(elements);
@@ -383,9 +383,9 @@ void ASResource::buildNonAssignmentOperators(vector<const string*>* nonAssignmen
* Used by BOTH ASFormatter.cpp and ASBeautifier.cpp.
* NOTE: Non-paren headers should also be included in the headers vector.
*
* @param nonParenHeaders a reference to the vector to be built.
* @param nonParenHeaders a reference to the std::vector to be built.
*/
void ASResource::buildNonParenHeaders(vector<const string*>* nonParenHeaders, int fileType, bool beautifier)
void ASResource::buildNonParenHeaders(std::vector<const std::string*>* nonParenHeaders, int fileType, bool beautifier)
{
const size_t elements = 20;
nonParenHeaders->reserve(elements);
@@ -399,7 +399,7 @@ void ASResource::buildNonParenHeaders(vector<const string*>* nonParenHeaders, in
nonParenHeaders->emplace_back(&AS_QFOREVER); // QT
nonParenHeaders->emplace_back(&AS_FOREVER); // Boost
if (fileType == C_TYPE)
if (fileType == C_TYPE || fileType == OBJC_TYPE)
{
nonParenHeaders->emplace_back(&_AS_TRY); // __try
nonParenHeaders->emplace_back(&_AS_FINALLY); // __finally
@@ -440,7 +440,7 @@ void ASResource::buildNonParenHeaders(vector<const string*>* nonParenHeaders, in
*
* @param operators a reference to the vector to be built.
*/
void ASResource::buildOperators(vector<const string*>* operators, int fileType)
void ASResource::buildOperators(std::vector<const std::string*>* operators, int fileType)
{
const size_t elements = 50;
operators->reserve(elements);
@@ -509,13 +509,13 @@ void ASResource::buildOperators(vector<const string*>* operators, int fileType)
*
* @param preBlockStatements a reference to the vector to be built.
*/
void ASResource::buildPreBlockStatements(vector<const string*>* preBlockStatements, int fileType)
void ASResource::buildPreBlockStatements(std::vector<const std::string*>* preBlockStatements, int fileType)
{
const size_t elements = 10;
preBlockStatements->reserve(elements);
preBlockStatements->emplace_back(&AS_CLASS);
if (fileType == C_TYPE)
if (fileType == C_TYPE || fileType == OBJC_TYPE)
{
preBlockStatements->emplace_back(&AS_STRUCT);
preBlockStatements->emplace_back(&AS_UNION);
@@ -549,12 +549,12 @@ void ASResource::buildPreBlockStatements(vector<const string*>* preBlockStatemen
* the closing paren and the opening brace.
* e.g. in "void foo() const {}", "const" is a preCommandHeader.
*/
void ASResource::buildPreCommandHeaders(vector<const string*>* preCommandHeaders, int fileType)
void ASResource::buildPreCommandHeaders(std::vector<const std::string*>* preCommandHeaders, int fileType)
{
const size_t elements = 10;
preCommandHeaders->reserve(elements);
if (fileType == C_TYPE)
if (fileType == C_TYPE || fileType == OBJC_TYPE)
{
preCommandHeaders->emplace_back(&AS_CONST);
preCommandHeaders->emplace_back(&AS_FINAL);
@@ -563,6 +563,10 @@ void ASResource::buildPreCommandHeaders(vector<const string*>* preCommandHeaders
preCommandHeaders->emplace_back(&AS_OVERRIDE);
preCommandHeaders->emplace_back(&AS_VOLATILE);
preCommandHeaders->emplace_back(&AS_SEALED); // Visual C only
}
if (fileType == OBJC_TYPE)
{
preCommandHeaders->emplace_back(&AS_AUTORELEASEPOOL); // Obj-C only
}
@@ -588,13 +592,13 @@ void ASResource::buildPreCommandHeaders(vector<const string*>* preCommandHeaders
*
* @param preDefinitionHeaders a reference to the vector to be built.
*/
void ASResource::buildPreDefinitionHeaders(vector<const string*>* preDefinitionHeaders, int fileType)
void ASResource::buildPreDefinitionHeaders(std::vector<const std::string*>* preDefinitionHeaders, int fileType)
{
const size_t elements = 10;
preDefinitionHeaders->reserve(elements);
preDefinitionHeaders->emplace_back(&AS_CLASS);
if (fileType == C_TYPE)
if (fileType == C_TYPE || fileType == OBJC_TYPE)
{
preDefinitionHeaders->emplace_back(&AS_STRUCT);
preDefinitionHeaders->emplace_back(&AS_UNION);
@@ -622,15 +626,15 @@ void ASResource::buildPreDefinitionHeaders(vector<const string*>* preDefinitionH
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
// check if a specific line position contains a header.
const string* ASBase::findHeader(const string& line, int i,
const vector<const string*>* possibleHeaders) const
const std::string* ASBase::findHeader(const std::string& line, int i,
const std::vector<const std::string*>* possibleHeaders) const
{
assert(isCharPotentialHeader(line, i));
// check the word
size_t maxHeaders = possibleHeaders->size();
for (size_t p = 0; p < maxHeaders; p++)
{
const string* header = (*possibleHeaders)[p];
const std::string* header = (*possibleHeaders)[p];
const size_t wordEnd = i + header->length();
if (wordEnd > line.length())
continue;
@@ -662,8 +666,9 @@ const string* ASBase::findHeader(const string& line, int i,
}
// check if a specific line position contains a keyword.
bool ASBase::findKeyword(const string& line, int i, const string& keyword) const
bool ASBase::findKeyword(const std::string& line, int i, const std::string& keyword) const
{
//std::cerr << "findKeyword "<< i << " "<< line << " -< "<< keyword << "\n";
assert(isCharPotentialHeader(line, i));
// check the word
const size_t keywordLength = keyword.length();
@@ -673,20 +678,25 @@ bool ASBase::findKeyword(const string& line, int i, const string& keyword) const
if (line.compare(i, keywordLength, keyword) != 0)
return false;
// check that this is not part of a longer word
if (wordEnd == line.length())
if (wordEnd == line.length()) {
//std::cerr << "findKeyword t1 \n";
return true;
}
if (isLegalNameChar(line[wordEnd]))
return false;
// is not a keyword if part of a definition
const char peekChar = peekNextChar(line, (int) wordEnd - 1);
if (peekChar == ',' || peekChar == ')')
return false;
//std::cerr << "findKeyword t2 \n";
return true;
}
// check if a specific line position contains an operator.
const string* ASBase::findOperator(const string& line, int i,
const vector<const string*>* possibleOperators) const
const std::string* ASBase::findOperator(const std::string& line, int i,
const std::vector<const std::string*>* possibleOperators) const
{
assert(isCharPotentialOperator(line[i]));
// find the operator in the vector
@@ -706,7 +716,7 @@ const string* ASBase::findOperator(const string& line, int i,
// get the current word on a line
// index must point to the beginning of the word
string ASBase::getCurrentWord(const string& line, size_t index) const
std::string ASBase::getCurrentWord(const std::string& line, size_t index) const
{
assert(isCharPotentialHeader(line, index));
size_t lineLength = line.length();
@@ -733,7 +743,7 @@ bool ASBase::isLegalNameChar(char ch) const
}
// check if a specific character can be part of a header
bool ASBase::isCharPotentialHeader(const string& line, size_t i) const
bool ASBase::isCharPotentialHeader(const std::string& line, size_t i) const
{
assert(!isWhiteSpace(line[i]));
char prevCh = ' ';
@@ -769,7 +779,7 @@ bool ASBase::isDigit(char ch) const
}
// check if a specific character is a digit separator
bool ASBase::isDigitSeparator(const string& line, int i) const
bool ASBase::isDigitSeparator(const std::string& line, int i) const
{
assert(line[i] == '\'');
// casting to (unsigned char) eliminates negative characters
@@ -782,11 +792,11 @@ bool ASBase::isDigitSeparator(const string& line, int i) const
}
// peek at the next unread character.
char ASBase::peekNextChar(const string& line, int i) const
char ASBase::peekNextChar(const std::string& line, int i) const
{
char ch = ' ';
size_t peekNum = line.find_first_not_of(" \t", i + 1);
if (peekNum == string::npos)
if (peekNum == std::string::npos)
return ch;
ch = line[peekNum];
return ch;
+218 -201
View File
@@ -57,14 +57,12 @@
//-----------------------------------------------------------------------------
namespace astyle {
//
using namespace std;
//----------------------------------------------------------------------------
// definitions
//----------------------------------------------------------------------------
enum FileType { C_TYPE = 0, JAVA_TYPE = 1, SHARP_TYPE = 2, JS_TYPE = 3 };
enum FileType { C_TYPE = 0, JAVA_TYPE = 1, SHARP_TYPE = 2, JS_TYPE = 3, OBJC_TYPE = 4, INVALID_TYPE = -1 };
/* The enums below are not recognized by 'vectors' in Microsoft Visual C++
V5 when they are part of a namespace!!! Use Visual C++ V6 or higher.
@@ -188,13 +186,13 @@ class ASSourceIterator
public:
ASSourceIterator() = default;
virtual ~ASSourceIterator() = default;
virtual streamoff getPeekStart() const = 0;
virtual std::streamoff getPeekStart() const = 0;
virtual int getStreamLength() const = 0;
virtual bool hasMoreLines() const = 0;
virtual string nextLine(bool emptyLineWasDeleted) = 0;
virtual string peekNextLine() = 0;
virtual std::string nextLine(bool emptyLineWasDeleted) = 0;
virtual std::string peekNextLine() = 0;
virtual void peekReset() = 0;
virtual streamoff tellg() = 0;
virtual std::streamoff tellg() = 0;
};
//-----------------------------------------------------------------------------
@@ -220,7 +218,7 @@ public:
bool hasMoreLines() const
{ return sourceIterator->hasMoreLines(); }
string peekNextLine()
std::string peekNextLine()
{ needReset = true; return sourceIterator->peekNextLine(); }
};
@@ -232,61 +230,61 @@ public:
class ASResource
{
public:
void buildAssignmentOperators(vector<const string*>* assignmentOperators);
void buildCastOperators(vector<const string*>* castOperators);
void buildHeaders(vector<const string*>* headers, int fileType, bool beautifier = false);
void buildIndentableMacros(vector<const pair<const string, const string>* >* indentableMacros);
void buildIndentableHeaders(vector<const string*>* indentableHeaders);
void buildNonAssignmentOperators(vector<const string*>* nonAssignmentOperators);
void buildNonParenHeaders(vector<const string*>* nonParenHeaders, int fileType, bool beautifier = false);
void buildOperators(vector<const string*>* operators, int fileType);
void buildPreBlockStatements(vector<const string*>* preBlockStatements, int fileType);
void buildPreCommandHeaders(vector<const string*>* preCommandHeaders, int fileType);
void buildPreDefinitionHeaders(vector<const string*>* preDefinitionHeaders, int fileType);
void buildAssignmentOperators(std::vector<const std::string*>* assignmentOperators);
void buildCastOperators(std::vector<const std::string*>* castOperators);
void buildHeaders(std::vector<const std::string*>* headers, int fileType, bool beautifier = false);
void buildIndentableMacros(std::vector<const std::pair<const std::string, const std::string>* >* indentableMacros);
void buildIndentableHeaders(std::vector<const std::string*>* indentableHeaders);
void buildNonAssignmentOperators(std::vector<const std::string*>* nonAssignmentOperators);
void buildNonParenHeaders(std::vector<const std::string*>* nonParenHeaders, int fileType, bool beautifier = false);
void buildOperators(std::vector<const std::string*>* operators, int fileType);
void buildPreBlockStatements(std::vector<const std::string*>* preBlockStatements, int fileType);
void buildPreCommandHeaders(std::vector<const std::string*>* preCommandHeaders, int fileType);
void buildPreDefinitionHeaders(std::vector<const std::string*>* preDefinitionHeaders, int fileType);
public:
static const string AS_IF, AS_ELSE;
static const string AS_DO, AS_WHILE;
static const string AS_FOR;
static const string AS_SWITCH, AS_CASE, AS_DEFAULT;
static const string AS_TRY, AS_CATCH, AS_THROW, AS_THROWS, AS_FINALLY, AS_USING;
static const string _AS_TRY, _AS_FINALLY, _AS_EXCEPT;
static const string AS_PUBLIC, AS_PROTECTED, AS_PRIVATE;
static const string AS_CLASS, AS_STRUCT, AS_TYPEDEF_STRUCT, AS_UNION, AS_INTERFACE, AS_NAMESPACE;
static const string AS_MODULE;
static const string AS_END;
static const string AS_SELECTOR;
static const string AS_EXTERN, AS_ENUM;
static const string AS_FINAL, AS_OVERRIDE;
static const string AS_STATIC, AS_CONST, AS_SEALED, AS_VOLATILE, AS_NEW, AS_DELETE;
static const string AS_NOEXCEPT, AS_INTERRUPT, AS_AUTORELEASEPOOL;
static const string AS_WHERE, AS_LET, AS_SYNCHRONIZED;
static const string AS_OPERATOR, AS_TEMPLATE;
static const string AS_OPEN_PAREN, AS_CLOSE_PAREN;
static const string AS_OPEN_BRACE, AS_CLOSE_BRACE;
static const string AS_OPEN_LINE_COMMENT, AS_OPEN_COMMENT, AS_CLOSE_COMMENT;
static const string AS_BAR_DEFINE, AS_BAR_INCLUDE, AS_BAR_IF, AS_BAR_EL, AS_BAR_ENDIF;
static const string AS_AUTO, AS_RETURN;
static const string AS_CIN, AS_COUT, AS_CERR;
static const string AS_ASSIGN, AS_PLUS_ASSIGN, AS_MINUS_ASSIGN, AS_MULT_ASSIGN;
static const string AS_DIV_ASSIGN, AS_MOD_ASSIGN, AS_XOR_ASSIGN, AS_OR_ASSIGN, AS_AND_ASSIGN;
static const string AS_GR_GR_ASSIGN, AS_LS_LS_ASSIGN, AS_GR_GR_GR_ASSIGN, AS_LS_LS_LS_ASSIGN;
static const string AS_GCC_MIN_ASSIGN, AS_GCC_MAX_ASSIGN, AS_SPACESHIP, AS_EQUAL_JS;
static const string AS_EQUAL, AS_PLUS_PLUS, AS_MINUS_MINUS, AS_NOT_EQUAL, AS_GR_EQUAL;
static const string AS_LS_EQUAL, AS_LS_LS_LS, AS_LS_LS, AS_GR_GR_GR, AS_GR_GR;
static const string AS_QUESTION_QUESTION, AS_LAMBDA;
static const string AS_ARROW, AS_AND, AS_OR;
static const string AS_SCOPE_RESOLUTION;
static const string AS_PLUS, AS_MINUS, AS_MULT, AS_DIV, AS_MOD, AS_GR, AS_LS;
static const string AS_NOT, AS_BIT_XOR, AS_BIT_OR, AS_BIT_AND, AS_BIT_NOT;
static const string AS_QUESTION, AS_COLON, AS_SEMICOLON, AS_COMMA;
static const string AS_ASM, AS__ASM__, AS_MS_ASM, AS_MS__ASM;
static const string AS_QFOREACH, AS_QFOREVER, AS_FOREVER;
static const string AS_FOREACH, AS_LOCK, AS_UNSAFE, AS_FIXED;
static const string AS_GET, AS_SET, AS_ADD, AS_REMOVE;
static const string AS_DELEGATE, AS_UNCHECKED;
static const string AS_CONST_CAST, AS_DYNAMIC_CAST, AS_REINTERPRET_CAST, AS_STATIC_CAST;
static const string AS_NS_DURING, AS_NS_HANDLER;
static const std::string AS_IF, AS_ELSE;
static const std::string AS_DO, AS_WHILE;
static const std::string AS_FOR;
static const std::string AS_SWITCH, AS_CASE, AS_DEFAULT;
static const std::string AS_TRY, AS_CATCH, AS_THROW, AS_THROWS, AS_FINALLY, AS_USING;
static const std::string _AS_TRY, _AS_FINALLY, _AS_EXCEPT;
static const std::string AS_PUBLIC, AS_PROTECTED, AS_PRIVATE;
static const std::string AS_CLASS, AS_STRUCT, AS_TYPEDEF_STRUCT, AS_UNION, AS_INTERFACE, AS_NAMESPACE;
static const std::string AS_MODULE;
static const std::string AS_END;
static const std::string AS_SELECTOR;
static const std::string AS_EXTERN, AS_ENUM;
static const std::string AS_FINAL, AS_OVERRIDE;
static const std::string AS_STATIC, AS_CONST, AS_SEALED, AS_VOLATILE, AS_NEW, AS_DELETE;
static const std::string AS_NOEXCEPT, AS_INTERRUPT, AS_AUTORELEASEPOOL;
static const std::string AS_WHERE, AS_LET, AS_SYNCHRONIZED;
static const std::string AS_OPERATOR, AS_TEMPLATE;
static const std::string AS_OPEN_PAREN, AS_CLOSE_PAREN;
static const std::string AS_OPEN_BRACE, AS_CLOSE_BRACE;
static const std::string AS_OPEN_LINE_COMMENT, AS_OPEN_COMMENT, AS_CLOSE_COMMENT;
static const std::string AS_BAR_DEFINE, AS_BAR_INCLUDE, AS_BAR_IF, AS_BAR_EL, AS_BAR_ENDIF;
static const std::string AS_AUTO, AS_RETURN;
static const std::string AS_CIN, AS_COUT, AS_CERR;
static const std::string AS_ASSIGN, AS_PLUS_ASSIGN, AS_MINUS_ASSIGN, AS_MULT_ASSIGN;
static const std::string AS_DIV_ASSIGN, AS_MOD_ASSIGN, AS_XOR_ASSIGN, AS_OR_ASSIGN, AS_AND_ASSIGN;
static const std::string AS_GR_GR_ASSIGN, AS_LS_LS_ASSIGN, AS_GR_GR_GR_ASSIGN, AS_LS_LS_LS_ASSIGN;
static const std::string AS_GCC_MIN_ASSIGN, AS_GCC_MAX_ASSIGN, AS_SPACESHIP, AS_EQUAL_JS;
static const std::string AS_EQUAL, AS_PLUS_PLUS, AS_MINUS_MINUS, AS_NOT_EQUAL, AS_GR_EQUAL;
static const std::string AS_LS_EQUAL, AS_LS_LS_LS, AS_LS_LS, AS_GR_GR_GR, AS_GR_GR;
static const std::string AS_QUESTION_QUESTION, AS_LAMBDA;
static const std::string AS_ARROW, AS_AND, AS_OR;
static const std::string AS_SCOPE_RESOLUTION;
static const std::string AS_PLUS, AS_MINUS, AS_MULT, AS_DIV, AS_MOD, AS_GR, AS_LS;
static const std::string AS_NOT, AS_BIT_XOR, AS_BIT_OR, AS_BIT_AND, AS_BIT_NOT;
static const std::string AS_QUESTION, AS_COLON, AS_SEMICOLON, AS_COMMA;
static const std::string AS_ASM, AS__ASM__, AS_MS_ASM, AS_MS__ASM;
static const std::string AS_QFOREACH, AS_QFOREVER, AS_FOREVER;
static const std::string AS_FOREACH, AS_LOCK, AS_UNSAFE, AS_FIXED;
static const std::string AS_GET, AS_SET, AS_ADD, AS_REMOVE;
static const std::string AS_DELEGATE, AS_UNCHECKED;
static const std::string AS_CONST_CAST, AS_DYNAMIC_CAST, AS_REINTERPRET_CAST, AS_STATIC_CAST;
static const std::string AS_NS_DURING, AS_NS_HANDLER;
}; // Class ASResource
//-----------------------------------------------------------------------------
@@ -305,26 +303,27 @@ protected:
protected: // inline functions
void init(int fileTypeArg) { baseFileType = fileTypeArg; }
bool isCStyle() const { return (baseFileType == C_TYPE); }
bool isJavaStyle() const { return (baseFileType == JAVA_TYPE); }
bool isSharpStyle() const { return (baseFileType == SHARP_TYPE); }
bool isJSStyle() const { return (baseFileType == JS_TYPE); }
bool isCStyle() const { return baseFileType == C_TYPE || baseFileType == OBJC_TYPE; }
bool isJavaStyle() const { return baseFileType == JAVA_TYPE; }
bool isSharpStyle() const { return baseFileType == SHARP_TYPE; }
bool isJSStyle() const { return baseFileType == JS_TYPE; }
bool isObjCStyle() const { return baseFileType == OBJC_TYPE; }
bool isWhiteSpace(char ch) const { return (ch == ' ' || ch == '\t'); }
protected: // functions definitions are at the end of ASResource.cpp
const string* findHeader(const string& line, int i,
const vector<const string*>* possibleHeaders) const;
bool findKeyword(const string& line, int i, const string& keyword) const;
const string* findOperator(const string& line, int i,
const vector<const string*>* possibleOperators) const;
string getCurrentWord(const string& line, size_t index) const;
const std::string* findHeader(const std::string& line, int i,
const std::vector<const std::string*>* possibleHeaders) const;
bool findKeyword(const std::string& line, int i, const std::string& keyword) const;
const std::string* findOperator(const std::string& line, int i,
const std::vector<const std::string*>* possibleOperators) const;
std::string getCurrentWord(const std::string& line, size_t index) const;
bool isDigit(char ch) const;
bool isLegalNameChar(char ch) const;
bool isCharPotentialHeader(const string& line, size_t i) const;
bool isCharPotentialHeader(const std::string& line, size_t i) const;
bool isCharPotentialOperator(char ch) const;
bool isDigitSeparator(const string& line, int i) const;
char peekNextChar(const string& line, int i) const;
bool isDigitSeparator(const std::string& line, int i) const;
char peekNextChar(const std::string& line, int i) const;
}; // Class ASBase
@@ -343,7 +342,7 @@ public:
ASBeautifier& operator=(ASBeautifier&&) = delete;
virtual void init(ASSourceIterator* iter);
virtual string beautify(const string& originalLine);
virtual std::string beautify(const std::string& originalLine);
void setCaseIndent(bool state);
void setClassIndent(bool state);
void setContinuationIndentation(int indent = 1);
@@ -354,6 +353,8 @@ public:
void setAfterParenIndent(bool state);
void setJavaStyle();
void setJSStyle();
void setObjCStyle();
void setSharpStyle();
void setLabelIndent(bool state);
void setMaxContinuationIndentLength(int max);
@@ -364,18 +365,18 @@ public:
void setModifierIndent(bool state);
void setNamespaceIndent(bool state);
void setAlignMethodColon(bool state);
void setSharpStyle();
void setSpaceIndentation(int length = 4);
void setSwitchIndent(bool state);
void setTabIndentation(int length = 4, bool forceTabs = false);
void setPreprocDefineIndent(bool state);
void setPreprocConditionalIndent(bool state);
void setSqueezeWhitespace(bool state);
int getBeautifierFileType() const;
int getFileType() const;
int getIndentLength() const;
int getTabLength() const;
string getIndentString() const;
string getNextWord(const string& line, size_t currPos) const;
std::string getIndentString() const;
std::string getNextWord(const std::string& line, size_t currPos) const;
bool getAlignMethodColon() const;
bool getBraceIndent() const;
bool getBlockIndent() const;
@@ -391,14 +392,14 @@ public:
protected:
void deleteBeautifierVectors();
int getNextProgramCharDistance(const string& line, int i) const;
int indexOf(const vector<const string*>& container, const string* element) const;
int getNextProgramCharDistance(const std::string& line, int i) const;
int indexOf(const std::vector<const std::string*>& container, const std::string* element) const;
void setBlockIndent(bool state);
void setBraceIndent(bool state);
void setBraceIndentVtk(bool state);
string extractPreprocessorStatement(const string& line) const;
string trim(const string& str) const;
string rtrim(const string& str) const;
std::string extractPreprocessorStatement(const std::string& line) const;
std::string trim(const std::string& str) const;
std::string rtrim(const std::string& str) const;
// variables set by ASFormatter - must be updated in activeBeautifierStack
int inLineNumber;
@@ -417,75 +418,76 @@ protected:
bool isInIndentablePreproc;
private: // functions
void adjustObjCMethodDefinitionIndentation(const string& line_);
void adjustObjCMethodCallIndentation(const string& line_);
void adjustObjCMethodDefinitionIndentation(const std::string& line_);
void adjustObjCMethodCallIndentation(const std::string& line_);
void adjustParsedLineIndentation(size_t iPrelim, bool isInExtraHeaderIndent);
void computePreliminaryIndentation();
void parseCurrentLine(const string& line);
void parseCurrentLine(const std::string& line);
void popLastContinuationIndent();
void processPreprocessor(const string& preproc, const string& line);
void registerContinuationIndent(const string& line, int i, int spaceIndentCount_,
void processPreprocessor(const std::string& preproc, const std::string& line);
void registerContinuationIndent(const std::string& line, int i, int spaceIndentCount_,
int tabIncrementIn, int minIndent, bool updateParenStack);
void registerContinuationIndentColon(const string& line, int i, int tabIncrementIn);
void registerContinuationIndentColon(const std::string& line, int i, int tabIncrementIn);
void initVectors();
void initTempStacksContainer(vector<vector<const string*>*>*& container,
vector<vector<const string*>*>* value);
void initTempStacksContainer(std::vector<std::vector<const std::string*>*>*& container,
std::vector<std::vector<const std::string*>*>* value);
void clearObjCMethodDefinitionAlignment();
void deleteBeautifierContainer(vector<ASBeautifier*>*& container);
void deleteTempStacksContainer(vector<vector<const string*>*>*& container);
void deleteBeautifierContainer(std::vector<ASBeautifier*>*& container);
void deleteTempStacksContainer(std::vector<std::vector<const std::string*>*>*& container);
int adjustIndentCountForBreakElseIfComments() const;
int computeObjCColonAlignment(const string& line, int colonAlignPosition) const;
int computeObjCColonAlignment(const std::string& line, int colonAlignPosition) const;
int convertTabToSpaces(int i, int tabIncrementIn) const;
int findObjCColonAlignment(const string& line) const;
int getContinuationIndentAssign(const string& line, size_t currPos) const;
int getContinuationIndentComma(const string& line, size_t currPos) const;
int getObjCFollowingKeyword(const string& line, int bracePos) const;
bool isIndentedPreprocessor(const string& line, size_t currPos) const;
bool isLineEndComment(const string& line, int startPos) const;
bool isPreprocessorConditionalCplusplus(const string& line) const;
bool isInPreprocessorUnterminatedComment(const string& line);
int findObjCColonAlignment(const std::string& line) const;
int getContinuationIndentAssign(const std::string& line, size_t currPos) const;
int getContinuationIndentComma(const std::string& line, size_t currPos) const;
int getObjCFollowingKeyword(const std::string& line, int bracePos) const;
bool isIndentedPreprocessor(const std::string& line, size_t currPos) const;
bool isLineEndComment(const std::string& line, int startPos) const;
bool isPreprocessorConditionalCplusplus(const std::string& line) const;
bool isInPreprocessorUnterminatedComment(const std::string& line);
bool isTopLevel() const;
bool statementEndsWithComma(const string& line, int index) const;
const string& getIndentedLineReturn(const string& newLine, const string& originalLine) const;
string getIndentedSpaceEquivalent(const string& line_) const;
string preLineWS(int lineIndentCount, int lineSpaceIndentCount) const;
bool statementEndsWithComma(const std::string& line, int index) const;
const std::string& getIndentedLineReturn(const std::string& newLine, const std::string& originalLine) const;
std::string getIndentedSpaceEquivalent(const std::string& line_) const;
std::string preLineWS(int lineIndentCount, int lineSpaceIndentCount) const;
template<typename T> void deleteContainer(T& container);
template<typename T> void initContainer(T& container, T value);
vector<vector<const string*>*>* copyTempStacks(const ASBeautifier& other) const;
pair<int, int> computePreprocessorIndent();
std::vector<std::vector<const std::string*>*>* copyTempStacks(const ASBeautifier& other) const;
std::pair<int, int> computePreprocessorIndent();
private: // variables
int beautifierFileType;
vector<const string*>* headers;
vector<const string*>* nonParenHeaders;
vector<const string*>* preBlockStatements;
vector<const string*>* preCommandHeaders;
vector<const string*>* assignmentOperators;
vector<const string*>* nonAssignmentOperators;
vector<const string*>* indentableHeaders;
std::vector<const std::string*>* headers;
std::vector<const std::string*>* nonParenHeaders;
std::vector<const std::string*>* preBlockStatements;
std::vector<const std::string*>* preCommandHeaders;
std::vector<const std::string*>* assignmentOperators;
std::vector<const std::string*>* nonAssignmentOperators;
std::vector<const std::string*>* indentableHeaders;
vector<ASBeautifier*>* waitingBeautifierStack;
vector<ASBeautifier*>* activeBeautifierStack;
vector<size_t>* waitingBeautifierStackLengthStack;
vector<size_t>* activeBeautifierStackLengthStack;
vector<const string*>* headerStack;
vector<vector<const string*>* >* tempStacks;
vector<int>* parenDepthStack;
vector<bool>* blockStatementStack;
vector<bool>* parenStatementStack;
vector<bool>* braceBlockStateStack;
vector<int>* continuationIndentStack;
vector<size_t>* continuationIndentStackSizeStack;
vector<int>* parenIndentStack;
vector<pair<int, int> >* preprocIndentStack;
std::vector<ASBeautifier*>* waitingBeautifierStack;
std::vector<ASBeautifier*>* activeBeautifierStack;
std::vector<size_t>* waitingBeautifierStackLengthStack;
std::vector<size_t>* activeBeautifierStackLengthStack;
std::vector<const std::string*>* headerStack;
std::vector<std::vector<const std::string*>* >* tempStacks;
std::vector<int>* parenDepthStack;
std::vector<bool>* blockStatementStack;
std::vector<bool>* parenStatementStack;
std::vector<bool>* braceBlockStateStack;
std::vector<int>* continuationIndentStack;
std::vector<size_t>* continuationIndentStackSizeStack;
std::vector<int>* parenIndentStack;
std::vector<std::pair<int, int> >* preprocIndentStack;
std::vector<std::pair<size_t, size_t> > squeezeWSStack;
ASSourceIterator* sourceIterator;
const string* currentHeader;
const string* previousLastLineHeader;
const string* probationHeader;
const string* lastLineHeader;
string indentString;
string verbatimDelimiter;
const std::string* currentHeader;
const std::string* previousLastLineHeader;
const std::string* probationHeader;
const std::string* lastLineHeader;
std::string indentString;
std::string verbatimDelimiter;
bool isInQuote;
bool isInVerbatimQuote;
bool haveLineContinuationChar;
@@ -552,6 +554,8 @@ private: // variables
bool foundPreCommandMacro;
bool shouldAlignMethodColon;
bool shouldIndentPreprocConditional;
bool lambdaIndicator;
bool squeezeWhitespace;
int indentCount;
int spaceIndentCount;
int spaceIndentObjCMethodAlignment;
@@ -591,20 +595,20 @@ class ASEnhancer : protected ASBase
public: // functions
ASEnhancer() = default;
void init(int, int, int, bool, bool, bool, bool, bool, bool, bool,
vector<const pair<const string, const string>* >*);
void enhance(string& line, bool isInNamespace, bool isInPreprocessor, bool isInSQL);
std::vector<const std::pair<const std::string, const std::string>* >*);
void enhance(std::string& line, bool isInNamespace, bool isInPreprocessor, bool isInSQL);
private: // functions
void convertForceTabIndentToSpaces(string& line) const;
void convertSpaceIndentToForceTab(string& line) const;
size_t findCaseColon(const string& line, size_t caseIndex) const;
int indentLine(string& line, int indent) const;
bool isBeginDeclareSectionSQL(const string& line, size_t index) const;
bool isEndDeclareSectionSQL(const string& line, size_t index) const;
bool isOneLineBlockReached(const string& line, int startChar) const;
void parseCurrentLine(string& line, bool isInPreprocessor, bool isInSQL);
size_t processSwitchBlock(string& line, size_t index);
int unindentLine(string& line, int unindent) const;
void convertForceTabIndentToSpaces(std::string& line) const;
void convertSpaceIndentToForceTab(std::string& line) const;
size_t findCaseColon(const std::string& line, size_t caseIndex) const;
int indentLine(std::string& line, int indent) const;
bool isBeginDeclareSectionSQL(const std::string& line, size_t index) const;
bool isEndDeclareSectionSQL(const std::string& line, size_t index) const;
bool isOneLineBlockReached(const std::string& line, int startChar) const;
void parseCurrentLine(std::string& line, bool isInPreprocessor, bool isInSQL);
size_t processSwitchBlock(std::string& line, size_t index);
int unindentLine(std::string& line, int unindent) const;
private:
// options from command line or options file
@@ -643,12 +647,12 @@ private:
};
SwitchVariables sw; // switch variables struct
vector<SwitchVariables> switchStack; // stack vector of switch variables
std::vector<SwitchVariables> switchStack; // stack std::vector of switch variables
// event table variables
bool nextLineIsEventIndent; // begin event table indent is reached
bool isInEventTable; // need to indent an event table
vector<const pair<const string, const string>* >* indentableMacros;
std::vector<const std::pair<const std::string, const std::string>* >* indentableMacros;
// SQL variables
bool nextLineIsDeclareIndent; // begin declare section indent is reached
@@ -672,7 +676,7 @@ public: // functions
void init(ASSourceIterator* si) override;
bool hasMoreLines() const;
string nextLine();
std::string nextLine();
LineEndFormat getLineEndFormat() const;
bool getIsLineReady() const;
void setFormattingStyle(FormatStyle style);
@@ -716,6 +720,11 @@ public: // functions
void setParensInsidePaddingMode(bool state);
void setParensHeaderPaddingMode(bool state);
void setParensUnPaddingMode(bool state);
void setBracketsOutsidePaddingMode(bool state);
void setBracketsInsidePaddingMode(bool state);
void setBracketsUnPaddingMode(bool state);
void setPointerAlignment(PointerAlign alignment);
void setPreprocBlockIndent(bool state);
void setReferenceAlignment(ReferenceAlign alignment);
@@ -732,7 +741,7 @@ public: // functions
void setAddOneLineBracketsMode(bool state);
void setRemoveBracketsMode(bool state);
void setBreakClosingHeaderBracketsMode(bool state);
void setSqueezeEmptyLinesNumber(int);
private: // functions
template<typename T> void deleteContainer(T& container);
@@ -740,8 +749,8 @@ private: // functions
char peekNextChar() const;
BraceType getBraceType();
bool adjustChecksumIn(int adjustment);
bool computeChecksumIn(const string& currentLine_);
bool computeChecksumOut(const string& beautifiedLine);
bool computeChecksumIn(const std::string& currentLine_);
bool computeChecksumOut(const std::string& beautifiedLine);
bool addBracesToStatement();
bool removeBracesFromStatement();
bool commentAndHeaderFollows();
@@ -754,25 +763,25 @@ private: // functions
bool isBeforeMultipleLineEndComments(int startPos) const;
bool isBraceType(BraceType a, BraceType b) const;
bool isClassInitializer() const;
bool isClosingHeader(const string* header) const;
bool isClosingHeader(const std::string* header) const;
bool isCurrentBraceBroken() const;
bool isDereferenceOrAddressOf() const;
bool isExecSQL(const string& line, size_t index) const;
bool isEmptyLine(const string& line) const;
bool isExecSQL(const std::string& line, size_t index) const;
bool isEmptyLine(const std::string& line) const;
bool isExternC() const;
bool isMultiStatementLine() const;
bool isNextWordSharpNonParenHeader(int startChar) const;
bool isNonInStatementArrayBrace() const;
bool isNumericVariable(const string& word) const;
bool isNumericVariable(const std::string& word) const;
bool isOkToSplitFormattedLine();
bool isPointerOrReference() const;
bool isPointerOrReferenceCentered() const;
bool isPointerOrReferenceVariable(const string& word) const;
bool isPointerToPointer(const string& line, int currPos) const;
bool isSharpStyleWithParen(const string* header) const;
bool isStructAccessModified(const string& firstLine, size_t index) const;
bool isIndentablePreprocessorBlock(const string& firstLine, size_t index);
bool isNDefPreprocStatement(const string& nextLine_, const string& preproc) const;
bool isPointerOrReferenceVariable(const std::string& word) const;
bool isPointerToPointer(const std::string& line, int currPos) const;
bool isSharpStyleWithParen(const std::string* header) const;
bool isStructAccessModified(const std::string& firstLine, size_t index) const;
bool isIndentablePreprocessorBlock(const std::string& firstLine, size_t index);
bool isNDefPreprocStatement(const std::string& nextLine_, const std::string& preproc) const;
bool isUnaryOperator() const;
bool isUniformInitializerBrace() const;
bool isImmediatelyPostCast() const;
@@ -785,24 +794,24 @@ private: // functions
int findObjCColonAlignment() const;
int getCurrentLineCommentAdjustment();
int getNextLineCommentAdjustment();
int isOneLineBlockReached(const string& line, int startChar) const;
int isOneLineBlockReached(const std::string& line, int startChar) const;
void adjustComments();
void appendChar(char ch, bool canBreakLine);
void appendCharInsideComments();
void appendClosingHeader();
void appendOperator(const string& sequence, bool canBreakLine = true);
void appendSequence(const string& sequence, bool canBreakLine = true);
void appendOperator(const std::string& sequence, bool canBreakLine = true);
void appendSequence(const std::string& sequence, bool canBreakLine = true);
void appendSpacePad();
void appendSpaceAfter();
void breakLine(bool isSplitLine = false);
void buildLanguageVectors();
void updateFormattedLineSplitPoints(char appendedChar);
void updateFormattedLineSplitPointsOperator(const string& sequence);
void updateFormattedLineSplitPointsOperator(const std::string& sequence);
void checkIfTemplateOpener();
void clearFormattedLineSplitPoints();
void convertTabToSpaces();
void deleteContainer(vector<BraceType>*& container);
void findReturnTypeSplitPoint(const string& firstLine);
void deleteContainer(std::vector<BraceType>*& container);
void findReturnTypeSplitPoint(const std::string& firstLine);
void formatArrayRunIn();
void formatRunIn();
void formatArrayBraces(BraceType braceType, bool isOpeningArrayBrace);
@@ -823,14 +832,14 @@ private: // functions
void fixOptionVariableConflicts();
void goForward(int i);
void isLineBreakBeforeClosingHeader();
void initContainer(vector<BraceType>*& container, vector<BraceType>* value);
void initContainer(std::vector<BraceType>*& container, std::vector<BraceType>* value);
void initNewLine();
void padObjCMethodColon();
void padObjCMethodPrefix();
void padObjCParamType();
void padObjCReturnType();
void padOperators(const string* newOperator);
void padParens();
void padOperators(const std::string* newOperator);
void padParensOrBrackets(char openDelim, char closeDelim, bool shouldPadParensOutside, bool shouldPadParensInside, bool shouldUnPadParens, bool shouldPadFirstParen);
void processPreprocessor();
void resetEndOfStatement();
void setAttachClosingBraceMode(bool state);
@@ -839,45 +848,45 @@ private: // functions
void trimContinuationLine();
void updateFormattedLineSplitPointsPointerOrReference(size_t index);
size_t findFormattedLineSplitPoint() const;
size_t findNextChar(const string& line, char searchChar, int searchStart = 0) const;
const string* checkForHeaderFollowingComment(const string& firstLine) const;
const string* getFollowingOperator() const;
string getPreviousWord(const string& line, int currPos) const;
string peekNextText(const string& firstLine,
size_t findNextChar(const std::string& line, char searchChar, int searchStart = 0) const;
const std::string* checkForHeaderFollowingComment(const std::string& firstLine) const;
const std::string* getFollowingOperator() const;
std::string getPreviousWord(const std::string& line, int currPos) const;
std::string peekNextText(const std::string& firstLine,
bool endOnEmptyLine = false,
const shared_ptr<ASPeekStream>& streamArg = nullptr) const;
const std::shared_ptr<ASPeekStream>& streamArg = nullptr) const;
private: // variables
int formatterFileType;
vector<const string*>* headers;
vector<const string*>* nonParenHeaders;
vector<const string*>* preDefinitionHeaders;
vector<const string*>* preCommandHeaders;
vector<const string*>* operators;
vector<const string*>* assignmentOperators;
vector<const string*>* castOperators;
vector<const pair<const string, const string>* >* indentableMacros; // for ASEnhancer
std::vector<const std::string*>* headers;
std::vector<const std::string*>* nonParenHeaders;
std::vector<const std::string*>* preDefinitionHeaders;
std::vector<const std::string*>* preCommandHeaders;
std::vector<const std::string*>* operators;
std::vector<const std::string*>* assignmentOperators;
std::vector<const std::string*>* castOperators;
std::vector<const std::pair<const std::string, const std::string>* >* indentableMacros; // for ASEnhancer
ASSourceIterator* sourceIterator;
ASEnhancer* enhancer;
vector<const string*>* preBraceHeaderStack;
vector<BraceType>* braceTypeStack;
vector<int>* parenStack;
vector<bool>* structStack;
vector<bool>* questionMarkStack;
std::vector<const std::string*>* preBraceHeaderStack;
std::vector<BraceType>* braceTypeStack;
std::vector<int>* parenStack;
std::vector<bool>* structStack;
std::vector<bool>* questionMarkStack;
string currentLine;
string formattedLine;
string readyFormattedLine;
string verbatimDelimiter;
const string* currentHeader;
std::string currentLine;
std::string formattedLine;
std::string readyFormattedLine;
std::string verbatimDelimiter;
const std::string* currentHeader;
char currentChar;
char previousChar;
char previousNonWSChar;
char previousCommandChar;
char quoteChar;
streamoff preprocBlockEnd;
std::streamoff preprocBlockEnd;
int charNum;
int runInIndentChars;
int nextLineSpacePadNum;
@@ -887,6 +896,10 @@ private: // variables
int tabIncrementIn;
int templateDepth;
int squareBracketCount;
int parenthesesCount;
int squeezeEmptyLineNum;
int squeezeEmptyLineCount;
size_t checksumIn;
size_t checksumOut;
size_t currentLineFirstBraceNum; // first brace location on currentLine
@@ -955,6 +968,7 @@ private: // variables
bool isInClassInitializer;
bool isInQuote;
bool isInVerbatimQuote;
bool checkInterpolation;
bool haveLineContinuationChar;
bool isInQuoteContinuation;
bool isHeaderInMultiStatementLine;
@@ -1031,6 +1045,9 @@ private: // variables
bool shouldBreakReturnTypeDecl;
bool shouldAttachReturnType;
bool shouldAttachReturnTypeDecl;
bool shouldPadBracketsOutside;
bool shouldPadBracketsInside;
bool shouldUnPadBrackets;
bool needHeaderOpeningBrace;
bool shouldBreakLineAtNextChar;
bool shouldKeepLineUnbroken;
@@ -1075,11 +1092,11 @@ private: // inline functions
{ return currentLine.compare(charNum, strlen(sequence), sequence) == 0; }
// call ASBase::findHeader for the current character
const string* findHeader(const vector<const string*>* headers_)
const std::string* findHeader(const std::vector<const std::string*>* headers_)
{ return ASBase::findHeader(currentLine, charNum, headers_); }
// call ASBase::findOperator for the current character
const string* findOperator(const vector<const string*>* operators_)
const std::string* findOperator(const std::vector<const std::string*>* operators_)
{ return ASBase::findOperator(currentLine, charNum, operators_); }
}; // Class ASFormatter
@@ -1087,8 +1104,8 @@ private: // inline functions
// astyle namespace global declarations
//-----------------------------------------------------------------------------
// sort comparison functions for ASResource
bool sortOnLength(const string* a, const string* b);
bool sortOnName(const string* a, const string* b);
bool sortOnLength(const std::string* a, const std::string* b);
bool sortOnName(const std::string* a, const std::string* b);
} // namespace astyle
+876 -756
View File
File diff suppressed because it is too large Load Diff
+90 -90
View File
@@ -110,29 +110,29 @@ public: // function declarations
~ASStreamIterator() override;
bool getLineEndChange(int lineEndFormat) const;
int getStreamLength() const override;
string nextLine(bool emptyLineWasDeleted) override;
string peekNextLine() override;
std::string nextLine(bool emptyLineWasDeleted) override;
std::string peekNextLine() override;
void peekReset() override;
void saveLastInputLine();
streamoff tellg() override;
std::streamoff tellg() override;
private:
T* inStream; // pointer to the input stream
string buffer; // current input line
string prevBuffer; // previous input line
string outputEOL; // next output end of line char
std::string buffer; // current input line
std::string prevBuffer; // previous input line
std::string outputEOL; // next output end of line char
int eolWindows; // number of Windows line endings, CRLF
int eolLinux; // number of Linux line endings, LF
int eolMacOld; // number of old Mac line endings. CR
streamoff streamLength; // length of the input file stream
streamoff peekStart; // starting position for peekNextLine
std::streamoff streamLength; // length of the input file stream
std::streamoff peekStart; // starting position for peekNextLine
bool prevLineDeleted; // the previous input line was deleted
public: // inline functions
bool compareToInputBuffer(const string& nextLine_) const
bool compareToInputBuffer(const std::string& nextLine_) const
{ return (nextLine_ == prevBuffer); }
const string& getOutputEOL() const { return outputEOL; }
streamoff getPeekStart() const override { return peekStart; }
const std::string& getOutputEOL() const { return outputEOL; }
std::streamoff getPeekStart() const override { return peekStart; }
bool hasMoreLines() const override { return !inStream->eof(); }
};
@@ -179,28 +179,28 @@ public:
#else
ASOptions(ASFormatter& formatterArg, ASConsole& consoleArg);
#endif
string getOptionErrors() const;
void importOptions(stringstream& in, vector<string>& optionsVector);
bool parseOptions(vector<string>& optionsVector, const string& errorInfo);
std::string getOptionErrors() const;
void importOptions(std::stringstream& in, std::vector<std::string>& optionsVector);
bool parseOptions(std::vector<std::string>& optionsVector, const std::string& errorInfo);
private:
// variables
ASFormatter& formatter;
stringstream optionErrors; // option error messages
std::stringstream optionErrors; // option error messages
#ifndef ASTYLE_LIB
ASConsole& console; // DO NOT USE for ASTYLE_LIB
#endif
// functions
string getParam(const string& arg, const char* op);
string getParam(const string& arg, const char* op1, const char* op2);
bool isOption(const string& arg, const char* op);
bool isOption(const string& arg, const char* op1, const char* op2);
void isOptionError(const string& arg, const string& errorInfo);
bool isParamOption(const string& arg, const char* option);
bool isParamOption(const string& arg, const char* option1, const char* option2);
void parseOption(const string& arg, const string& errorInfo);
bool parseOptionContinued(const string& arg, const string& errorInfo);
std::string getParam(const std::string& arg, const char* op);
std::string getParam(const std::string& arg, const char* op1, const char* op2);
bool isOption(const std::string& arg, const char* op);
bool isOption(const std::string& arg, const char* op1, const char* op2);
void isOptionError(const std::string& arg, const std::string& errorInfo);
bool isParamOption(const std::string& arg, const char* option);
bool isParamOption(const std::string& arg, const char* option1, const char* option2);
void parseOption(const std::string& arg, const std::string& errorInfo);
bool parseOptionContinued(const std::string& arg, const std::string& errorInfo);
};
#ifndef ASTYLE_LIB
@@ -215,7 +215,7 @@ private: // variables
ASFormatter& formatter; // reference to the ASFormatter object
ASEncoding encode; // file encoding conversion
ASLocalizer localizer; // language translation
ostream* errorStream; // direct error messages to cerr or cout
std::ostream* errorStream; // direct error messages to cerr or std::cout
// command line options
bool isRecursive; // recursive option
bool isDryRun; // dry-run option
@@ -237,38 +237,38 @@ private: // variables
bool lineEndsMixed; // output has mixed line ends
int linesOut; // number of output lines
string outputEOL; // current line end
string prevEOL; // previous line end
string astyleExePath; // absolute executable path and name from argv[0]
string optionFileName; // file path and name of the options file
string origSuffix; // suffix= option
string projectOptionFileName; // file path and name of the project options file
string stdPathIn; // path to input from stdin=
string stdPathOut; // path to output from stdout=
string targetDirectory; // path to the directory being processed
string targetFilename; // file name being processed
std::string outputEOL; // current line end
std::string prevEOL; // previous line end
std::string astyleExePath; // absolute executable path and name from argv[0]
std::string optionFileName; // file path and name of the options file
std::string origSuffix; // suffix= option
std::string projectOptionFileName; // file path and name of the project options file
std::string stdPathIn; // path to input from stdin=
std::string stdPathOut; // path to output from stdout=
std::string targetDirectory; // path to the directory being processed
std::string targetFilename; // file name being processed
vector<string> excludeVector; // exclude from wildcard hits
vector<bool> excludeHitsVector; // exclude flags for error reporting
vector<string> fileNameVector; // file paths and names from the command line
vector<string> optionsVector; // options from the command line
vector<string> projectOptionsVector;// project options from the project options file
vector<string> fileOptionsVector; // options from the options file
vector<string> fileName; // files to be processed including path
std::vector<std::string> excludeVector; // exclude from wildcard hits
std::vector<bool> excludeHitsVector; // exclude flags for error reporting
std::vector<std::string> fileNameVector; // file paths and names from the command line
std::vector<std::string> optionsVector; // options from the command line
std::vector<std::string> projectOptionsVector;// project options from the project options file
std::vector<std::string> fileOptionsVector; // options from the options file
std::vector<std::string> fileName; // files to be processed including path
public: // functions
explicit ASConsole(ASFormatter& formatterArg);
ASConsole(const ASConsole&) = delete;
ASConsole& operator=(ASConsole const&) = delete;
void convertLineEnds(ostringstream& out, int lineEnd);
void convertLineEnds(std::ostringstream& out, int lineEnd);
FileEncoding detectEncoding(const char* data, size_t dataSize) const;
void error() const;
void error(const char* why, const char* what) const;
void formatCinToCout();
vector<string> getArgvOptions(int argc, char** argv);
std::vector<std::string> getArgvOptions(int argc, char** argv);
bool fileExists(const char* file) const;
bool fileNameVectorIsEmpty() const;
ostream* getErrorStream() const;
std::ostream* getErrorStream() const;
bool getFilesAreIdentical() const;
int getFilesFormatted() const;
bool getIgnoreExcludeErrors() const;
@@ -281,19 +281,19 @@ public: // functions
bool getLineEndsMixed() const;
bool getNoBackup() const;
bool getPreserveDate() const;
string getLanguageID() const;
string getNumberFormat(int num, size_t lcid = 0) const;
string getNumberFormat(int num, const char* groupingArg, const char* separator) const;
string getOptionFileName() const;
string getOrigSuffix() const;
string getProjectOptionFileName() const;
string getStdPathIn() const;
string getStdPathOut() const;
void getTargetFilenames(string& targetFilename_, vector<string>& targetFilenameVector) const;
std::string getLanguageID() const;
std::string getNumberFormat(int num, size_t lcid = 0) const;
std::string getNumberFormat(int num, const char* groupingArg, const char* separator) const;
std::string getOptionFileName() const;
std::string getOrigSuffix() const;
std::string getProjectOptionFileName() const;
std::string getStdPathIn() const;
std::string getStdPathOut() const;
void getTargetFilenames(std::string& targetFilename_, std::vector<std::string>& targetFilenameVector) const;
void processFiles();
void processOptions(const vector<string>& argvOptions);
void processOptions(const std::vector<std::string>& argvOptions);
void setBypassBrowserOpen(bool state);
void setErrorStream(ostream* errStreamPtr);
void setErrorStream(std::ostream* errStreamPtr);
void setIgnoreExcludeErrors(bool state);
void setIgnoreExcludeErrorsAndDisplay(bool state);
void setIsDryRun(bool state);
@@ -302,54 +302,54 @@ public: // functions
void setIsRecursive(bool state);
void setIsVerbose(bool state);
void setNoBackup(bool state);
void setOptionFileName(const string& name);
void setOrigSuffix(const string& suffix);
void setOptionFileName(const std::string& name);
void setOrigSuffix(const std::string& suffix);
void setPreserveDate(bool state);
void setProjectOptionFileName(const string& optfilepath);
void setStdPathIn(const string& path);
void setStdPathOut(const string& path);
void standardizePath(string& path, bool removeBeginningSeparator = false) const;
bool stringEndsWith(const string& str, const string& suffix) const;
void updateExcludeVector(const string& suffixParam);
vector<string> getExcludeVector() const;
vector<bool> getExcludeHitsVector() const;
vector<string> getFileNameVector() const;
vector<string> getOptionsVector() const;
vector<string> getProjectOptionsVector() const;
vector<string> getFileOptionsVector() const;
vector<string> getFileName() const;
void setProjectOptionFileName(const std::string& optfilepath);
void setStdPathIn(const std::string& path);
void setStdPathOut(const std::string& path);
void standardizePath(std::string& path, bool removeBeginningSeparator = false) const;
bool stringEndsWith(const std::string& str, const std::string& suffix) const;
void updateExcludeVector(const std::string& suffixParam);
std::vector<std::string> getExcludeVector() const;
std::vector<bool> getExcludeHitsVector() const;
std::vector<std::string> getFileNameVector() const;
std::vector<std::string> getOptionsVector() const;
std::vector<std::string> getProjectOptionsVector() const;
std::vector<std::string> getFileOptionsVector() const;
std::vector<std::string> getFileName() const;
private: // functions
void correctMixedLineEnds(ostringstream& out);
void formatFile(const string& fileName_);
string getParentDirectory(const string& absPath) const;
string findProjectOptionFilePath(const string& fileName_) const;
string getCurrentDirectory(const string& fileName_) const;
void getFileNames(const string& directory, const vector<string>& wildcards);
void getFilePaths(const string& filePath);
string getFullPathName(const string& relativePath) const;
string getHtmlInstallPrefix() const;
string getParam(const string& arg, const char* op);
bool isHomeOrInvalidAbsPath(const string& absPath) const;
void correctMixedLineEnds(std::ostringstream& out);
void formatFile(const std::string& fileName_);
std::string getParentDirectory(const std::string& absPath) const;
std::string findProjectOptionFilePath(const std::string& fileName_) const;
std::string getCurrentDirectory(const std::string& fileName_) const;
void getFileNames(const std::string& directory, const std::vector<std::string>& wildcards);
void getFilePaths(const std::string& filePath);
std::string getFullPathName(const std::string& relativePath) const;
std::string getHtmlInstallPrefix() const;
std::string getParam(const std::string& arg, const char* op);
bool isHomeOrInvalidAbsPath(const std::string& absPath) const;
void initializeOutputEOL(LineEndFormat lineEndFormat);
bool isOption(const string& arg, const char* op);
bool isOption(const string& arg, const char* a, const char* b);
bool isParamOption(const string& arg, const char* option);
bool isPathExclued(const string& subPath);
bool isOption(const std::string& arg, const char* op);
bool isOption(const std::string& arg, const char* a, const char* b);
bool isParamOption(const std::string& arg, const char* option);
bool isPathExclued(const std::string& subPath);
void launchDefaultBrowser(const char* filePathIn = nullptr) const;
void printHelp() const;
void printMsg(const char* msg, const string& data) const;
void printMsg(const char* msg, const std::string& data) const;
void printSeparatingLine() const;
void printVerboseHeader() const;
void printVerboseStats(clock_t startTime) const;
FileEncoding readFile(const string& fileName_, stringstream& in) const;
FileEncoding readFile(const std::string& fileName_, std::stringstream& in) const;
void removeFile(const char* fileName_, const char* errMsg) const;
void renameFile(const char* oldFileName, const char* newFileName, const char* errMsg) const;
void setOutputEOL(LineEndFormat lineEndFormat, const string& currentEOL);
void setOutputEOL(LineEndFormat lineEndFormat, const std::string& currentEOL);
void sleep(int seconds) const;
int waitForRemove(const char* newFileName) const;
int wildcmp(const char* wild, const char* data) const;
void writeFile(const string& fileName_, FileEncoding encoding, ostringstream& out) const;
void writeFile(const std::string& fileName_, FileEncoding encoding, std::ostringstream& out) const;
#ifdef _WIN32
void displayLastError();
#endif
+3 -3
View File
@@ -523,10 +523,10 @@ def get_project_filepaths(project):
# filepaths.append(test_directory + "/MonoDevelop/src/*.cs")
elif project == LIBSBASE:
if USE_MULTIPLE_EXTENSIONS:
filepaths.append(test_directory + "/libsBase/*.m,*.h")
filepaths.append(test_directory + "/libsBase/Source/*.m,*.h")
else:
filepaths.append(test_directory + "/libsBase/*.m")
filepaths.append(test_directory + "/libsBase/*.h")
filepaths.append(test_directory + "/libsBase/Source/*.m")
filepaths.append(test_directory + "/libsBase/Source/*.h")
elif project == SCITE:
if USE_MULTIPLE_EXTENSIONS:
filepaths.append(test_directory + "/SciTE/*.cxx,*.h")
+2 -2
View File
@@ -34,10 +34,10 @@ import libtest
# SHARPDEVELOP # C# - Compile on Windows only
# SHARPMAIN # C# - 1000 files from SharpDevelop
# TESTPROJECT
__project = libastyle.LSOF
__project = libastyle.LIBSBASE
# select OPT0 thru OPT3, or use customized options
__options = libastyle.OPT4
__options = libastyle.OPT2
# options_x are for BOTH executables
__options_x = ""
+10
View File
@@ -0,0 +1,10 @@
cmake_minimum_required(VERSION 3.8)
project(astyle CXX)
add_subdirectory( AStyle )
# Only attempt to build wxWidgets if found
find_package(wxWidgets)
if (wxWidgets_FOUND)
add_subdirectory( AStyleWx )
endif ()