clang-format: Regroup sort orders
Utilise the clang-format header sort to provide a regex based pattern match for our header inclusion coding style. The rules are updated to match as closely as possible the existing practices and the documentation is updated accordingly. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
e552981c8f
commit
0e1ff86e78
2 changed files with 64 additions and 6 deletions
|
@ -66,10 +66,57 @@ ExperimentalAutoDetectBinPacking: false
|
||||||
FixNamespaceComments: true
|
FixNamespaceComments: true
|
||||||
ForEachMacros:
|
ForEachMacros:
|
||||||
- 'udev_list_entry_foreach'
|
- 'udev_list_entry_foreach'
|
||||||
IncludeBlocks: Preserve
|
SortIncludes: true
|
||||||
|
IncludeBlocks: Regroup
|
||||||
IncludeCategories:
|
IncludeCategories:
|
||||||
- Regex: '.*'
|
# Headers matching the name of the component are matched automatically.
|
||||||
Priority: 1
|
# Priority 1
|
||||||
|
# Other library headers (explicit overrides to match before system headers)
|
||||||
|
- Regex: '(<jpeglib.h>|<libudev.h>|<tiffio.h>|<xf86drm.h>|<xf86drmMode.h>|<yaml.h>)'
|
||||||
|
Priority: 9
|
||||||
|
# Qt includes (match before C++ standard library)
|
||||||
|
- Regex: '<Q([A-Za-z0-9\-_])+>'
|
||||||
|
Priority: 9
|
||||||
|
CaseSensitive: true
|
||||||
|
# Headers in <> with an extension. (+system libraries)
|
||||||
|
- Regex: '<([A-Za-z0-9\-_])+\.h>'
|
||||||
|
Priority: 2
|
||||||
|
# System headers
|
||||||
|
- Regex: '<sys/.*>'
|
||||||
|
Priority: 2
|
||||||
|
# C++ standard library includes (no extension)
|
||||||
|
- Regex: '<([A-Za-z0-9\-_/])+>'
|
||||||
|
Priority: 2
|
||||||
|
# Linux headers, as a second group/subset of system headers
|
||||||
|
- Regex: '<linux/.*>'
|
||||||
|
Priority: 3
|
||||||
|
# Headers for libcamera Base support
|
||||||
|
- Regex: '<libcamera/base/private.h>'
|
||||||
|
Priority: 4
|
||||||
|
- Regex: '<libcamera/base/.*\.h>'
|
||||||
|
Priority: 5
|
||||||
|
# Public API Headers for libcamera, which are not in a subdir (i.e. ipa/,internal/)
|
||||||
|
- Regex: '<libcamera/([A-Za-z0-9\-_])+.h>'
|
||||||
|
Priority: 6
|
||||||
|
# IPA Interfaces
|
||||||
|
- Regex: '<libcamera/ipa/.*\.h>'
|
||||||
|
Priority: 7
|
||||||
|
# libcamera Internal headers in ""
|
||||||
|
- Regex: '"libcamera/internal/.*\.h"'
|
||||||
|
Priority: 8
|
||||||
|
# Other libraries headers with one group per library (.h or .hpp)
|
||||||
|
- Regex: '<.*/.*\.hp*>'
|
||||||
|
Priority: 9
|
||||||
|
# local modular includes "path/file.h" (.h or .hpp)
|
||||||
|
- Regex: '"(.*/)+.*\.hp*"'
|
||||||
|
Priority: 10
|
||||||
|
# Other local headers "file.h" with extension (.h or .hpp)
|
||||||
|
- Regex: '".*.hp*"'
|
||||||
|
Priority: 11
|
||||||
|
# Any unmatched line, separated from the last group
|
||||||
|
- Regex: '"*"'
|
||||||
|
Priority: 100
|
||||||
|
|
||||||
IncludeIsMainRegex: '(_test)?$'
|
IncludeIsMainRegex: '(_test)?$'
|
||||||
IndentCaseLabels: false
|
IndentCaseLabels: false
|
||||||
IndentPPDirectives: None
|
IndentPPDirectives: None
|
||||||
|
|
|
@ -70,19 +70,30 @@ macro. For .cpp files, if the file implements an API declared in a header file,
|
||||||
that header file shall be included first in order to ensure it is
|
that header file shall be included first in order to ensure it is
|
||||||
self-contained.
|
self-contained.
|
||||||
|
|
||||||
|
While the following list is extensive, it documents the expected behaviour
|
||||||
|
defined by the clang-format configuration and tooling should assist with
|
||||||
|
ordering.
|
||||||
|
|
||||||
The headers shall be grouped and ordered as follows:
|
The headers shall be grouped and ordered as follows:
|
||||||
|
|
||||||
1. The header declaring the API being implemented (if any)
|
1. The header declaring the API being implemented (if any)
|
||||||
2. The C and C++ system and standard library headers
|
2. The C and C++ system and standard library headers
|
||||||
3. Other libraries' headers, with one group per library
|
3. Linux kernel headers
|
||||||
4. Other project's headers
|
4. The libcamera base private header if required
|
||||||
|
5. The libcamera base library headers
|
||||||
|
6. The libcamera public API headers
|
||||||
|
7. The libcamera IPA interfaces
|
||||||
|
8. The internal libcamera headers
|
||||||
|
9. Other libraries' headers, with one group per library
|
||||||
|
10. Local headers grouped by subdirectory
|
||||||
|
11. Any local headers
|
||||||
|
|
||||||
Groups of headers shall be separated by a single blank line. Headers within
|
Groups of headers shall be separated by a single blank line. Headers within
|
||||||
each group shall be sorted alphabetically.
|
each group shall be sorted alphabetically.
|
||||||
|
|
||||||
System and library headers shall be included with angle brackets. Project
|
System and library headers shall be included with angle brackets. Project
|
||||||
headers shall be included with angle brackets for the libcamera public API
|
headers shall be included with angle brackets for the libcamera public API
|
||||||
headers, and with double quotes for other libcamera headers.
|
headers, and with double quotes for internal libcamera headers.
|
||||||
|
|
||||||
|
|
||||||
C++ Specific Rules
|
C++ Specific Rules
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue