Style for sorting and grouping C++ #include directives. More...
#include "clang/Tooling/Inclusions/IncludeStyle.h"
#include
blocks can be sorted as one and divided based on category.
#include
categories used for ordering #includes
.
Style for sorting and grouping C++ #include directives.
Definition at line 20 of file IncludeStyle.h.
◆ IncludeBlocksStyleStyles for sorting multiple #include
blocks.
Sort each #include
block separately.
#include "b.h" into #include "b.h"
#include <lib/main.h> #include "a.h"
#include "a.h" #include <lib/main.h>
IBS_MergeMerge multiple #include
blocks together and sort as one.
#include "b.h" into #include "a.h"
#include "b.h"
#include <lib/main.h> #include <lib/main.h>
#include "a.h"
IBS_RegroupMerge multiple #include
blocks together and sort as one.
Then split into groups based on category priority. See IncludeCategories
.
#include "b.h" into #include "a.h"
#include "b.h"
#include <lib/main.h>
#include "a.h" #include <lib/main.h>
Definition at line 22 of file IncludeStyle.h.
◆ MainIncludeCharDiscriminatorCharacter to consider in the include directives for the main header.
Enumerator MICD_QuoteMain include uses quotes: #include "foo.hpp"
(the default).
Main include uses angle brackets: #include <foo.hpp>
.
Main include uses either quotes or angle brackets.
Definition at line 156 of file IncludeStyle.h.
◆ IncludeBlocks ◆ IncludeCategories std::vector<IncludeCategory> clang::tooling::IncludeStyle::IncludeCategoriesRegular expressions denoting the different #include
categories used for ordering #includes
.
POSIX extended <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html>
_ regular expressions are supported.
These regular expressions are matched against the filename of an include (including the <> or "") in order. The value belonging to the first matching regular expression is assigned and #includes
are sorted first according to increasing category number and then alphabetically within each category.
If none of the regular expressions match, INT_MAX is assigned as category. The main header for a source file automatically gets category 0. so that it is generally kept at the beginning of the #includes
(https://llvm.org/docs/CodingStandards.html#include-style). However, you can also assign negative priorities if you have certain headers that always need to be first.
There is a third and optional field SortPriority
which can used while IncludeBlocks = IBS_Regroup
to define the priority in which #includes
should be ordered. The value of Priority
defines the order of #include blocks
and also allows the grouping of #includes
of different priority. SortPriority
is set to the value of Priority
as default if it is not assigned.
Each regular expression can be marked as case sensitive with the field CaseSensitive
, per default it is not.
To configure this in the .clang-format file, use:
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
SortPriority: 2
CaseSensitive: true
- Regex: '^((<|")(gtest|gmock|isl|json)/)'
Priority: 3
- Regex: '<[[:alnum:].]+>'
Priority: 4
- Regex: '.*'
Priority: 1
SortPriority: 0
Definition at line 118 of file IncludeStyle.h.
Referenced by clang::format::getGoogleStyle(), clang::format::getLLVMStyle(), llvm::yaml::MappingTraits< FormatStyle >::mapping(), and clang::format::FormatStyle::operator==().
◆ IncludeIsMainRegex std::string clang::tooling::IncludeStyle::IncludeIsMainRegex ◆ IncludeIsMainSourceRegex std::string clang::tooling::IncludeStyle::IncludeIsMainSourceRegexSpecify a regular expression for files being formatted that are allowed to be considered "main" in the file-to-main-include mapping.
By default, clang-format considers files as "main" only when they end with: .c
, .cc
, .cpp
, .c++
, .cxx
, .m
or .mm
extensions. For these files a guessing of "main" include takes place (to assign category 0, see above). This config option allows for additional suffixes and extensions for files to be considered as "main".
For example, if this option is configured to (Impl\.hpp)$
, then a file ClassImpl.hpp
is considered "main" (in addition to Class.c
, Class.cc
, Class.cpp
and so on) and "main include file" logic will be executed (with IncludeIsMainRegex setting also being respected in later phase). Without this option set, ClassImpl.hpp
would not have the main include file put on top before any other include.
Definition at line 153 of file IncludeStyle.h.
Referenced by llvm::yaml::MappingTraits< FormatStyle >::mapping(), and clang::format::FormatStyle::operator==().
◆ MainIncludeCharThe documentation for this struct was generated from the following file:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4