Checks: >
  readability-identifier-naming,
  readability-*,
  modernize-*,
  clang-analyzer-*

WarningsAsErrors: '*'

HeaderFilterRegex: '.*'
FormatStyle: file

CheckOptions:
  # Variables locales en snake_case
  - { key: readability-identifier-naming.VariableCase, value: lower_case }

  # Miembros privados en snake_case con sufijo _
  - { key: readability-identifier-naming.PrivateMemberCase, value: lower_case }
  - { key: readability-identifier-naming.PrivateMemberSuffix, value: _ }
  - { key: readability-identifier-naming.ClassMemberCase, value: lower_case }
  - { key: readability-identifier-naming.ClassMemberSuffix, value: _ }


  # Namespaces en CamelCase
  - { key: readability-identifier-naming.NamespaceCase, value: CamelCase }

  # Constantes y constexpr en UPPER_CASE
  - { key: readability-identifier-naming.GlobalConstantCase, value: UPPER_CASE }
  - { key: readability-identifier-naming.ConstexprVariableCase, value: UPPER_CASE }
  - { key: readability-identifier-naming.LocalConstantCase, value: UPPER_CASE }

  # Clases, structs y enums en CamelCase
  - { key: readability-identifier-naming.ClassCase, value: CamelCase }
  - { key: readability-identifier-naming.StructCase, value: CamelCase }
  - { key: readability-identifier-naming.EnumCase, value: CamelCase }

  # Valores de enums en UPPER_CASE
  - { key: readability-identifier-naming.EnumConstantCase, value: UPPER_CASE }

  # Métodos en camelBack
  - { key: readability-identifier-naming.MethodCase, value: camelBack }

  # Funciones en camelBack
  - { key: readability-identifier-naming.FunctionCase, value: camelBack }
