uncrustify-trinity: updated based on upstream version 0.78.1

Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
pull/13/head
Michele Calgaro 5 months ago
parent c0a6f1b84c
commit b67b7f2b78
Signed by: MicheleC
GPG Key ID: 2A75B7CA8ADED5CF

@ -1,189 +0,0 @@
Author:
2005 - 2016 : Ben Gardner
Maintenance:
Guy Maurel
Michele Calgaro
Matthew Woehlke
until 2022-11-22:
Other collaborators:
Alan Fineberg
Alexander GQ Gerasiov
Alex Henrie
André Berg
Andrei Alexandrescu
Andrey Starodubtsev
Anirban Pramanick
Antti Tapaninen
Arne Forlie
Arseniy Shestakov
asobhy
atauzki
Aurélien Gâteau
Benio
Ben Iofel
Ben Mayo
Beren Minor
Bi-Ruei, Chiu
Biswa96
Biswapriyo Nath
B. Kevin Hardman
Bogdan Popescu
Brandon Slack
Brecht Sanders
Brendan Long
Brian Kelley
CharlieYJH
Chris Lalancette
Clemens Rabe
Clint Lawrence
Code Able
Cody Schafer
Corentin Noël
Dandielo
Daniel Chumak
Daniele Bartolini
Dan Rose
Dave Lee
David Catmull
David E. O'Brien
David Lechner
David Schaefgen
Dirk Thomas
Dittrich, Rico
Dmitry Marakasov
Dmitry Povolotsky
Dmytro Povolotskyi
Dundar Göc
Dženan Zukić
Eism
Emerson Knapp
Emmanuel Christophe
epac-tom
Ethan Gao
Florin Pop
Frank J. T. Wojcik
Gary Ash
Ger Hobbelt
Hackerpilot
Hannes Schmidt
hghdev
Huang-Ming Huang
Husk3r
Ilya Lyubimov
Ingo Brückl
Ivan Nazarenko
Ivan Romanov
Jakub Lukasiewicz
Jakub Schmidtke
Jan Weiß
Jason
JavDevGames
Jeremy H
Jeremy T Hilliker
Jim Meyering
Jiri Hruska
jodi.the.tigger@gmail.com
Jody Hagins
Joel Ostraat
Joergen Ibsen
Johnny Oskarsson
Jonas Hurrelmann
Jorengarenar
Joshua Gross
Joshua Parker
Julian Picht
Kalle Raiskila
Keepun
Kevin Wong
krys
Laurent Tréguier
Lauri Kasanen
lbmaian
Leon Breedt
Lorenz Haas
Lykurg
Maciej Bogusz
Manning, James
Marco Stephan
Marcus Nilsson
Marek Fort
Marius Zwicker
Mark Stegeman
Markus Geimer
Martin Delille
Martin Simonovsky
Martin Storsjo
Matthew McDole
Matthew Woehlke
Maxim Mikityanskiy
Max Smolens
MeXx
Michaël Peeters
Michele Calgaro
Mihai Popescu
Mike
Mike Gelfand
Mirko König
mjbogusz
MrTheMake
Nate
neok-m4700
Nico Decker
Oleg Liatte
Oleg Smolsky
Owen Rudge
Pat Notz
Patrick Rohr
Paul Cercueil
Paul Smith
Pavel Geiger
Paweł Benetkiewicz
PerfectCarl
Peter Bruin
Peter Hartley
Peter Jonas
Peter Kolbus
Peter Tao
Peter Waller
Piet Van Reepingen
PMheart
Randolph R. Settgast
Randolph Settgast
RaveTheTadpole
Ray Strode
Richard Maxwell
Ricky Lopez
Roland Schulz
Roman Gordienko
Ryan Maxwell
Samish Chandra Kolli
Samish Kolli
Scott Bilas
Sebastian Andersson
Sebastian Bilek
S. Gilles
Shazron Abdullah
Siddharth Kannan
Slávek Banko
Spark-NF
Stefan Koch
Stefan Nunninger
Stephen Gilles
Steven Lee
Suhaib Ishaque
t-bltg
Tim Hütz
Timotheus Pokorra
Todd Richmond
Twigz
U-RDEC\ParkerJS
Vadim Zeitlin
Viktor Kireev
Vincent Rouillé
Vojtěch Balík
Vyacheslav Shegai
Waldir Pimenta
Yannick Bühler
Yegor Yefremov

@ -1,560 +0,0 @@
cmake_minimum_required(VERSION 3.5)
project(uncrustify)
if("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
message(FATAL_ERROR "
In-source builds are not supported, please remove the `CMakeFiles'
folder and `CMakeCache.txt', and create a folder for the build:
mkdir build; cd build; cmake ..
")
endif()
include(CheckCXXCompilerFlag)
include(CheckIncludeFileCXX)
include(CheckSymbolExists)
include(CheckCXXSymbolExists)
include(CheckTypeSize)
include(CTest)
if( ${CMAKE_VERSION} VERSION_LESS "3.12" )
find_package( PythonInterp )
if( NOT PYTHON_EXECUTABLE )
message( FATAL_ERROR "Python is required, but was not found on your system" )
endif()
else( )
find_package(Python3 REQUIRED)
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
endif()
#
# Check compiler flags
#
if(MSVC)
add_definitions(/D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /wd4267)
add_definitions(/utf-8)
elseif(CMAKE_COMPILER_IS_GNUCXX)
set(gcc_warning_flags
-Wall
-Wextra
-Wshadow
-Wpointer-arith
-Wcast-qual
-Wcast-align
-Wc++11-extensions
)
foreach(flag ${gcc_warning_flags})
string(REGEX REPLACE "[^a-zA-Z0-9]+" "_" flag_var "CXXFLAG_${flag}")
CHECK_CXX_COMPILER_FLAG("${flag}" ${flag_var})
if(${flag_var})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
endif()
unset(flag_var)
endforeach()
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-field-initializers")
endif()
unset(gcc_warning_flags)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-deprecated-declarations")
endif()
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
if(ENABLE_SANITIZER)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O1 -fno-omit-frame-pointer -fsanitize=${ENABLE_SANITIZER}")
endif()
#set(UNCRUSTIFY_SEPARATE_TESTS "True")
include_directories(
${PROJECT_BINARY_DIR}/src
${PROJECT_SOURCE_DIR}/src
${PROJECT_BINARY_DIR}
)
#
# Determine config
#
if(WIN32)
# Windows builds use src/windows_compat.h instead of config.h
else()
# Generate config.h
set(avail_headers "")
set(headers
inttypes.h
memory.h
stdint.h
stdlib.h
strings.h
string.h
sys/stat.h
sys/types.h
unistd.h
utime.h
)
foreach(header ${headers})
string(TOUPPER "${header}" header_uc)
string(REGEX REPLACE "[^A-Z0-9_]" "_" include_var "HAVE_${header_uc}")
check_include_file_cxx("${header}" ${include_var})
if(${include_var})
list(APPEND avail_headers ${header})
endif()
unset(include_var)
unset(header_uc)
endforeach()
unset(headers)
check_include_file("stdbool.h" HAVE_STDBOOL_H)
set(symbols
memset
strcasecmp
strchr
strdup
strerror
strtol
strtoul
)
foreach(symbol ${symbols})
string(TOUPPER "${symbol}" symbol_uc)
string(REGEX REPLACE "[^A-Z0-9_]" "_" symbol_var "HAVE_${symbol_uc}")
check_cxx_symbol_exists("${symbol}" "${avail_headers}" ${symbol_var})
unset(symbol_var)
unset(symbol_uc)
endforeach()
unset(symbols)
unset(avail_headers)
check_type_size(_Bool _BOOL LANGUAGE C)
configure_file(src/config.h.in config.h @ONLY)
endif()
#
# Generate uncrustify_version.h
#
set(UNCRUSTIFY_VERSION "0.78.0_f")
option(NoGitVersionString "Do not use make_version.py and git to build a version string" OFF)
if(NoGitVersionString)
configure_file(src/uncrustify_version.h.in uncrustify_version.h @ONLY)
add_custom_target(generate_version_header) # Dummy target
else()
# Add target to generate version header;
# do this every build to ensure git SHA is up to date
add_custom_target(generate_version_header
BYPRODUCTS "${PROJECT_BINARY_DIR}/uncrustify_version.h"
COMMAND
${CMAKE_COMMAND}
-D PYTHON_EXECUTABLE:STRING=${PYTHON_EXECUTABLE}
-D SOURCE_DIR:PATH="${PROJECT_SOURCE_DIR}"
-D INPUT:PATH="${PROJECT_SOURCE_DIR}/src/uncrustify_version.h.in"
-D OUTPUT:PATH="${PROJECT_BINARY_DIR}/uncrustify_version.h"
-D UNCRUSTIFY_VERSION:STRING="${UNCRUSTIFY_VERSION}"
-P ${PROJECT_SOURCE_DIR}/cmake/GenerateVersionHeader.cmake
COMMENT "Generating version header"
)
set_source_files_properties(
"${PROJECT_BINARY_DIR}/uncrustify_version.h"
PROPERTIES GENERATED TRUE
)
endif()
#
# Generate token_names.h
#
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/token_names.h"
COMMAND ${CMAKE_COMMAND}
"-Dsrc_file=${PROJECT_SOURCE_DIR}/src/token_enum.h"
"-Ddst_file=${CMAKE_CURRENT_BINARY_DIR}/token_names.h"
-P "${PROJECT_SOURCE_DIR}/cmake/GenerateTokenNames.cmake"
MAIN_DEPENDENCY src/token_enum.h
COMMENT "Generating token_names.h"
)
# Set up commands for generated source files
function(py_gen OUTPUT SCRIPT INPUT)
set(out "${PROJECT_BINARY_DIR}/src/${OUTPUT}")
set(deps "${PROJECT_SOURCE_DIR}/src/${INPUT}")
get_filename_component(outdir "${out}" DIRECTORY)
foreach(arg IN LISTS ARGN)
if (IS_ABSOLUTE "${arg}")
list(APPEND deps "${arg}")
else()
list(APPEND deps "${PROJECT_SOURCE_DIR}/src/${arg}")
endif()
endforeach()
add_custom_command(
OUTPUT "${out}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${outdir}"
COMMAND ${PYTHON_EXECUTABLE}
"${PROJECT_SOURCE_DIR}/scripts/${SCRIPT}"
"${out}"
${deps}
DEPENDS ${deps} "${PROJECT_SOURCE_DIR}/scripts/${SCRIPT}"
MAIN_DEPENDENCY src/${INPUT}
COMMENT "Generating ${OUTPUT}"
)
endfunction()
py_gen(punctuator_table.h
make_punctuator_table.py
symbols_table.h
)
py_gen(options.cpp
make_options.py
options.h
options.cpp.in
)
py_gen(option_enum.h
make_option_enum.py
option.h
option_enum.h.in
)
py_gen(option_enum.cpp
make_option_enum.py
option.h
option_enum.cpp.in
)
py_gen(../etc/uncrustify.xml
make_katehl.py
../etc/uncrustify.xml.in
"${PROJECT_BINARY_DIR}/uncrustify_version.h"
options.h
option.h
token_enum.h
)
#
# Uncrustify
#
set(uncrustify_sources
src/align_add.cpp
src/align_asm_colon.cpp
src/align_assign.cpp
src/align_braced_init_list.cpp
src/align.cpp
src/align_eigen_comma_init.cpp
src/align_func_params.cpp
src/align_func_proto.cpp
src/align_init_brace.cpp
src/align_left_shift.cpp
src/align_log_al.cpp
src/align_nl_cont.cpp
src/align_oc_decl_colon.cpp
src/align_oc_msg_colons.cpp
src/align_oc_msg_spec.cpp
src/align_preprocessor.cpp
src/align_same_func_call_params.cpp
src/align_stack.cpp
src/align_struct_initializers.cpp
src/align_tab_column.cpp
src/align_tools.cpp
src/align_trailing_comments.cpp
src/align_typedefs.cpp
src/align_var_def_brace.cpp
src/args.cpp
src/backup.cpp
src/brace_cleanup.cpp
src/braces.cpp
src/calculate_closing_brace_position.cpp
src/change_int_types.cpp
src/check_template.cpp
src/chunk.cpp
src/ChunkStack.cpp
src/combine.cpp
src/combine_fix_mark.cpp
src/combine_labels.cpp
src/combine_tools.cpp
src/combine_skip.cpp
src/compat_posix.cpp
src/compat_win32.cpp
src/cs_top_is_question.cpp
src/detect.cpp
src/enum_cleanup.cpp
src/EnumStructUnionParser.cpp
src/EnumStructUnionParser.h
src/flag_braced_init_list.cpp
src/flag_decltype.cpp
src/flag_parens.cpp
src/indent.cpp
src/keywords.cpp
src/lang_pawn.cpp
src/language_names.cpp
src/language_tools.cpp
src/logger.cpp
src/logmask.cpp
src/log_rules.cpp
src/mark_functor.cpp
src/mark_question_colon.cpp
src/md5.cpp
src/newlines.cpp
src/option.cpp
src/options_for_QT.cpp
src/output.cpp
src/parameter_pack_cleanup.cpp
src/parens.cpp
src/parent_for_pp.cpp
src/parsing_frame.cpp
src/parsing_frame_stack.cpp
src/pragma_cleanup.cpp
src/pcf_flags.cpp
src/punctuators.cpp
src/quick_align_again.cpp
src/remove_duplicate_include.cpp
src/remove_extra_returns.cpp
src/rewrite_infinite_loops.cpp
src/semicolons.cpp
src/sorting.cpp
src/space.cpp
src/tokenize_cleanup.cpp
src/tokenize.cpp
src/uncrustify.cpp
src/uncrustify_emscripten.cpp
src/uncrustify_types.cpp
src/unc_ctype.cpp
src/unc_text.cpp
src/unc_tools.cpp
src/unicode.cpp
src/universalindentgui.cpp
src/width.cpp
${PROJECT_BINARY_DIR}/src/options.cpp
${PROJECT_BINARY_DIR}/src/option_enum.cpp
)
set(uncrustify_headers
src/add_space_table.h
src/align_add.h
src/align_asm_colon.h
src/align_assign.h
src/align_braced_init_list.h
src/align_func_params.h
src/align_func_proto.h
src/align.h
src/align_eigen_comma_init.h
src/align_init_brace.h
src/align_left_shift.h
src/align_log_al.h
src/align_nl_cont.h
src/align_oc_decl_colon.h
src/align_oc_msg_colons.h
src/align_oc_msg_spec.h
src/align_preprocessor.h
src/align_same_func_call_params.h
src/align_stack.h
src/align_struct_initializers.h
src/align_tab_column.h
src/align_tools.h
src/align_trailing_comments.h
src/align_typedefs.h
src/align_var_def_brace.h
src/args.h
src/backup.h
src/base_types.h
src/brace_cleanup.h
src/braces.h
src/calculate_closing_brace_position.h
src/change_int_types.h
src/char_table.h
src/check_template.h
src/chunk.h
src/ChunkStack.h
src/combine.h
src/combine_fix_mark.h
src/combine_labels.h
src/combine_skip.h
src/combine_tools.h
src/compat.h
src/cs_top_is_question.h
src/detect.h
src/enum_cleanup.h
src/enum_flags.h
src/error_types.h
src/flag_braced_init_list.h
src/flag_decltype.h
src/flag_parens.h
src/indent.h
src/keywords.h
src/lang_pawn.h
src/language_names.h
src/language_tools.h
src/ListManager.h
src/logger.h
src/log_levels.h
src/logmask.h
src/log_rules.h
src/mark_functor.h
src/mark_question_colon.h
src/md5.h
src/newlines.h
src/option.h
src/options_for_QT.h
src/options.h
src/output.h
src/parameter_pack_cleanup.h
src/parens.h
src/parent_for_pp.h
src/parsing_frame.h
src/parsing_frame_stack.h
src/pragma_cleanup.h
src/pcf_flags.h
src/prototypes.h
src/punctuators.h
src/quick_align_again.h
src/remove_duplicate_include.h
src/remove_extra_returns.h
src/rewrite_infinite_loops.h
src/semicolons.h
src/sorting.h
src/space.h
src/symbols_table.h
src/token_enum.h
src/tokenize_cleanup.h
src/tokenize.h
src/unc_ctype.h
src/uncrustify.h
src/uncrustify_limits.h
src/uncrustify_types.h
src/unc_text.h
src/unc_tools.h
src/unicode.h
src/universalindentgui.h
src/width.h
src/windows_compat.h
${PROJECT_BINARY_DIR}/src/option_enum.h
${PROJECT_BINARY_DIR}/uncrustify_version.h
)
set(uncrustify_docs
"${PROJECT_SOURCE_DIR}/AUTHORS"
"${PROJECT_SOURCE_DIR}/BUGS"
"${PROJECT_SOURCE_DIR}/ChangeLog"
"${PROJECT_SOURCE_DIR}/COPYING"
"${PROJECT_SOURCE_DIR}/HELP"
"${PROJECT_SOURCE_DIR}/README.md"
)
add_executable(uncrustify ${uncrustify_sources} ${uncrustify_headers})
add_dependencies(uncrustify generate_version_header)
set_property(TARGET uncrustify APPEND PROPERTY
COMPILE_DEFINITIONS $<$<OR:$<CONFIG:Debug>,$<CONFIG:>>:DEBUG>
)
#
# Generate uncrustify.1
#
configure_file(man/uncrustify.1.in uncrustify.1 @ONLY)
#
# Generate uncrustify.xml (katepart highlighting file)
#
add_custom_target(katehl
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/etc/uncrustify.xml
)
#
# Tests
#
if(BUILD_TESTING)
enable_testing()
add_subdirectory(tests)
endif()
#
# Coverage
#
OPTION(ENABLE_CODECOVERAGE "Enable code coverage testing support")
if(ENABLE_CODECOVERAGE)
set(CODECOVERAGE_DEPENDS uncrustify)
include(${CMAKE_SOURCE_DIR}/cmake/CodeCoverage.cmake)
endif(ENABLE_CODECOVERAGE)
#
# Build command to run uncrustify on its own sources
#
add_custom_target(format-sources)
foreach(source IN LISTS uncrustify_sources uncrustify_headers)
get_filename_component(source_name ${source} NAME)
add_custom_target(format-${source_name}
COMMAND uncrustify
-c forUncrustifySources.cfg
-lCPP --no-backup ${source}
COMMENT "Formatting ${source}"
WORKING_DIRECTORY ${uncrustify_SOURCE_DIR}
)
add_dependencies(format-sources format-${source_name})
endforeach()
#
# Package
#
set(CPACK_PACKAGE_NAME "uncrustify")
set(CPACK_PACKAGE_VERSION "${UNCRUSTIFY_VERSION}")
set(CPACK_PACKAGE_VENDOR "Ben Gardner")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Code beautifier")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/README.md")
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/COPYING")
set(CPACK_RESOURCE_FILE_README "${PROJECT_SOURCE_DIR}/README.md")
set(CPACK_SOURCE_IGNORE_FILES "/\\\\.git/;/\\\\.hg/;/tests/results/;/build.*/")
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY FALSE)
set(CPACK_GENERATOR "ZIP")
endif()
include(CPack)
#
# Install
#
if(MSVC)
install(TARGETS uncrustify DESTINATION ".")
install(FILES ${uncrustify_docs}
DESTINATION "."
)
install(FILES "${PROJECT_SOURCE_DIR}/documentation/htdocs/index.html"
DESTINATION "doc"
)
install(DIRECTORY "${PROJECT_SOURCE_DIR}/etc/"
DESTINATION "cfg"
FILES_MATCHING PATTERN "*.cfg"
)
else()
include(GNUInstallDirs)
install(TARGETS uncrustify
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/uncrustify.1"
DESTINATION "${CMAKE_INSTALL_MANDIR}/man1"
)
install(DIRECTORY "${PROJECT_SOURCE_DIR}/etc/"
DESTINATION "${CMAKE_INSTALL_DOCDIR}/examples"
FILES_MATCHING PATTERN "*.cfg"
)
install(FILES ${uncrustify_docs}
DESTINATION "${CMAKE_INSTALL_DOCDIR}"
)
endif()
#
# Uninstall
#
get_directory_property(hasParent PARENT_DIRECTORY)
if(NOT hasParent)
add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${PROJECT_SOURCE_DIR}/cmake/uninstall.cmake")
endif()
#
# add to build the compile_commands.json file, to be used by clang-tidy
#
set(CMAKE_EXPORT_COMPILE_COMMANDS "ON" CACHE BOOL "to create the compile_commands.json file" FORCE)

File diff suppressed because it is too large Load Diff

