BasedOnStyle: Chromium
Standard: c++23

# Sort #includes by following
# https://google.github.io/styleguide/cppguide.html#Names_and_Order_of_Includes
#
# ref: https://clang.llvm.org/docs/ClangFormatStyleOptions.html#includeblocks
IncludeBlocks: Regroup
# ref: https://clang.llvm.org/docs/ClangFormatStyleOptions.html#includecategories
IncludeCategories:
  # The win32 api has all sorts of implicit include order dependencies :-/
  # Give a few headers special priorities that make sure they appear before
  # all other headers.
  - Regex:           '^<objbase\.h>' # This has to be before initguid.h.
    Priority:        1
  - Regex:           '^<(atlbase|initguid|mmdeviceapi|ocidl|ole2|shobjidl|tchar|unknwn|windows|winsock2|winternl|ws2tcpip)\.h>'
    Priority:        2
  # UIAutomation*.h needs to be after base/win/atl.h.
  # Note the low priority number.
  - Regex:           '^<UIAutomation.*\.h>'
    Priority:        6
  # Other C system headers.
  - Regex:           '^<.*\.h>'
    Priority:        3
  # C++ standard library headers.
  - Regex:           '^<.*>'
    Priority:        4
  # windows_h_disallowed.h should appear last. Note the low priority number.
  - Regex:           '"(.*/)?windows_h_disallowed\.h"'
    Priority:        7
  # Other libraries.
  - Regex:           '.*'
    Priority:        5
# ref: https://clang.llvm.org/docs/ClangFormatStyleOptions.html#includeismainregex
IncludeIsMainRegex: "\
(_(32|64|android|apple|chromeos|freebsd|fuchsia|fuzzer|ios|linux|mac|openbsd|posix|stubs?|win))?\
(_(unit|browser|perf|interactive_ui)?tests?)?$"
