---
Checks: >
  clang-diagnostic-*,
  clang-analyzer-*,
  bugprone-*,
  -bugprone-easily-swappable-parameters,
  concurrency-*,
  cppcoreguidelines-*,
  -cppcoreguidelines-pro-bounds-pointer-arithmetic,
  -cppcoreguidelines-pro-bounds-constant-array-index,
  -cppcoreguidelines-avoid-c-arrays,
  -cppcoreguidelines-avoid-do-while,
  -cppcoreguidelines-missing-std-forward,
  -cppcoreguidelines-non-private-member-variables-in-classes,
  -cppcoreguidelines-owning-memory,
  -cppcoreguidelines-avoid-const-or-ref-data-members,
  google-*,
  -google-readability-*,
  modernize-*,
  performance-*,
  readability-*,
  -readability-identifier-length,
  -readability-function-cognitive-complexity,

WarningsAsErrors: 'cppcoreguidelines-*,bugprone-*'

HeaderFilterRegex: '^src/|^test/'
FormatStyle: file

CheckOptions:
  modernize-loop-convert.MinConfidence: reasonable
  modernize-loop-convert.MaxCopySize: '16'
  modernize-loop-convert.NamingStyle: CamelCase
  modernize-pass-by-value.IncludeStyle: llvm
  modernize-use-nullptr.NullMacros: 'NULL'
  readability-namespace-comments.ShortNamespaceLines: '10'
  readability-namespace-comments.SpacesBeforeComments: '2'
  readability-braces-around-statements.ShortStatementLines: '1'
  readability-function-size.StatementThreshold: '800'
  cppcoreguidelines-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic: 'true'

  readability-identifier-naming.ClassCase: CamelCase
  readability-identifier-naming.ClassConstantCase: CamelCase
  readability-identifier-naming.ClassConstantPrefix: "k"
  readability-identifier-naming.ConstexprVariableCase: CamelCase
  readability-identifier-naming.ConstexprVariablePrefix: "k"
  readability-identifier-naming.EnumCase: CamelCase
  readability-identifier-naming.EnumConstantCase: CamelCase
  readability-identifier-naming.EnumConstantPrefix: "k"
  readability-identifier-naming.FunctionCase: CamelCase
  readability-identifier-naming.MethodCase: CamelCase
  readability-identifier-naming.NamespaceCase: lower_case
  readability-identifier-naming.PublicMemberCase: lower_case
  readability-identifier-naming.PublicMemberPreffix: ""
  readability-identifier-naming.PublicMemberSuffix: ""
  readability-identifier-naming.PrivateMemberCase: lower_case
  readability-identifier-naming.PrivateMemberPreffix: "_"
  readability-identifier-naming.PrivateMemberSuffix: "_"
  readability-identifier-naming.VariableCase: lower_case
  readability-identifier-naming.ParameterCase: lower_case
  readability-identifier-naming.TemplateParameterCase: CamelCase
  readability-identifier-naming.TypeAliasCase: CamelCase