@ -1,395 +0,0 @@
[![AppVeyor](https://img.shields.io/appveyor/ci/uncrustify/uncrustify/master.svg?style=flat-square&label=Windows)](https://ci.appveyor.com/project/uncrustify/uncrustify)
[![Coverage Status](https://coveralls.io/repos/github/uncrustify/uncrustify/badge.svg?branch=master)](https://coveralls.io/github/uncrustify/uncrustify?branch=master)
<a href="#"><img src="https://img.shields.io/badge/C++-11-blue.svg?style=flat-square"></a>
[![Conan Center](https://shields.io/conan/v/uncrustify)](https://conan.io/center/uncrustify)
---------------------------
# Uncrustify
A source code beautifier for C, C++, C#, Objective-C, D, Java, Pawn and Vala.
## Features
* Highly configurable - 850 configurable options as of version 0.78.0
- <details><summary>add/remove spaces</summary>
- `sp_before_sparen`: _Add or remove space before '(' of 'if', 'for', 'switch', 'while', etc._
- `sp_compare`: _Add or remove space around compare operator '<', '>', '==', etc_
</details>
- <details><summary>add/remove newlines</summary>
- `nl_if_brace`: _Add or remove newline between 'if' and '{'_
- `nl_brace_while`: _Add or remove newline between '}' and 'while' of 'do' statement_
</details>
- <details><summary>add/remove blanklines</summary>
- `eat_blanks_before_close_brace`: _Whether to remove blank lines before '}'_
- `nl_max`: _The maximum consecutive newlines (3 = 2 blank lines)_
</details>
- <details><summary>indent code</summary>
- `indent_switch_case`: _indent_switch_case: Spaces to indent 'case' from 'switch'_
- `indent_class_colon`: _Whether to indent the stuff after a leading base class colon_
</details>
- <details><summary>align code</summary>
- `align_func_params`: _Align variable definitions in prototypes and functions_
- `align_struct_init_span`: _The span for aligning struct initializer values (0=don't align)_
</details>
- <details><summary>modify code</summary>
- `mod_full_brace_for`: _Add or remove braces on single-line 'for' statement_
- `mod_paren_on_return`: _Add or remove unnecessary paren on 'return' statement_
</details>
Here is an example [configuration file](https://raw.githubusercontent.com/uncrustify/uncrustify/master/documentation/htdocs/ben.cfg.txt),
and here is a [before](https://raw.githubusercontent.com/uncrustify/uncrustify/master/documentation/htdocs/examples/c-1.in.c)
and [after](https://raw.githubusercontent.com/uncrustify/uncrustify/master/documentation/htdocs/examples/c-1.out.c)
C source example.
That should give you a pretty good idea of what Uncrustify can do.
---------------------------------------------------------------------------
## Binaries
Pre compiled binaries for Windows can be downloaded [here](https://sourceforge.net/projects/uncrustify/files/).
## Build
[Python](https://www.python.org/) is an "interpreted high-level programming language for general-purpose programming", for this project it is needed to extend the capabilities of CMake.
[CMake](https://cmake.org/) is a tool that generates build systems
(Makefiles, Visual Studio project files, Xcode project files and others).
To generate a build system for Uncrustify using CMake on UNIX-like systems, create a
build folder and run CMake from it, making sure to specify Release mode:
```bash
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
```
Other systems may require other flags (e.g. `cmake -G Xcode ..` for Xcode).
Then use the build tools of your build system (in many cases this will
simply be `make`, but on Windows it could be MSBuild or Visual Studio).
Or use CMake to invoke it:
```bash
$ cmake --build . --config Release
```
If testing is enabled, CMake generates a `test` target, which you can
_build_ using your build system tools (usually `make test`). This can also
be invoked using CTest:
```bash
$ ctest -V -C Debug
```
There is also an `install` target, which can be used to install the
Uncrustify executable (typically `make install`).
### A note on CMake configurations
Some build systems are single-configuration, which means you specify the
build type when running CMake (by setting the `CMAKE_BUILD_TYPE`
variable), and the generated files then build that configuration.
An example of a single-configuration build system are Makefiles. You can
build the Release or Debug configurations of Uncrustify (from the build folder) with:
```bash
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make
```
or
```bash
$ cmake -DCMAKE_BUILD_TYPE=Debug ..
$ make
```
Other build systems are multi-configuration, which means you specify the
build type when building.
An example of a multi-configuration build system are Visual Studios project
files. When you open the project in Visual Studio, you can select which
configuration to build. You can also do this while building from the
command line with `cmake --build . --config Debug`.
## Bugs
Post any bugs to the issue tracker found on the projects GitHub page:
https://github.com/uncrustify/uncrustify/issues
Please include the following with your issue:
- a description of what is not working right
- input code sufficient to demonstrate the issue
- expected output code
- configuration options used to generate the output
More about this is in the [ISSUE_TEMPLATE](https://github.com/uncrustify/uncrustify/blob/master/.github/ISSUE_TEMPLATE)
### Known problems
[Look at the Wiki](https://github.com/uncrustify/uncrustify/wiki/Known-Problems)
## Which repositories have uncrustify?
[Look here](https://repology.org/metapackage/uncrustify/versions)
## Contribute
If you want to add a feature, fix a bug, or implement missing
functionality, feel free to do so! Patches are welcome!
Here are some areas that need attention:
- __Patches for Objective-C support__. We really need someone who knows
this language as it has more than plenty open issues. A good starting
point would be to integrate changes made in the
[Unity fork](https://github.com/Unity-Technologies/uncrustify/tree/fixes/c-oc-java)
- Test Java support and provide feedback (or patches!)
- Test Embedded SQL to see what works
- A logo of some sort
- Anything else that you want to do to make it better?
### A note about pull requests
Firstly take a look at the [CONTRIBUTING.md](https://github.com/uncrustify/uncrustify/blob/master/CONTRIBUTING.md)
Currently we have two continuous integration systems that test your PRs,
TravisCI and Appveyor.
Tested are the test cases, the formatting of the code base and
the output of the command line options.
Test cases can be found in the `tests/` directory. Every file ending with
`.test` is a test set. Inside each line with these components is a
single test: `testNr[!] testConfigFileName testInputFileName [lang]`
The configuration file `testConfigFileName` has to be located inside `tests/config`,
the input file `testInputFileName` inside `tests/input/<testSetName>/`,
and expected results file inside the `tests/expected/<testSetName>/`
directory.
Expected results have the following naming convention: `testNr-testInputFileName`.
Optionally a `!` can follow the `testNr` to enable a custom rerun
configuration.
Rerun configurations need to be named like this:
`testConfigFileName`(without extension)+`.rerun`+`.extension`
Also, optionally a language for the input can be provided with `lang`.
The codebase has to be formatted by the options set up in
`forUncrustifySources.cfg`. Failing to format the sources correctly will
cause TravisCI build failures.
The Command line interface (CLI) output is tested by the
`test_cli_options.sh` script. It is located inside of `tests/cli/` and operates
on the subdirectories of that folder.
If a PR is altering the CLI output, files inside those directories might
need to be manually updated. This often happens when options are
added, removed, or altered. Keep in mind that the version string line
(example: `# Uncrustify-0.69.0_f`) of outputs from commands like
`--show-config` should be replaced with a blank line.
### Debugging
The first method is to use uncrustify itself to get debug informations.
Using:
```.txt
uncrustify -c myExample.cfg -f myExample.cpp -p myExample.p -L A 2>myExample.A
```
you get two files for the first informations.
The p-file gives you details of the parsing process and indentation.
```.txt
# Line Tag Parent Columns Br/Lvl/pp Flag Nl Text
# 1> CLASS[ NONE][ 1/ 1/ 6/ 0][0/0/0][ 10070000][0-0] class
# 1> TYPE[ CLASS][ 7/ 7/ 14/ 1][0/0/0][ 10000000][0-0] Capteur
# 1> BRACE_OPEN[ CLASS][ 15/ 15/ 16/ 1][0/0/0][ 100000400][0-0] {
```
The A-file gives you many details about the run itself, where the process is running thru,
which values have the most important variables.
```.txt
tokenize(2351): orig line is 1, orig col is 1, Text() 'class', type is CLASS, orig col_end is 6
tokenize(2351): orig line is 1, orig col is 7, Text() 'Capteur', type is WORD, orig col_end is 14
tokenize(2351): orig line is 1, orig col is 15, Text() '{', type is BRACE_OPEN, orig col_end is 16
```
You can also dump the parsing information of each formatting step using the 'dump steps' option.
```.txt
uncrustify -c myExample.cfg -f myExample.cpp -ds dump
```
This will create a series of 'dump_nnn.log' files, each containing the parsing information at
specific points of the formatting process ('dump_000.log' will list the formatting options in use).
You can combine this option with -p and -L to get a lot of detailed debugging information.
```.txt
uncrustify -c myExample.cfg -f myExample.cpp -p myExample.p -L A 2>myExample.A -ds dump
```
It might be useful to add some code lines to see where something is happening.
Use the package `unc_tools`.
Remove the comment at line:
```.cpp
#define DEVELOP_ONLY
```
Import the package:
```.cpp
#include "unc_tools.h"
```
Add at some places the line:
```.cpp
prot_the_line(__LINE__, 6, 0);
```
Compile again with DEBUG option.
### How to add an option
If you need a new option, there are a few steps to follow.
Take as example the option `sp_trailing_ret_t`
First define the option:
- Insert the code below to the file src/options.h
_NOTE:
This file is processed by make_options.py, and must conform to a particular
format. Option groups are marked by '//begin ' (in upper case; this example
is lower case to prevent being considered a region marker for code folding)
followed by the group description. Options consist of two lines of
declaration preceded by one or more lines of C++ comments. The comments form
the option description and are taken verbatim, aside from stripping the
leading '// '. Only comments immediately preceding an option declaration,
with no blank lines, are taken as part of the description, so a blank line
may be used to separate notations from a description.
An option declaration is 'extern TYPE\nNAME;', optionally followed by
' // = VALUE' if the option has a default value that is different from the
default-constructed value type of the option. The 'VALUE' must be valid C++
code, and is taken verbatim as an argument when creating the option's
instantiation. Note also that the line break, as shown, is required.
_
```.cpp
// Add or remove space around trailing return operator '->'.
extern Option<iarf_e>
sp_trailing_ret_t;
```
- Insert the code below to the file src/space.cpp
```.cpp
if (first->Is(CT_TRAILING_RET_T))
{
// Add or remove space around trailing return operator '->'.
log_rule("sp_trailing_ret_t");
return(options::sp_trailing_ret_t());
}
```
### Portability
We are pretty sure that nothing OS-specific is used in the code base.
The software has been previously tested on the following operating systems:
- Linux
- QNX
- OS X
- FreeBSD, NetBSD, OpenBSD
- Sun Solaris 9
- Windows (binary available)
---------------------------------------------------------------------------
## Running the program
__NOTE__ This application works reasonably well but it has bugs. Do __not__
apply it on your whole codebase without checking the results!
Here are ways to run it:
```
$ uncrustify -c mystyle.cfg -f somefile.c -o somefile.c.unc
$ uncrustify -c mystyle.cfg -f somefile.c > somefile.c.unc
$ uncrustify -c mystyle.cfg somefile.c
$ uncrustify -c mystyle.cfg --no-backup somefile.c
$ uncrustify -c mystyle.cfg *.c
$ uncrustify -c mystyle.cfg --no-backup *.c
```
The `-c` flag selects the configuration file.
The `-f` flag specifies the input file.
The `-o` flag specifies the output file.
If flag `-f` is used without flag `-o` the output will be send to `stdout`.
Alternatively, multiple or single files that should be processed can be
specified at the command end without flags.
If the flag `--no-backup` is missing, every file is saved with the initial
name and an additional suffix (can be changed with --suffix).
For more options descriptions call:
```bash
$ uncrustify -h
```
## Configuring the program
Uncrustify usually reads configuration files that are passed via the `-c`
flag. If the flag is not provided, Uncrustify will try to find a
configuration file via the `UNCRUSTIFY_CONFIG` environment variable or a
file with the name `.uncrustify.cfg` or `uncrustify.cfg` in your home folder.
To get a list of:
- all available options use:
```bash
uncrustify --show-config
```
- all available options in a usable configuration file format use:
```bash
uncrustify --update-config
```
or
```bash
uncrustify --update-config-with-doc
```
As the names suggest, both options can produce output that adds newly
introduced options to your old configuration file. For this your old
configuration file has to be passed via the `-c` flag:
```bash
uncrustify --update-config-with-doc -c path/to/your.cfg
```
Example configuration files that can be used as a starting point can be
found in the `etc/` directory (such as [ben.cfg](./etc/ben.cfg)).
Modify to your liking. Use a quality side-by-side diff tool to determine
if the program did what you wanted. Repeat until your style is refined.
To ease the process a bit, some 3rd party tools are available:
- [Universal Indent GUI](http://universalindent.sourceforge.net/) - A
cross-platform graphical configuration file editor for many code
beautifiers, including Uncrustify.
- [uncrustify_config](https://github.com/CDanU/uncrustify_config) - A web
configuration tool based on Uncrustify's emscripten interface.
- [UncrustifyX](https://github.com/ryanmaxwell/UncrustifyX) - Uncrustify
utility and documentation browser for Mac OS X
Under Windows:
Uncrustify is a command-line tool, if you run it by double-clicking the
executable, it will open a command prompt run the executable
(which prints the help message), and then immediately close the window
as uncrustify exits.
You can open the command prompt (which is an interactive terminal
window that allows you to run commands without it closing as soon as
they exit) and run uncrustify.exe there.
## Using uncrustify with vim
Have a look [here](https://github.com/cofyc/vim-uncrustify)
## Using uncrustify with IntelliJ
Have a look at https://plugins.jetbrains.com/plugin/17528-uncrustify

@ -1,352 +0,0 @@
uncrustify-trinity (0.78.0-0debian13.0.0+0) unstable; urgency=medium
* TDE version of upstream 0.78.0
-- Michele Calgaro <michele.calgaro@yahoo.it> Sun, 18 Nov 2023 17:35:00 +0900
uncrustify-trinity (0.76.0-0debian12.0.0+0) unstable; urgency=medium
* TDE version of upstream 0.76.0
-- Michele Calgaro <michele.calgaro@yahoo.it> Sun, 04 Dec 2022 18:56:43 +0900
uncrustify-trinity (0.75.0-0debian11.0.0+0) unstable; urgency=medium
* TDE version of upstream 0.75.0
-- Michele Calgaro <michele.calgaro@yahoo.it> Fri, 06 May 2022 13:49:07 +0900
uncrustify-trinity (0.74.0-0debian11.0.0+0) unstable; urgency=medium
* TDE version of upstream 0.74.0
-- Michele Calgaro <michele.calgaro@yahoo.it> Wed, 19 May 2021 15:58:50 +0900
uncrustify-trinity (0.73.0-0debian11.0.0+2) unstable; urgency=medium
* Fix Python detection on CMake < 3.12.
-- Slávek Banko <slavek.banko@axis.cz> Wed, 20 May 2021 00:00:40 +0200
uncrustify-trinity (0.73.0-0debian11.0.0+1) unstable; urgency=medium
* Backported commits cb1a42dd from upstream.
-- Michele Calgaro <michele.calgaro@yahoo.it> Wed, 19 May 2021 15:58:50 +0900
uncrustify-trinity (0.73.0-0debian11.0.0+0) unstable; urgency=medium
* TDE version of upstream 0.73.0
-- Michele Calgaro <michele.calgaro@yahoo.it> Wed, 19 May 2021 15:58:50 +0900
uncrustify-trinity (0.72.0-0debian11.0.0+8) unstable; urgency=medium
* Switch to build using ninja-build
-- Slávek Banko <slavek.banko@axis.cz> Tue, 18 May 2021 19:30:49 +0200
uncrustify-trinity (0.72.0-0debian11.0.0+7) unstable; urgency=medium
* TDE version 0.72-0+7
* Backported commits 5f3f392a and fb66774e from upstream.
-- Michele Calgaro <michele.calgaro@yahoo.it> Thu, 05 Jan 2021 11:08:00 +0900
uncrustify-trinity (0.72.0-0debian11.0.0+6) unstable; urgency=medium
* TDE version 0.72-0+6
* Backported commits 45681e88 and 64d93e3fb from upstream.
-- Michele Calgaro <michele.calgaro@yahoo.it> Thu, 24 Dec 2020 20:14:00 +0900
uncrustify-trinity (0.72.0-0debian11.0.0+0) unstable; urgency=medium
* TDE version of upstream 0.72.0
-- Michele Calgaro <michele.calgaro@yahoo.it> Thu, 20 Dec 2020 17:52:23 +0900
uncrustify (0.72.0) unstable; urgency=medium
* New upstream version 0.72.0
-- Alexander GQ Gerasiov <gq@debian.org> Thu, 20 Dec 2020 17:34:01 +0900
uncrustify (0.71.0+dfsg1-1) unstable; urgency=medium
* New upstream version 0.71.0
* d/control: Use debhelper-compat syntax, switch to level 12.
* d/control: Use python3 in B-D (Closes: #943295).
* d/control: Bump Standards-Version, no more changes needed.
* d/control: Remove unnnecessary --parallel.
-- Alexander GQ Gerasiov <gq@debian.org> Thu, 27 Aug 2020 17:12:57 +0300
uncrustify (0.69.0+dfsg1-1) unstable; urgency=medium
* New upstream version 0.69.0
* Remove fix_parallel_test.patch: Fixed upstream.
-- Alexander GQ Gerasiov <gq@debian.org> Tue, 02 Jul 2019 19:00:32 +0300
uncrustify (0.68.1+dfsg1-2) unstable; urgency=medium
* Add d/patches/fix_parallel_test.patch: Fix test failure on parallel run.
-- Alexander GQ Gerasiov <gq@debian.org> Mon, 10 Dec 2018 02:36:22 +0300
uncrustify (0.68.1+dfsg1-1) unstable; urgency=medium
* New upstream version 0.68.1
* d/control: Add python-all to Build-Depensds.
* d/rules: Run all tests (now disabled by default by upstream).
-- Alexander GQ Gerasiov <gq@debian.org> Sun, 02 Dec 2018 16:19:42 +0300
uncrustify (0.67+dfsg1-1) unstable; urgency=medium
* New upstream version 0.67
* debian/control: Move git to salsa.
* Add docs-remove-remote-images.patch: Remove remote images from docs.
-- Alexander GQ Gerasiov <gq@debian.org> Mon, 18 Jun 2018 01:13:56 +0300
uncrustify (0.66.1+dfsg1-1) unstable; urgency=medium
* Add debian/gbp.conf.
* New upstream version 0.66.1 Fixed FTBFS on some arches (Closes: #881249)
* Bump Standards-Version to 4.1.2 (no additional changes needed).
-- Alexander GQ Gerasiov <gq@debian.org> Sun, 17 Dec 2017 18:49:06 +0300
uncrustify (0.66+dfsg1-1) unstable; urgency=medium
* debian/control: Remove Fathi Boudra <fabo@debian.org> from uploaders.
(Closes: #879444.) Thanks for your job.
* New upstream version 0.66
* Bump Standards-Version to 4.1.1 (no additional changes needed).
* debian/control: Add more languages to short description.
-- Alexander GQ Gerasiov <gq@debian.org> Wed, 08 Nov 2017 18:18:47 +0300
uncrustify (0.65+git20170831+dfsg1-1) unstable; urgency=medium
* New upstream version 0.65+git20170831. Fixes various FTBFS and autotests
failures on exotic archs. (Closes: #867376)
* Bump Standards-Version to 4.1.0 (no additional changes needed).
-- Alexander GQ Gerasiov <gq@debian.org> Thu, 31 Aug 2017 20:25:06 +0300
uncrustify (0.65+dfsg1-1) unstable; urgency=medium
* New upstream version 0.65
* debian/control: Add python-minimal to Build-Depends.
-- Alexander GQ Gerasiov <gq@debian.org> Tue, 04 Jul 2017 14:50:47 +0300
uncrustify (0.64+dfsg1-1) unstable; urgency=medium
* Imported Upstream version 0.64
(Closes: #748787, #814193, #594210, #775517, #594206, #616708)
* Remove non-free documentation/htdocs/project-support.jpg.
* Imported debian dir from previous version.
* Remove "debian/<q" file.
* Remove fix-ftbfs-with-gcc-4.7.patch (Fixed upstream).
* debian/control: Switch dependence from autotools to cmake.
* debian/control, debian/compat: Set compatibility level to 9.
* debian/rules: Remove legacy PRONY records.
* debian/control: Change Homepage to github.
* debian/watch: Update to github using current naming scheme.
* debian/copyright: Add myself.
* Install README.md and documentation dir into package's docs.
* debian/rules: Remove tests results on clean.
* debian/control: Set myself as maintainer. (Johann Rudloff is out of
business, thanks a lot for all; Fathi Boudra acked this.)
* Bump Standards-Version to 3.9.8 (no additional changes needed).
* Add debian/TODO file.
* debian/cotrol: Add link to collab-maint's git.
-- Alexander GQ Gerasiov <gq@debian.org> Sat, 03 Dec 2016 20:19:22 +0300
uncrustify (0.59+dfsg1-1.1) unstable; urgency=medium
* Non-maintainer upload.
* Remove non-free file (project-support.jpg). Closes: #753760
-- Mathieu Malaterre <malat@debian.org> Fri, 16 Jan 2015 16:52:15 +0100
uncrustify (0.59-2) unstable; urgency=low
* Fix FTBFS with gcc 4.7 by fixing missing <unistd.h> include.
(Closes: #667404)
-- Fathi Boudra <fabo@debian.org> Mon, 21 May 2012 15:40:46 +0300
uncrustify (0.59-1) unstable; urgency=low
* New upstream release.
* Add myself to Uploaders.
-- Fathi Boudra <fabo@debian.org> Sat, 31 Dec 2011 12:49:32 +0200
uncrustify (0.57-1) unstable; urgency=low
* New upstream release.
[ Fathi Boudra ]
* Removed patch to check for NULL - stolen upstream.
* Bumped Standards-Version to 3.9.1 (no changes needed).
-- Johann Rudloff <cypheon@gmx.net> Mon, 21 Feb 2011 11:54:28 +0200
uncrustify (0.56-2) unstable; urgency=low
[ Fathi Boudra ]
* Added patch to check for NULL to prevent a segmentation fault.
(Closes: #580195)
* Bumped Standards-Version to 3.9.0 (no changes needed).
-- Johann Rudloff <cypheon@gmx.net> Thu, 01 Jul 2010 20:34:01 +0300
uncrustify (0.56-1) unstable; urgency=low
* New upstream release.
[ Fathi Boudra ]
* Switch to dpkg-source 3.0 (quilt) format.
* debian/control:
- bumped debhelper version to 7.4.15
- fixed typo in long description.
* debian/copyright:
- added email author.
- added myself.
-- Johann Rudloff <cypheon@gmx.net> Tue, 20 Apr 2010 13:08:29 +0300
uncrustify (0.55-1) unstable; urgency=low
* New upstream release (Closes: #540817)
[ Fathi Boudra ]
* debian/patches/manpage_fix_hyphens.diff: removed - merged upstream
* debian/compat: bumped to 7
* debian/control:
- bumped debhelper version to 7.4.13
- bumped Standards-Version to 3.8.4 (no changes needed)
- added ${misc:Depends}
* debian/docs: updated
* debian/rules: rewrited from scratch to use dh and enabled parallel build
-- Johann Rudloff <cypheon@gmx.net> Wed, 17 Feb 2010 09:18:41 +0100
uncrustify (0.52-1) unstable; urgency=low
* New upstream release (closes: #526100)
* debian/copyright: changed years and wording of copyright
* debian/patches/manpage_fix_hyphens.diff: added patch to fix fixed hyphens
used as minus signs in manpage
* debian/rules: included usage of quilt
* debian/control: added build dependency quilt
bumped Standards-Version to 3.8.1 (no changes required)
-- Johann Rudloff <cypheon@gmx.net> Thu, 30 Apr 2009 11:32:27 +0200
uncrustify (0.48-1) unstable; urgency=low
* New upstream release
* debian/rules: removed CFLAGS settings (done by dpkg-buildpackage)
-- Johann Rudloff <cypheon@gmx.net> Tue, 22 Jul 2008 11:19:54 +0200
uncrustify (0.47-1) unstable; urgency=low
* New upstream release (closes: #479372)
* Bumped Standards-Version to 3.8.0 (no changes required)
* removed debian/uncrustify.1, since upstream sources now include a
manpage
* debian/rules: removed call to dh_installman, manpage is installed by
make install
* debian/rules: removed unneeded call to dh_installdirs
-- Johann Rudloff <cypheon@gmx.net> Sun, 08 Jun 2008 10:09:53 +0200
uncrustify (0.44-1) unstable; urgency=low
* New upstream release
* debian/uncrustify.1: updated version number and date
-- Johann Rudloff <cypheon@gmx.net> Sun, 24 Feb 2008 09:13:49 +0100
uncrustify (0.43-1) unstable; urgency=low
* New upstream release (closes: #461631)
* Bumped Standards-Version to 3.7.3 (no changes required)
* debian/copyright: updated years of copyright
* debian/control: moved homepage address from description to a separate field
* debian/uncrustify.1: updated year and month
* debian/rules: copy update config.{sub,guess} into source tree in
config.status target, remove them in clean target
-- Johann Rudloff <cypheon@gmx.net> Thu, 10 Jan 2008 15:37:19 +0100
uncrustify (0.41-1) unstable; urgency=low
* New upstream release
-- Johann Rudloff <cypheon@gmx.net> Mon, 12 Nov 2007 21:22:25 +0100
uncrustify (0.40-1) unstable; urgency=low
* New upstream release
-- Johann Rudloff <cypheon@gmx.net> Tue, 16 Oct 2007 21:26:13 +0200
uncrustify (0.39-1) unstable; urgency=low
* New Upstream Version
-- Johann Rudloff <cypheon@gmx.net> Wed, 26 Sep 2007 23:50:30 +0200
uncrustify (0.38-1) unstable; urgency=low
* New upstream release
-- Johann Rudloff <cypheon@gmx.net> Thu, 06 Sep 2007 22:52:16 +0200
uncrustify (0.37-1) unstable; urgency=low
* New upstream release
* debian/uncrustify.1: added new command line options
* debian/uncrustify.1: changes in formatting and description
-- Johann Rudloff <cypheon@gmx.net> Sun, 19 Aug 2007 19:33:08 +0200
uncrustify (0.36-1) unstable; urgency=low
* New upstream release (closes: #434938, #434939)
-- Johann Rudloff <cypheon@gmx.net> Tue, 07 Aug 2007 13:49:41 +0200
uncrustify (0.35-1) unstable; urgency=low
* New upstream release
-- Johann Rudloff <cypheon@gmx.net> Sat, 21 Jul 2007 20:41:52 +0200
uncrustify (0.33-1) unstable; urgency=low
* New upstream release (closes: #416469)
* Added debian/watch file
* debian/uncrustify.1: added new command line options
* debian/uncrustify.1: removed leading colons
* debian/copyright: updated years of copyright
* debian/copyright: updated parts concerning cmpcfg.pl, since it
now contains a proper license statement
-- Johann Rudloff <cypheon@gmx.net> Fri, 30 Mar 2007 20:51:27 +0200
uncrustify (0.30-1) unstable; urgency=low
* Initial release
-- Johann Rudloff <cypheon@gmx.net> Sat, 25 Nov 2006 14:06:44 +0100

@ -1,183 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Uncrustify - Source Code Beautifier for C-like languages</title>
<link rel="stylesheet" type="text/css" href="uncrustify1.css" />
<!-- <link rel="shortcut icon" href="images/favicon.ico" /> -->
</head>
<body lang="en-us" dir="ltr">
<div align="center">
<table>
<tr>
<td align="center">
<div class="node1" align="center">
<div class="node2" align="left">
<h1>Uncrustify</h1>
<h2>Source Code Beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA</h2>
<table>
<tr>
<td valign="top">
<script type='text/javascript' language='JavaScript' src='http://www.ohloh.net/projects/4765/badge_js'></script>
</td>
<td valign="top">
<a href="https://travis-ci.org/uncrustify/uncrustify/builds">
<img alt="Travis CI Build Status"
src="https://travis-ci.org/uncrustify/uncrustify.svg?branch=master"/>
</a>
</td>
<td valign="top">
<a href="https://scan.coverity.com/projects/uncrustify">
<img alt="Coverity Scan Build Status"
src="https://scan.coverity.com/projects/8264/badge.svg"/>
</a>
</td>
</tr>
</table>
<h2>Introduction</h2>
<p>The goals of this project are simple:
Create a highly configurable, easily modifiable source code beautifier.</p>
<br />
<h2>Features</h2>
<ul>
<li>Indent code, aligning on parens, assignments, etc</li>
<li>Align on '=' and variable definitions</li>
<li>Align structure initializers</li>
<li>Align #define stuff</li>
<li>Align backslash-newline stuff</li>
<li>Reformat comments (a little bit)</li>
<li>Fix inter-character spacing</li>
<li>Add or remove parens on return statements</li>
<li>Add or remove braces on single-statement if/do/while/for statements</li>
<li>Supports embedded SQL 'EXEC SQL' stuff</li>
<li>Highly configurable - 850 configurable options as of version 0.78.0</li>
</ul>
<p>
See some example <a href="examples/example.c">output</a>.
</p>
<br />
<h2>Where to get Uncrustify</h2>
<h3>Project Websites</h3>
<a href="http://sourceforge.net/projects/uncrustify/">Sourceforge project web site</a><BR>
<a href="http://sourceforge.net/projects/uncrustify/files/">Release downloads</a><br>
<a href="http://freshmeat.net/projects/uncrustify/">Freshmeat Project</a><BR>
<a href="http://github.com/uncrustify/uncrustify">Git Hub</a><br>
<h3>Source Code</h3>
As of release 0.54, the source code is maintained in a <a href="http://git-scm.com/">Git</a> repository.<br>
<br>
The public Git URL for Sourceforge.net is <br>
<code>git://uncrustify.git.sourceforge.net/gitroot/uncrustify/uncrustify</code><br>
<br>
The public Git URL for github.com is <br>
<code>git://github.com/uncrustify/uncrustify.git</code><br>
<h3>Prebuilt binaries</h3>
Windows (i386) :
<a href="http://sourceforge.net/project/showfiles.php?group_id=153164">Sourceforge</A><BR>
<h3>Universal Indent GUI</h3>
<a href="http://universalindent.sourceforge.net/">Universal Indent GUI</a> is a
cross-platform graphical configuration file editor for many code beautifiers, including Uncrustify.
<br />
<h2>Want to help?</h2>
<p>
The most helpful way is to try it out and give feedback.
Documentation and examples are available in the source tree, so check it out.
</p>
<p>
You can find the output from 'uncrustify --show-config' <a href="config.txt">here</a>.<br />
Here is the <a href="default.cfg">default config file</a>.
And one I set up for <a href="linux.cfg.txt">Linux</a>.<br />
And here is a <a href="examples/c-1.in.c">before</a> and <a href="examples/c-1.out.c">after</a> C source example.<br />
That should give you a pretty good idea of what Uncrustify can do.<br />
</p>
<p>
If you find a bug, please do the following:
</p>
<ul>
<li>Reduce the input source file to the minimum that still has the problem</li>
<li>Use the sourceforget.net bug tracker</li>
<li>Attach the input source file, the configuration file, and a file that contains the expected output</li>
</ul>
<p>
If you want to add a feature, fix a bug, or implement missing functionality, feel free to do so! Patches are welcome!<BR/>
Here are some areas that need attention:
</p>
<ul>
<li>Test Java support and provide feedback (or patches!)</li>
<li>Test Objective C support and provide feedback (or patches!)</li>
<li>Test Embedded SQL to see what works</li>
<li>This web page need a (re)design</li>
<li>A logo of some sort</li>
<li>Examples that can be put on this website to show off what Uncrustify can do</li>
<li>Anything else that you want to do to make it better?</li>
</ul>
<h3>Project Mailing list</h3>
We don't have a mailing list for Uncrustify.<BR/>
We are using <a href="https://github.com/uncrustify/uncrustify/">github</a>.
<br>
You may use <a href="https://github.com/uncrustify/uncrustify/issues">Issues</a> to publish an error report.
<br>
Or <a href="https://github.com/uncrustify/uncrustify/pulls">PR</a> to make a bugfix proposal.
<br />
<h2>Portability</h2>
<p>
I'm pretty sure that I'm not using anything that is OS-specific.<br />
The software has been tested on the following operating systems:
</p>
<ul>
<li>Linux</li>
<li>QNX</li>
<li>OS X</li>
<li>FreeBSD, NetBSD, OpenBSD</li>
<li>Sun Solaris 9</li>
<li>Windows XP (binary available)</li>
</ul>
<br />
<h2>Links</h2>
<ul>
<li><a href="http://universalindent.sourceforge.net/">Universal Indent GUI</a></li>
<li>Don't know what D is? Check out the <a href="http://dlang.org/index.html">D Programming Language website</a>.</li>
<li><a href="http://www.linuxlinks.com">Linux Links</a></li>
</ul>
<h2>Distributions that package Uncrustify</h2>
<ul>
<li><A href="http://www.debian.org/">Debian</A>
<li><A href="http://fedora.redhat.com/">Fedora</A></li>
<li><A href="http://www.altlinux.com/">ALT Linux</A></li>
<li><A href="http://www.t2-project.org/">T2</A></li>
<li><A href="http://www.macports.org/">MacPorts</a></li>
<li><A href="http://www.freebsd.org/cgi/ports.cgi?query=uncrustify">FreeBSD Ports (textproc/uncrustify)</a></li>
<li><A href="http://openports.se/textproc/uncrustify">OpenBSD Ports (textproc/uncrustify)</a></li>
<li>Others?</li>
</ul>
</div>
</div>
</td>
</tr>
</table>
</div>
<br />
<a href="http://sourceforge.net/donate/index.php?group_id=153164">"Support This Project"</a>
<br />
</body>
</html>

File diff suppressed because it is too large Load Diff

@ -1,21 +0,0 @@
{
"name": "uncrustify",
"version": "0.78.0",
"description": "A highly configurable, easily modifiable source code beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA",
"main": "uncrustify",
"scripts": {
"preinstall": "mkdir -p build && cd build && cmake .. && make"
},
"bin": "src/uncrustify",
"repository": {
"type": "git",
"url": "https://github.com/uncrustify/uncrustify"
},
"keywords": [
"uncrustify",
"source code beautifier"
],
"author": "Ben Gardner",
"author": "Guy Maurel",
"license": "GPL-2.0-or-later"
}

@ -1,348 +0,0 @@
============================
Uncrustify Release Process
============================
.. Update the date in the next line when editing this document!
*This document was last updated on 2023-11-13, for Uncrustify 0.78.0.*
This document uses "0.1.2" throughout as an example version number.
Whenever you see this, you should substitute the version number
of the new release being prepared.
Paths are specified in git syntax, i.e. ``:/`` is the repository root.
Requirements
============
This document assumes you are using a Linux-based OS.
While it should be possible to cut a release on Windows,
using e.g. the `Git for Windows SDK <https://gitforwindows.org/>`_
or a MinGW_ environment, the names and/or arguments to some commands
may be different.
In addition to the build and test requirements for Uncrustify itself
(CMake, a C++ compiler, Python, git), you will also need:
- tar
- python3-git
- Binutils-mingw-w64
- Gcc-mingw-w64
- G++-mingw-w64
- zip
- wget (optional)
- scp (to update documentation on the SourceForge page)
Using packages provided by your OS distribution is *strongly* recommended.
(Exact package names may vary depending on your distribution.)
Examples use ``wget`` to download files via command line,
but any mechanism of obtaining files over HTTPS may be employed.
Preparing a Candidate
=====================
The first step, obviously, is deciding to make a release.
Prior to making a release, verify that the repository is in a stable state
and that all CI (continuous integration - AppVeyor) has passed.
This should ensure all tests pass and building
(including cross-compiling) for Windows is working.
Once the release process is started,
only pull requests needed to fix critical bugs,
or related to the release process, should be accepted.
(This will minimize the need to redo or repeat work
such as updating the documentation, especially the change log.)
To start the release process, first check that:
- You are on the ``master`` branch
- Your local clone is up to date
- ``CMAKE_BUILD_TYPE`` is set to ``Release`` (or ``RelWithDebInfo``)
- Your build is up to date
- check the list of authors with scripts/prepare_list_of_authors.sh
You might need a new PAT for your account, for your admin-account.
See:
https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/
https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
loggin with a admin account at https://github.com/uncrustify/uncrustify
on the right, click on the photo
scroll down to "Settings"
on the left, scroll down to "Developer settings", and click
on the left, click on "Personal access tokens"
choose "Tokens (classic), click
if necessary "Delete" expired token(s)
click on "Generate new token"
choose "Generate new token (classic)", click
choose a "what's this token for"
click on "repo"
scroll down to bottom and click on "Generate token"
Make sure to copy your personal access token now. You wont be able to see it again!
copy the token "ghp_otx****"
and substitute in the file .git/config for [remote "origin"]
"url = https://gmaurel:ghp_otxZ****"
Then, run::
$ scripts/release_tool.py init
$ scripts/release_tool.py update path/to/uncrustify
(Replace ``path/to/uncrustify`` with the path to the Uncrustify executable
you just built, e.g. ``build/uncrustify``.)
This will create a branch for the release candidate
and perform some automated updates to various files.
With no arguments, ``init`` will prompt you for the new version number,
defaulting to ``x.(y+1).0``, where ``x.y.z`` is the previous release.
The ``--version`` argument may also be used to specify the version
(e.g. if the script will not be able to prompt for input).
After, you should check that the following files
show the correct version number and option count:
- ``:/CMakeLists.txt`` (version number only; look for ``UNCRUSTIFY_VERSION``)
- ``:/package.json`` (version number only; you'll see it, the file is tiny)
- ``:/README.md`` (look for "options as of version")
- ``:/documentation/htdocs/index.html`` (look for "options as of version")
(Note that ``uncrustify`` itself will not show the new version number
until the final release has been tagged.)
Update Documentation
====================
Update ``:/ChangeLog``.
There is a helper script, ``:/scripts/gen_changelog.py``,
that can help extract new options since the previous release:
.. code::
$ scripts/gen_changelog.py uncrustify-0.0.0
Replace ``0.0.0`` with the version of the *previous* release.
This will generate a bunch of output like::
0123456789abcdef0123456789abcdef01234567
Added : better_name Jan 13 1970
Removed : poor_name Jan 13 1970
fedcba9876543210fedcba9876543210fedcba98
Added : new_option_1 Jan 18 1970
Added : new_option_2 Jan 18 1970
Your goal is to turn the "raw" output into something like this::
Deprecated options:
- poor_name Jan 13 1970
Renamed to better_name
New options:
- new_option_1 Jan 18 1970
- new_option_1 Jan 18 1970
To accomplish this, you will need to inspect any removed options,
possibly consulting the commits in which they were removed,
to determine the reason for deprecation and what replacement is recommended.
(Note that it may not be as simple as "use X instead".)
Also watch for options that were added and subsequently renamed
since the last release. (This has happened a few times.
In such cases, the new name should show up as an ordinary "new" option,
and the old name should be entirely omitted from the change log.)
It helps to copy the output to a scratch file for editing.
Move deprecated options to the top and add a "Deprecated options:" header,
then add a "New options:" header in front of what's left,
and remove the commit SHAs (``sed -r '/^[[:xdigit:]]{40}/d``
if you don't want to do it by hand).
Then, check that the options are in order by date;
date of authorship vs. date of merge may cause discrepancies.
Finally, replace occurrences of ``\w+ +:`` with ``-``
(if your editor supports regular expressions;
otherwise you can individually replace ``Added :`` and ``Removed :``).
Add a new release header (don't forget to add the date!) to the change log
and insert the list of option changes as created above.
Also fill in the list of resolved issues, new keywords (if any),
as well as any other changes that need to be mentioned.
If any command line arguments have been added or changed,
including descriptions for the same, check to see if
``:/man/uncrustify.1.in`` needs to be updated.
(Hopefully this happened when the source was changed!)
Finalize the Code Changes
=========================
Inspect your working tree.
Use ``git add -p`` to stage the changes made to the documentation
and other artifacts that contain version-dependent information.
Verify that only desired changes are staged,
and that your working tree is otherwise clean.
Now is a good time to recheck
that everything builds, and that all the tests pass.
This is also a good time to manually test 32- and 64-bit builds.
When you are ready, commit the changes using:
.. code::
$ scripts/release_tool.py commit
(If you prefer, you can also commit the changes manually;
the script just fills in the commit message for you.)
Submit and Tag the Release
==========================
Push the release candidate branch to GitHub, and create a pull request.
Once the pull request is merged, tag the release using:
Make sure, the file .git/config has the right 'admin' value:
[remote "origin"]
url = https://<admin account>:<PAT>@github.com/uncrustify/uncrustify.git
Check it with:
$ git config --local --get remote.origin.url
.. code::
$ scripts/release_tool.py tag
Note that this will only work if the merge of the release candidate
is the most recent commit upstream.
Otherwise, the merge commit must be specified by using the ``-c`` option.
(Tagging the release does not need to be done on any particular branch.
The command will not affect or look at your work tree at all.)
Create Binaries
===============
Now that the release is published, grab a copy of the sources from GitHub:
.. code::
$ wget https://github.com/uncrustify/uncrustify/archive/uncrustify-0.1.2.zip
$ unzip -e uncrustify-0.1.2.zip
Next, build the 32- and 64-bit Windows binaries:
.. code::
$ cd /path/to/uncrustify-uncrustify-0.1.2
$ mkdir buildwin-32
$ cd buildwin-32
$ cmake -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw32.cmake \
-DCMAKE_EXE_LINKER_FLAGS="-static -s" \
..
$ ninja
$ cpack
.. code::
$ cd /path/to/uncrustify-uncrustify-0.1.2
$ mkdir buildwin-64
$ cd buildwin-64
$ cmake -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw64.cmake \
-DCMAKE_EXE_LINKER_FLAGS="-static -s" \
..
$ ninja
$ cpack
Create a tarball:
.. code::
$ cd /path/to/uncrustify
$ git archive -o uncrustify-0.1.2.tar.gz --prefix=uncrustify-0.1.2/ uncrustify-0.1.2
TODO: find the best strategie...
(If you don't have Ninja_, or just don't want to use it for whatever reason,
omit ``-G Ninja`` and run ``make`` instead of ``ninja``.)
This is also a good time to test the tagged build on Linux:
.. code::
$ wget https://github.com/uncrustify/uncrustify/archive/uncrustify-0.1.2.tar.gz
$ tar xzf uncrustify-0.1.2.tar.gz
$ cd uncrustify-uncrustify-0.1.2
$ mkdir build
$ cd build
$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ..
$ ninja
$ ctest
$ ./uncrustify --version
Upload to SourceForge
=====================
- Login as admin under https://sourceforge.net/projects/uncrustify/
- Change to https://sourceforge.net/projects/uncrustify/files/
- "Add Folder"; the name should be e.g. "uncrustify-0.1.2"
- Navigate to the new folder
(e.g. https://sourceforge.net/projects/uncrustify/files/uncrustify-0.1.2/)
- "Add File"; upload the following files
(adjusting for the actual version number):
- README.md
- uncrustify-0.1.2.tar.gz
- buildwin-32/uncrustify-0.1.2_f-win32.zip
- buildwin-64/uncrustify-0.1.2_f-win64.zip
- "Done"
- Upload the documentation:
.. code::
$ scp -r documentation/htdocs/* ChangeLog \
USER,uncrustify@web.sourceforge.net:htdocs/
- Use the web interface (file manager) to create the release folder
and upload the files to SourceForge.
Announce the Release (Optional)
===============================
The new release is live! Spread the word! Consider these ideas:
- Create a news item.
- Update freshmeat.net project.
Release Checklist
=================
The following list serves as a quick reference for making a release.
These items are explained in greater detail above.
#. Verify that CI passes
#. Use ``release_tool.py`` to initialize the release
and perform automated updates. Check:
#. ``:/CMakeLists.txt``
#. ``:/package.json``
#. ``:/README.md``
#. ``:/documentation/htdocs/index.html``
#. Update documentation as needed:
#. ``:/ChangeLog``
#. ``:/man/uncrustify.1.in``
#. Stage changes.
#. Test everything again.
#. Finalize the code changes.
#. Push to GitHub and create a merge request.
#. Tag the merged release branch.
#. Create Windows (32- and 64-bit) binaries.
#. Run a test build on Linux.
#. Upload the release and documentation to SourceForge.
#. Announce the release!
.. _MinGW: http://www.mingw.org/
.. _GitPython: https://github.com/gitpython-developers/GitPython
.. _Ninja: https://ninja-build.org/

File diff suppressed because it is too large Load Diff

@ -1,756 +0,0 @@
/**
* @file width.cpp
* Limits line width.
*
* @author Ben Gardner
* @license GPL v2+
*/
#include "width.h"
#include "indent.h"
#include "newlines.h"
#include "prototypes.h"
constexpr static auto LCURRENT = LSPLIT;
using namespace uncrustify;
/**
* abbreviations used:
* - fparen = function parenthesis
*/
struct SplitEntry
{
Chunk *pc;
size_t pri;
SplitEntry()
: pc(Chunk::NullChunkPtr)
, pri(0) {}
};
struct TokenPriority
{
E_Token tok;
size_t pri;
};
static inline bool is_past_width(Chunk *pc);
//! Split right after the chunk
static void split_before_chunk(Chunk *pc);
static size_t get_split_pri(E_Token tok);
/**
* Checks to see if pc is a better spot to split.
* This should only be called going BACKWARDS (ie prev)
* A lower level wins
*
* Splitting Preference:
* - semicolon
* - comma
* - boolean op
* - comparison
* - arithmetic op
* - assignment
* - concatenated strings
* - ? :
* - function open paren not followed by close paren
*/
static void try_split_here(SplitEntry &ent, Chunk *pc);
/**
* Scan backwards to find the most appropriate spot to split the line
* and insert a newline.
*
* See if this needs special function handling.
* Scan backwards and find the best token for the split.
*
* @param start The first chunk that exceeded the limit
*/
static bool split_line(Chunk *pc);
/**
* Figures out where to split a template
*
*
* @param start the offending token
*/
static void split_template(Chunk *start);
/**
* Splits the parameters at every comma that is at the fparen level.
*
* @param start the offending token
*/
static void split_fcn_params_full(Chunk *start);
/**
* A for statement is too long.
* Step backwards and forwards to find the semicolons
* Try splitting at the semicolons first.
* If that doesn't work, then look for a comma at paren level.
* If that doesn't work, then look for an assignment at paren level.
* If that doesn't work, then give up.
*/
static void split_for_stmt(Chunk *start);
static inline bool is_past_width(Chunk *pc)
{
// allow char to sit at last column by subtracting 1
size_t currCol = pc->GetColumn() + pc->Len() - 1;
LOG_FMT(LSPLIT, "%s(%d): orig line %zu, orig col %zu, curr col %zu, text %s\n",
__func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), currCol, pc->Text());
return(currCol > options::code_width());
}
static void split_before_chunk(Chunk *pc)
{
LOG_FUNC_ENTRY();
LOG_FMT(LSPLIT, "%s(%d): Text() '%s'\n", __func__, __LINE__, pc->Text());
Chunk *prev = pc->GetPrev();
if ( !pc->IsNewline()
&& !prev->IsNewline())
{
newline_add_before(pc);
// Mark chunk as continuation line, so indentation can be
// correctly set over multiple passes
pc->SetFlagBits(PCF_CONT_LINE);
// Mark open and close parens as continuation line chunks.
// This will prevent an additional level and frame to be
// added to the current frame stack (issue 3105).
if ( prev->Is(CT_PAREN_OPEN)
|| prev->Is(CT_LPAREN_OPEN)
|| prev->Is(CT_SPAREN_OPEN)
|| prev->Is(CT_FPAREN_OPEN)
|| prev->Is(CT_SQUARE_OPEN)
|| prev->Is(CT_ANGLE_OPEN))
{
LOG_FMT(LSPLIT, "%s(%d): set PCF_LINE_CONT for prev text '%s', orig line is %zu, orig col is %zu\n",
__func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol());
prev->SetFlagBits(PCF_CONT_LINE);
Chunk *closing_paren = prev->GetClosingParen();
if (closing_paren->IsNotNullChunk())
{
closing_paren->SetFlagBits(PCF_CONT_LINE);
}
}
// reindent needs to include the indent_continue value and was off by one
log_rule_B("indent_columns");
log_rule_B("indent_continue");
reindent_line(pc, pc->GetBraceLevel() * options::indent_columns() +
abs(options::indent_continue()) + 1);
cpd.changes++;
}
} // split_before_chunk
static TokenPriority pri_table[] =
{
{ CT_SEMICOLON, 1 },
{ CT_COMMA, 2 },
{ CT_BOOL, 3 },
{ CT_COMPARE, 4 },
{ CT_SHIFT, 5 },
{ CT_ARITH, 6 },
{ CT_CARET, 7 },
{ CT_ASSIGN, 9 },
{ CT_STRING, 10 },
{ CT_FOR_COLON, 11 },
{ CT_QUESTION, 20 }, // allow break in ? : for ls_code_width
{ CT_COND_COLON, 20 },
{ CT_FPAREN_OPEN, 21 }, // break after function open paren not followed by close paren
{ CT_QUALIFIER, 25 },
{ CT_CLASS, 25 },
{ CT_STRUCT, 25 },
{ CT_TYPE, 25 },
{ CT_TYPENAME, 25 },
{ CT_VOLATILE, 25 },
};
void do_code_width()
{
LOG_FUNC_ENTRY();
LOG_FMT(LSPLIT, "%s(%d)\n", __func__, __LINE__);
// If indent_continue is negative, we want to look for long lines splits,
// so raise CT_FPAREN_OPEN priority to get better results.
if (options::indent_continue() < 0)
{
for (TokenPriority &token : pri_table)
{
if (token.tok == CT_FPAREN_OPEN)
{
token.pri = 8; // Before assignment priority
break;
}
}
}
for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
{
if ( !pc->IsCommentOrNewline()
&& pc->IsNot(CT_SPACE)
&& is_past_width(pc))
{
if ( pc->Is(CT_VBRACE_CLOSE) // don't break if a vbrace close
&& pc->IsLastChunkOnLine()) // is the last chunk on its line
{
continue;
}
bool split_OK = split_line(pc);
if (split_OK)
{
LOG_FMT(LSPLIT, "%s(%d): orig line is %zu, orig col is %zu, Text() '%s'\n",
__func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
}
else
{
LOG_FMT(LSPLIT, "%s(%d): Bailed! orig line is %zu, orig col is %zu, Text() '%s'\n",
__func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
break;
}
}
}
} // do_code_width
static size_t get_split_pri(E_Token tok)
{
for (TokenPriority token : pri_table)
{
if (token.tok == tok)
{
return(token.pri);
}
}
return(100); // Bigger than any valid priority
}
static void try_split_here(SplitEntry &ent, Chunk *pc)
{
LOG_FUNC_ENTRY();
size_t pc_pri = get_split_pri(pc->GetType());
LOG_FMT(LSPLIT, "%s(%d): text '%s', orig col %zu pc_pri %zu\n",
__func__, __LINE__, pc->Text(), pc->GetOrigCol(), pc_pri);
if (pc_pri == 0)
{
LOG_FMT(LSPLIT, "%s(%d): pc_pri is 0, return\n", __func__, __LINE__);
return;
}
// Can't split after a newline
Chunk *prev = pc->GetPrev();
if ( prev->IsNullChunk()
|| ( prev->IsNewline()
&& pc->IsNot(CT_STRING)))
{
if (prev->IsNotNullChunk())
{
LOG_FMT(LSPLIT, "%s(%d): can't split after a newline, orig line is %zu, return\n",
__func__, __LINE__, prev->GetOrigLine());
}
return;
}
// Can't split a function without arguments
if (pc->Is(CT_FPAREN_OPEN))
{
Chunk *next = pc->GetNext();
if (next->Is(CT_FPAREN_CLOSE))
{
LOG_FMT(LSPLIT, "%s(%d): can't split a function without arguments, return\n", __func__, __LINE__);
return;
}
}
// Only split concatenated strings
if (pc->Is(CT_STRING))
{
Chunk *next = pc->GetNext();
if (next->IsNot(CT_STRING))
{
LOG_FMT(LSPLIT, "%s(%d): only split concatenated strings, return\n", __func__, __LINE__);
return;
}
}
// keep common groupings unless ls_code_width
if ( !options::ls_code_width()
&& pc_pri >= 22)
{
LOG_FMT(LSPLIT, "%s(%d): keep common groupings unless ls_code_width, return\n", __func__, __LINE__);
return;
}
// don't break after last term of a qualified type
if (pc_pri == 25)
{
Chunk *next = pc->GetNext();
if ( next->IsNot(CT_WORD)
&& (get_split_pri(next->GetType()) != 25))
{
LOG_FMT(LSPLIT, "%s(%d): don't break after last term of a qualified type, return\n", __func__, __LINE__);
return;
}
}
if ( ent.pc->IsNullChunk()
|| pc_pri < ent.pri
|| ( pc_pri == ent.pri
&& pc->IsNot(CT_FPAREN_OPEN)
&& pc->GetLevel() < ent.pc->GetLevel()))
{
LOG_FMT(LSPLIT, "%s(%d): found possible split\n", __func__, __LINE__);
ent.pc = pc;
ent.pri = pc_pri;
}
} // try_split_here
static bool split_line(Chunk *start)
{
LOG_FUNC_ENTRY();
LOG_FMT(LSPLIT, "%s(%d): start->Text() '%s', orig line %zu, orig col %zu, type %s\n",
__func__, __LINE__, start->Text(), start->GetOrigLine(), start->GetOrigCol(), get_token_name(start->GetType()));
LOG_FMT(LSPLIT, " start->GetFlags() ");
log_pcf_flags(LSPLIT, start->GetFlags());
LOG_FMT(LSPLIT, " start->GetParentType() %s, (PCF_IN_FCN_DEF %s), (PCF_IN_FCN_CALL %s)\n",
get_token_name(start->GetParentType()),
start->TestFlags((PCF_IN_FCN_DEF)) ? "TRUE" : "FALSE",
start->TestFlags((PCF_IN_FCN_CALL)) ? "TRUE" : "FALSE");
// break at maximum line length if ls_code_width is true
// Issue #2432
if (start->TestFlags(PCF_ONE_LINER))
{
LOG_FMT(LSPLIT, "%s(%d): ** ONE LINER SPLIT **\n", __func__, __LINE__);
undo_one_liner(start);
newlines_cleanup_braces(false);
// Issue #1352
cpd.changes++;
return(false);
}
LOG_FMT(LSPLIT, "%s(%d): before ls_code_width\n", __func__, __LINE__);
if (options::ls_code_width())
{
log_rule_B("ls_code_width");
}
// Check to see if we are in a for statement
else if (start->TestFlags(PCF_IN_FOR))
{
LOG_FMT(LSPLIT, " ** FOR SPLIT **\n");
split_for_stmt(start);
if (!is_past_width(start))
{
return(true);
}
LOG_FMT(LSPLIT, "%s(%d): for split didn't work\n", __func__, __LINE__);
}
/*
* If this is in a function call or prototype, split on commas or right
* after the open parenthesis
*/
else if ( start->TestFlags(PCF_IN_FCN_DEF)
|| start->TestFlags(PCF_IN_FCN_CALL)
|| start->GetParentType() == CT_FUNC_PROTO) // Issue #1169
{
LOG_FMT(LSPLIT, " ** FUNC SPLIT **\n");
if (options::ls_func_split_full())
{
log_rule_B("ls_func_split_full");
split_fcn_params_full(start);
if (!is_past_width(start))
{
return(true);
}
}
}
/*
* If this is in a template, split on commas, Issue #1170
*/
else if (start->TestFlags(PCF_IN_TEMPLATE))
{
LOG_FMT(LSPLIT, " ** TEMPLATE SPLIT **\n");
split_template(start);
return(true);
}
LOG_FMT(LSPLIT, "%s(%d):\n", __func__, __LINE__);
// Try to find the best spot to split the line
SplitEntry ent;
ent.pc = Chunk::NullChunkPtr;
ent.pri = CT_UNKNOWN;
Chunk *pc = start->GetPrev();
Chunk *prev;
while ( pc->IsNotNullChunk()
&& !pc->IsNewline())
{
LOG_FMT(LSPLIT, "%s(%d): text '%s', orig line is %zu, orig col is %zu\n",
__func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
if (pc->IsNot(CT_SPACE))
{
try_split_here(ent, pc);
// break at maximum line length
if ( ent.pc->IsNotNullChunk()
&& options::ls_code_width())
{
log_rule_B("ls_code_width");
LOG_FMT(LSPLIT, "%s(%d): found split\n", __func__, __LINE__);
break;
}
}
pc = pc->GetPrev();
}
if (ent.pc->IsNullChunk())
{
LOG_FMT(LSPLIT, "%s(%d): TRY_SPLIT yielded NO SOLUTION for orig line %zu at '%s' [%s]\n",
__func__, __LINE__, start->GetOrigLine(), start->Text(), get_token_name(start->GetType()));
}
else
{
LOG_FMT(LSPLIT, "%s(%d): TRY_SPLIT yielded '%s' [%s] on orig line %zu\n",
__func__, __LINE__, ent.pc->Text(), get_token_name(ent.pc->GetType()), ent.pc->GetOrigLine());
LOG_FMT(LSPLIT, "%s(%d): ent at '%s', orig col is %zu\n",
__func__, __LINE__, ent.pc->Text(), ent.pc->GetOrigCol());
}
// Break before the token instead of after it according to the pos_xxx rules
if (ent.pc->IsNullChunk())
{
pc = Chunk::NullChunkPtr;
}
else
{
log_rule_B("pos_arith");
log_rule_B("pos_assign");
log_rule_B("pos_compare");
log_rule_B("pos_conditional");
log_rule_B("pos_shift");
log_rule_B("pos_bool");
if ( ( ent.pc->Is(CT_SHIFT)
&& (options::pos_shift() & TP_LEAD))
|| ( ( ent.pc->Is(CT_ARITH)
|| ent.pc->Is(CT_CARET))
&& (options::pos_arith() & TP_LEAD))
|| ( ent.pc->Is(CT_ASSIGN)
&& (options::pos_assign() & TP_LEAD))
|| ( ent.pc->Is(CT_COMPARE)
&& (options::pos_compare() & TP_LEAD))
|| ( ( ent.pc->Is(CT_COND_COLON)
|| ent.pc->Is(CT_QUESTION))
&& (options::pos_conditional() & TP_LEAD))
|| ( ent.pc->Is(CT_BOOL)
&& (options::pos_bool() & TP_LEAD)))
{
pc = ent.pc;
}
else
{
pc = ent.pc->GetNext();
}
LOG_FMT(LSPLIT, "%s(%d): at '%s', orig col is %zu\n",
__func__, __LINE__, pc->Text(), pc->GetOrigCol());
}
if (pc->IsNullChunk())
{
pc = start;
// Don't break before a close, comma, or colon
if ( start->Is(CT_PAREN_CLOSE)
|| start->Is(CT_PAREN_OPEN)
|| start->Is(CT_FPAREN_CLOSE)
|| start->Is(CT_FPAREN_OPEN)
|| start->Is(CT_SPAREN_CLOSE)
|| start->Is(CT_SPAREN_OPEN)
|| start->Is(CT_ANGLE_CLOSE)
|| start->Is(CT_BRACE_CLOSE)
|| start->Is(CT_COMMA)
|| start->IsSemicolon()
|| start->Len() == 0)
{
LOG_FMT(LSPLIT, " ** NO GO **\n");
// TODO: Add in logic to handle 'hard' limits by backing up a token
return(true);
}
}
// add a newline before pc
prev = pc->GetPrev();
if ( prev->IsNotNullChunk()
&& !pc->IsNewline()
&& !prev->IsNewline())
{
//int plen = (pc->Len() < 5) ? pc->Len() : 5;
//int slen = (start->Len() < 5) ? start->Len() : 5;
//LOG_FMT(LSPLIT, " '%.*s' [%s], started on token '%.*s' [%s]\n",
// plen, pc->Text(), get_token_name(pc->GetType()),
// slen, start->Text(), get_token_name(start->GetType()));
LOG_FMT(LSPLIT, "%s(%d): Text() '%s', type %s, started on token '%s', type %s\n",
__func__, __LINE__, pc->Text(), get_token_name(pc->GetType()),
start->Text(), get_token_name(start->GetType()));
split_before_chunk(pc);
}
return(true);
} // split_line
/*
* The for statement split algorithm works as follows:
* 1. Step backwards and forwards to find the semicolons
* 2. Try splitting at the semicolons first.
* 3. If that doesn't work, then look for a comma at paren level.
* 4. If that doesn't work, then look for an assignment at paren level.
* 5. If that doesn't work, then give up.
*/
static void split_for_stmt(Chunk *start)
{
LOG_FUNC_ENTRY();
// how many semicolons (1 or 2) do we need to find
log_rule_B("ls_for_split_full");
size_t max_cnt = options::ls_for_split_full() ? 2 : 1;
Chunk *open_paren = Chunk::NullChunkPtr;
size_t nl_cnt = 0;
LOG_FMT(LSPLIT, "%s: starting on %s, line %zu\n",
__func__, start->Text(), start->GetOrigLine());
// Find the open paren so we know the level and count newlines
Chunk *pc = start;
while ((pc = pc->GetPrev())->IsNotNullChunk())
{
if (pc->Is(CT_SPAREN_OPEN))
{
open_paren = pc;
break;
}
if (pc->GetNlCount() > 0)
{
nl_cnt += pc->GetNlCount();
}
}
if (open_paren->IsNullChunk())
{
LOG_FMT(LSPLIT, "No open paren\n");
return;
}
// see if we started on the semicolon
int count = 0;
Chunk *st[2];
pc = start;
if ( pc->Is(CT_SEMICOLON)
&& pc->GetParentType() == CT_FOR)
{
st[count++] = pc;
}
// first scan backwards for the semicolons
while ( (count < static_cast<int>(max_cnt))
&& ((pc = pc->GetPrev())->IsNotNullChunk())
&& pc->IsNotNullChunk()
&& pc->TestFlags(PCF_IN_SPAREN))
{
if ( pc->Is(CT_SEMICOLON)
&& pc->GetParentType() == CT_FOR)
{
st[count++] = pc;
}
}
// And now scan forward
pc = start;
while ( (count < static_cast<int>(max_cnt))
&& ((pc = pc->GetNext())->IsNotNullChunk())
&& pc->TestFlags(PCF_IN_SPAREN))
{
if ( pc->Is(CT_SEMICOLON)
&& pc->GetParentType() == CT_FOR)
{
st[count++] = pc;
}
}
while (--count >= 0)
{
// TODO: st[0] may be uninitialized here
LOG_FMT(LSPLIT, "%s(%d): split before %s\n", __func__, __LINE__, st[count]->Text());
split_before_chunk(st[count]->GetNext());
}
if ( !is_past_width(start)
|| nl_cnt > 0)
{
return;
}
// Still past width, check for commas at parentheses level
pc = open_paren;
while ((pc = pc->GetNext()) != start)
{
if ( pc->Is(CT_COMMA)
&& (pc->GetLevel() == (open_paren->GetLevel() + 1)))
{
split_before_chunk(pc->GetNext());
if (!is_past_width(pc))
{
return;
}
}
}
// Still past width, check for a assignments at parentheses level
pc = open_paren;
while ((pc = pc->GetNext()) != start)
{
if ( pc->Is(CT_ASSIGN)
&& (pc->GetLevel() == (open_paren->GetLevel() + 1)))
{
split_before_chunk(pc->GetNext());
if (!is_past_width(pc))
{
return;
}
}
}
// Oh, well. We tried.
} // split_for_stmt
static void split_fcn_params_full(Chunk *start)
{
LOG_FUNC_ENTRY();
LOG_FMT(LSPLIT, "%s(%d): start at '%s'\n", __func__, __LINE__, start->Text());
// Find the opening function parenthesis
Chunk *fpo = start;
LOG_FMT(LSPLIT, " %s(%d): search for opening function parenthesis\n", __func__, __LINE__);
while ((fpo = fpo->GetPrev())->IsNotNullChunk())
{
LOG_FMT(LSPLIT, " %s(%d): %s, orig col is %zu, level is %zu\n",
__func__, __LINE__, fpo->Text(), fpo->GetOrigCol(), fpo->GetLevel());
if ( fpo->Is(CT_FPAREN_OPEN)
&& (fpo->GetLevel() == start->GetLevel() - 1))
{
LOG_FMT(LSPLIT, " %s(%d): found open paren\n", __func__, __LINE__);
break; // opening parenthesis found. Issue #1020
}
}
// Now break after every comma
Chunk *pc = fpo->GetNextNcNnl();
while (pc->IsNotNullChunk())
{
if (pc->GetLevel() <= fpo->GetLevel())
{
break;
}
if ( (pc->GetLevel() == (fpo->GetLevel() + 1))
&& pc->Is(CT_COMMA))
{
split_before_chunk(pc->GetNext());
}
pc = pc->GetNextNcNnl();
}
}
static void split_template(Chunk *start)
{
LOG_FUNC_ENTRY();
LOG_FMT(LSPLIT, " %s(%d): start %s\n", __func__, __LINE__, start->Text());
LOG_FMT(LSPLIT, " %s(%d): back up until the prev is a comma\n", __func__, __LINE__);
// back up until the prev is a comma
Chunk *prev = start;
while ((prev = prev->GetPrev())->IsNotNullChunk())
{
LOG_FMT(LSPLIT, " %s(%d): prev '%s'\n", __func__, __LINE__, prev->Text());
if ( prev->IsNewline()
|| prev->Is(CT_COMMA))
{
break;
}
}
if ( prev->IsNotNullChunk()
&& !prev->IsNewline())
{
LOG_FMT(LSPLIT, " %s(%d):", __func__, __LINE__);
LOG_FMT(LSPLIT, " -- ended on %s --\n", get_token_name(prev->GetType()));
Chunk *pc = prev->GetNext();
newline_add_before(pc);
size_t min_col = 1;
log_rule_B("indent_continue");
if (options::indent_continue() == 0)
{
log_rule_B("indent_columns");
min_col += options::indent_columns();
}
else
{
min_col += abs(options::indent_continue());
}
reindent_line(pc, min_col);
cpd.changes++;
}
} // split_templatefcn_params

@ -1,570 +0,0 @@
#
# Test cases specifically for the C language.
#
# test.name config.file input.file
# little general tests ====================================================
00000 common/indent_columns-3.cfg c/comment-indent.c
00001 c/cpp_to_c-1.cfg c/comment-indent.c
00002 c/cpp_to_c-2.cfg c/comment-indent.c
00003 c/cpp_to_c-3.cfg c/comment-indent.c
00004 c/indent-1.cfg c/switch.c
00005 c/ben_047.cfg c/cmt-align.c
00006 common/indent_columns-3.cfg c/comment-convert.c
00007 c/cpp_to_c-1.cfg c/comment-convert.c
00008 c/cpp_to_c-2.cfg c/comment-convert.c
00009 c/cpp_to_c-3.cfg c/comment-convert.c
# brace styles
00010 c/ben_048.cfg c/braces.c
00011 common/brace-allman.cfg c/braces.c
00012! c/brace-banner.cfg c/braces.c
00013 c/brace-gnu.cfg c/braces.c
00014 c/brace-kr.cfg c/braces.c
00015 c/brace-ws.cfg c/braces.c
00016 c/brace-ws2.cfg c/braces.c
00020 c/ben_049.cfg c/define-if-indent.c
00050 c/brace-remove-2.cfg c/brace-remove.c
00051 c/brace-remove-all.cfg c/brace-remove.c
00052 c/brace-remove-all.cfg c/brace-remove2.c
00053 c/nl_brace_test.cfg c/brace.c
00054 c/if_chain.cfg c/if_chain.c
00055 c/cgal.cfg c/braces-2.c
00056 c/brace-remove-all.cfg c/brace-remove3.c
00057 c/if_chain.cfg c/brace-remove3.c
00058 c/brace-kr-nobr.cfg c/if_chain.c
00059 c/Issue_2205.cfg c/Issue_2205.c
00060 c/ben_050.cfg c/braces-2.c
00061 c/ben_051.cfg c/braces-3.c
00062 c/ben_052.cfg c/braces-4.c
00065 c/ben_053.cfg c/braces-5.c
00066 c/ben_054.cfg c/vb-while.c
00067 c/ben_055.cfg c/vb-do.c
00068 c/ben_056.cfg c/bsnl.c
00069 c/ben_057.cfg c/vb-pp.c
00070 c/ben_058.cfg c/return-multi.c
00071 common/ben_042.cfg c/include_define.h
00072 common/star_pos-0.cfg c/align-proto.c
00073 common/empty.cfg c/nl_proto_endif.c
00074 c/clang-has_include.cfg c/clang-has_include.h
00075 common/tde.cfg c/function_prototypes_alignment.c
00076 c/1225.cfg c/1225.c
00081 c/else-if-1.cfg c/else-if.c
00082 c/else-if-2.cfg c/else-if.c
00083 c/Issue_3601.cfg c/Issue_3601.c
00091 c/cond-1.cfg c/cond.c
00092 common/indent_columns-3.cfg c/cond.c
00093 c/sp_cond_colon.cfg c/cond.c
00094 c/Issue_3457.cfg c/Issue_3457.c
00101 c/ben_061.cfg c/bugs-1.c
00102 c/space_indent_columns-3.cfg c/bugs-2.c
00103 c/ben_063.cfg c/bugs-3.c
00104 c/ben_064.cfg c/bugs-4.c
00105 c/ben_065.cfg c/bugs-5.c
00106 common/ben_011.cfg c/bugs-6.c
00107 common/ben_011.cfg c/bugs-7.c
00108 common/indent_columns-3.cfg c/bugs-8.c
00110 c/ben_069.cfg c/misc.c
00111 c/brace-kr-br.cfg c/misc.c
00120 c/sp_cmt_cpp_start-r.cfg c/sp_cmt_cpp_start.c
00121 common/sp_cmt_cpp_start-a.cfg c/sp_cmt_cpp_start.c
00122 common/sp_cmt_cpp_start_force.cfg c/sp_cmt_cpp_start.c
00123 c/cmt_reflow.cfg c/cmt_reflow.c
00130 c/ben_070.cfg c/minus-minus.c
00131 c/Issue_3873.cfg c/Issue_3873.c
00135 c/nepenthes.cfg c/br_cmt.c
00136 common/empty.cfg c/Issue_4044.c
00140 c/ben_071.cfg c/global-vars.c
00141 c/ben_072.cfg c/deref.c
00142 c/ben_073.cfg c/type-cast.c
00143 c/ben_074.cfg c/t3.in.c
00144 c/ben_075.cfg c/align-proto-vars.c
00145 c/ben_076.cfg c/vardefcol.c
00146 c/Issue_3516.cfg c/Issue_3516.c
00147 c/Issue_3517.cfg c/Issue_3516.c
00148 c/Issue_3518.cfg c/Issue_3518.c
# casts
00150 c/ben_077.cfg c/casts.c
00151 c/cast-sp-r.cfg c/casts.c
00152 c/cast-sp-a.cfg c/casts.c
00153 c/cast-type.cfg c/casts.c
00154 common/sp_after_cast.cfg c/casts.c
00155 c/ben_078.cfg c/cast_brace.c
00156 c/nl_collapse_empty_1.cfg c/empty-braces.c
00157 c/nl_collapse_empty_2.cfg c/empty-braces.c
00158 c/nl_collapse_empty_3.cfg c/empty-braces.c
00159 c/nl_collapse_empty_4.cfg c/empty-braces.c
# fcn indents
00160 c/indent_func_param.cfg c/fcn_indent.c
00161 c/indent_func_call_param.cfg c/fcn_indent.c
00162 c/indent_func_def_param.cfg c/fcn_indent.c
00163 c/indent_func_proto_param.cfg c/fcn_indent.c
00164 c/rdan.cfg c/fcn_indent_func_def_col1.c
00165 c/sp_func_call_user_inside_fparen.cfg c/sp_func_call_user_inside_fparen.c
00170 common/empty.cfg c/beautifier-off.c
00180 c/sf538.cfg c/lvalue.c
00190 common/empty.cfg c/Issue_3559.c
# switch & case stuff
00201 c/case-1.cfg c/case.c
00202 c/case-2.cfg c/case.c
00203 c/case-3.cfg c/case.c
00204 c/bug_1718.cfg c/bug_1718.c
00205 c/nl_before_return_false.cfg c/case-nl_before_return.c
00206 c/nl_before_return_true.cfg c/case-nl_before_return.c
00207 common/nl_before_ignore_after_case.cfg c/nl_before_ignore_after_case.c
# structure initializers
00301 c/ben_079.cfg c/align-struct-init.c
00302 c/ben_080.cfg c/one-liner-init.c
00303 c/1liner-split.cfg c/one-liner-init.c
00304 c/1liner-no-split.cfg c/one-liner-init.c
00305 c/ben_081.cfg c/one-liner-define.c
00310 common/empty.cfg c/sp_embed_comment.c
00311 c/comment_conversion.cfg c/comment_conversion_define.c
00312 c/comment_conversion.cfg c/comment_conversion_endif.c
00313 c/comment_conversion.cfg c/comment_conversion_long_lines.c
00314 c/comment_conversion.cfg c/comment_conversion_javadoc_single.c
00315 common/tde.cfg c/comment_conversion_trailing_c_multiline.c
00320 c/rdan.cfg c/indent_first_bool_expr.c
# aligning tresholds
00401 common/align-1.cfg c/align-equ.c
00402 common/align-1.cfg c/align-var.c
00403 c/align-2.cfg c/align-var.c
00404 c/align-3.cfg c/align-var.c
00405 c/align-3.cfg c/bits.c
00406 c/bug_i_771.cfg c/bug_i_771.c
00407 c/star-style-0.cfg c/star-style.c
00408 c/star-style-1.cfg c/star-style.c
00409 c/star-style-2.cfg c/star-style.c
00411 c/align_typedef_gap-3_span-5.cfg c/align-typedef.c
00412 c/align_typedef_gap-3_span-5.cfg c/align-typedef.c
00413 c/align_typedef_func-1.cfg c/align-typedef.c
00414 c/align_typedef_func-2.cfg c/align-typedef.c
00415 c/align_stack.cfg c/align_stack.c
00416 c/align_sf_call_thresh_416.cfg c/align_sf_call_thresh_416.c
00417 c/align_sf_call_thresh_417.cfg c/align_sf_call_thresh_417.c
00418 c/align_sf_call_span_418.cfg c/align_sf_call_span_418.c
00419 c/align_sf_call_span_419.cfg c/align_sf_call_span_419.c
00420 c/Issue_2278.cfg c/Issue_2278.c
00421 c/nl_ds_struct_enum_cmt-t.cfg c/nl_ds_struct_enum.c
00422 c/nl_ds_struct_enum-2.cfg c/nl_ds_struct_enum.c
00423 c/bug_1702.cfg c/bug_1702.c
00424 c/Issue_3506.cfg c/Issue_3506.c
00430 common/empty.cfg c/paren-indent.c
00431 c/indent_paren_close-1.cfg c/paren-indent.c
00432 c/indent_paren_close-2.cfg c/paren-indent.c
00440 c/bug_489.cfg c/bug_489.c
00451 c/code_width-80.cfg c/enum_gallery.c
00452 c/nl_enum_own_lines-a.cfg c/enum_gallery.c
00453! c/nl_enum_own_lines-3.cfg c/enum_gallery.c
00454 c/nl_enum_own_lines-4.cfg c/enum_gallery.c
00461 c/align_func_proto_star_amp-1.cfg c/align_func_proto_star_amp.h
00462 c/align_func_proto_star_amp-2.cfg c/align_func_proto_star_amp.h
00463 c/align_func_proto_star_amp-3.cfg c/align_func_proto_star_amp.h
00464 c/align_func_proto_star_amp-4.cfg c/align_func_proto_star_amp.h
00465 c/align_func_proto_star_amp-5.cfg c/align_func_proto_star_amp.h
00466 c/align_func_proto_star_amp-6.cfg c/align_func_proto_star_amp.h
00467 c/align_func_proto_star_amp-7.cfg c/align_func_proto_star_amp.h
00468 c/align_func_proto_star_amp-8.cfg c/align_func_proto_star_amp.h
00469 c/align_func_proto_star_amp-9.cfg c/align_func_proto_star_amp.h
00470 c/align_trailing_do_cmt.cfg c/align_trailing_do_cmt.c
# boolean and comma positioning
00501 c/bool-pos-eol.cfg c/bool-pos.c
00502 c/bool-pos-sol.cfg c/bool-pos.c
00503 c/pos_compare-sol.cfg c/pos_compare.c
00504 c/pos_compare-eol.cfg c/pos_compare.c
00505 c/pos_conditional-l.cfg c/pos_conditional.c
00506 c/pos_conditional-t.cfg c/pos_conditional.c
00510 c/bool-pos-eol-break.cfg c/bool-pos.c
00511 c/bool-pos-sol-break.cfg c/bool-pos.c
00512 common/bool-pos-eol-force.cfg c/bool-pos.c
00513 c/bool-pos-sol-force.cfg c/bool-pos.c
00514 c/my_conf.cfg c/my_infile.c
00600 common/indent_columns-3.cfg c/dos.c
00601 common/indent_columns-3.cfg c/mac.c
00611 common/empty.cfg c/pp-space.c
00612 c/pp-indent-2.cfg c/pp-space.c
00613 c/pp_indent-a.cfg c/pp-space.c
00614 c/pp-space.cfg c/pp-space.c
00615 c/pp-indent-2.cfg c/pp-nest.c
00616 c/pp_if_indent-1.cfg c/pp-if-indent.c
00617 c/rdan.cfg c/pp-if-indent.c
00618 c/pp_if_indent-4.cfg c/pp-if-indent.c
00619 c/Issue_3169.cfg c/Issue_3169.c
00620 c/ben_083.cfg c/indent-assign.c
00621 c/nl_endif.cfg c/nl_endif.c
00622 c/indent_assign.cfg c/indent-off-after-assign.c
00623 c/pp_space_none.cfg c/pp_space_before_after.c
00624 c/pp_space_after.cfg c/pp_space_before_after.c
00625 c/pp_space_before.cfg c/pp_space_before_after.c
00626 c/pp_space_before_after.cfg c/pp_space_before_after.c
00631 c/nl_assign1.cfg c/nl_assign.c
00632 c/nl_assign2.cfg c/nl_assign.c
00633 c/nl_assign1.cfg c/bug_3156.c
# function def newlines
00701 common/func-def-1.cfg c/function-def.c
00702 common/func-def-2.cfg c/function-def.c
00703 common/func-def-3.cfg c/function-def.c
00710 c/add_long_closebrace_comment_1.cfg c/add_long_comment.c
# nl_after_semicolon and nl_after_open_brace
00721 c/nl_semicolon.cfg c/nl-semicolon.c
# function call newlines
00730 c/nl_func_call-1.cfg c/nl_func_call.c
00731 c/nl_func_call-2.cfg c/nl_func_call.c
00732 c/nl_func_call-3.cfg c/nl_func_call.c
00733 c/nl_func_call-4.cfg c/nl_func_call.c
00734 c/nl_func_call-5.cfg c/nl_func_call.c
# function types
00801 c/ben_084.cfg c/fcn_type.c
00802 c/ben_085.cfg c/funcfunc.c
00803 c/sf537.cfg c/fcn_type.c
# code width
00901 c/width.cfg c/code_width.c
00902 common/width-2.cfg c/code_width.c
00903 c/width-3.cfg c/code_width.c
# pascal ptr_type
00910 c/pascal_ptr.cfg c/pascal_ptr.c
00911 c/empty_body.cfg c/pascal_ptr.c
01000 c/mod-paren.cfg c/mod-paren.c
01001 c/nl-comment.cfg c/nl-comment.c
01002 c/mod-paren2.cfg c/mod-paren.c
01005 c/mod_case_brace_add.cfg c/mod_case_brace.c
01006 common/mod_case_brace_rm.cfg c/mod_case_brace.c
01007 c/mod_move_case_brace.cfg c/mod_case_brace.c
01008 c/mod_case_brace_add.cfg c/Issue_3366.c
01009 c/mod_move_case_return.cfg c/mod_move_case_return.c
01010 c/mod_move_case_return.cfg c/mod_move_case_return_bad.c
01011 common/del_semicolon.cfg c/semicolons.c
01012 c/ben_086.cfg c/semicolons.c
01015 common/empty.cfg c/paren_indent.c
01016 c/align_attr.cfg c/align_attr.c
01020 common/kw_subst.cfg c/kw_subst.c
01021 common/kw_subst3.cfg c/hello.c
01022 common/kw_subst3.cfg c/kw_subst.c
01030 c/cmt_indent_multi-f.cfg c/multi.h
01035 common/empty.cfg c/func_wrap.c
01036 common/sp_inside_fparen-f.cfg c/func_wrap.c
01037 c/type_wrap.cfg c/type_wrap.c
01040 c/newline_after_endif.cfg c/newline_after_endif.c
01050 c/func_call_user.cfg c/func_call_user.c
01060 common/empty.cfg c/backslash-newline-lex.c
01070 c/label_colon_nl_1.cfg c/various_colons.c
01071 c/label_colon_nl_2.cfg c/various_colons.c
01080 common/empty.cfg c/bug_1196.c
# big general tests
02000 c/ben_087.cfg c/i2c-core.c
02001 c/preproc-cleanup.cfg c/directfb.h
02002 common/ben2.cfg c/i2c-core.c
02003 c/Issue_3353.cfg c/Issue_3353.h
# clark's style - blank lines before and after flow control, indented comments
02100 common/clark.cfg c/i2c-core.c
02101 common/clark.cfg c/comment-indent.c
02200 c/xml-str.cfg c/xml.c
02201 c/xml-str.cfg c/align-string.c
02300 c/ben_088.cfg c/preproc-if.c
02301 common/d.cfg c/preproc-if.c
02302 c/cpp_to_c-1.cfg c/nl-cont.c
02303 c/cpp_to_c-1.cfg c/nl-cont2.c
02310 c/ben_089.cfg c/empty-for.c
02311 c/ben_090.cfg c/pragma.c
02315 c/pp_ret.cfg c/pp_ret.c
02320 c/nl_create_one_liner.cfg c/nl_create_one_liner.c
02325 common/sort_imports.cfg c/sort_include.c
02330 c/leave_one_liners.cfg c/one_liners.c
# some embedded sql stuff
02400 c/ben_091.cfg sql/mysql.sqc C
02401 c/ben_092.cfg sql/sta-select.sqc C
02402 c/issue_527.cfg sql/issue_527.sqc C
02410 c/pp_if_indent-0.cfg c/ifdef-indent.c
02411 c/pp_if_indent-1.cfg c/ifdef-indent.c
02412 c/pp_if_indent-2.cfg c/ifdef-indent.c
02413 c/pp_if_indent-3.cfg c/ifdef-indent.c
02414 c/nl_whole_file_ifdef.cfg c/whole_file_ifdef.c
02415 c/endif.cfg c/endif.c
02416 c/cmt_nl_end.cfg c/cmt_nl_end.c
02421 c/cmt_multi_check_last-f.cfg c/cmt_multi.c
02422 common/empty.cfg c/cmt_multi.c
02423 common/empty.cfg c/cmt_multi_utf8.c
02431 c/align_right_cmt_gap-1.cfg c/cmt_right_align.c
02432 c/space_indent_columns-3.cfg c/cmt_right_align.c
02440 common/empty.cfg c/string_utf8.c
02441 common/empty.cfg c/utf8-identifiers.c
02451 c/return-1.cfg c/nl_return_expr.c
02452 c/return-2.cfg c/nl_return_expr.c
02453 c/return-3.cfg c/nl_return_expr.c
02454 c/return-4.cfg c/nl_return_expr.c
02455 common/mod_paren_on_return-a.cfg c/macro-returns.c
02456 common/mod_paren_on_return-r.cfg c/macro-returns.c
02457 c/nl_before_return_true.cfg c/nl_before_return.c
02460 c/freebsd.cfg c/freebsd.c
02486 c/doxy-comment-no.cfg c/doxy-comment.c
02487 c/doxy-comment-yes.cfg c/doxy-comment.c
02501 c/ger.cfg c/custom_types_ssl.c
02502 c/custom_types_ssl.cfg c/custom_types_ssl.c
#02503 ger.cfg c/pp_concat_asn1.h
02504 c/align_keep_extra.cfg c/align_keep_extra.c
02505 c/align_multi.cfg c/align_assigns.c
02506 c/align-4.cfg c/align_assign_var_defs.c
02510 c/ben_093.cfg c/asm.c
02520 c/pp_indent_with_tabs_0.cfg c/pp_indent_with_tabs.c
02521 c/pp_indent_with_tabs_1.cfg c/pp_indent_with_tabs.c
02522 c/pp_indent_with_tabs_2.cfg c/pp_indent_with_tabs.c
02523 c/pp_indent_with_tabs_-1_0.cfg c/pp_indent_with_tabs.c
02524 c/pp_indent_with_tabs_-1_1.cfg c/pp_indent_with_tabs.c
02525 c/pp_indent_with_tabs_-1_2.cfg c/pp_indent_with_tabs.c
02530 common/empty.cfg c/pp_multiline_define.c
02531 common/Issue_3052.cfg c/pp_multiline_define.c
02532 c/pp_multiline_define_ignore_body.cfg c/pp_multiline_define.c
02533 c/pp_multiline_define_with_spaces.cfg c/pp_multiline_define.c
02534 c/pp_multiline_define_align_nl.cfg c/pp_multiline_define.c
02535 c/pp_multiline_define_align_pp_col1.cfg c/pp_multiline_define.c
02536 c/pp_multiline_define_align_pp_cnt3.cfg c/pp_multiline_define.c
02537 c/pp_multiline_define_align_pp_ml4.cfg c/pp_multiline_define.c
02538 c/pp_multiline_define_align_pp_ml2.cfg c/pp_multiline_define.c
02539 c/pp_multiline_define_align_pp_ml0.cfg c/pp_multiline_define.c
02540 c/pp_multiline_define_align_pp_ml-1.cfg c/pp_multiline_define.c
02541 c/pp_multiline_define_align_pp_ml-5.cfg c/pp_multiline_define.c
02542 c/align_nl_cont-2.cfg c/pp_multiline_define.c
02543 c/align_nl_cont-3.cfg c/pp_multiline_define.c
02544 c/align_nl_cont_spaces-5.cfg c/pp_multiline_define.c
02550 c/Issue_3852.cfg c/func_var_multi_paren.c
07630 c/indent-vbrace.cfg c/indent-vbrace.c
08399 c/ben_095.cfg c/gh399.c
09594 common/indent_columns-3.cfg c/sf594.c
09588 common/empty.cfg c/sf588.c
09601 common/bug_637.cfg c/bug_637.c
09602 common/bug_671.cfg c/bug_671.c
09603 common/indent_ternary_operator-1.cfg c/indent_ternary-1.c
09604 common/indent_ternary_operator-2.cfg c/indent_ternary-2.c
09605 common/sp_arith-f.cfg c/negative_value.c
09606 c/ptr-arith.cfg c/extern.c
09607 c/ptr-arith.cfg c/attribute.c
09608 common/aet-func_call_user.cfg c/func_call_user2.c
09609 c/Issue_2279.cfg c/Issue_2279.c
09610 c/force_tab_after_define-t.cfg c/bug_i_876.c
09611 common/space_indent_columns-4.cfg c/bug_i_222.c
09612 common/empty.cfg c/bug_1041.c
09613 common/empty.cfg c/i1413.c
09614 common/empty.cfg c/string_prefixes.c
09615 c/i1564.cfg c/i1564.c
09616 c/enum_comma_ifdef.cfg c/enum_comma_ifdef.c
09617 c/Issue_2360-a.cfg c/Issue_2360.c
09618 c/Issue_2360-b.cfg c/Issue_2360.c
09619 c/Issue_2411.cfg c/Issue_2411.c
09620 c/Issue_2640.cfg c/Issue_2640.c
09621 c/preproc-cleanup.cfg c/pp-before-func-def.c
09622 c/Issue_3356.cfg c/Issue_3356.c
09623 c/convert_cmt_vbrace_one_line.cfg c/vbrace_one_liner.c
10003 common/empty.cfg c/incdec_postfix_multiply.c
10004 c/ben_094.cfg c/pragma_asm.c
10005 common/empty.cfg c/i1270.c
10006 c/bug_2331.cfg c/bug_2331.c
10007 c/indent_macro_brace-true.cfg c/indent-macro-brace.c
10008 c/indent_macro_brace-false.cfg c/indent-macro-brace.c
10009 common/empty.cfg c/return-compound-literal.c
10010 c/indent_compound_literal_return-false.cfg c/return-compound-literal.c
10011 c/indent_compound_literal_return-true.cfg c/return-compound-literal.c
10012 c/indent_sparen_extra-8.cfg c/sparen-indent.c
10013 common/empty.cfg c/sparen-indent.c
10014 common/indent_continue-8.cfg c/sparen-indent.c
10015 common/empty.cfg c/Issue_2845.h
10016 c/Issue_3233.cfg c/Issue_3233.c
10017 c/sp_sparen_paren-a.cfg c/double-sparen.c
10018 c/sp_sparen_paren-i.cfg c/double-sparen.c
10019 c/pp_indent_in_guard.cfg c/include-guard.h
10020 c/indent_single_line_comments_after.cfg c/single_line_comment_after.c
10021 common/sp_cparen_oparen-f.cfg c/parenthesized_indirect_call.c
10022 c/Issue_3269.cfg c/Issue_3269.c
10023 c/Issue_3272.cfg c/Issue_3272.h
10024 c/Issue_3274.cfg c/Issue_3274.c
10025 c/sp_between_semi_for_empty-r.cfg c/forever.c
10026 c/sp_between_semi_for_empty-i.cfg c/forever.c
10027 c/Issue_3327.cfg c/Issue_3327.c
10028 c/sp_emb_cmt-i.cfg c/Issue_3339.c
10029 c/sp_emb_cmt-f.cfg c/Issue_3339.c
10030 c/sp_emb_cmt-r.cfg c/Issue_3339.c
10031 c/sp_after_pointer_star-r.cfg c/Issue_3342.c
10032 c/sp_after_pointer_star-r.cfg c/Issue_3345.c
10033 c/pp_include_at_level-true.cfg c/Issue_3343.c
10034 c/pp_include_at_level-false.cfg c/Issue_3343.c
10035 c/indent_comment_align_thresh-0.cfg c/comment-indent.c
10036 c/Issue_3350.cfg c/comment-indent.c
10037 c/indent_case_comment-true.cfg c/Issue_3362.c
10038 c/indent_case_comment-false.cfg c/Issue_3362.c
10039 c/Issue_3370.cfg c/Issue_3370.c
10040 c/Issue_3377.cfg c/Issue_3377.c
10041 c/Issue_3351.cfg c/Issue_3351.c
10042 c/sp_ptr_star_func_var-i.cfg c/Issue_3376.c
10043 c/sp_ptr_star_func_var-a.cfg c/Issue_3376.c
10044 c/sp_ptr_star_func_var-r.cfg c/Issue_3376.c
10045 c/sp_ptr_star_func_var-f.cfg c/Issue_3376.c
10046 c/Issue_3402.cfg c/Issue_3402.c
10047 c/pp_if_indent_code-true.cfg c/Issue_3421.h
10048 c/Issue_3431.cfg c/Issue_3431.c
10049 c/indent_paren_close--1.cfg c/Issue_3436.c
10050 common/empty.cfg c/Issue_3192.c
10051 c/Issue_3454.cfg c/Issue_3454.c
10052 c/Issue_3472.cfg c/Issue_3472.c
10053 c/Issue_3476.cfg c/Issue_3476.c
10054 c/Issue_3480.cfg c/Issue_3480.c
10055 c/Issue_3493.cfg c/Issue_3493.c
10056 c/sp_enum_brace-i.cfg c/Issue_3496.h
10057 c/sp_enum_brace-a.cfg c/Issue_3496.h
10058 c/sp_enum_brace-r.cfg c/Issue_3496.h
10059 c/sp_enum_brace-f.cfg c/Issue_3496.h
10060 c/indent_ignore_bool-true.cfg c/Issue_3548.c
10061 c/Issue_3556.cfg c/Issue_3556.c
10062 c/Issue_3561.cfg c/Issue_3561.c
10063 c/Issue_3565.cfg c/Issue_3565.c
10064 c/Issue_3567-a.cfg c/Issue_3567.c
10065 c/Issue_3567-b.cfg c/Issue_3567.c
10066 c/Issue_3580.cfg c/Issue_3580.c
10077 c/Issue_3582.cfg c/Issue_3582.c
10078 c/pp_indent_brace--1.cfg c/Issue_3587.h
10079 c/Issue_3662.cfg c/Issue_3662.c
10080 c/mod_infinite_loop-0.cfg c/infinite-loops.c
10081 c/mod_infinite_loop-1.cfg c/infinite-loops.c
10082 c/mod_infinite_loop-2.cfg c/infinite-loops.c
10083 c/mod_infinite_loop-3.cfg c/infinite-loops.c
10084 c/mod_infinite_loop-4.cfg c/infinite-loops.c
10085 c/mod_infinite_loop-5.cfg c/infinite-loops.c
10086 c/Issue_3716-1.cfg c/infinite-loops.c
10087 c/Issue_3716-2.cfg c/infinite-loops.c
10088 c/Issue_3716-3.cfg c/infinite-loops.c
10089 c/Issue_3716-4.cfg c/infinite-loops.c
10090 c/Issue_3716-5.cfg c/infinite-loops.c
10091 c/mod_short_int-a.cfg c/int-types.c
10092 c/mod_short_int-r.cfg c/int-types.c
10093 c/mod_long_int-a.cfg c/int-types.c
10094 c/mod_long_int-r.cfg c/int-types.c
10095 c/mod_signed_int-a.cfg c/int-types.c
10096 c/mod_signed_int-r.cfg c/int-types.c
10097 c/mod_unsigned_int-a.cfg c/int-types.c
10098 c/mod_unsigned_int-r.cfg c/int-types.c
10099 c/mod_int_short-a.cfg c/int-types.c
10100 c/mod_int_short-r.cfg c/int-types.c
10101 c/mod_int_long-a.cfg c/int-types.c
10102 c/mod_int_long-r.cfg c/int-types.c
10103 c/mod_int_signed-a.cfg c/int-types.c
10104 c/mod_int_signed-r.cfg c/int-types.c
10105 c/mod_int_unsigned-a.cfg c/int-types.c
10106 c/mod_int_unsigned-r.cfg c/int-types.c
10107 c/mod_int-shift-left.cfg c/int-types.c
10108 c/mod_int-shift-right.cfg c/int-types.c
10109 c/mod_int-add-all-prefer-left.cfg c/int-types.c
10110 c/mod_int-add-all-prefer-right.cfg c/int-types.c
10111 c/mod_int-remove-left.cfg c/int-types.c
10112 c/mod_int-remove-right.cfg c/int-types.c
10113 c/mod_int-remove-all.cfg c/int-types.c
10114 c/Issue_3989.cfg c/Issue_3989.c
10120 c/sp_after_sparen-i.cfg c/sp_after_sparen.c
10121 c/sp_after_sparen-a.cfg c/sp_after_sparen.c
10122 c/sp_after_sparen-r.cfg c/sp_after_sparen.c
10123 c/sp_after_sparen-f.cfg c/sp_after_sparen.c
10124 common/tde.cfg c/Issue_3985.c
10125 common/tde.cfg c/Issue_3992.c

@ -1,98 +0,0 @@
struct KPluginSelectionWidget::KPluginSelectionWidgetPrivate
{
KPluginSelectionWidgetPrivate(KPluginSelector *_kps, const TQString &_cat,
TDEConfigGroup *_config) :
widgetstack(0), kps(_kps), config(_config), tooltip(0), catname(_cat), currentplugininfo(0),
visible(true), currentchecked(false), changed(0)
{
moduleParentComponents.setAutoDelete(true);
}
};
KPasswordDialog::KPasswordDialog(Types type, bool enableKeep, int extraBttn, TQWidget *parent,
const char *name) :
KDialogBase(parent, name, true, "", Ok | Cancel | extraBttn,
Ok, true), m_Keep(enableKeep ? 1 : 0), m_Type(type), m_keepWarnLbl(0),
d(new KPasswordDialogPrivate)
{
d->iconName = "password";
init();
const TQString strengthBarWhatsThis(i18n(
"The password strength meter gives an indication of the security "
"of the password you have entered. To improve the strength of "
"the password, try:\n"
" - using a longer password;\n"
" - using a mixture of upper- and lower-case letters;\n"
" - using numbers or symbols, such as #, as well as letters."));
int retVal = KMessageBox::warningContinueCancel(this,
i18n(
"The password you have entered has a low strength. "
"To improve the strength of "
"the password, try:\n"
" - using a longer password;\n"
" - using a mixture of upper- and lower-case letters;\n"
" - using numbers or symbols as well as letters.\n"
"\n"
"Would you like to use this password anyway?"),
i18n("Low Password Strength"));
}
static const int POPUP_FLAGS = TQt::WStyle_Customize | TQt::WDestructiveClose | TQt::WX11BypassWM |
TQt::WStyle_StaysOnTop | TQt::WStyle_Tool | TQt::WStyle_NoBorder;
KPassivePopup::KPassivePopup(TQWidget *parent, const char *name, WFlags f) :
TQFrame(0, name, (WFlags)(f ? (int)f : POPUP_FLAGS)), window(parent ? parent->winId() : 0L),
msgView(0), topLayout(0), hideDelay(DEFAULT_POPUP_TIME),
hideTimer(new TQTimer(this, "hide_timer")),
m_autoDelete(false)
{
init(DEFAULT_POPUP_TYPE);
move(right ? d->anchor.x() - width() + 20 : (d->anchor.x() < 11 ? 11 : d->anchor.x() - 20),
bottom ? d->anchor.y() - height() : (d->anchor.y() < 11 ? 11 : d->anchor.y()));
}
TDEToggleAction* showMenubar(const TQObject *recvr, const char *slot, TDEActionCollection *parent,
const char *_name)
{
TDEToggleAction *ret;
ret = new TDEToggleAction(i18n("Show &Menubar"), "showmenu",
TDEStdAccel::shortcut(TDEStdAccel::ShowMenubar), recvr, slot, parent,
_name ? _name : name(ShowMenubar));
ret->setWhatsThis(i18n("Show Menubar<p>"
"Shows the menubar again after it has been hidden"));
KGuiItem guiItem(i18n("Hide &Menubar"), 0 /*same icon*/, TQString::null,
i18n("Hide Menubar<p>"
"Hide the menubar. You can usually get it back using the right mouse button inside the window itself."));
return ret;
}
KProgressBoxDialog::KProgressBoxDialog(TQWidget *parent, const char *name, const TQString &caption,
const TQString &text, bool modal) :
KDialogBase(KDialogBase::Plain, caption, KDialogBase::Cancel,
KDialogBase::Cancel, parent, name, modal), mAutoClose(true), mAutoReset(false),
mCancelled(false), mAllowCancel(true), mAllowTextEdit(false), mShown(false), mMinDuration(2000),
d(new KProgressBoxDialogPrivate)
{
KWin::setIcons(winId(), kapp->icon(), kapp->miniIcon());
}
TDEPopupMenu* KPixmapRegionSelectorWidget::createPopupMenu()
{
TDEPopupMenu *popup = new TDEPopupMenu(this, "PixmapRegionSelectorPopup");
popup->insertTitle(i18n("Image Operations"));
TDEAction *action = new TDEAction(i18n("&Rotate Clockwise"), "object-rotate-right", 0,
TQT_TQOBJECT(this), TQT_SLOT(rotateClockwise()),
TQT_TQOBJECT(popup), "rotateclockwise");
action->plug(popup);
action = new TDEAction(i18n("Rotate &Counterclockwise"), "object-rotate-left", 0,
TQT_TQOBJECT(this), TQT_SLOT(rotateCounterclockwise()),
TQT_TQOBJECT(popup),
"rotatecounterclockwise");
action->plug(popup);
return popup;
}

@ -1,17 +0,0 @@
DCOPClient::DCOPClient()
{
TQObject::connect(
&d->postMessageTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
processPostedMessagesInternal()));
TQObject::connect(
&d->eventLoopTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
eventLoopTimeout()));
}
#include <dcopclient.moc>

@ -1,17 +0,0 @@
DCOPClient::DCOPClient()
{
TQObject::connect(
&d->postMessageTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
processPostedMessagesInternal()));
TQObject::connect(
&d->eventLoopTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
eventLoopTimeout()));
}
#include <dcopclient.moc>

@ -1,17 +0,0 @@
DCOPClient::DCOPClient()
{
TQObject::connect(
&d->postMessageTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
processPostedMessagesInternal()));
TQObject::connect(
&d->eventLoopTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
eventLoopTimeout()));
}
#include <dcopclient.moc>

@ -1,17 +0,0 @@
DCOPClient::DCOPClient()
{
TQObject::connect(
&d->postMessageTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
processPostedMessagesInternal()));
TQObject::connect(
&d->eventLoopTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
eventLoopTimeout()));
}
#include <dcopclient.moc>

@ -1,17 +0,0 @@
DCOPClient::DCOPClient()
{
TQObject::connect(
&d->postMessageTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
processPostedMessagesInternal()));
TQObject::connect(
&d->eventLoopTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
eventLoopTimeout()));
}
#include <dcopclient.moc>

@ -1,17 +0,0 @@
DCOPClient::DCOPClient()
{
TQObject::connect(
&d->postMessageTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
processPostedMessagesInternal()));
TQObject::connect(
&d->eventLoopTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
eventLoopTimeout()));
}
#include <dcopclient.moc>

@ -1,18 +0,0 @@
DCOPClient::DCOPClient()
{
TQObject::connect(
&d->postMessageTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
processPostedMessagesInternal()));
TQObject::connect(
&d->eventLoopTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
eventLoopTimeout()));
}
#include <dcopclient.moc>

@ -1,18 +0,0 @@
DCOPClient::DCOPClient()
{
TQObject::connect(
&d->postMessageTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
processPostedMessagesInternal()));
TQObject::connect(
&d->eventLoopTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
eventLoopTimeout()));
}
#include <dcopclient.moc>

@ -1,18 +0,0 @@
DCOPClient::DCOPClient()
{
TQObject::connect(
&d->postMessageTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
processPostedMessagesInternal()));
TQObject::connect(
&d->eventLoopTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
eventLoopTimeout()));
}
#include <dcopclient.moc>

@ -1,19 +0,0 @@
DCOPClient::DCOPClient()
{
TQObject::connect(
&d->postMessageTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
processPostedMessagesInternal()));
TQObject::connect(
&d->eventLoopTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
eventLoopTimeout()));
}
#include <dcopclient.moc>

@ -1,19 +0,0 @@
DCOPClient::DCOPClient()
{
TQObject::connect(
&d->postMessageTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
processPostedMessagesInternal()));
TQObject::connect(
&d->eventLoopTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
eventLoopTimeout()));
}
#include <dcopclient.moc>

@ -1,19 +0,0 @@
DCOPClient::DCOPClient()
{
TQObject::connect(
&d->postMessageTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
processPostedMessagesInternal()));
TQObject::connect(
&d->eventLoopTimer,
TQT_SIGNAL(timeout()),
this,
TQT_SLOT(
eventLoopTimeout()));
}
#include <dcopclient.moc>

@ -0,0 +1,190 @@
Author:
2005 - 2016 : Ben Gardner
Maintenance:
Guy Maurel
Michele Calgaro
Matthew Woehlke
until 2022-11-22:
Other collaborators:
Alan Fineberg
Alexander GQ Gerasiov
Alex Henrie
André Berg
Andrei Alexandrescu
Andrey Starodubtsev
Anirban Pramanick
Antti Tapaninen
Arne Forlie
Arseniy Shestakov
asobhy
atauzki
Aurélien Gâteau
Benio
Ben Iofel
Ben Mayo
Beren Minor
Bi-Ruei, Chiu
Biswa96
Biswapriyo Nath
B. Kevin Hardman
Bogdan Popescu
Brandon Slack
Brecht Sanders
Brendan Long
Brian Kelley
CharlieYJH
Chris Lalancette
Clemens Rabe
Clint Lawrence
Code Able
Cody Schafer
Corentin Noël
Dandielo
Daniel Chumak
Daniele Bartolini
Dan Rose
Dave Lee
David Catmull
David E. O'Brien
David Lechner
David Schaefgen
Dirk Thomas
Dittrich, Rico
Dmitry Marakasov
Dmitry Povolotsky
Dmytro Povolotskyi
Dundar Göc
Dženan Zukić
Eism
Emerson Knapp
Emmanuel Christophe
epac-tom
Ethan Gao
Florin Pop
Frank J. T. Wojcik
Gary Ash
Ger Hobbelt
Hackerpilot
Hannes Schmidt
hghdev
Huang-Ming Huang
Husk3r
Ilya Lyubimov
Ingo Brückl
Ivan Nazarenko
Ivan Romanov
Jakub Lukasiewicz
Jakub Łukasiewicz
Jakub Schmidtke
Jan Weiß
Jason
JavDevGames
Jeremy H
Jeremy T Hilliker
Jim Meyering
Jiri Hruska
jodi.the.tigger@gmail.com
Jody Hagins
Joel Ostraat
Joergen Ibsen
Johnny Oskarsson
Jonas Hurrelmann
Jorengarenar
Joshua Gross
Joshua Parker
Julian Picht
Kalle Raiskila
Keepun
Kevin Wong
krys
Laurent Tréguier
Lauri Kasanen
lbmaian
Leon Breedt
Lorenz Haas
Lykurg
Maciej Bogusz
Manning, James
Marco Stephan
Marcus Nilsson
Marek Fort
Marius Zwicker
Mark Stegeman
Markus Geimer
Martin Delille
Martin Simonovsky
Martin Storsjo
Matthew McDole
Matthew Woehlke
Maxim Mikityanskiy
Max Smolens
MeXx
Michaël Peeters
Michele Calgaro
Mihai Popescu
Mike
Mike Gelfand
Mirko König
mjbogusz
MrTheMake
Nate
neok-m4700
Nico Decker
Oleg Liatte
Oleg Smolsky
Owen Rudge
Pat Notz
Patrick Rohr
Paul Cercueil
Paul Smith
Pavel Geiger
Paweł Benetkiewicz
PerfectCarl
Peter Bruin
Peter Hartley
Peter Jonas
Peter Kolbus
Peter Tao
Peter Waller
Piet Van Reepingen
PMheart
Randolph R. Settgast
Randolph Settgast
RaveTheTadpole
Ray Strode
Richard Maxwell
Ricky Lopez
Roland Schulz
Roman Gordienko
Ryan Maxwell
Samish Chandra Kolli
Samish Kolli
Scott Bilas
Sebastian Andersson
Sebastian Bilek
S. Gilles
Shazron Abdullah
Siddharth Kannan
Slávek Banko
Spark-NF
Stefan Koch
Stefan Nunninger
Stephen Gilles
Steven Lee
Suhaib Ishaque
t-bltg
Tim Hütz
Timotheus Pokorra
Todd Richmond
Twigz
U-RDEC\ParkerJS
Vadim Zeitlin
Viktor Kireev
Vincent Rouillé
Vojtěch Balík
Vyacheslav Shegai
Waldir Pimenta
Yannick Bühler
Yegor Yefremov

@ -0,0 +1,557 @@
cmake_minimum_required(VERSION 3.5)
project(uncrustify)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
if("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
message(FATAL_ERROR "
In-source builds are not supported, please remove the `CMakeFiles'
folder and `CMakeCache.txt', and create a folder for the build:
mkdir build; cd build; cmake ..
")
endif()
include(CheckCXXCompilerFlag)
include(CheckIncludeFileCXX)
include(CheckSymbolExists)
include(CheckCXXSymbolExists)
include(CheckTypeSize)
include(CTest)
if( ${CMAKE_VERSION} VERSION_LESS "3.12" )
find_package( PythonInterp )
if( NOT PYTHON_EXECUTABLE )
message( FATAL_ERROR "Python is required, but was not found on your system" )
endif()
else( )
find_package(Python3 REQUIRED)
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
endif()
#
# Check compiler flags
#
if(MSVC)
add_definitions(/D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /wd4267)
add_definitions(/utf-8)
elseif(CMAKE_COMPILER_IS_GNUCXX)
set(gcc_warning_flags
-Wall
-Wextra
-Wshadow
-Wpointer-arith
-Wcast-qual
-Wcast-align
-Wc++11-extensions
)
foreach(flag ${gcc_warning_flags})
string(REGEX REPLACE "[^a-zA-Z0-9]+" "_" flag_var "CXXFLAG_${flag}")
CHECK_CXX_COMPILER_FLAG("${flag}" ${flag_var})
if(${flag_var})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
endif()
unset(flag_var)
endforeach()
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-field-initializers")
endif()
unset(gcc_warning_flags)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-deprecated-declarations")
endif()
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
if(ENABLE_SANITIZER)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O1 -fno-omit-frame-pointer -fsanitize=${ENABLE_SANITIZER}")
endif()
#set(UNCRUSTIFY_SEPARATE_TESTS "True")
include_directories(
${PROJECT_BINARY_DIR}/src
${PROJECT_SOURCE_DIR}/src
${PROJECT_BINARY_DIR}
)
#
# Determine config
#
if(WIN32)
# Windows builds use src/windows_compat.h instead of config.h
else()
# Generate config.h
set(avail_headers "")
set(headers
inttypes.h
memory.h
stdint.h
stdlib.h
strings.h
string.h
sys/stat.h
sys/types.h
unistd.h
utime.h
)
foreach(header ${headers})
string(TOUPPER "${header}" header_uc)
string(REGEX REPLACE "[^A-Z0-9_]" "_" include_var "HAVE_${header_uc}")
check_include_file_cxx("${header}" ${include_var})
if(${include_var})
list(APPEND avail_headers ${header})
endif()
unset(include_var)
unset(header_uc)
endforeach()
unset(headers)
check_include_file("stdbool.h" HAVE_STDBOOL_H)
set(symbols
memset
strcasecmp
strchr
strdup
strerror
strtol
strtoul
)
foreach(symbol ${symbols})
string(TOUPPER "${symbol}" symbol_uc)
string(REGEX REPLACE "[^A-Z0-9_]" "_" symbol_var "HAVE_${symbol_uc}")
check_cxx_symbol_exists("${symbol}" "${avail_headers}" ${symbol_var})
unset(symbol_var)
unset(symbol_uc)
endforeach()
unset(symbols)
unset(avail_headers)
check_type_size(_Bool _BOOL LANGUAGE C)
configure_file(src/config.h.in config.h @ONLY)
endif()
#
# Generate uncrustify_version.h
#
set(UNCRUSTIFY_VERSION "0.78.1_f")
option(NoGitVersionString "Do not use make_version.py and git to build a version string" OFF)
if(NoGitVersionString)
configure_file(src/uncrustify_version.h.in uncrustify_version.h @ONLY)
add_custom_target(generate_version_header) # Dummy target
else()
# Add target to generate version header;
# do this every build to ensure git SHA is up to date
add_custom_target(generate_version_header
BYPRODUCTS "${PROJECT_BINARY_DIR}/uncrustify_version.h"
COMMAND
${CMAKE_COMMAND}
-D PYTHON_EXECUTABLE:STRING=${PYTHON_EXECUTABLE}
-D SOURCE_DIR:PATH="${PROJECT_SOURCE_DIR}"
-D INPUT:PATH="${PROJECT_SOURCE_DIR}/src/uncrustify_version.h.in"
-D OUTPUT:PATH="${PROJECT_BINARY_DIR}/uncrustify_version.h"
-D UNCRUSTIFY_VERSION:STRING="${UNCRUSTIFY_VERSION}"
-P ${PROJECT_SOURCE_DIR}/cmake/GenerateVersionHeader.cmake
COMMENT "Generating version header"
)
set_source_files_properties(
"${PROJECT_BINARY_DIR}/uncrustify_version.h"
PROPERTIES GENERATED TRUE
)
endif()
#
# Generate token_names.h
#
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/token_names.h"
COMMAND ${CMAKE_COMMAND}
"-Dsrc_file=${PROJECT_SOURCE_DIR}/src/token_enum.h"
"-Ddst_file=${CMAKE_CURRENT_BINARY_DIR}/token_names.h"
-P "${PROJECT_SOURCE_DIR}/cmake/GenerateTokenNames.cmake"
MAIN_DEPENDENCY src/token_enum.h
COMMENT "Generating token_names.h"
)
# Set up commands for generated source files
function(py_gen OUTPUT SCRIPT INPUT)
set(out "${PROJECT_BINARY_DIR}/src/${OUTPUT}")
set(deps "${PROJECT_SOURCE_DIR}/src/${INPUT}")
get_filename_component(outdir "${out}" DIRECTORY)
foreach(arg IN LISTS ARGN)
if (IS_ABSOLUTE "${arg}")
list(APPEND deps "${arg}")
else()
list(APPEND deps "${PROJECT_SOURCE_DIR}/src/${arg}")
endif()
endforeach()
add_custom_command(
OUTPUT "${out}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${outdir}"
COMMAND ${PYTHON_EXECUTABLE}
"${PROJECT_SOURCE_DIR}/scripts/${SCRIPT}"
"${out}"
${deps}
DEPENDS ${deps} "${PROJECT_SOURCE_DIR}/scripts/${SCRIPT}"
MAIN_DEPENDENCY src/${INPUT}
COMMENT "Generating ${OUTPUT}"
)
endfunction()
py_gen(punctuator_table.h
make_punctuator_table.py
symbols_table.h
)
py_gen(options.cpp
make_options.py
options.h
options.cpp.in
)
py_gen(option_enum.h
make_option_enum.py
option.h
option_enum.h.in
)
py_gen(option_enum.cpp
make_option_enum.py
option.h
option_enum.cpp.in
)
py_gen(../etc/uncrustify.xml
make_katehl.py
../etc/uncrustify.xml.in
"${PROJECT_BINARY_DIR}/uncrustify_version.h"
options.h
option.h
token_enum.h
)
#
# Uncrustify
#
set(uncrustify_sources
src/align_add.cpp
src/align_asm_colon.cpp
src/align_assign.cpp
src/align_braced_init_list.cpp
src/align.cpp
src/align_eigen_comma_init.cpp
src/align_func_params.cpp
src/align_func_proto.cpp
src/align_init_brace.cpp
src/align_left_shift.cpp
src/align_log_al.cpp
src/align_nl_cont.cpp
src/align_oc_decl_colon.cpp
src/align_oc_msg_colons.cpp
src/align_oc_msg_spec.cpp
src/align_preprocessor.cpp
src/align_same_func_call_params.cpp
src/align_stack.cpp
src/align_struct_initializers.cpp
src/align_tab_column.cpp
src/align_tools.cpp
src/align_trailing_comments.cpp
src/align_typedefs.cpp
src/align_var_def_brace.cpp
src/args.cpp
src/backup.cpp
src/brace_cleanup.cpp
src/braces.cpp
src/calculate_closing_brace_position.cpp
src/change_int_types.cpp
src/check_template.cpp
src/chunk.cpp
src/ChunkStack.cpp
src/combine.cpp
src/combine_fix_mark.cpp
src/combine_labels.cpp
src/combine_tools.cpp
src/combine_skip.cpp
src/compat_posix.cpp
src/compat_win32.cpp
src/cs_top_is_question.cpp
src/detect.cpp
src/enum_cleanup.cpp
src/EnumStructUnionParser.cpp
src/EnumStructUnionParser.h
src/flag_braced_init_list.cpp
src/flag_decltype.cpp
src/flag_parens.cpp
src/indent.cpp
src/keywords.cpp
src/lang_pawn.cpp
src/language_names.cpp
src/language_tools.cpp
src/logger.cpp
src/logmask.cpp
src/log_rules.cpp
src/mark_functor.cpp
src/mark_question_colon.cpp
src/md5.cpp
src/newlines.cpp
src/option.cpp
src/options_for_QT.cpp
src/output.cpp
src/parameter_pack_cleanup.cpp
src/parens.cpp
src/parent_for_pp.cpp
src/parsing_frame.cpp
src/parsing_frame_stack.cpp
src/pragma_cleanup.cpp
src/pcf_flags.cpp
src/punctuators.cpp
src/quick_align_again.cpp
src/remove_duplicate_include.cpp
src/remove_extra_returns.cpp
src/rewrite_infinite_loops.cpp
src/semicolons.cpp
src/sorting.cpp
src/space.cpp
src/tokenize_cleanup.cpp
src/tokenize.cpp
src/uncrustify.cpp
src/uncrustify_emscripten.cpp
src/uncrustify_types.cpp
src/unc_ctype.cpp
src/unc_text.cpp
src/unc_tools.cpp
src/unicode.cpp
src/universalindentgui.cpp
src/width.cpp
${PROJECT_BINARY_DIR}/src/options.cpp
${PROJECT_BINARY_DIR}/src/option_enum.cpp
)
set(uncrustify_headers
src/add_space_table.h
src/align_add.h
src/align_asm_colon.h
src/align_assign.h
src/align_braced_init_list.h
src/align_func_params.h
src/align_func_proto.h
src/align.h
src/align_eigen_comma_init.h
src/align_init_brace.h
src/align_left_shift.h
src/align_log_al.h
src/align_nl_cont.h
src/align_oc_decl_colon.h
src/align_oc_msg_colons.h
src/align_oc_msg_spec.h
src/align_preprocessor.h
src/align_same_func_call_params.h
src/align_stack.h
src/align_struct_initializers.h
src/align_tab_column.h
src/align_tools.h
src/align_trailing_comments.h
src/align_typedefs.h
src/align_var_def_brace.h
src/args.h
src/backup.h
src/base_types.h
src/brace_cleanup.h
src/braces.h
src/calculate_closing_brace_position.h
src/change_int_types.h
src/char_table.h
src/check_template.h
src/chunk.h
src/ChunkStack.h
src/combine.h
src/combine_fix_mark.h
src/combine_labels.h
src/combine_skip.h
src/combine_tools.h
src/compat.h
src/cs_top_is_question.h
src/detect.h
src/enum_cleanup.h
src/enum_flags.h
src/error_types.h
src/flag_braced_init_list.h
src/flag_decltype.h
src/flag_parens.h
src/indent.h
src/keywords.h
src/lang_pawn.h
src/language_names.h
src/language_tools.h
src/ListManager.h
src/logger.h
src/log_levels.h
src/logmask.h
src/log_rules.h
src/mark_functor.h
src/mark_question_colon.h
src/md5.h
src/newlines.h
src/option.h
src/options_for_QT.h
src/options.h
src/output.h
src/parameter_pack_cleanup.h
src/parens.h
src/parent_for_pp.h
src/parsing_frame.h
src/parsing_frame_stack.h
src/pragma_cleanup.h
src/pcf_flags.h
src/prototypes.h
src/punctuators.h
src/quick_align_again.h
src/remove_duplicate_include.h
src/remove_extra_returns.h
src/rewrite_infinite_loops.h
src/semicolons.h
src/sorting.h
src/space.h
src/symbols_table.h
src/token_enum.h
src/tokenize_cleanup.h
src/tokenize.h
src/unc_ctype.h
src/uncrustify.h
src/uncrustify_limits.h
src/uncrustify_types.h
src/unc_text.h
src/unc_tools.h
src/unicode.h
src/universalindentgui.h
src/width.h
src/windows_compat.h
${PROJECT_BINARY_DIR}/src/option_enum.h
${PROJECT_BINARY_DIR}/uncrustify_version.h
)
set(uncrustify_docs
"${PROJECT_SOURCE_DIR}/AUTHORS"
"${PROJECT_SOURCE_DIR}/BUGS"
"${PROJECT_SOURCE_DIR}/ChangeLog"
"${PROJECT_SOURCE_DIR}/COPYING"
"${PROJECT_SOURCE_DIR}/HELP"
"${PROJECT_SOURCE_DIR}/README.md"
)
add_executable(uncrustify ${uncrustify_sources} ${uncrustify_headers})
add_dependencies(uncrustify generate_version_header)
set_property(TARGET uncrustify APPEND PROPERTY
COMPILE_DEFINITIONS $<$<OR:$<CONFIG:Debug>,$<CONFIG:>>:DEBUG>
)
#
# Generate uncrustify.1
#
configure_file(man/uncrustify.1.in uncrustify.1 @ONLY)
#
# Generate uncrustify.xml (katepart highlighting file)
#
add_custom_target(katehl
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/etc/uncrustify.xml
)
#
# Tests
#
if(BUILD_TESTING)
enable_testing()
add_subdirectory(tests)
endif()
#
# Coverage
#
OPTION(ENABLE_CODECOVERAGE "Enable code coverage testing support")
if(ENABLE_CODECOVERAGE)
set(CODECOVERAGE_DEPENDS uncrustify)
include(${CMAKE_SOURCE_DIR}/cmake/CodeCoverage.cmake)
endif(ENABLE_CODECOVERAGE)
#
# Build command to run uncrustify on its own sources
#
add_custom_target(format-sources)
foreach(source IN LISTS uncrustify_sources uncrustify_headers)
get_filename_component(source_name ${source} NAME)
add_custom_target(format-${source_name}
COMMAND uncrustify
-c forUncrustifySources.cfg
-lCPP --no-backup ${source}
COMMENT "Formatting ${source}"
WORKING_DIRECTORY ${uncrustify_SOURCE_DIR}
)
add_dependencies(format-sources format-${source_name})
endforeach()
#
# Package
#
set(CPACK_PACKAGE_NAME "uncrustify")
set(CPACK_PACKAGE_VERSION "${UNCRUSTIFY_VERSION}")
set(CPACK_PACKAGE_VENDOR "Ben Gardner")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Code beautifier")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/README.md")
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/COPYING")
set(CPACK_RESOURCE_FILE_README "${PROJECT_SOURCE_DIR}/README.md")
set(CPACK_SOURCE_IGNORE_FILES "/\\\\.git/;/\\\\.hg/;/tests/results/;/build.*/")
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY FALSE)
set(CPACK_GENERATOR "ZIP")
endif()
include(CPack)
#
# Install
#
if(MSVC)
install(TARGETS uncrustify DESTINATION ".")
install(FILES ${uncrustify_docs}
DESTINATION "."
)
install(FILES "${PROJECT_SOURCE_DIR}/documentation/htdocs/index.html"
DESTINATION "doc"
)
install(DIRECTORY "${PROJECT_SOURCE_DIR}/etc/"
DESTINATION "cfg"
FILES_MATCHING PATTERN "*.cfg"
)
else()
include(GNUInstallDirs)
install(TARGETS uncrustify
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/uncrustify.1"
DESTINATION "${CMAKE_INSTALL_MANDIR}/man1"
)
install(DIRECTORY "${PROJECT_SOURCE_DIR}/etc/"
DESTINATION "${CMAKE_INSTALL_DOCDIR}/examples"
FILES_MATCHING PATTERN "*.cfg"
)
install(FILES ${uncrustify_docs}
DESTINATION "${CMAKE_INSTALL_DOCDIR}"
)
endif()
#
# Uninstall
#
get_directory_property(hasParent PARENT_DIRECTORY)
if(NOT hasParent)
add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${PROJECT_SOURCE_DIR}/cmake/uninstall.cmake")
endif()

File diff suppressed because it is too large Load Diff

@ -0,0 +1,395 @@
[![AppVeyor](https://img.shields.io/appveyor/ci/uncrustify/uncrustify/master.svg?style=flat-square&label=Windows)](https://ci.appveyor.com/project/uncrustify/uncrustify)
[![Coverage Status](https://coveralls.io/repos/github/uncrustify/uncrustify/badge.svg?branch=master)](https://coveralls.io/github/uncrustify/uncrustify?branch=master)
<a href="#"><img src="https://img.shields.io/badge/C++-11-blue.svg?style=flat-square"></a>
[![Conan Center](https://shields.io/conan/v/uncrustify)](https://conan.io/center/uncrustify)
---------------------------
# Uncrustify
A source code beautifier for C, C++, C#, Objective-C, D, Java, Pawn and Vala.
## Features
* Highly configurable - 850 configurable options as of version 0.78.1
- <details><summary>add/remove spaces</summary>
- `sp_before_sparen`: _Add or remove space before '(' of 'if', 'for', 'switch', 'while', etc._
- `sp_compare`: _Add or remove space around compare operator '<', '>', '==', etc_
</details>
- <details><summary>add/remove newlines</summary>
- `nl_if_brace`: _Add or remove newline between 'if' and '{'_
- `nl_brace_while`: _Add or remove newline between '}' and 'while' of 'do' statement_
</details>
- <details><summary>add/remove blanklines</summary>
- `eat_blanks_before_close_brace`: _Whether to remove blank lines before '}'_
- `nl_max`: _The maximum consecutive newlines (3 = 2 blank lines)_
</details>
- <details><summary>indent code</summary>
- `indent_switch_case`: _indent_switch_case: Spaces to indent 'case' from 'switch'_
- `indent_class_colon`: _Whether to indent the stuff after a leading base class colon_
</details>
- <details><summary>align code</summary>
- `align_func_params`: _Align variable definitions in prototypes and functions_
- `align_struct_init_span`: _The span for aligning struct initializer values (0=don't align)_
</details>
- <details><summary>modify code</summary>
- `mod_full_brace_for`: _Add or remove braces on single-line 'for' statement_
- `mod_paren_on_return`: _Add or remove unnecessary paren on 'return' statement_
</details>
Here is an example [configuration file](https://raw.githubusercontent.com/uncrustify/uncrustify/master/documentation/htdocs/ben.cfg.txt),
and here is a [before](https://raw.githubusercontent.com/uncrustify/uncrustify/master/documentation/htdocs/examples/c-1.in.c)
and [after](https://raw.githubusercontent.com/uncrustify/uncrustify/master/documentation/htdocs/examples/c-1.out.c)
C source example.
That should give you a pretty good idea of what Uncrustify can do.
---------------------------------------------------------------------------
## Binaries
Pre compiled binaries for Windows can be downloaded from the [Releases](https://github.com/uncrustify/uncrustify/releases) page or from the [Sourceforge](https://sourceforge.net/projects/uncrustify/files/) website.
## Build
[Python](https://www.python.org/) is an "interpreted high-level programming language for general-purpose programming", for this project it is needed to extend the capabilities of CMake.
[CMake](https://cmake.org/) is a tool that generates build systems
(Makefiles, Visual Studio project files, Xcode project files and others).
To generate a build system for Uncrustify using CMake on UNIX-like systems, create a
build folder and run CMake from it, making sure to specify Release mode:
```bash
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
```
Other systems may require other flags (e.g. `cmake -G Xcode ..` for Xcode).
Then use the build tools of your build system (in many cases this will
simply be `make`, but on Windows it could be MSBuild or Visual Studio).
Or use CMake to invoke it:
```bash
$ cmake --build . --config Release
```
If testing is enabled, CMake generates a `test` target, which you can
_build_ using your build system tools (usually `make test`). This can also
be invoked using CTest:
```bash
$ ctest -V -C Debug
```
There is also an `install` target, which can be used to install the
Uncrustify executable (typically `make install`).
### A note on CMake configurations
Some build systems are single-configuration, which means you specify the
build type when running CMake (by setting the `CMAKE_BUILD_TYPE`
variable), and the generated files then build that configuration.
An example of a single-configuration build system are Makefiles. You can
build the Release or Debug configurations of Uncrustify (from the build folder) with:
```bash
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make
```
or
```bash
$ cmake -DCMAKE_BUILD_TYPE=Debug ..
$ make
```
Other build systems are multi-configuration, which means you specify the
build type when building.
An example of a multi-configuration build system are Visual Studios project
files. When you open the project in Visual Studio, you can select which
configuration to build. You can also do this while building from the
command line with `cmake --build . --config Debug`.
## Bugs
Post any bugs to the issue tracker found on the projects GitHub page:
https://github.com/uncrustify/uncrustify/issues
Please include the following with your issue:
- a description of what is not working right
- input code sufficient to demonstrate the issue
- expected output code
- configuration options used to generate the output
More about this is in the [ISSUE_TEMPLATE](https://github.com/uncrustify/uncrustify/blob/master/.github/ISSUE_TEMPLATE)
### Known problems
[Look at the Wiki](https://github.com/uncrustify/uncrustify/wiki/Known-Problems)
## Which repositories have uncrustify?
[Look here](https://repology.org/metapackage/uncrustify/versions)
## Contribute
If you want to add a feature, fix a bug, or implement missing
functionality, feel free to do so! Patches are welcome!
Here are some areas that need attention:
- __Patches for Objective-C support__. We really need someone who knows
this language as it has more than plenty open issues. A good starting
point would be to integrate changes made in the
[Unity fork](https://github.com/Unity-Technologies/uncrustify/tree/fixes/c-oc-java)
- Test Java support and provide feedback (or patches!)
- Test Embedded SQL to see what works
- A logo of some sort
- Anything else that you want to do to make it better?
### A note about pull requests
Firstly take a look at the [CONTRIBUTING.md](https://github.com/uncrustify/uncrustify/blob/master/CONTRIBUTING.md)
Currently we have two continuous integration systems that test your PRs,
TravisCI and Appveyor.
Tested are the test cases, the formatting of the code base and
the output of the command line options.
Test cases can be found in the `tests/` directory. Every file ending with
`.test` is a test set. Inside each line with these components is a
single test: `testNr[!] testConfigFileName testInputFileName [lang]`
The configuration file `testConfigFileName` has to be located inside `tests/config`,
the input file `testInputFileName` inside `tests/input/<testSetName>/`,
and expected results file inside the `tests/expected/<testSetName>/`
directory.
Expected results have the following naming convention: `testNr-testInputFileName`.
Optionally a `!` can follow the `testNr` to enable a custom rerun
configuration.
Rerun configurations need to be named like this:
`testConfigFileName`(without extension)+`.rerun`+`.extension`
Also, optionally a language for the input can be provided with `lang`.
The codebase has to be formatted by the options set up in
`forUncrustifySources.cfg`. Failing to format the sources correctly will
cause TravisCI build failures.
The Command line interface (CLI) output is tested by the
`test_cli_options.sh` script. It is located inside of `tests/cli/` and operates
on the subdirectories of that folder.
If a PR is altering the CLI output, files inside those directories might
need to be manually updated. This often happens when options are
added, removed, or altered. Keep in mind that the version string line
(example: `# Uncrustify-0.69.0_f`) of outputs from commands like
`--show-config` should be replaced with a blank line.
### Debugging
The first method is to use uncrustify itself to get debug informations.
Using:
```.txt
uncrustify -c myExample.cfg -f myExample.cpp -p myExample.p -L A 2>myExample.A
```
you get two files for the first informations.
The p-file gives you details of the parsing process and indentation.
```.txt
# Line Tag Parent Columns Br/Lvl/pp Flag Nl Text
# 1> CLASS[ NONE][ 1/ 1/ 6/ 0][0/0/0][ 10070000][0-0] class
# 1> TYPE[ CLASS][ 7/ 7/ 14/ 1][0/0/0][ 10000000][0-0] Capteur
# 1> BRACE_OPEN[ CLASS][ 15/ 15/ 16/ 1][0/0/0][ 100000400][0-0] {
```
The A-file gives you many details about the run itself, where the process is running thru,
which values have the most important variables.
```.txt
tokenize(2351): orig line is 1, orig col is 1, Text() 'class', type is CLASS, orig col_end is 6
tokenize(2351): orig line is 1, orig col is 7, Text() 'Capteur', type is WORD, orig col_end is 14
tokenize(2351): orig line is 1, orig col is 15, Text() '{', type is BRACE_OPEN, orig col_end is 16
```
You can also dump the parsing information of each formatting step using the 'dump steps' option.
```.txt
uncrustify -c myExample.cfg -f myExample.cpp -ds dump
```
This will create a series of 'dump_nnn.log' files, each containing the parsing information at
specific points of the formatting process ('dump_000.log' will list the formatting options in use).
You can combine this option with -p and -L to get a lot of detailed debugging information.
```.txt
uncrustify -c myExample.cfg -f myExample.cpp -p myExample.p -L A 2>myExample.A -ds dump
```
It might be useful to add some code lines to see where something is happening.
Use the package `unc_tools`.
Remove the comment at line:
```.cpp
#define DEVELOP_ONLY
```
Import the package:
```.cpp
#include "unc_tools.h"
```
Add at some places the line:
```.cpp
prot_the_line(__LINE__, 6, 0);
```
Compile again with DEBUG option.
### How to add an option
If you need a new option, there are a few steps to follow.
Take as example the option `sp_trailing_ret_t`
First define the option:
- Insert the code below to the file src/options.h
_NOTE:
This file is processed by make_options.py, and must conform to a particular
format. Option groups are marked by '//begin ' (in upper case; this example
is lower case to prevent being considered a region marker for code folding)
followed by the group description. Options consist of two lines of
declaration preceded by one or more lines of C++ comments. The comments form
the option description and are taken verbatim, aside from stripping the
leading '// '. Only comments immediately preceding an option declaration,
with no blank lines, are taken as part of the description, so a blank line
may be used to separate notations from a description.
An option declaration is 'extern TYPE\nNAME;', optionally followed by
' // = VALUE' if the option has a default value that is different from the
default-constructed value type of the option. The 'VALUE' must be valid C++
code, and is taken verbatim as an argument when creating the option's
instantiation. Note also that the line break, as shown, is required.
_
```.cpp
// Add or remove space around trailing return operator '->'.
extern Option<iarf_e>
sp_trailing_ret_t;
```
- Insert the code below to the file src/space.cpp
```.cpp
if (first->Is(CT_TRAILING_RET_T))
{
// Add or remove space around trailing return operator '->'.
log_rule("sp_trailing_ret_t");
return(options::sp_trailing_ret_t());
}
```
### Portability
We are pretty sure that nothing OS-specific is used in the code base.
The software has been previously tested on the following operating systems:
- Linux
- QNX
- OS X
- FreeBSD, NetBSD, OpenBSD
- Sun Solaris 9
- Windows (binary available)
---------------------------------------------------------------------------
## Running the program
__NOTE__ This application works reasonably well but it has bugs. Do __not__
apply it on your whole codebase without checking the results!
Here are ways to run it:
```
$ uncrustify -c mystyle.cfg -f somefile.c -o somefile.c.unc
$ uncrustify -c mystyle.cfg -f somefile.c > somefile.c.unc
$ uncrustify -c mystyle.cfg somefile.c
$ uncrustify -c mystyle.cfg --no-backup somefile.c
$ uncrustify -c mystyle.cfg *.c
$ uncrustify -c mystyle.cfg --no-backup *.c
```
The `-c` flag selects the configuration file.
The `-f` flag specifies the input file.
The `-o` flag specifies the output file.
If flag `-f` is used without flag `-o` the output will be send to `stdout`.
Alternatively, multiple or single files that should be processed can be
specified at the command end without flags.
If the flag `--no-backup` is missing, every file is saved with the initial
name and an additional suffix (can be changed with --suffix).
For more options descriptions call:
```bash
$ uncrustify -h
```
## Configuring the program
Uncrustify usually reads configuration files that are passed via the `-c`
flag. If the flag is not provided, Uncrustify will try to find a
configuration file via the `UNCRUSTIFY_CONFIG` environment variable or a
file with the name `.uncrustify.cfg` or `uncrustify.cfg` in your home folder.
To get a list of:
- all available options use:
```bash
uncrustify --show-config
```
- all available options in a usable configuration file format use:
```bash
uncrustify --update-config
```
or
```bash
uncrustify --update-config-with-doc
```
As the names suggest, both options can produce output that adds newly
introduced options to your old configuration file. For this your old
configuration file has to be passed via the `-c` flag:
```bash
uncrustify --update-config-with-doc -c path/to/your.cfg
```
Example configuration files that can be used as a starting point can be
found in the `etc/` directory (such as [ben.cfg](./etc/ben.cfg)).
Modify to your liking. Use a quality side-by-side diff tool to determine
if the program did what you wanted. Repeat until your style is refined.
To ease the process a bit, some 3rd party tools are available:
- [Universal Indent GUI](http://universalindent.sourceforge.net/) - A
cross-platform graphical configuration file editor for many code
beautifiers, including Uncrustify.
- [uncrustify_config](https://github.com/CDanU/uncrustify_config) - A web
configuration tool based on Uncrustify's emscripten interface.
- [UncrustifyX](https://github.com/ryanmaxwell/UncrustifyX) - Uncrustify
utility and documentation browser for Mac OS X
Under Windows:
Uncrustify is a command-line tool, if you run it by double-clicking the
executable, it will open a command prompt run the executable
(which prints the help message), and then immediately close the window
as uncrustify exits.
You can open the command prompt (which is an interactive terminal
window that allows you to run commands without it closing as soon as
they exit) and run uncrustify.exe there.
## Using uncrustify with vim
Have a look [here](https://github.com/cofyc/vim-uncrustify)
## Using uncrustify with IntelliJ
Have a look at https://plugins.jetbrains.com/plugin/17528-uncrustify

@ -0,0 +1,358 @@
uncrustify-trinity (0.78.1-0debian13.0.0+0) unstable; urgency=medium
* TDE version of upstream 0.78.1
-- Michele Calgaro <michele.calgaro@yahoo.it> Fri, 01 Dec 2023 12:36:00 +0900
uncrustify-trinity (0.78.0-0debian13.0.0+0) unstable; urgency=medium
* TDE version of upstream 0.78.0
-- Michele Calgaro <michele.calgaro@yahoo.it> Sun, 18 Nov 2023 17:35:00 +0900
uncrustify-trinity (0.76.0-0debian12.0.0+0) unstable; urgency=medium
* TDE version of upstream 0.76.0
-- Michele Calgaro <michele.calgaro@yahoo.it> Sun, 04 Dec 2022 18:56:43 +0900
uncrustify-trinity (0.75.0-0debian11.0.0+0) unstable; urgency=medium
* TDE version of upstream 0.75.0
-- Michele Calgaro <michele.calgaro@yahoo.it> Fri, 06 May 2022 13:49:07 +0900
uncrustify-trinity (0.74.0-0debian11.0.0+0) unstable; urgency=medium
* TDE version of upstream 0.74.0
-- Michele Calgaro <michele.calgaro@yahoo.it> Wed, 19 May 2021 15:58:50 +0900
uncrustify-trinity (0.73.0-0debian11.0.0+2) unstable; urgency=medium
* Fix Python detection on CMake < 3.12.
-- Slávek Banko <slavek.banko@axis.cz> Wed, 20 May 2021 00:00:40 +0200
uncrustify-trinity (0.73.0-0debian11.0.0+1) unstable; urgency=medium
* Backported commits cb1a42dd from upstream.
-- Michele Calgaro <michele.calgaro@yahoo.it> Wed, 19 May 2021 15:58:50 +0900
uncrustify-trinity (0.73.0-0debian11.0.0+0) unstable; urgency=medium
* TDE version of upstream 0.73.0
-- Michele Calgaro <michele.calgaro@yahoo.it> Wed, 19 May 2021 15:58:50 +0900
uncrustify-trinity (0.72.0-0debian11.0.0+8) unstable; urgency=medium
* Switch to build using ninja-build
-- Slávek Banko <slavek.banko@axis.cz> Tue, 18 May 2021 19:30:49 +0200
uncrustify-trinity (0.72.0-0debian11.0.0+7) unstable; urgency=medium
* TDE version 0.72-0+7
* Backported commits 5f3f392a and fb66774e from upstream.
-- Michele Calgaro <michele.calgaro@yahoo.it> Thu, 05 Jan 2021 11:08:00 +0900
uncrustify-trinity (0.72.0-0debian11.0.0+6) unstable; urgency=medium
* TDE version 0.72-0+6
* Backported commits 45681e88 and 64d93e3fb from upstream.
-- Michele Calgaro <michele.calgaro@yahoo.it> Thu, 24 Dec 2020 20:14:00 +0900
uncrustify-trinity (0.72.0-0debian11.0.0+0) unstable; urgency=medium
* TDE version of upstream 0.72.0
-- Michele Calgaro <michele.calgaro@yahoo.it> Thu, 20 Dec 2020 17:52:23 +0900
uncrustify (0.72.0) unstable; urgency=medium
* New upstream version 0.72.0
-- Alexander GQ Gerasiov <gq@debian.org> Thu, 20 Dec 2020 17:34:01 +0900
uncrustify (0.71.0+dfsg1-1) unstable; urgency=medium
* New upstream version 0.71.0
* d/control: Use debhelper-compat syntax, switch to level 12.
* d/control: Use python3 in B-D (Closes: #943295).
* d/control: Bump Standards-Version, no more changes needed.
* d/control: Remove unnnecessary --parallel.
-- Alexander GQ Gerasiov <gq@debian.org> Thu, 27 Aug 2020 17:12:57 +0300
uncrustify (0.69.0+dfsg1-1) unstable; urgency=medium
* New upstream version 0.69.0
* Remove fix_parallel_test.patch: Fixed upstream.
-- Alexander GQ Gerasiov <gq@debian.org> Tue, 02 Jul 2019 19:00:32 +0300
uncrustify (0.68.1+dfsg1-2) unstable; urgency=medium
* Add d/patches/fix_parallel_test.patch: Fix test failure on parallel run.
-- Alexander GQ Gerasiov <gq@debian.org> Mon, 10 Dec 2018 02:36:22 +0300
uncrustify (0.68.1+dfsg1-1) unstable; urgency=medium
* New upstream version 0.68.1
* d/control: Add python-all to Build-Depensds.
* d/rules: Run all tests (now disabled by default by upstream).
-- Alexander GQ Gerasiov <gq@debian.org> Sun, 02 Dec 2018 16:19:42 +0300
uncrustify (0.67+dfsg1-1) unstable; urgency=medium
* New upstream version 0.67
* debian/control: Move git to salsa.
* Add docs-remove-remote-images.patch: Remove remote images from docs.
-- Alexander GQ Gerasiov <gq@debian.org> Mon, 18 Jun 2018 01:13:56 +0300
uncrustify (0.66.1+dfsg1-1) unstable; urgency=medium
* Add debian/gbp.conf.
* New upstream version 0.66.1 Fixed FTBFS on some arches (Closes: #881249)
* Bump Standards-Version to 4.1.2 (no additional changes needed).
-- Alexander GQ Gerasiov <gq@debian.org> Sun, 17 Dec 2017 18:49:06 +0300
uncrustify (0.66+dfsg1-1) unstable; urgency=medium
* debian/control: Remove Fathi Boudra <fabo@debian.org> from uploaders.
(Closes: #879444.) Thanks for your job.
* New upstream version 0.66
* Bump Standards-Version to 4.1.1 (no additional changes needed).
* debian/control: Add more languages to short description.
-- Alexander GQ Gerasiov <gq@debian.org> Wed, 08 Nov 2017 18:18:47 +0300
uncrustify (0.65+git20170831+dfsg1-1) unstable; urgency=medium
* New upstream version 0.65+git20170831. Fixes various FTBFS and autotests
failures on exotic archs. (Closes: #867376)
* Bump Standards-Version to 4.1.0 (no additional changes needed).
-- Alexander GQ Gerasiov <gq@debian.org> Thu, 31 Aug 2017 20:25:06 +0300
uncrustify (0.65+dfsg1-1) unstable; urgency=medium
* New upstream version 0.65
* debian/control: Add python-minimal to Build-Depends.
-- Alexander GQ Gerasiov <gq@debian.org> Tue, 04 Jul 2017 14:50:47 +0300
uncrustify (0.64+dfsg1-1) unstable; urgency=medium
* Imported Upstream version 0.64
(Closes: #748787, #814193, #594210, #775517, #594206, #616708)
* Remove non-free documentation/htdocs/project-support.jpg.
* Imported debian dir from previous version.
* Remove "debian/<q" file.
* Remove fix-ftbfs-with-gcc-4.7.patch (Fixed upstream).
* debian/control: Switch dependence from autotools to cmake.
* debian/control, debian/compat: Set compatibility level to 9.
* debian/rules: Remove legacy PRONY records.
* debian/control: Change Homepage to github.
* debian/watch: Update to github using current naming scheme.
* debian/copyright: Add myself.
* Install README.md and documentation dir into package's docs.
* debian/rules: Remove tests results on clean.
* debian/control: Set myself as maintainer. (Johann Rudloff is out of
business, thanks a lot for all; Fathi Boudra acked this.)
* Bump Standards-Version to 3.9.8 (no additional changes needed).
* Add debian/TODO file.
* debian/cotrol: Add link to collab-maint's git.
-- Alexander GQ Gerasiov <gq@debian.org> Sat, 03 Dec 2016 20:19:22 +0300
uncrustify (0.59+dfsg1-1.1) unstable; urgency=medium
* Non-maintainer upload.
* Remove non-free file (project-support.jpg). Closes: #753760
-- Mathieu Malaterre <malat@debian.org> Fri, 16 Jan 2015 16:52:15 +0100
uncrustify (0.59-2) unstable; urgency=low
* Fix FTBFS with gcc 4.7 by fixing missing <unistd.h> include.
(Closes: #667404)
-- Fathi Boudra <fabo@debian.org> Mon, 21 May 2012 15:40:46 +0300
uncrustify (0.59-1) unstable; urgency=low
* New upstream release.
* Add myself to Uploaders.
-- Fathi Boudra <fabo@debian.org> Sat, 31 Dec 2011 12:49:32 +0200
uncrustify (0.57-1) unstable; urgency=low
* New upstream release.
[ Fathi Boudra ]
* Removed patch to check for NULL - stolen upstream.
* Bumped Standards-Version to 3.9.1 (no changes needed).
-- Johann Rudloff <cypheon@gmx.net> Mon, 21 Feb 2011 11:54:28 +0200
uncrustify (0.56-2) unstable; urgency=low
[ Fathi Boudra ]
* Added patch to check for NULL to prevent a segmentation fault.
(Closes: #580195)
* Bumped Standards-Version to 3.9.0 (no changes needed).
-- Johann Rudloff <cypheon@gmx.net> Thu, 01 Jul 2010 20:34:01 +0300
uncrustify (0.56-1) unstable; urgency=low
* New upstream release.
[ Fathi Boudra ]
* Switch to dpkg-source 3.0 (quilt) format.
* debian/control:
- bumped debhelper version to 7.4.15
- fixed typo in long description.
* debian/copyright:
- added email author.
- added myself.
-- Johann Rudloff <cypheon@gmx.net> Tue, 20 Apr 2010 13:08:29 +0300
uncrustify (0.55-1) unstable; urgency=low
* New upstream release (Closes: #540817)
[ Fathi Boudra ]
* debian/patches/manpage_fix_hyphens.diff: removed - merged upstream
* debian/compat: bumped to 7
* debian/control:
- bumped debhelper version to 7.4.13
- bumped Standards-Version to 3.8.4 (no changes needed)
- added ${misc:Depends}
* debian/docs: updated
* debian/rules: rewrited from scratch to use dh and enabled parallel build
-- Johann Rudloff <cypheon@gmx.net> Wed, 17 Feb 2010 09:18:41 +0100
uncrustify (0.52-1) unstable; urgency=low
* New upstream release (closes: #526100)
* debian/copyright: changed years and wording of copyright
* debian/patches/manpage_fix_hyphens.diff: added patch to fix fixed hyphens
used as minus signs in manpage
* debian/rules: included usage of quilt
* debian/control: added build dependency quilt
bumped Standards-Version to 3.8.1 (no changes required)
-- Johann Rudloff <cypheon@gmx.net> Thu, 30 Apr 2009 11:32:27 +0200
uncrustify (0.48-1) unstable; urgency=low
* New upstream release
* debian/rules: removed CFLAGS settings (done by dpkg-buildpackage)
-- Johann Rudloff <cypheon@gmx.net> Tue, 22 Jul 2008 11:19:54 +0200
uncrustify (0.47-1) unstable; urgency=low
* New upstream release (closes: #479372)
* Bumped Standards-Version to 3.8.0 (no changes required)
* removed debian/uncrustify.1, since upstream sources now include a
manpage
* debian/rules: removed call to dh_installman, manpage is installed by
make install
* debian/rules: removed unneeded call to dh_installdirs
-- Johann Rudloff <cypheon@gmx.net> Sun, 08 Jun 2008 10:09:53 +0200
uncrustify (0.44-1) unstable; urgency=low
* New upstream release
* debian/uncrustify.1: updated version number and date
-- Johann Rudloff <cypheon@gmx.net> Sun, 24 Feb 2008 09:13:49 +0100
uncrustify (0.43-1) unstable; urgency=low
* New upstream release (closes: #461631)
* Bumped Standards-Version to 3.7.3 (no changes required)
* debian/copyright: updated years of copyright
* debian/control: moved homepage address from description to a separate field
* debian/uncrustify.1: updated year and month
* debian/rules: copy update config.{sub,guess} into source tree in
config.status target, remove them in clean target
-- Johann Rudloff <cypheon@gmx.net> Thu, 10 Jan 2008 15:37:19 +0100
uncrustify (0.41-1) unstable; urgency=low
* New upstream release
-- Johann Rudloff <cypheon@gmx.net> Mon, 12 Nov 2007 21:22:25 +0100
uncrustify (0.40-1) unstable; urgency=low
* New upstream release
-- Johann Rudloff <cypheon@gmx.net> Tue, 16 Oct 2007 21:26:13 +0200
uncrustify (0.39-1) unstable; urgency=low
* New Upstream Version
-- Johann Rudloff <cypheon@gmx.net> Wed, 26 Sep 2007 23:50:30 +0200
uncrustify (0.38-1) unstable; urgency=low
* New upstream release
-- Johann Rudloff <cypheon@gmx.net> Thu, 06 Sep 2007 22:52:16 +0200
uncrustify (0.37-1) unstable; urgency=low
* New upstream release
* debian/uncrustify.1: added new command line options
* debian/uncrustify.1: changes in formatting and description
-- Johann Rudloff <cypheon@gmx.net> Sun, 19 Aug 2007 19:33:08 +0200
uncrustify (0.36-1) unstable; urgency=low
* New upstream release (closes: #434938, #434939)
-- Johann Rudloff <cypheon@gmx.net> Tue, 07 Aug 2007 13:49:41 +0200
uncrustify (0.35-1) unstable; urgency=low
* New upstream release
-- Johann Rudloff <cypheon@gmx.net> Sat, 21 Jul 2007 20:41:52 +0200
uncrustify (0.33-1) unstable; urgency=low
* New upstream release (closes: #416469)
* Added debian/watch file
* debian/uncrustify.1: added new command line options
* debian/uncrustify.1: removed leading colons
* debian/copyright: updated years of copyright
* debian/copyright: updated parts concerning cmpcfg.pl, since it
now contains a proper license statement
-- Johann Rudloff <cypheon@gmx.net> Fri, 30 Mar 2007 20:51:27 +0200
uncrustify (0.30-1) unstable; urgency=low
* Initial release
-- Johann Rudloff <cypheon@gmx.net> Sat, 25 Nov 2006 14:06:44 +0100

@ -0,0 +1,183 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Uncrustify - Source Code Beautifier for C-like languages</title>
<link rel="stylesheet" type="text/css" href="uncrustify1.css" />
<!-- <link rel="shortcut icon" href="images/favicon.ico" /> -->
</head>
<body lang="en-us" dir="ltr">
<div align="center">
<table>
<tr>
<td align="center">
<div class="node1" align="center">
<div class="node2" align="left">
<h1>Uncrustify</h1>
<h2>Source Code Beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA</h2>
<table>
<tr>
<td valign="top">
<script type='text/javascript' language='JavaScript' src='http://www.ohloh.net/projects/4765/badge_js'></script>
</td>
<td valign="top">
<a href="https://travis-ci.org/uncrustify/uncrustify/builds">
<img alt="Travis CI Build Status"
src="https://travis-ci.org/uncrustify/uncrustify.svg?branch=master"/>
</a>
</td>
<td valign="top">
<a href="https://scan.coverity.com/projects/uncrustify">
<img alt="Coverity Scan Build Status"
src="https://scan.coverity.com/projects/8264/badge.svg"/>
</a>
</td>
</tr>
</table>
<h2>Introduction</h2>
<p>The goals of this project are simple:
Create a highly configurable, easily modifiable source code beautifier.</p>
<br />
<h2>Features</h2>
<ul>
<li>Indent code, aligning on parens, assignments, etc</li>
<li>Align on '=' and variable definitions</li>
<li>Align structure initializers</li>
<li>Align #define stuff</li>
<li>Align backslash-newline stuff</li>
<li>Reformat comments (a little bit)</li>
<li>Fix inter-character spacing</li>
<li>Add or remove parens on return statements</li>
<li>Add or remove braces on single-statement if/do/while/for statements</li>
<li>Supports embedded SQL 'EXEC SQL' stuff</li>
<li>Highly configurable - 850 configurable options as of version 0.78.1</li>
</ul>
<p>
See some example <a href="examples/example.c">output</a>.
</p>
<br />
<h2>Where to get Uncrustify</h2>
<h3>Project Websites</h3>
<a href="http://sourceforge.net/projects/uncrustify/">Sourceforge project web site</a><BR>
<a href="http://sourceforge.net/projects/uncrustify/files/">Release downloads</a><br>
<a href="http://freshmeat.net/projects/uncrustify/">Freshmeat Project</a><BR>
<a href="http://github.com/uncrustify/uncrustify">Git Hub</a><br>
<h3>Source Code</h3>
As of release 0.54, the source code is maintained in a <a href="http://git-scm.com/">Git</a> repository.<br>
<br>
The public Git URL for Sourceforge.net is <br>
<code>git://uncrustify.git.sourceforge.net/gitroot/uncrustify/uncrustify</code><br>
<br>
The public Git URL for github.com is <br>
<code>git://github.com/uncrustify/uncrustify.git</code><br>
<h3>Prebuilt binaries</h3>
Windows (i386) :
<a href="http://sourceforge.net/project/showfiles.php?group_id=153164">Sourceforge</A><BR>
<h3>Universal Indent GUI</h3>
<a href="http://universalindent.sourceforge.net/">Universal Indent GUI</a> is a
cross-platform graphical configuration file editor for many code beautifiers, including Uncrustify.
<br />
<h2>Want to help?</h2>
<p>
The most helpful way is to try it out and give feedback.
Documentation and examples are available in the source tree, so check it out.
</p>
<p>
You can find the output from 'uncrustify --show-config' <a href="config.txt">here</a>.<br />
Here is the <a href="default.cfg">default config file</a>.
And one I set up for <a href="linux.cfg.txt">Linux</a>.<br />
And here is a <a href="examples/c-1.in.c">before</a> and <a href="examples/c-1.out.c">after</a> C source example.<br />
That should give you a pretty good idea of what Uncrustify can do.<br />
</p>
<p>
If you find a bug, please do the following:
</p>
<ul>
<li>Reduce the input source file to the minimum that still has the problem</li>
<li>Use the sourceforget.net bug tracker</li>
<li>Attach the input source file, the configuration file, and a file that contains the expected output</li>
</ul>
<p>
If you want to add a feature, fix a bug, or implement missing functionality, feel free to do so! Patches are welcome!<BR/>
Here are some areas that need attention:
</p>
<ul>
<li>Test Java support and provide feedback (or patches!)</li>
<li>Test Objective C support and provide feedback (or patches!)</li>
<li>Test Embedded SQL to see what works</li>
<li>This web page need a (re)design</li>
<li>A logo of some sort</li>
<li>Examples that can be put on this website to show off what Uncrustify can do</li>
<li>Anything else that you want to do to make it better?</li>
</ul>
<h3>Project Mailing list</h3>
We don't have a mailing list for Uncrustify.<BR/>
We are using <a href="https://github.com/uncrustify/uncrustify/">github</a>.
<br>
You may use <a href="https://github.com/uncrustify/uncrustify/issues">Issues</a> to publish an error report.
<br>
Or <a href="https://github.com/uncrustify/uncrustify/pulls">PR</a> to make a bugfix proposal.
<br />
<h2>Portability</h2>
<p>
I'm pretty sure that I'm not using anything that is OS-specific.<br />
The software has been tested on the following operating systems:
</p>
<ul>
<li>Linux</li>
<li>QNX</li>
<li>OS X</li>
<li>FreeBSD, NetBSD, OpenBSD</li>
<li>Sun Solaris 9</li>
<li>Windows XP (binary available)</li>
</ul>
<br />
<h2>Links</h2>
<ul>
<li><a href="http://universalindent.sourceforge.net/">Universal Indent GUI</a></li>
<li>Don't know what D is? Check out the <a href="http://dlang.org/index.html">D Programming Language website</a>.</li>
<li><a href="http://www.linuxlinks.com">Linux Links</a></li>
</ul>
<h2>Distributions that package Uncrustify</h2>
<ul>
<li><A href="http://www.debian.org/">Debian</A>
<li><A href="http://fedora.redhat.com/">Fedora</A></li>
<li><A href="http://www.altlinux.com/">ALT Linux</A></li>
<li><A href="http://www.t2-project.org/">T2</A></li>
<li><A href="http://www.macports.org/">MacPorts</a></li>
<li><A href="http://www.freebsd.org/cgi/ports.cgi?query=uncrustify">FreeBSD Ports (textproc/uncrustify)</a></li>
<li><A href="http://openports.se/textproc/uncrustify">OpenBSD Ports (textproc/uncrustify)</a></li>
<li>Others?</li>
</ul>
</div>
</div>
</td>
</tr>
</table>
</div>
<br />
<a href="http://sourceforge.net/donate/index.php?group_id=153164">"Support This Project"</a>
<br />
</body>
</html>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,21 @@
{
"name": "uncrustify",
"version": "0.78.1",
"description": "A highly configurable, easily modifiable source code beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA",
"main": "uncrustify",
"scripts": {
"preinstall": "mkdir -p build && cd build && cmake .. && make"
},
"bin": "src/uncrustify",
"repository": {
"type": "git",
"url": "https://github.com/uncrustify/uncrustify"
},
"keywords": [
"uncrustify",
"source code beautifier"
],
"author": "Ben Gardner",
"author": "Guy Maurel",
"license": "GPL-2.0-or-later"
}

@ -0,0 +1,363 @@
============================
Uncrustify Release Process
============================
.. Update the date in the next line when editing this document!
*This document was last updated on 2023-11-20, for Uncrustify 0.78.1.*
This document uses "0.1.2" throughout as an example version number.
Whenever you see this, you should substitute the version number
of the new release being prepared.
Paths are specified in git syntax, i.e. ``:/`` is the repository root.
Requirements
============
This document assumes you are using a Linux-based OS.
While it should be possible to cut a release on Windows,
using e.g. the `Git for Windows SDK <https://gitforwindows.org/>`_
or a MinGW_ environment, the names and/or arguments to some commands
may be different.
In addition to the build and test requirements for Uncrustify itself
(CMake, a C++ compiler, Python, git), you will also need:
- tar
- python3-git
- Binutils-mingw-w64
- Gcc-mingw-w64
- G++-mingw-w64
- zip
- wget (optional)
- scp (to update documentation on the SourceForge page)
Using packages provided by your OS distribution is *strongly* recommended.
(Exact package names may vary depending on your distribution.)
Examples use ``wget`` to download files via command line,
but any mechanism of obtaining files over HTTPS may be employed.
Preparing a Candidate
=====================
The first step, obviously, is deciding to make a release.
Prior to making a release, verify that the repository is in a stable state
and that all CI (continuous integration - AppVeyor) has passed.
This should ensure all tests pass and building
(including cross-compiling) for Windows is working.
Once the release process is started,
only pull requests needed to fix critical bugs,
or related to the release process, should be accepted.
(This will minimize the need to redo or repeat work
such as updating the documentation, especially the change log.)
To start the release process, first check that:
- You are on the ``master`` branch
- Your local clone is up to date
- ``CMAKE_BUILD_TYPE`` is set to ``Release`` (or ``RelWithDebInfo``)
- Your build is up to date
- check the list of authors with scripts/prepare_list_of_authors.sh
You might need a new PAT for your account, for your admin-account.
See:
https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/
https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
login with an admin account at https://github.com/uncrustify/uncrustify
on the right, click on the photo
scroll down to "Settings"
on the left, scroll down to "Developer settings", and click
on the left, click on "Personal access tokens"
choose "Tokens (classic), click
if necessary "Delete" expired token(s)
click on "Generate new token"
choose "Generate new token (classic)", click
choose a "what's this token for"
click on "repo"
scroll down to bottom and click on "Generate token"
Make sure to copy your personal access token now. You wont be able to see it again!
copy the token "ghp_otx****"
and substitute in the file .git/config for [remote "origin"]
"url = https://gmaurel:ghp_otxZ****"
Then, run::
$ scripts/release_tool.py init
$ scripts/release_tool.py update path/to/uncrustify
(Replace ``path/to/uncrustify`` with the path to the Uncrustify executable
you just built, e.g. ``build/uncrustify``.)
This will create a branch for the release candidate
and perform some automated updates to various files.
With no arguments, ``init`` will prompt you for the new version number,
defaulting to ``x.(y+1).0``, where ``x.y.z`` is the previous release.
The ``--version`` argument may also be used to specify the version
(e.g. if the script will not be able to prompt for input).
After, you should check that the following files
show the correct version number and option count:
- ``:/CMakeLists.txt`` (version number only; look for ``UNCRUSTIFY_VERSION``)
- ``:/package.json`` (version number only; you'll see it, the file is tiny)
- ``:/README.md`` (look for "options as of version")
- ``:/documentation/htdocs/index.html`` (look for "options as of version")
(Note that ``uncrustify`` itself will not show the new version number
until the final release has been tagged.)
Update Documentation
====================
Update ``:/ChangeLog``.
There is a helper script, ``:/scripts/gen_changelog.py``,
that can help extract new options since the previous release:
.. code::
$ scripts/gen_changelog.py uncrustify-0.0.0
Replace ``0.0.0`` with the version of the *previous* release.
This will generate a bunch of output like::
0123456789abcdef0123456789abcdef01234567
Added : better_name Jan 13 1970
Removed : poor_name Jan 13 1970
fedcba9876543210fedcba9876543210fedcba98
Added : new_option_1 Jan 18 1970
Added : new_option_2 Jan 18 1970
Your goal is to turn the "raw" output into something like this::
Deprecated options:
- poor_name Jan 13 1970
Renamed to better_name
New options:
- new_option_1 Jan 18 1970
- new_option_1 Jan 18 1970
To accomplish this, you will need to inspect any removed options,
possibly consulting the commits in which they were removed,
to determine the reason for deprecation and what replacement is recommended.
(Note that it may not be as simple as "use X instead".)
Also watch for options that were added and subsequently renamed
since the last release. (This has happened a few times.
In such cases, the new name should show up as an ordinary "new" option,
and the old name should be entirely omitted from the change log.)
It helps to copy the output to a scratch file for editing.
Move deprecated options to the top and add a "Deprecated options:" header,
then add a "New options:" header in front of what's left,
and remove the commit SHAs (``sed -r '/^[[:xdigit:]]{40}/d``
if you don't want to do it by hand).
Then, check that the options are in order by date;
date of authorship vs. date of merge may cause discrepancies.
Finally, replace occurrences of ``\w+ +:`` with ``-``
(if your editor supports regular expressions;
otherwise you can individually replace ``Added :`` and ``Removed :``).
Add a new release header (don't forget to add the date!) to the change log
and insert the list of option changes as created above.
Also fill in the list of resolved issues, new keywords (if any),
as well as any other changes that need to be mentioned.
If any command line arguments have been added or changed,
including descriptions for the same, check to see if
``:/man/uncrustify.1.in`` needs to be updated.
(Hopefully this happened when the source was changed!)
Finalize the Code Changes
=========================
Inspect your working tree.
Use ``git add -p`` to stage the changes made to the documentation
and other artifacts that contain version-dependent information.
Verify that only desired changes are staged,
and that your working tree is otherwise clean.
Now is a good time to recheck
that everything builds, and that all the tests pass.
This is also a good time to manually test 32- and 64-bit builds.
When you are ready, commit the changes using:
.. code::
$ scripts/release_tool.py commit
(If you prefer, you can also commit the changes manually;
the script just fills in the commit message for you.)
Submit and Tag the Release
==========================
Push the release candidate branch to GitHub, and create a pull request.
Once the pull request is merged, tag the release using:
Make sure, the file .git/config has the right 'admin' value:
[remote "origin"]
url = https://<admin account>:<PAT>@github.com/uncrustify/uncrustify.git
Check it with:
$ git config --local --get remote.origin.url
.. code::
$ scripts/release_tool.py tag
Note that this will only work if the merge of the release candidate
is the most recent commit upstream.
Otherwise, the merge commit must be specified by using the ``-c`` option.
(Tagging the release does not need to be done on any particular branch.
The command will not affect or look at your work tree at all.)
Create Binaries
===============
Now that the release is published, grab a copy of the sources from GitHub:
.. code::
$ wget https://github.com/uncrustify/uncrustify/archive/uncrustify-0.1.2.zip
$ unzip -e uncrustify-0.1.2.zip
Next, build the 32- and 64-bit Windows binaries:
.. code::
$ cd /path/to/uncrustify-uncrustify-0.1.2
$ mkdir buildwin-32
$ cd buildwin-32
$ cmake -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw32.cmake \
-DCMAKE_EXE_LINKER_FLAGS="-static -s" \
..
$ ninja
$ cpack
.. code::
$ cd /path/to/uncrustify-uncrustify-0.1.2
$ mkdir buildwin-64
$ cd buildwin-64
$ cmake -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw64.cmake \
-DCMAKE_EXE_LINKER_FLAGS="-static -s" \
..
$ ninja
$ cpack
Create a tarball:
.. code::
$ cd /path/to/uncrustify
$ git archive -o uncrustify-0.1.2.tar.gz --prefix=uncrustify-0.1.2/ uncrustify-0.1.2
TODO: find the best strategie...
(If you don't have Ninja_, or just don't want to use it for whatever reason,
omit ``-G Ninja`` and run ``make`` instead of ``ninja``.)
This is also a good time to test the tagged build on Linux:
.. code::
$ wget https://github.com/uncrustify/uncrustify/archive/uncrustify-0.1.2.tar.gz
$ tar xzf uncrustify-0.1.2.tar.gz
$ cd uncrustify-uncrustify-0.1.2
$ mkdir build
$ cd build
$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ..
$ ninja
$ ctest
$ ./uncrustify --version
Create a release on github
==========================
- Login with an admin account at https://github.com/uncrustify/uncrustify
- Navigate to https://github.com/uncrustify/uncrustify/releases and click on
the "Draft a new release" button at the top of the page
- Select the corresponding release tag under the "Choose a tag" combobox
- Add the release version under "Release title" as "Uncrustify 0.xx.y"
- Add release text in describing section. It is recommended to copy the text
from previous releases and update the related files
- Upload the Windows binaries and the source code zip/tarball files in the section
"Attach binaries by dropping them here or selecting them": these will show up as
"Assets" under the release text.
- Publish the release by clicking on the "Publish release" button.
Upload to SourceForge
=====================
- Login as admin under https://sourceforge.net/projects/uncrustify/
- Change to https://sourceforge.net/projects/uncrustify/files/
- "Add Folder"; the name should be e.g. "uncrustify-0.1.2"
- Navigate to the new folder
(e.g. https://sourceforge.net/projects/uncrustify/files/uncrustify-0.1.2/)
- "Add File"; upload the following files
(adjusting for the actual version number):
- README.md
- uncrustify-0.1.2.tar.gz
- buildwin-32/uncrustify-0.1.2_f-win32.zip
- buildwin-64/uncrustify-0.1.2_f-win64.zip
- "Done"
- Upload the documentation:
.. code::
$ scp -r documentation/htdocs/* ChangeLog \
USER,uncrustify@web.sourceforge.net:htdocs/
- Use the web interface (file manager) to create the release folder
and upload the files to SourceForge.
Announce the Release (Optional)
===============================
The new release is live! Spread the word! Consider these ideas:
- Create a news item.
- Update freshmeat.net project.
Release Checklist
=================
The following list serves as a quick reference for making a release.
These items are explained in greater detail above.
#. Verify that CI passes
#. Use ``release_tool.py`` to initialize the release
and perform automated updates. Check:
#. ``:/CMakeLists.txt``
#. ``:/package.json``
#. ``:/README.md``
#. ``:/documentation/htdocs/index.html``
#. Update documentation as needed:
#. ``:/ChangeLog``
#. ``:/man/uncrustify.1.in``
#. Stage changes.
#. Test everything again.
#. Finalize the code changes.
#. Push to GitHub and create a merge request.
#. Tag the merged release branch.
#. Create Windows (32- and 64-bit) binaries.
#. Run a test build on Linux.
#. Upload the release and documentation to SourceForge.
#. Announce the release!
.. _MinGW: http://www.mingw.org/
.. _GitPython: https://github.com/gitpython-developers/GitPython
.. _Ninja: https://ninja-build.org/

File diff suppressed because it is too large Load Diff

@ -0,0 +1,798 @@
/**
* @file width.cpp
* Limits line width.
*
* @author Ben Gardner
* @license GPL v2+
*/
#include "width.h"
#include "indent.h"
#include "newlines.h"
#include "prototypes.h"
constexpr static auto LCURRENT = LSPLIT;
using namespace uncrustify;
/**
* abbreviations used:
* - fparen = function parenthesis
*/
struct SplitEntry
{
Chunk *pc;
size_t pri;
SplitEntry()
: pc(Chunk::NullChunkPtr)
, pri(0) {}
};
struct TokenPriority
{
E_Token tok;
size_t pri;
};
static inline bool is_past_width(Chunk *pc);
//! Split right after the chunk
static void split_before_chunk(Chunk *pc);
static size_t get_split_pri(E_Token tok);
/**
* Checks to see if pc is a better spot to split.
* This should only be called going BACKWARDS (ie prev)
* A lower level wins
*
* Splitting Preference:
* - semicolon
* - comma
* - boolean op
* - comparison
* - arithmetic op
* - assignment
* - concatenated strings
* - ? :
* - function open paren not followed by close paren
*/
static void try_split_here(SplitEntry &ent, Chunk *pc);
/**
* Scan backwards to find the most appropriate spot to split the line
* and insert a newline.
*
* See if this needs special function handling.
* Scan backwards and find the best token for the split.
*
* @param start The first chunk that exceeded the limit
*/
static bool split_line(Chunk *pc);
/**
* Figures out where to split a template
*
*
* @param start the offending token
*/
static void split_template(Chunk *start);
/**
* Splits the parameters at every comma that is at the fparen level.
*
* @param start the offending token
*/
static void split_fcn_params_full(Chunk *start);
/**
* A for statement is too long.
* Step backwards and forwards to find the semicolons
* Try splitting at the semicolons first.
* If that doesn't work, then look for a comma at paren level.
* If that doesn't work, then look for an assignment at paren level.
* If that doesn't work, then give up.
*/
static void split_for_stmt(Chunk *start);
static inline bool is_past_width(Chunk *pc)
{
// allow char to sit at last column by subtracting 1
size_t currCol = pc->GetColumn() + pc->Len() - 1;
bool past_width = currCol > options::code_width();
LOG_FMT(LSPLIT, "%s(%d): orig line %zu, orig col %zu, curr col %zu, text '%s', past width %s\n",
__func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), currCol, pc->Text(),
past_width ? "YES" : "NO");
return(past_width);
}
static void split_before_chunk(Chunk *pc)
{
LOG_FUNC_ENTRY();
LOG_FMT(LSPLIT, "%s(%d): Text() '%s'\n", __func__, __LINE__, pc->Text());
Chunk *prev = pc->GetPrev();
if ( !pc->IsNewline()
&& !prev->IsNewline())
{
newline_add_before(pc);
// Mark chunk as continuation line, so indentation can be
// correctly set over multiple passes
pc->SetFlagBits(PCF_CONT_LINE);
// Mark open and close parens as continuation line chunks.
// This will prevent an additional level and frame to be
// added to the current frame stack (issue 3105).
if ( prev->Is(CT_PAREN_OPEN)
|| prev->Is(CT_LPAREN_OPEN)
|| prev->Is(CT_SPAREN_OPEN)
|| prev->Is(CT_FPAREN_OPEN)
|| prev->Is(CT_SQUARE_OPEN)
|| prev->Is(CT_ANGLE_OPEN))
{
LOG_FMT(LSPLIT, "%s(%d): set PCF_LINE_CONT for prev text '%s', orig line is %zu, orig col is %zu\n",
__func__, __LINE__, prev->Text(), prev->GetOrigLine(), prev->GetOrigCol());
prev->SetFlagBits(PCF_CONT_LINE);
Chunk *closing_paren = prev->GetClosingParen();
if (closing_paren->IsNotNullChunk())
{
closing_paren->SetFlagBits(PCF_CONT_LINE);
}
}
// reindent needs to include the indent_continue value and was off by one
log_rule_B("indent_columns");
log_rule_B("indent_continue");
reindent_line(pc, pc->GetBraceLevel() * options::indent_columns() +
abs(options::indent_continue()) + 1);
cpd.changes++;
}
} // split_before_chunk
static TokenPriority pri_table[] =
{
{ CT_SEMICOLON, 1 },
{ CT_COMMA, 2 },
{ CT_BOOL, 3 },
{ CT_COMPARE, 4 },
{ CT_SHIFT, 5 },
{ CT_ARITH, 6 },
{ CT_CARET, 7 },
{ CT_ASSIGN, 9 },
{ CT_STRING, 10 },
{ CT_FOR_COLON, 11 },
{ CT_QUESTION, 20 }, // allow break in ? : for ls_code_width
{ CT_COND_COLON, 20 },
{ CT_FPAREN_OPEN, 21 }, // break after function open paren not followed by close paren
{ CT_QUALIFIER, 25 },
{ CT_CLASS, 25 },
{ CT_STRUCT, 25 },
{ CT_TYPE, 25 },
{ CT_TYPENAME, 25 },
{ CT_VOLATILE, 25 },
};
void do_code_width()
{
LOG_FUNC_ENTRY();
LOG_FMT(LSPLIT, "%s(%d)\n", __func__, __LINE__);
// If indent_continue is negative, we want to look for long lines splits,
// so raise CT_FPAREN_OPEN priority to get better results.
if (options::indent_continue() < 0)
{
for (TokenPriority &token : pri_table)
{
if (token.tok == CT_FPAREN_OPEN)
{
token.pri = 8; // Before assignment priority
break;
}
}
}
for (Chunk *pc = Chunk::GetHead(); pc->IsNotNullChunk(); pc = pc->GetNext())
{
if ( !pc->IsCommentOrNewline()
&& pc->IsNot(CT_SPACE)
&& is_past_width(pc))
{
if ( pc->Is(CT_VBRACE_CLOSE) // don't break if a vbrace close
&& pc->IsLastChunkOnLine()) // is the last chunk on its line
{
continue;
}
bool split_OK = split_line(pc);
if (split_OK)
{
// After a line split it is necessary to reindent the text before considering
// further splits. This avoid splits out of position which would produce an
// awkward result in some cases when a line needs more that one split.
// After the split, skip over the remainder of the line.
Chunk *nextNl = pc->GetNextNl();
LOG_FMT(LSPLIT, "%s(%d): orig line %zu, orig col %zu, text '%s' splitted\n",
__func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
pc = nextNl;
}
else
{
LOG_FMT(LSPLIT, "%s(%d): orig line %zu, orig col %zu, text '%s' not splitted\n",
__func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
break;
}
}
}
} // do_code_width
static size_t get_split_pri(E_Token tok)
{
for (TokenPriority token : pri_table)
{
if (token.tok == tok)
{
return(token.pri);
}
}
return(100); // Bigger than any valid priority
}
static void try_split_here(SplitEntry &ent, Chunk *pc)
{
LOG_FUNC_ENTRY();
size_t pc_pri = get_split_pri(pc->GetType());
LOG_FMT(LSPLIT, "%s(%d): text '%s', orig col %zu pc_pri %zu\n",
__func__, __LINE__, pc->Text(), pc->GetOrigCol(), pc_pri);
if (pc_pri == 0)
{
LOG_FMT(LSPLIT, "%s(%d): pc_pri is 0, return\n", __func__, __LINE__);
return;
}
// Can't split after a newline
Chunk *prev = pc->GetPrev();
if ( prev->IsNullChunk()
|| ( prev->IsNewline()
&& pc->IsNot(CT_STRING)))
{
if (prev->IsNotNullChunk())
{
LOG_FMT(LSPLIT, "%s(%d): can't split after a newline, orig line is %zu, return\n",
__func__, __LINE__, prev->GetOrigLine());
}
return;
}
// Can't split a function without arguments
if (pc->Is(CT_FPAREN_OPEN))
{
Chunk *next = pc->GetNext();
if (next->Is(CT_FPAREN_CLOSE))
{
LOG_FMT(LSPLIT, "%s(%d): can't split a function without arguments, return\n", __func__, __LINE__);
return;
}
}
// Only split concatenated strings
if (pc->Is(CT_STRING))
{
Chunk *next = pc->GetNext();
if (next->IsNot(CT_STRING))
{
LOG_FMT(LSPLIT, "%s(%d): only split concatenated strings, return\n", __func__, __LINE__);
return;
}
}
// keep common groupings unless ls_code_width
if ( !options::ls_code_width()
&& pc_pri >= 22)
{
LOG_FMT(LSPLIT, "%s(%d): keep common groupings unless ls_code_width, return\n", __func__, __LINE__);
return;
}
// don't break after last term of a qualified type
if (pc_pri == 25)
{
Chunk *next = pc->GetNext();
if ( next->IsNot(CT_WORD)
&& (get_split_pri(next->GetType()) != 25))
{
LOG_FMT(LSPLIT, "%s(%d): don't break after last term of a qualified type, return\n", __func__, __LINE__);
return;
}
}
if ( ent.pc->IsNullChunk()
|| pc_pri < ent.pri
|| ( pc_pri == ent.pri
&& pc->IsNot(CT_FPAREN_OPEN)
&& pc->GetLevel() < ent.pc->GetLevel()))
{
LOG_FMT(LSPLIT, "%s(%d): found possible split\n", __func__, __LINE__);
ent.pc = pc;
ent.pri = pc_pri;
}
} // try_split_here
static bool split_line(Chunk *start)
{
LOG_FUNC_ENTRY();
LOG_FMT(LSPLIT, "%s(%d): start text '%s', orig line %zu, orig col %zu, type %s\n",
__func__, __LINE__, start->Text(), start->GetOrigLine(), start->GetOrigCol(), get_token_name(start->GetType()));
LOG_FMT(LSPLIT, " flags ");
log_pcf_flags(LSPLIT, start->GetFlags());
LOG_FMT(LSPLIT, " parent type %s, (PCF_IN_FCN_DEF %s), (PCF_IN_FCN_CALL %s)\n",
get_token_name(start->GetParentType()),
start->TestFlags((PCF_IN_FCN_DEF)) ? "TRUE" : "FALSE",
start->TestFlags((PCF_IN_FCN_CALL)) ? "TRUE" : "FALSE");
// break at maximum line length if ls_code_width is true
// Issue #2432
if (start->TestFlags(PCF_ONE_LINER))
{
LOG_FMT(LSPLIT, "%s(%d): ** ONE LINER SPLIT **\n", __func__, __LINE__);
undo_one_liner(start);
newlines_cleanup_braces(false);
// Issue #1352
cpd.changes++;
return(false);
}
if (options::ls_code_width())
{
log_rule_B("ls_code_width");
}
else if (start->TestFlags(PCF_IN_FOR))
{
// Check to see if we are in a for statement
LOG_FMT(LSPLIT, " ** FOR SPLIT **\n");
split_for_stmt(start);
if (!is_past_width(start))
{
return(true);
}
LOG_FMT(LSPLIT, "%s(%d): for split didn't work\n", __func__, __LINE__);
}
else if ( start->TestFlags(PCF_IN_FCN_DEF)
|| start->TestFlags(PCF_IN_FCN_CALL)
|| start->GetParentType() == CT_FUNC_PROTO) // Issue #1169
{
/*
* If this is in a function call or prototype, split on commas or right
* after the open parenthesis
*/
LOG_FMT(LSPLIT, " ** FUNC SPLIT **\n");
if (options::ls_func_split_full())
{
log_rule_B("ls_func_split_full");
split_fcn_params_full(start);
if (!is_past_width(start))
{
return(true);
}
}
}
else if (start->TestFlags(PCF_IN_TEMPLATE))
{
/*
* If this is in a template, split on commas, Issue #1170
*/
LOG_FMT(LSPLIT, " ** TEMPLATE SPLIT **\n");
split_template(start);
return(true);
}
// Try to find the best spot to split the line
LOG_FMT(LSPLIT, "%s(%d): try to find a split point\n", __func__, __LINE__);
SplitEntry ent;
ent.pc = Chunk::NullChunkPtr;
ent.pri = CT_UNKNOWN;
Chunk *pc = start->GetPrev();
Chunk *prev;
while ( pc->IsNotNullChunk()
&& !pc->IsNewline())
{
LOG_FMT(LSPLIT, "%s(%d): text '%s', orig line is %zu, orig col is %zu\n",
__func__, __LINE__, pc->Text(), pc->GetOrigLine(), pc->GetOrigCol());
if (pc->IsNot(CT_SPACE))
{
try_split_here(ent, pc);
// break at maximum line length
if ( ent.pc->IsNotNullChunk()
&& options::ls_code_width())
{
log_rule_B("ls_code_width");
LOG_FMT(LSPLIT, "%s(%d): found split\n", __func__, __LINE__);
break;
}
}
pc = pc->GetPrev();
}
if (ent.pc->IsNullChunk())
{
LOG_FMT(LSPLIT, "%s(%d): TRY_SPLIT yielded NO SOLUTION for orig line %zu at '%s' [%s]\n",
__func__, __LINE__, start->GetOrigLine(), start->Text(), get_token_name(start->GetType()));
}
else
{
LOG_FMT(LSPLIT, "%s(%d): TRY_SPLIT yielded '%s' [%s] on orig line %zu\n",
__func__, __LINE__, ent.pc->Text(), get_token_name(ent.pc->GetType()), ent.pc->GetOrigLine());
LOG_FMT(LSPLIT, "%s(%d): ent at '%s', orig col is %zu\n",
__func__, __LINE__, ent.pc->Text(), ent.pc->GetOrigCol());
}
// Break before the token instead of after it according to the pos_xxx rules
if (ent.pc->IsNullChunk())
{
pc = Chunk::NullChunkPtr;
}
else
{
log_rule_B("pos_arith");
log_rule_B("pos_assign");
log_rule_B("pos_compare");
log_rule_B("pos_conditional");
log_rule_B("pos_shift");
log_rule_B("pos_bool");
if ( ( ent.pc->Is(CT_SHIFT)
&& (options::pos_shift() & TP_LEAD))
|| ( ( ent.pc->Is(CT_ARITH)
|| ent.pc->Is(CT_CARET))
&& (options::pos_arith() & TP_LEAD))
|| ( ent.pc->Is(CT_ASSIGN)
&& (options::pos_assign() & TP_LEAD))
|| ( ent.pc->Is(CT_COMPARE)
&& (options::pos_compare() & TP_LEAD))
|| ( ( ent.pc->Is(CT_COND_COLON)
|| ent.pc->Is(CT_QUESTION))
&& (options::pos_conditional() & TP_LEAD))
|| ( ent.pc->Is(CT_BOOL)
&& (options::pos_bool() & TP_LEAD)))
{
pc = ent.pc;
}
else
{
pc = ent.pc->GetNext();
}
LOG_FMT(LSPLIT, "%s(%d): at '%s', orig col is %zu\n",
__func__, __LINE__, pc->Text(), pc->GetOrigCol());
}
bool move_forward = false;
if (pc->IsNullChunk())
{
pc = start;
Chunk *next = pc->GetNext();
// On comma, close parenthesis/bracket/braces or semicolon, empty
// parenthesis/brackets/braces pairs, skip after them since they
// are small chunks and the split looks much better.
if ( pc->Is(CT_COMMA)
|| pc->IsSemicolon()
|| pc->IsParenClose()
|| pc->IsBraceClose()
|| pc->Is(CT_ANGLE_CLOSE)
|| pc->Is(CT_SQUARE_CLOSE)
|| ( pc->IsParenOpen()
&& next->IsParenClose())
|| ( pc->IsBraceOpen()
&& next->IsBraceClose())
|| ( pc->Is(CT_SQUARE_OPEN)
&& next->Is(CT_SQUARE_CLOSE))
|| pc->Len() == 0)
{
LOG_FMT(LSPLIT, "Move forward past the chuck");
move_forward = true;
}
}
// Add a newline before 'pc', if possible.
// If 'pc' is the first chunk in the line, split after it since it is
// already past the allowed code width. If the next chunk is a comma, close
// parenthesis/bracket/braces or semicolon, skip after them since they
// are small chunks and the split looks much better. Also skip over
// empty parenthesis/brackets/braces pairs.
prev = pc->GetPrev();
if ( prev->IsNullChunk()
|| pc->IsNewline()
|| prev->IsNewline()
|| move_forward)
{
pc = pc->GetNext();
Chunk *next = pc->GetNext();
while ( pc->Is(CT_COMMA)
|| pc->IsSemicolon()
|| pc->IsParenClose()
|| pc->IsBraceClose()
|| pc->Is(CT_ANGLE_CLOSE)
|| pc->Is(CT_SQUARE_CLOSE)
|| ( pc->IsParenOpen()
&& next->IsParenClose())
|| ( pc->IsBraceOpen()
&& next->IsBraceClose())
|| ( pc->Is(CT_SQUARE_OPEN)
&& next->Is(CT_SQUARE_CLOSE)))
{
pc = next;
next = pc->GetNext();
}
}
prev = pc->GetPrev();
if ( prev->IsNotNullChunk()
&& !pc->IsNewline()
&& !prev->IsNewline())
{
//int plen = (pc->Len() < 5) ? pc->Len() : 5;
//int slen = (start->Len() < 5) ? start->Len() : 5;
//LOG_FMT(LSPLIT, " '%.*s' [%s], started on token '%.*s' [%s]\n",
// plen, pc->Text(), get_token_name(pc->GetType()),
// slen, start->Text(), get_token_name(start->GetType()));
LOG_FMT(LSPLIT, "%s(%d): Text() '%s', type %s, started on token '%s', type %s\n",
__func__, __LINE__, pc->Text(), get_token_name(pc->GetType()),
start->Text(), get_token_name(start->GetType()));
split_before_chunk(pc);
}
return(true);
} // split_line
/*
* The for statement split algorithm works as follows:
* 1. Step backwards and forwards to find the semicolons
* 2. Try splitting at the semicolons first.
* 3. If that doesn't work, then look for a comma at paren level.
* 4. If that doesn't work, then look for an assignment at paren level.
* 5. If that doesn't work, then give up.
*/
static void split_for_stmt(Chunk *start)
{
LOG_FUNC_ENTRY();
// how many semicolons (1 or 2) do we need to find
log_rule_B("ls_for_split_full");
size_t max_cnt = options::ls_for_split_full() ? 2 : 1;
Chunk *open_paren = Chunk::NullChunkPtr;
size_t nl_cnt = 0;
LOG_FMT(LSPLIT, "%s: starting on %s, line %zu\n",
__func__, start->Text(), start->GetOrigLine());
// Find the open paren so we know the level and count newlines
Chunk *pc = start;
while ((pc = pc->GetPrev())->IsNotNullChunk())
{
if (pc->Is(CT_SPAREN_OPEN))
{
open_paren = pc;
break;
}
if (pc->GetNlCount() > 0)
{
nl_cnt += pc->GetNlCount();
}
}
if (open_paren->IsNullChunk())
{
LOG_FMT(LSPLIT, "No open paren\n");
return;
}
// see if we started on the semicolon
int count = 0;
Chunk *st[2];
pc = start;
if ( pc->Is(CT_SEMICOLON)
&& pc->GetParentType() == CT_FOR)
{
st[count++] = pc;
}
// first scan backwards for the semicolons
while ( (count < static_cast<int>(max_cnt))
&& ((pc = pc->GetPrev())->IsNotNullChunk())
&& pc->IsNotNullChunk()
&& pc->TestFlags(PCF_IN_SPAREN))
{
if ( pc->Is(CT_SEMICOLON)
&& pc->GetParentType() == CT_FOR)
{
st[count++] = pc;
}
}
// And now scan forward
pc = start;
while ( (count < static_cast<int>(max_cnt))
&& ((pc = pc->GetNext())->IsNotNullChunk())
&& pc->TestFlags(PCF_IN_SPAREN))
{
if ( pc->Is(CT_SEMICOLON)
&& pc->GetParentType() == CT_FOR)
{
st[count++] = pc;
}
}
while (--count >= 0)
{
// TODO: st[0] may be uninitialized here
LOG_FMT(LSPLIT, "%s(%d): split before %s\n", __func__, __LINE__, st[count]->Text());
split_before_chunk(st[count]->GetNext());
}
if ( !is_past_width(start)
|| nl_cnt > 0)
{
return;
}
// Still past width, check for commas at parentheses level
pc = open_paren;
while ((pc = pc->GetNext()) != start)
{
if ( pc->Is(CT_COMMA)
&& (pc->GetLevel() == (open_paren->GetLevel() + 1)))
{
split_before_chunk(pc->GetNext());
if (!is_past_width(pc))
{
return;
}
}
}
// Still past width, check for a assignments at parentheses level
pc = open_paren;
while ((pc = pc->GetNext()) != start)
{
if ( pc->Is(CT_ASSIGN)
&& (pc->GetLevel() == (open_paren->GetLevel() + 1)))
{
split_before_chunk(pc->GetNext());
if (!is_past_width(pc))
{
return;
}
}
}
// Oh, well. We tried.
} // split_for_stmt
static void split_fcn_params_full(Chunk *start)
{
LOG_FUNC_ENTRY();
LOG_FMT(LSPLIT, "%s(%d): start at '%s'\n", __func__, __LINE__, start->Text());
// Find the opening function parenthesis
Chunk *fpo = start;
LOG_FMT(LSPLIT, " %s(%d): search for opening function parenthesis\n", __func__, __LINE__);
while ((fpo = fpo->GetPrev())->IsNotNullChunk())
{
LOG_FMT(LSPLIT, " %s(%d): %s, orig col is %zu, level is %zu\n",
__func__, __LINE__, fpo->Text(), fpo->GetOrigCol(), fpo->GetLevel());
if ( fpo->Is(CT_FPAREN_OPEN)
&& (fpo->GetLevel() == start->GetLevel() - 1))
{
LOG_FMT(LSPLIT, " %s(%d): found open paren\n", __func__, __LINE__);
break; // opening parenthesis found. Issue #1020
}
}
// Now break after every comma
Chunk *pc = fpo->GetNextNcNnl();
while (pc->IsNotNullChunk())
{
if (pc->GetLevel() <= fpo->GetLevel())
{
break;
}
if ( (pc->GetLevel() == (fpo->GetLevel() + 1))
&& pc->Is(CT_COMMA))
{
split_before_chunk(pc->GetNext());
}
pc = pc->GetNextNcNnl();
}
}
static void split_template(Chunk *start)
{
LOG_FUNC_ENTRY();
LOG_FMT(LSPLIT, " %s(%d): start %s\n", __func__, __LINE__, start->Text());
LOG_FMT(LSPLIT, " %s(%d): back up until the prev is a comma\n", __func__, __LINE__);
// back up until the prev is a comma
Chunk *prev = start;
while ((prev = prev->GetPrev())->IsNotNullChunk())
{
LOG_FMT(LSPLIT, " %s(%d): prev '%s'\n", __func__, __LINE__, prev->Text());
if ( prev->IsNewline()
|| prev->Is(CT_COMMA))
{
break;
}
}
if ( prev->IsNotNullChunk()
&& !prev->IsNewline())
{
LOG_FMT(LSPLIT, " %s(%d):", __func__, __LINE__);
LOG_FMT(LSPLIT, " -- ended on %s --\n", get_token_name(prev->GetType()));
Chunk *pc = prev->GetNext();
newline_add_before(pc);
size_t min_col = 1;
log_rule_B("indent_continue");
if (options::indent_continue() == 0)
{
log_rule_B("indent_columns");
min_col += options::indent_columns();
}
else
{
min_col += abs(options::indent_continue());
}
reindent_line(pc, min_col);
cpd.changes++;
}
} // split_templatefcn_params

@ -0,0 +1,572 @@
#
# Test cases specifically for the C language.
#
# test.name config.file input.file
# little general tests ====================================================
00000 common/indent_columns-3.cfg c/comment-indent.c
00001 c/cpp_to_c-1.cfg c/comment-indent.c
00002 c/cpp_to_c-2.cfg c/comment-indent.c
00003 c/cpp_to_c-3.cfg c/comment-indent.c
00004 c/indent-1.cfg c/switch.c
00005 c/ben_047.cfg c/cmt-align.c
00006 common/indent_columns-3.cfg c/comment-convert.c
00007 c/cpp_to_c-1.cfg c/comment-convert.c
00008 c/cpp_to_c-2.cfg c/comment-convert.c
00009 c/cpp_to_c-3.cfg c/comment-convert.c
# brace styles
00010 c/ben_048.cfg c/braces.c
00011 common/brace-allman.cfg c/braces.c
00012! c/brace-banner.cfg c/braces.c
00013 c/brace-gnu.cfg c/braces.c
00014 c/brace-kr.cfg c/braces.c
00015 c/brace-ws.cfg c/braces.c
00016 c/brace-ws2.cfg c/braces.c
00020 c/ben_049.cfg c/define-if-indent.c
00050 c/brace-remove-2.cfg c/brace-remove.c
00051 c/brace-remove-all.cfg c/brace-remove.c
00052 c/brace-remove-all.cfg c/brace-remove2.c
00053 c/nl_brace_test.cfg c/brace.c
00054 c/if_chain.cfg c/if_chain.c
00055 c/cgal.cfg c/braces-2.c
00056 c/brace-remove-all.cfg c/brace-remove3.c
00057 c/if_chain.cfg c/brace-remove3.c
00058 c/brace-kr-nobr.cfg c/if_chain.c
00059 c/Issue_2205.cfg c/Issue_2205.c
00060 c/ben_050.cfg c/braces-2.c
00061 c/ben_051.cfg c/braces-3.c
00062 c/ben_052.cfg c/braces-4.c
00065 c/ben_053.cfg c/braces-5.c
00066 c/ben_054.cfg c/vb-while.c
00067 c/ben_055.cfg c/vb-do.c
00068 c/ben_056.cfg c/bsnl.c
00069 c/ben_057.cfg c/vb-pp.c
00070 c/ben_058.cfg c/return-multi.c
00071 common/ben_042.cfg c/include_define.h
00072 common/star_pos-0.cfg c/align-proto.c
00073 common/empty.cfg c/nl_proto_endif.c
00074 c/clang-has_include.cfg c/clang-has_include.h
00075 common/tde.cfg c/function_prototypes_alignment.c
00076 c/1225.cfg c/1225.c
00081 c/else-if-1.cfg c/else-if.c
00082 c/else-if-2.cfg c/else-if.c
00083 c/Issue_3601.cfg c/Issue_3601.c
00091 c/cond-1.cfg c/cond.c
00092 common/indent_columns-3.cfg c/cond.c
00093 c/sp_cond_colon.cfg c/cond.c
00094 c/Issue_3457.cfg c/Issue_3457.c
00101 c/ben_061.cfg c/bugs-1.c
00102 c/space_indent_columns-3.cfg c/bugs-2.c
00103 c/ben_063.cfg c/bugs-3.c
00104 c/ben_064.cfg c/bugs-4.c
00105 c/ben_065.cfg c/bugs-5.c
00106 common/ben_011.cfg c/bugs-6.c
00107 common/ben_011.cfg c/bugs-7.c
00108 common/indent_columns-3.cfg c/bugs-8.c
00110 c/ben_069.cfg c/misc.c
00111 c/brace-kr-br.cfg c/misc.c
00120 c/sp_cmt_cpp_start-r.cfg c/sp_cmt_cpp_start.c
00121 common/sp_cmt_cpp_start-a.cfg c/sp_cmt_cpp_start.c
00122 common/sp_cmt_cpp_start_force.cfg c/sp_cmt_cpp_start.c
00123 c/cmt_reflow.cfg c/cmt_reflow.c
00130 c/ben_070.cfg c/minus-minus.c
00131 c/Issue_3873.cfg c/Issue_3873.c
00135 c/nepenthes.cfg c/br_cmt.c
00136 common/empty.cfg c/Issue_4044.c
00140 c/ben_071.cfg c/global-vars.c
00141 c/ben_072.cfg c/deref.c
00142 c/ben_073.cfg c/type-cast.c
00143 c/ben_074.cfg c/t3.in.c
00144 c/ben_075.cfg c/align-proto-vars.c
00145 c/ben_076.cfg c/vardefcol.c
00146 c/Issue_3516.cfg c/Issue_3516.c
00147 c/Issue_3517.cfg c/Issue_3516.c
00148 c/Issue_3518.cfg c/Issue_3518.c
# casts
00150 c/ben_077.cfg c/casts.c
00151 c/cast-sp-r.cfg c/casts.c
00152 c/cast-sp-a.cfg c/casts.c
00153 c/cast-type.cfg c/casts.c
00154 common/sp_after_cast.cfg c/casts.c
00155 c/ben_078.cfg c/cast_brace.c
00156 c/nl_collapse_empty_1.cfg c/empty-braces.c
00157 c/nl_collapse_empty_2.cfg c/empty-braces.c
00158 c/nl_collapse_empty_3.cfg c/empty-braces.c
00159 c/nl_collapse_empty_4.cfg c/empty-braces.c
# fcn indents
00160 c/indent_func_param.cfg c/fcn_indent.c
00161 c/indent_func_call_param.cfg c/fcn_indent.c
00162 c/indent_func_def_param.cfg c/fcn_indent.c
00163 c/indent_func_proto_param.cfg c/fcn_indent.c
00164 c/rdan.cfg c/fcn_indent_func_def_col1.c
00165 c/sp_func_call_user_inside_fparen.cfg c/sp_func_call_user_inside_fparen.c
00170 common/empty.cfg c/beautifier-off.c
00180 c/sf538.cfg c/lvalue.c
00190 common/empty.cfg c/Issue_3559.c
# switch & case stuff
00201 c/case-1.cfg c/case.c
00202 c/case-2.cfg c/case.c
00203 c/case-3.cfg c/case.c
00204 c/bug_1718.cfg c/bug_1718.c
00205 c/nl_before_return_false.cfg c/case-nl_before_return.c
00206 c/nl_before_return_true.cfg c/case-nl_before_return.c
00207 common/nl_before_ignore_after_case.cfg c/nl_before_ignore_after_case.c
# structure initializers
00301 c/ben_079.cfg c/align-struct-init.c
00302 c/ben_080.cfg c/one-liner-init.c
00303 c/1liner-split.cfg c/one-liner-init.c
00304 c/1liner-no-split.cfg c/one-liner-init.c
00305 c/ben_081.cfg c/one-liner-define.c
00310 common/empty.cfg c/sp_embed_comment.c
00311 c/comment_conversion.cfg c/comment_conversion_define.c
00312 c/comment_conversion.cfg c/comment_conversion_endif.c
00313 c/comment_conversion.cfg c/comment_conversion_long_lines.c
00314 c/comment_conversion.cfg c/comment_conversion_javadoc_single.c
00315 common/tde.cfg c/comment_conversion_trailing_c_multiline.c
00320 c/rdan.cfg c/indent_first_bool_expr.c
# aligning tresholds
00401 common/align-1.cfg c/align-equ.c
00402 common/align-1.cfg c/align-var.c
00403 c/align-2.cfg c/align-var.c
00404 c/align-3.cfg c/align-var.c
00405 c/align-3.cfg c/bits.c
00406 c/bug_i_771.cfg c/bug_i_771.c
00407 c/star-style-0.cfg c/star-style.c
00408 c/star-style-1.cfg c/star-style.c
00409 c/star-style-2.cfg c/star-style.c
00411 c/align_typedef_gap-3_span-5.cfg c/align-typedef.c
00412 c/align_typedef_gap-3_span-5.cfg c/align-typedef.c
00413 c/align_typedef_func-1.cfg c/align-typedef.c
00414 c/align_typedef_func-2.cfg c/align-typedef.c
00415 c/align_stack.cfg c/align_stack.c
00416 c/align_sf_call_thresh_416.cfg c/align_sf_call_thresh_416.c
00417 c/align_sf_call_thresh_417.cfg c/align_sf_call_thresh_417.c
00418 c/align_sf_call_span_418.cfg c/align_sf_call_span_418.c
00419 c/align_sf_call_span_419.cfg c/align_sf_call_span_419.c
00420 c/Issue_2278.cfg c/Issue_2278.c
00421 c/nl_ds_struct_enum_cmt-t.cfg c/nl_ds_struct_enum.c
00422 c/nl_ds_struct_enum-2.cfg c/nl_ds_struct_enum.c
00423 c/bug_1702.cfg c/bug_1702.c
00424 c/Issue_3506.cfg c/Issue_3506.c
00430 common/empty.cfg c/paren-indent.c
00431 c/indent_paren_close-1.cfg c/paren-indent.c
00432 c/indent_paren_close-2.cfg c/paren-indent.c
00440 c/bug_489.cfg c/bug_489.c
00451 c/code_width-80.cfg c/enum_gallery.c
00452 c/nl_enum_own_lines-a.cfg c/enum_gallery.c
00453! c/nl_enum_own_lines-3.cfg c/enum_gallery.c
00454 c/nl_enum_own_lines-4.cfg c/enum_gallery.c
00461 c/align_func_proto_star_amp-1.cfg c/align_func_proto_star_amp.h
00462 c/align_func_proto_star_amp-2.cfg c/align_func_proto_star_amp.h
00463 c/align_func_proto_star_amp-3.cfg c/align_func_proto_star_amp.h
00464 c/align_func_proto_star_amp-4.cfg c/align_func_proto_star_amp.h
00465 c/align_func_proto_star_amp-5.cfg c/align_func_proto_star_amp.h
00466 c/align_func_proto_star_amp-6.cfg c/align_func_proto_star_amp.h
00467 c/align_func_proto_star_amp-7.cfg c/align_func_proto_star_amp.h
00468 c/align_func_proto_star_amp-8.cfg c/align_func_proto_star_amp.h
00469 c/align_func_proto_star_amp-9.cfg c/align_func_proto_star_amp.h
00470 c/align_trailing_do_cmt.cfg c/align_trailing_do_cmt.c
# boolean and comma positioning
00501 c/bool-pos-eol.cfg c/bool-pos.c
00502 c/bool-pos-sol.cfg c/bool-pos.c
00503 c/pos_compare-sol.cfg c/pos_compare.c
00504 c/pos_compare-eol.cfg c/pos_compare.c
00505 c/pos_conditional-l.cfg c/pos_conditional.c
00506 c/pos_conditional-t.cfg c/pos_conditional.c
00510 c/bool-pos-eol-break.cfg c/bool-pos.c
00511 c/bool-pos-sol-break.cfg c/bool-pos.c
00512 common/bool-pos-eol-force.cfg c/bool-pos.c
00513 c/bool-pos-sol-force.cfg c/bool-pos.c
00514 c/my_conf.cfg c/my_infile.c
00600 common/indent_columns-3.cfg c/dos.c
00601 common/indent_columns-3.cfg c/mac.c
00611 common/empty.cfg c/pp-space.c
00612 c/pp-indent-2.cfg c/pp-space.c
00613 c/pp_indent-a.cfg c/pp-space.c
00614 c/pp-space.cfg c/pp-space.c
00615 c/pp-indent-2.cfg c/pp-nest.c
00616 c/pp_if_indent-1.cfg c/pp-if-indent.c
00617 c/rdan.cfg c/pp-if-indent.c
00618 c/pp_if_indent-4.cfg c/pp-if-indent.c
00619 c/Issue_3169.cfg c/Issue_3169.c
00620 c/ben_083.cfg c/indent-assign.c
00621 c/nl_endif.cfg c/nl_endif.c
00622 c/indent_assign.cfg c/indent-off-after-assign.c
00623 c/pp_space_none.cfg c/pp_space_before_after.c
00624 c/pp_space_after.cfg c/pp_space_before_after.c
00625 c/pp_space_before.cfg c/pp_space_before_after.c
00626 c/pp_space_before_after.cfg c/pp_space_before_after.c
00631 c/nl_assign1.cfg c/nl_assign.c
00632 c/nl_assign2.cfg c/nl_assign.c
00633 c/nl_assign1.cfg c/bug_3156.c
# function def newlines
00701 common/func-def-1.cfg c/function-def.c
00702 common/func-def-2.cfg c/function-def.c
00703 common/func-def-3.cfg c/function-def.c
00710 c/add_long_closebrace_comment_1.cfg c/add_long_comment.c
# nl_after_semicolon and nl_after_open_brace
00721 c/nl_semicolon.cfg c/nl-semicolon.c
# function call newlines
00730 c/nl_func_call-1.cfg c/nl_func_call.c
00731 c/nl_func_call-2.cfg c/nl_func_call.c
00732 c/nl_func_call-3.cfg c/nl_func_call.c
00733 c/nl_func_call-4.cfg c/nl_func_call.c
00734 c/nl_func_call-5.cfg c/nl_func_call.c
# function types
00801 c/ben_084.cfg c/fcn_type.c
00802 c/ben_085.cfg c/funcfunc.c
00803 c/sf537.cfg c/fcn_type.c
# code width
00901 c/width.cfg c/code_width.c
00902 common/width-2.cfg c/code_width.c
00903 c/width-3.cfg c/code_width.c
# pascal ptr_type
00910 c/pascal_ptr.cfg c/pascal_ptr.c
00911 c/empty_body.cfg c/pascal_ptr.c
01000 c/mod-paren.cfg c/mod-paren.c
01001 c/nl-comment.cfg c/nl-comment.c
01002 c/mod-paren2.cfg c/mod-paren.c
01005 c/mod_case_brace_add.cfg c/mod_case_brace.c
01006 common/mod_case_brace_rm.cfg c/mod_case_brace.c
01007 c/mod_move_case_brace.cfg c/mod_case_brace.c
01008 c/mod_case_brace_add.cfg c/Issue_3366.c
01009 c/mod_move_case_return.cfg c/mod_move_case_return.c
01010 c/mod_move_case_return.cfg c/mod_move_case_return_bad.c
01011 common/del_semicolon.cfg c/semicolons.c
01012 c/ben_086.cfg c/semicolons.c
01015 common/empty.cfg c/paren_indent.c
01016 c/align_attr.cfg c/align_attr.c
01020 common/kw_subst.cfg c/kw_subst.c
01021 common/kw_subst3.cfg c/hello.c
01022 common/kw_subst3.cfg c/kw_subst.c
01030 c/cmt_indent_multi-f.cfg c/multi.h
01035 common/empty.cfg c/func_wrap.c
01036 common/sp_inside_fparen-f.cfg c/func_wrap.c
01037 c/type_wrap.cfg c/type_wrap.c
01040 c/newline_after_endif.cfg c/newline_after_endif.c
01050 c/func_call_user.cfg c/func_call_user.c
01060 common/empty.cfg c/backslash-newline-lex.c
01070 c/label_colon_nl_1.cfg c/various_colons.c
01071 c/label_colon_nl_2.cfg c/various_colons.c
01080 common/empty.cfg c/bug_1196.c
# big general tests
02000 c/ben_087.cfg c/i2c-core.c
02001 c/preproc-cleanup.cfg c/directfb.h
02002 common/ben2.cfg c/i2c-core.c
02003 c/Issue_3353.cfg c/Issue_3353.h
# clark's style - blank lines before and after flow control, indented comments
02100 common/clark.cfg c/i2c-core.c
02101 common/clark.cfg c/comment-indent.c
02200 c/xml-str.cfg c/xml.c
02201 c/xml-str.cfg c/align-string.c
02300 c/ben_088.cfg c/preproc-if.c
02301 common/d.cfg c/preproc-if.c
02302 c/cpp_to_c-1.cfg c/nl-cont.c
02303 c/cpp_to_c-1.cfg c/nl-cont2.c
02310 c/ben_089.cfg c/empty-for.c
02311 c/ben_090.cfg c/pragma.c
02315 c/pp_ret.cfg c/pp_ret.c
02320 c/nl_create_one_liner.cfg c/nl_create_one_liner.c
02325 common/sort_imports.cfg c/sort_include.c
02330 c/leave_one_liners.cfg c/one_liners.c
# some embedded sql stuff
02400 c/ben_091.cfg sql/mysql.sqc C
02401 c/ben_092.cfg sql/sta-select.sqc C
02402 c/issue_527.cfg sql/issue_527.sqc C
02410 c/pp_if_indent-0.cfg c/ifdef-indent.c
02411 c/pp_if_indent-1.cfg c/ifdef-indent.c
02412 c/pp_if_indent-2.cfg c/ifdef-indent.c
02413 c/pp_if_indent-3.cfg c/ifdef-indent.c
02414 c/nl_whole_file_ifdef.cfg c/whole_file_ifdef.c
02415 c/endif.cfg c/endif.c
02416 c/cmt_nl_end.cfg c/cmt_nl_end.c
02421 c/cmt_multi_check_last-f.cfg c/cmt_multi.c
02422 common/empty.cfg c/cmt_multi.c
02423 common/empty.cfg c/cmt_multi_utf8.c
02431 c/align_right_cmt_gap-1.cfg c/cmt_right_align.c
02432 c/space_indent_columns-3.cfg c/cmt_right_align.c
02440 common/empty.cfg c/string_utf8.c
02441 common/empty.cfg c/utf8-identifiers.c
02451 c/return-1.cfg c/nl_return_expr.c
02452 c/return-2.cfg c/nl_return_expr.c
02453 c/return-3.cfg c/nl_return_expr.c
02454 c/return-4.cfg c/nl_return_expr.c
02455 common/mod_paren_on_return-a.cfg c/macro-returns.c
02456 common/mod_paren_on_return-r.cfg c/macro-returns.c
02457 c/nl_before_return_true.cfg c/nl_before_return.c
02460 c/freebsd.cfg c/freebsd.c
02486 c/doxy-comment-no.cfg c/doxy-comment.c
02487 c/doxy-comment-yes.cfg c/doxy-comment.c
02501 c/ger.cfg c/custom_types_ssl.c
02502 c/custom_types_ssl.cfg c/custom_types_ssl.c
#02503 ger.cfg c/pp_concat_asn1.h
02504 c/align_keep_extra.cfg c/align_keep_extra.c
02505 c/align_multi.cfg c/align_assigns.c
02506 c/align-4.cfg c/align_assign_var_defs.c
02510 c/ben_093.cfg c/asm.c
02520 c/pp_indent_with_tabs_0.cfg c/pp_indent_with_tabs.c
02521 c/pp_indent_with_tabs_1.cfg c/pp_indent_with_tabs.c
02522 c/pp_indent_with_tabs_2.cfg c/pp_indent_with_tabs.c
02523 c/pp_indent_with_tabs_-1_0.cfg c/pp_indent_with_tabs.c
02524 c/pp_indent_with_tabs_-1_1.cfg c/pp_indent_with_tabs.c
02525 c/pp_indent_with_tabs_-1_2.cfg c/pp_indent_with_tabs.c
02530 common/empty.cfg c/pp_multiline_define.c
02531 common/Issue_3052.cfg c/pp_multiline_define.c
02532 c/pp_multiline_define_ignore_body.cfg c/pp_multiline_define.c
02533 c/pp_multiline_define_with_spaces.cfg c/pp_multiline_define.c
02534 c/pp_multiline_define_align_nl.cfg c/pp_multiline_define.c
02535 c/pp_multiline_define_align_pp_col1.cfg c/pp_multiline_define.c
02536 c/pp_multiline_define_align_pp_cnt3.cfg c/pp_multiline_define.c
02537 c/pp_multiline_define_align_pp_ml4.cfg c/pp_multiline_define.c
02538 c/pp_multiline_define_align_pp_ml2.cfg c/pp_multiline_define.c
02539 c/pp_multiline_define_align_pp_ml0.cfg c/pp_multiline_define.c
02540 c/pp_multiline_define_align_pp_ml-1.cfg c/pp_multiline_define.c
02541 c/pp_multiline_define_align_pp_ml-5.cfg c/pp_multiline_define.c
02542 c/align_nl_cont-2.cfg c/pp_multiline_define.c
02543 c/align_nl_cont-3.cfg c/pp_multiline_define.c
02544 c/align_nl_cont_spaces-5.cfg c/pp_multiline_define.c
02550 c/Issue_3852.cfg c/func_var_multi_paren.c
02551 common/neovim.cfg c/line_multi_split_1.c
02552 common/tde.cfg c/line_multi_split_2.c
07630 c/indent-vbrace.cfg c/indent-vbrace.c
08399 c/ben_095.cfg c/gh399.c
09594 common/indent_columns-3.cfg c/sf594.c
09588 common/empty.cfg c/sf588.c
09601 common/bug_637.cfg c/bug_637.c
09602 common/bug_671.cfg c/bug_671.c
09603 common/indent_ternary_operator-1.cfg c/indent_ternary-1.c
09604 common/indent_ternary_operator-2.cfg c/indent_ternary-2.c
09605 common/sp_arith-f.cfg c/negative_value.c
09606 c/ptr-arith.cfg c/extern.c
09607 c/ptr-arith.cfg c/attribute.c
09608 common/aet-func_call_user.cfg c/func_call_user2.c
09609 c/Issue_2279.cfg c/Issue_2279.c
09610 c/force_tab_after_define-t.cfg c/bug_i_876.c
09611 common/space_indent_columns-4.cfg c/bug_i_222.c
09612 common/empty.cfg c/bug_1041.c
09613 common/empty.cfg c/i1413.c
09614 common/empty.cfg c/string_prefixes.c
09615 c/i1564.cfg c/i1564.c
09616 c/enum_comma_ifdef.cfg c/enum_comma_ifdef.c
09617 c/Issue_2360-a.cfg c/Issue_2360.c
09618 c/Issue_2360-b.cfg c/Issue_2360.c
09619 c/Issue_2411.cfg c/Issue_2411.c
09620 c/Issue_2640.cfg c/Issue_2640.c
09621 c/preproc-cleanup.cfg c/pp-before-func-def.c
09622 c/Issue_3356.cfg c/Issue_3356.c
09623 c/convert_cmt_vbrace_one_line.cfg c/vbrace_one_liner.c
10003 common/empty.cfg c/incdec_postfix_multiply.c
10004 c/ben_094.cfg c/pragma_asm.c
10005 common/empty.cfg c/i1270.c
10006 c/bug_2331.cfg c/bug_2331.c
10007 c/indent_macro_brace-true.cfg c/indent-macro-brace.c
10008 c/indent_macro_brace-false.cfg c/indent-macro-brace.c
10009 common/empty.cfg c/return-compound-literal.c
10010 c/indent_compound_literal_return-false.cfg c/return-compound-literal.c
10011 c/indent_compound_literal_return-true.cfg c/return-compound-literal.c
10012 c/indent_sparen_extra-8.cfg c/sparen-indent.c
10013 common/empty.cfg c/sparen-indent.c
10014 common/indent_continue-8.cfg c/sparen-indent.c
10015 common/empty.cfg c/Issue_2845.h
10016 c/Issue_3233.cfg c/Issue_3233.c
10017 c/sp_sparen_paren-a.cfg c/double-sparen.c
10018 c/sp_sparen_paren-i.cfg c/double-sparen.c
10019 c/pp_indent_in_guard.cfg c/include-guard.h
10020 c/indent_single_line_comments_after.cfg c/single_line_comment_after.c
10021 common/sp_cparen_oparen-f.cfg c/parenthesized_indirect_call.c
10022 c/Issue_3269.cfg c/Issue_3269.c
10023 c/Issue_3272.cfg c/Issue_3272.h
10024 c/Issue_3274.cfg c/Issue_3274.c
10025 c/sp_between_semi_for_empty-r.cfg c/forever.c
10026 c/sp_between_semi_for_empty-i.cfg c/forever.c
10027 c/Issue_3327.cfg c/Issue_3327.c
10028 c/sp_emb_cmt-i.cfg c/Issue_3339.c
10029 c/sp_emb_cmt-f.cfg c/Issue_3339.c
10030 c/sp_emb_cmt-r.cfg c/Issue_3339.c
10031 c/sp_after_pointer_star-r.cfg c/Issue_3342.c
10032 c/sp_after_pointer_star-r.cfg c/Issue_3345.c
10033 c/pp_include_at_level-true.cfg c/Issue_3343.c
10034 c/pp_include_at_level-false.cfg c/Issue_3343.c
10035 c/indent_comment_align_thresh-0.cfg c/comment-indent.c
10036 c/Issue_3350.cfg c/comment-indent.c
10037 c/indent_case_comment-true.cfg c/Issue_3362.c
10038 c/indent_case_comment-false.cfg c/Issue_3362.c
10039 c/Issue_3370.cfg c/Issue_3370.c
10040 c/Issue_3377.cfg c/Issue_3377.c
10041 c/Issue_3351.cfg c/Issue_3351.c
10042 c/sp_ptr_star_func_var-i.cfg c/Issue_3376.c
10043 c/sp_ptr_star_func_var-a.cfg c/Issue_3376.c
10044 c/sp_ptr_star_func_var-r.cfg c/Issue_3376.c
10045 c/sp_ptr_star_func_var-f.cfg c/Issue_3376.c
10046 c/Issue_3402.cfg c/Issue_3402.c
10047 c/pp_if_indent_code-true.cfg c/Issue_3421.h
10048 c/Issue_3431.cfg c/Issue_3431.c
10049 c/indent_paren_close--1.cfg c/Issue_3436.c
10050 common/empty.cfg c/Issue_3192.c
10051 c/Issue_3454.cfg c/Issue_3454.c
10052 c/Issue_3472.cfg c/Issue_3472.c
10053 c/Issue_3476.cfg c/Issue_3476.c
10054 c/Issue_3480.cfg c/Issue_3480.c
10055 c/Issue_3493.cfg c/Issue_3493.c
10056 c/sp_enum_brace-i.cfg c/Issue_3496.h
10057 c/sp_enum_brace-a.cfg c/Issue_3496.h
10058 c/sp_enum_brace-r.cfg c/Issue_3496.h
10059 c/sp_enum_brace-f.cfg c/Issue_3496.h
10060 c/indent_ignore_bool-true.cfg c/Issue_3548.c
10061 c/Issue_3556.cfg c/Issue_3556.c
10062 c/Issue_3561.cfg c/Issue_3561.c
10063 c/Issue_3565.cfg c/Issue_3565.c
10064 c/Issue_3567-a.cfg c/Issue_3567.c
10065 c/Issue_3567-b.cfg c/Issue_3567.c
10066 c/Issue_3580.cfg c/Issue_3580.c
10077 c/Issue_3582.cfg c/Issue_3582.c
10078 c/pp_indent_brace--1.cfg c/Issue_3587.h
10079 c/Issue_3662.cfg c/Issue_3662.c
10080 c/mod_infinite_loop-0.cfg c/infinite-loops.c
10081 c/mod_infinite_loop-1.cfg c/infinite-loops.c
10082 c/mod_infinite_loop-2.cfg c/infinite-loops.c
10083 c/mod_infinite_loop-3.cfg c/infinite-loops.c
10084 c/mod_infinite_loop-4.cfg c/infinite-loops.c
10085 c/mod_infinite_loop-5.cfg c/infinite-loops.c
10086 c/Issue_3716-1.cfg c/infinite-loops.c
10087 c/Issue_3716-2.cfg c/infinite-loops.c
10088 c/Issue_3716-3.cfg c/infinite-loops.c
10089 c/Issue_3716-4.cfg c/infinite-loops.c
10090 c/Issue_3716-5.cfg c/infinite-loops.c
10091 c/mod_short_int-a.cfg c/int-types.c
10092 c/mod_short_int-r.cfg c/int-types.c
10093 c/mod_long_int-a.cfg c/int-types.c
10094 c/mod_long_int-r.cfg c/int-types.c
10095 c/mod_signed_int-a.cfg c/int-types.c
10096 c/mod_signed_int-r.cfg c/int-types.c
10097 c/mod_unsigned_int-a.cfg c/int-types.c
10098 c/mod_unsigned_int-r.cfg c/int-types.c
10099 c/mod_int_short-a.cfg c/int-types.c
10100 c/mod_int_short-r.cfg c/int-types.c
10101 c/mod_int_long-a.cfg c/int-types.c
10102 c/mod_int_long-r.cfg c/int-types.c
10103 c/mod_int_signed-a.cfg c/int-types.c
10104 c/mod_int_signed-r.cfg c/int-types.c
10105 c/mod_int_unsigned-a.cfg c/int-types.c
10106 c/mod_int_unsigned-r.cfg c/int-types.c
10107 c/mod_int-shift-left.cfg c/int-types.c
10108 c/mod_int-shift-right.cfg c/int-types.c
10109 c/mod_int-add-all-prefer-left.cfg c/int-types.c
10110 c/mod_int-add-all-prefer-right.cfg c/int-types.c
10111 c/mod_int-remove-left.cfg c/int-types.c
10112 c/mod_int-remove-right.cfg c/int-types.c
10113 c/mod_int-remove-all.cfg c/int-types.c
10114 c/Issue_3989.cfg c/Issue_3989.c
10120 c/sp_after_sparen-i.cfg c/sp_after_sparen.c
10121 c/sp_after_sparen-a.cfg c/sp_after_sparen.c
10122 c/sp_after_sparen-r.cfg c/sp_after_sparen.c
10123 c/sp_after_sparen-f.cfg c/sp_after_sparen.c
10124 common/tde.cfg c/Issue_3985.c
10125 common/tde.cfg c/Issue_3992.c

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

Loading…
Cancel
Save