---
WarningsAsErrors: ''
HeaderFilterRegex: ''

CheckOptions:
  # Standard naming conventions
  - key: readability-identifier-naming.ClassCase
    value: CamelCase
  - key: readability-identifier-naming.ConstexprVariableCase
    value: UPPER_CASE
  - key: readability-identifier-naming.EnumCase
    value: CamelCase
  - key: readability-identifier-naming.EnumConstantCase
    value: UPPER_CASE
  - key: readability-identifier-naming.FunctionCase
    value: CamelCase
  - key: readability-identifier-naming.GlobalConstantCase
    value: UPPER_CASE
  - key: readability-identifier-naming.StructCase
    value: CamelCase
  - key: readability-identifier-naming.VariableCase
    value: camelBack
  - key: readability-identifier-naming.NamespaceCase
    value: lower_case

  # Hungarian notation prefixes
  - key: readability-identifier-naming.HungarianNotation
    value: 1

  # Other style options
  - key: readability-braces-around-statements.ShortStatementLines
    value: 2
  - key: readability-implicit-bool-conversion.AllowIntegerConditions
    value: true
  - key: readability-implicit-bool-conversion.AllowPointerConditions
    value: true
  - key: readability-function-cognitive-complexity.Threshold
    value: 25

  # Class related
  - key: cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor
    value: true
  - key: misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
    value: true

  # Modernization
  - key: modernize-loop-convert.MinConfidence
    value: reasonable
  - key: modernize-pass-by-value.IncludeStyle
    value: llvm
  - key: modernize-use-nullptr.NullMacros
    value: 'NULL'

  # Performance
  - key: performance-unnecessary-value-param.AllowedTypes
    value: 'string_view;function'
