UseColor: true

Checks: >
    -*,
    performance-*,
    readability-function-size,
    readability-identifier-naming,
    bugprone-use-after-move,
    bugprone-argument-comment,
    bugprone-assignment-in-if-condition,
    bugprone-bool-pointer-implicit-conversion,
    bugprone-branch-clone,
    bugprone-copy-constructor-init,
    bugprone-dangling-handle,
    bugprone-reserved-identifier,
    bugprone-suspicious-include,
    bugprone-suspicious-enum-usage,
    bugprone-unused-raii,
    bugprone-suspicious-string-compare,
    bugprone-suspicious-semicolon,


CheckOptions:
  - { key: readability-function-size.LineThreshold,              value: 300        }
  - { key: readability-function-size.StatementThreshold,         value: 300        }
  - { key: readability-identifier-naming.NamespaceCase,          value: lower_case }
  - { key: readability-identifier-naming.ClassCase,              value: CamelCase  }
  - { key: readability-identifier-naming.StructCase,             value: CamelCase  }
  - { key: readability-identifier-naming.TemplateParameterCase,  value: CamelCase  }
  - { key: readability-identifier-naming.ValueTemplateParameterCase, value: lower_case }
  - { key: readability-identifier-naming.FunctionCase,           value: aNy_CasE  }
  - { key: readability-identifier-naming.VariableCase,           value: lower_case }
  - { key: readability-identifier-naming.ParameterCase,          value: lower_case }
  - { key: readability-identifier-naming.ClassMemberCase,        value: lower_case }
  - { key: readability-identifier-naming.ClassMemberSuffix,      value: _          }
  - { key: readability-identifier-naming.PrivateMemberSuffix,    value: _          }
  - { key: readability-identifier-naming.ProtectedMemberSuffix,  value: _          }
  - { key: readability-identifier-naming.EnumConstantCase,         value: CamelCase }
  - { key: readability-identifier-naming.EnumConstantPrefix,       value: k         }
  - { key: readability-identifier-naming.ConstexprVariableCase,    value: CamelCase }
  - { key: readability-identifier-naming.ConstexprVariablePrefix,  value: k         }
  - { key: readability-identifier-naming.GlobalConstantCase,       value: CamelCase }
  - { key: readability-identifier-naming.GlobalConstantPrefix,     value: k         }
  - { key: readability-identifier-naming.MemberConstantCase,       value: CamelCase }
  - { key: readability-identifier-naming.MemberConstantPrefix,     value: k         }
  - { key: readability-identifier-naming.StaticConstantCase,       value: CamelCase }
  - { key: readability-identifier-naming.StaticConstantPrefix,     value: k         }
  - { key: bugprone-argument-comment.StrictMode,                   value: true      }
  - { key: bugprone-argument-comment.IgnoreSingleArgument,         value: true      }
  - { key: bugprone-argument-comment.CommentBoolLiterals,          value: true      }
  - { key: bugprone-argument-comment.CommentNullPtrs,              value: true      }

HeaderFilterRegex: "*/Qbot/[core|engine|third_party|tests|]/*"
WarningsAsErrors: "*"

# References
# https://github.com/googleapis/google-cloud-cpp/blob/main/.clang-tidy
