---
# TODO: enable -llvm-include-order in the end, after clang-format
Checks: "*,\
         -llvmlibc-*,\
         -altera-*,\
         -fuchsia-*,
         -cert-err58-cpp,\
         -modernize-use-trailing-return-type,\
         -cppcoreguidelines-avoid-magic-numbers,\
         -readability-magic-numbers,\
         -readability-braces-around-statements,\
         -google-readability-braces-around-statements,\
         -hicpp-braces-around-statements,\
         -hicpp-signed-bitwise,\
         -llvm-include-order,\
         -llvm-header-guard,\
         -google-runtime-int,\
         -google-default-arguments,\
         -hicpp-named-parameter,\
         -readability-named-parameter,\
         -bugprone-macro-parentheses,\
         -google-readability-todo,\
         -google-build-using-namespace,\
         -cppcoreguidelines-pro-type-reinterpret-cast,\
         -cppcoreguidelines-pro-bounds-array-to-pointer-decay,\
         -hicpp-no-array-decay,\
         -cppcoreguidelines-avoid-c-arrays,\
         -hicpp-avoid-c-arrays,\
         -cppcoreguidelines-non-private-member-variables-in-classes,\
         -misc-non-private-member-variables-in-classes,\
         -modernize-avoid-c-arrays"

HeaderFilterRegex: '.*'
FormatStyle: file
WarningsAsErrors: "*"
CheckOptions:
  - key:             misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
    value:           '1'
  - key:             readability-implicit-bool-conversion.AllowPointerConditions
    value:           '1'
  - key:             readability-implicit-bool-conversion.AllowIntegerConditions
    value:           '1'
  - key:             readability-redundant-member-init.IgnoreBaseInCopyConstructors
    value:           '1'
  - key:             cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor
    value:           '1'
  - key:             hicpp-special-member-functions.AllowSoleDefaultDtor
    value:           '1'
  - key:             readability-identifier-length.IgnoredVariableNames
    value:           'r|t|fd|id|ok|it|ts'
  - key:             readability-identifier-length.IgnoredParameterNames
    value:           'fd|id|b'
  - key:             performance-move-const-arg.CheckTriviallyCopyableMove
    value:           '0'
  - key:             hicpp-move-const-arg.CheckTriviallyCopyableMove
    value:           '0'
  - key:             misc-include-cleaner.IgnoreHeaders
    value:           'systemd/.*|sdbus-c\+\+/.*|gtest/.*|gmock/.*|bits/chrono.h|bits/basic_string.h|time.h|poll.h|stdlib.h|stdio.h'
  - key:             readability-simplify-boolean-expr.IgnoreMacros
    value:           '1'
  - key:             cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams
    value:           '1'
#  - key:             bugprone-easily-swappable-parameters.MinimumLength
#    value:           '3'
#  - key:             readability-braces-around-statements.ShortStatementLines
#    value:           '3'
