Checks:
  - modernize-*
  - bugprone-*
  - cppcoreguidelines-*
  - readability-identifier-naming
  - -bugprone-easily-swappable-parameters
  - -cppcoreguidelines-avoid-magic-numbers
  - -modernize-use-std-numbers
  - -cppcoreguidelines-owning-memory
  - -cppcoreguidelines-pro-type-vararg
  - -cppcoreguidelines-pro-bounds-pointer-arithmetic
  - -cppcoreguidelines-avoid-do-while

WarningsAsErrors: '*'

ExtraArgs:
  - -nostdlibinc
  - -isystem/nix/store/hv7qldswrqvg1sjys1lmgjg875hkffng-python3-3.13.9/include
  - -isystem/nix/store/dg6ikmg5aavlpldk5yr0ka63y9ry1hb0-gtest-1.17.0-dev/include
  - -isystem/nix/store/a3mw2msblrnfmdr9nmw8ysiqh2nl4fyl-python3-3.13.9-env/include
  - -isystem/nix/store/qrqws7rbynwdg34kig3mp33rjsar32dd-libcxx-19.1.2+apple-sdk-15.5/include
  - -isystem/nix/store/lzwcv5378dilf1bw4gkazy3h6hkp66gm-compiler-rt-libc-21.1.2-dev/include
  - -isystem/nix/store/9zym1ak4fkg1jy6w63kq37x02da6vipb-libiconv-109.100.2-dev/include
  - -isystem/nix/store/4spjp33v2kkahvwl9r09hlnr8ayw6wm3-libresolv-91-dev/include
  - -isystem/nix/store/xhv6ncxn7ic2ir7pp6q1vs3q83kd6nc4-libsbuf-14.1.0-dev/include
  - -isystem/nix/store/qrqws7rbynwdg34kig3mp33rjsar32dd-libcxx-19.1.2+apple-sdk-15.5/include/c++/v1
  - -isystem/nix/store/b0pmskfnq9b3vfqqn2zr0kfp3lj17zaw-clang-wrapper-21.1.2/resource-root/include
  - -isystem/nix/store/rrjy7x4jpxp92gs1prpbg79ng0mcl5hj-apple-sdk-14.4/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
  - -isystem/nix/store/rrjy7x4jpxp92gs1prpbg79ng0mcl5hj-apple-sdk-14.4/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory)
  - -isystem/nix/store/lm725blqlq4bjmfrxps1wdizgh3k4q6z-libSystem-B/include

CheckOptions:
  # Class: CamelCase
  - { key: readability-identifier-naming.ClassCase, value: CamelCase }
  - { key: readability-identifier-naming.StructCase, value: CamelCase }
  - { key: readability-identifier-naming.EnumCase, value: CamelCase }
  - { key: readability-identifier-naming.TypeAliasCase, value: CamelCase }
  - { key: readability-identifier-naming.TemplateParameterCase, value: CamelCase }
  - { key: readability-identifier-naming.ConceptCase, value: CamelCase }

  # Function: CamelCase
  - { key: readability-identifier-naming.FunctionCase, value: CamelCase }
  - { key: readability-identifier-naming.MethodCase, value: CamelCase }

  # Variable: lower_case
  - { key: readability-identifier-naming.VariableCase, value: lower_case }
  - { key: readability-identifier-naming.ParameterCase, value: lower_case }

  # Namespace: lower_case
  - { key: readability-identifier-naming.NamespaceCase, value: lower_case }

  # Class members: lower_case with underscore suffix
  - { key: readability-identifier-naming.PrivateMemberCase, value: lower_case }
  - { key: readability-identifier-naming.PrivateMemberSuffix, value: "_" }
  - { key: readability-identifier-naming.ProtectedMemberCase, value: lower_case }
  - { key: readability-identifier-naming.ProtectedMemberSuffix, value: "_" }
  - { key: readability-identifier-naming.PublicMemberCase, value: lower_case }
  - { key: readability-identifier-naming.PublicMemberSuffix, value: "_" }

  # struct members: lower_case without underscore suffix
  - { key: readability-identifier-naming.PublicMemberCase, value: lower_case }
  - { key: readability-identifier-naming.PublicMemberSuffix, value: "" }

  # Enum constant: k + CamelCase
  - { key: readability-identifier-naming.EnumConstantCase, value: CamelCase }
  - { key: readability-identifier-naming.EnumConstantPrefix, value: "k" }

  # Macro: UPPER_CASE
  - { key: readability-identifier-naming.MacroDefinitionCase, value: UPPER_CASE }
  - { key: readability-identifier-naming.MacroDefinitionPrefix, value: "MYPROJECT_" }

  # Global Constants: k + CamelCase
  - { key: readability-identifier-naming.GlobalConstantCase, value: CamelCase }
  - { key: readability-identifier-naming.GlobalConstantPrefix, value: "k" }

  # File Scope static: k + CamelCase
  - { key: readability-identifier-naming.StaticConstantCase, value: CamelCase }
  - { key: readability-identifier-naming.StaticConstantPrefix, value: "k" }

  # Class Constants: k + CamelCase
  - { key: readability-identifier-naming.ClassConstantCase, value: CamelCase }
  - { key: readability-identifier-naming.ClassConstantPrefix, value: "k" }

  # constexpr Variables: k + CamelCase
  - { key: readability-identifier-naming.ConstexprVariableCase, value: CamelCase }
  - { key: readability-identifier-naming.ConstexprVariablePrefix, value: "k" }

  # Parameters: lower_case
  - { key: readability-identifier-naming.ParameterCase, value: lower_case }
  - { key: readability-identifier-naming.ConstantParameterCase, value: lower_case }
