---
Checks: |
  clang-diagnostic-*,
  clang-analyzer-*,
  modernize-*,
  -modernize-use-trailing-return-type,
  bugprone-*,
  readability-*,
  -readability-redundant-access-specifiers,
  hicpp-*,
  cppcoreguidelines-*
WarningsAsErrors: |
  *,
  -hicpp-special-member-functions,
  -readability-magic-numbers,
  -cppcoreguidelines-avoid-magic-numbers,
  -cppcoreguidelines-owning-memory,
  -cppcoreguidelines-pro-type-reinterpret-cast,
  -modernize-pass-by-value,
  -bugprone-branch-clone,
  -cppcoreguidelines-macro-usage,
  -readability-convert-member-functions-to-static,
HeaderFilterRegex: '**/*.h'
AnalyzeTemporaryDtors: false
FormatStyle:     none
User:            casper
CheckOptions:
  - key:             bugprone-argument-comment.CommentBoolLiterals
    value:           '0'
  - key:             bugprone-argument-comment.CommentCharacterLiterals
    value:           '0'
  - key:             bugprone-argument-comment.CommentFloatLiterals
    value:           '0'
  - key:             bugprone-argument-comment.CommentIntegerLiterals
    value:           '0'
  - key:             bugprone-argument-comment.CommentNullPtrs
    value:           '0'
  - key:             bugprone-argument-comment.CommentStringLiterals
    value:           '0'
  - key:             bugprone-argument-comment.CommentUserDefinedLiterals
    value:           '0'
  - key:             bugprone-argument-comment.StrictMode
    value:           '0'
  - key:             bugprone-assert-side-effect.AssertMacros
    value:           assert
  - key:             bugprone-assert-side-effect.CheckFunctionCalls
    value:           '0'
  - key:             bugprone-dangling-handle.HandleClasses
    value:           'std::basic_string_view;std::experimental::basic_string_view'
  - key:             bugprone-exception-escape.FunctionsThatShouldNotThrow
    value:           ''
  - key:             bugprone-exception-escape.IgnoredExceptions
    value:           ''
  - key:             bugprone-misplaced-widening-cast.CheckImplicitCasts
    value:           '0'
  - key:             bugprone-sizeof-expression.WarnOnSizeOfCompareToConstant
    value:           '1'
  - key:             bugprone-sizeof-expression.WarnOnSizeOfConstant
    value:           '1'
  - key:             bugprone-sizeof-expression.WarnOnSizeOfIntegerExpression
    value:           '0'
  - key:             bugprone-sizeof-expression.WarnOnSizeOfThis
    value:           '1'
  - key:             bugprone-string-constructor.LargeLengthThreshold
    value:           '8388608'
  - key:             bugprone-string-constructor.WarnOnLargeLength
    value:           '1'
  - key:             bugprone-suspicious-enum-usage.StrictMode
    value:           '0'
  - key:             bugprone-suspicious-missing-comma.MaxConcatenatedTokens
    value:           '5'
  - key:             bugprone-suspicious-missing-comma.RatioThreshold
    value:           '0.200000'
  - key:             bugprone-suspicious-missing-comma.SizeThreshold
    value:           '5'
  - key:             bugprone-suspicious-string-compare.StringCompareLikeFunctions
    value:           ''
  - key:             bugprone-suspicious-string-compare.WarnOnImplicitComparison
    value:           '1'
  - key:             bugprone-suspicious-string-compare.WarnOnLogicalNotComparison
    value:           '0'
  - key:             bugprone-too-small-loop-variable.MagnitudeBitsUpperLimit
    value:           '16'
  - key:             bugprone-unhandled-self-assignment.WarnOnlyIfThisHasSuspiciousField
    value:           '1'
  - key:             bugprone-unused-return-value.CheckedFunctions
    value:           '::std::async;::std::launder;::std::remove;::std::remove_if;::std::unique;::std::unique_ptr::release;::std::basic_string::empty;::std::vector::empty'
  - key:             cert-dcl16-c.NewSuffixes
    value:           'L;LL;LU;LLU'
  - key:             cert-oop54-cpp.WarnOnlyIfThisHasSuspiciousField
    value:           '0'
  - key:             cppcoreguidelines-avoid-magic-numbers.IgnoredFloatingPointValues
    value:           '1.0;100.0;'
  - key:             cppcoreguidelines-avoid-magic-numbers.IgnoredIntegerValues
    value:           '1;2;3;4;'
  - key:             cppcoreguidelines-explicit-virtual-functions.FinalSpelling
    value:           final
  - key:             cppcoreguidelines-explicit-virtual-functions.IgnoreDestructors
    value:           '1'
  - key:             cppcoreguidelines-explicit-virtual-functions.OverrideSpelling
    value:           override
  - key:             cppcoreguidelines-macro-usage.AllowedRegexp
    value:           '^DEBUG_*'
  - key:             cppcoreguidelines-macro-usage.CheckCapsOnly
    value:           '0'
  - key:             cppcoreguidelines-macro-usage.IgnoreCommandLineMacros
    value:           '1'
  - key:             cppcoreguidelines-no-malloc.Allocations
    value:           '::malloc;::calloc'
  - key:             cppcoreguidelines-no-malloc.Deallocations
    value:           '::free'
  - key:             cppcoreguidelines-no-malloc.Reallocations
    value:           '::realloc'
  - key:             cppcoreguidelines-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
    value:           '1'
  - key:             cppcoreguidelines-owning-memory.LegacyResourceConsumers
    value:           '::free;::realloc;::freopen;::fclose'
  - key:             cppcoreguidelines-owning-memory.LegacyResourceProducers
    value:           '::malloc;::aligned_alloc;::realloc;::calloc;::fopen;::freopen;::tmpfile'
  - key:             cppcoreguidelines-pro-bounds-constant-array-index.GslHeader
    value:           ''
  - key:             cppcoreguidelines-pro-bounds-constant-array-index.IncludeStyle
    value:           '0'
  - key:             cppcoreguidelines-pro-type-member-init.IgnoreArrays
    value:           '0'
  - key:             cppcoreguidelines-pro-type-member-init.UseAssignment
    value:           '0'
  - key:             cppcoreguidelines-special-member-functions.AllowMissingMoveFunctions
    value:           '0'
  - key:             cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor
    value:           '0'
  - key:             google-readability-braces-around-statements.ShortStatementLines
    value:           '1'
  - key:             google-readability-function-size.StatementThreshold
    value:           '800'
  - key:             google-readability-namespace-comments.ShortNamespaceLines
    value:           '10'
  - key:             google-readability-namespace-comments.SpacesBeforeComments
    value:           '2'
  - key:             hicpp-braces-around-statements.ShortStatementLines
    value:           '0'
  - key:             hicpp-function-size.BranchThreshold
    value:           '4294967295'
  - key:             hicpp-function-size.LineThreshold
    value:           '4294967295'
  - key:             hicpp-function-size.NestingThreshold
    value:           '4294967295'
  - key:             hicpp-function-size.ParameterThreshold
    value:           '4294967295'
  - key:             hicpp-function-size.StatementThreshold
    value:           '800'
  - key:             hicpp-function-size.VariableThreshold
    value:           '4294967295'
  - key:             hicpp-member-init.IgnoreArrays
    value:           '0'
  - key:             hicpp-member-init.UseAssignment
    value:           '0'
  - key:             hicpp-move-const-arg.CheckTriviallyCopyableMove
    value:           '1'
  - key:             hicpp-multiway-paths-covered.WarnOnMissingElse
    value:           '0'
  - key:             hicpp-named-parameter.IgnoreFailedSplit
    value:           '0'
  - key:             hicpp-no-malloc.Allocations
    value:           '::malloc;::calloc'
  - key:             hicpp-no-malloc.Deallocations
    value:           '::free'
  - key:             hicpp-no-malloc.Reallocations
    value:           '::realloc'
  - key:             hicpp-special-member-functions.AllowMissingMoveFunctions
    value:           '0'
  - key:             hicpp-special-member-functions.AllowSoleDefaultDtor
    value:           '0'
  - key:             hicpp-uppercase-literal-suffix.IgnoreMacros
    value:           '1'
  - key:             hicpp-uppercase-literal-suffix.NewSuffixes
    value:           ''
  - key:             hicpp-use-auto.MinTypeNameLength
    value:           '5'
  - key:             hicpp-use-auto.RemoveStars
    value:           '0'
  - key:             hicpp-use-emplace.ContainersWithPushBack
    value:           '::std::vector;::std::list;::std::deque'
  - key:             hicpp-use-emplace.SmartPointers
    value:           '::std::shared_ptr;::std::unique_ptr;::std::auto_ptr;::std::weak_ptr'
  - key:             hicpp-use-emplace.TupleMakeFunctions
    value:           '::std::make_pair;::std::make_tuple'
  - key:             hicpp-use-emplace.TupleTypes
    value:           '::std::pair;::std::tuple'
  - key:             hicpp-use-equals-default.IgnoreMacros
    value:           '1'
  - key:             hicpp-use-equals-delete.IgnoreMacros
    value:           '1'
  - key:             hicpp-use-noexcept.ReplacementString
    value:           ''
  - key:             hicpp-use-noexcept.UseNoexceptFalse
    value:           '1'
  - key:             hicpp-use-nullptr.NullMacros
    value:           ''
  - key:             hicpp-use-override.FinalSpelling
    value:           final
  - key:             hicpp-use-override.IgnoreDestructors
    value:           '0'
  - key:             hicpp-use-override.OverrideSpelling
    value:           override
  - key:             modernize-loop-convert.MaxCopySize
    value:           '16'
  - key:             modernize-loop-convert.MinConfidence
    value:           reasonable
  - key:             modernize-loop-convert.NamingStyle
    value:           CamelCase
  - key:             modernize-make-shared.IgnoreMacros
    value:           '1'
  - key:             modernize-make-shared.IncludeStyle
    value:           '0'
  - key:             modernize-make-shared.MakeSmartPtrFunction
    value:           'std::make_shared'
  - key:             modernize-make-shared.MakeSmartPtrFunctionHeader
    value:           memory
  - key:             modernize-make-unique.IgnoreMacros
    value:           '1'
  - key:             modernize-make-unique.IncludeStyle
    value:           '0'
  - key:             modernize-make-unique.MakeSmartPtrFunction
    value:           'std::make_unique'
  - key:             modernize-make-unique.MakeSmartPtrFunctionHeader
    value:           memory
  - key:             modernize-pass-by-value.IncludeStyle
    value:           llvm
  - key:             modernize-pass-by-value.ValuesOnly
    value:           '0'
  - key:             modernize-raw-string-literal.ReplaceShorterLiterals
    value:           '0'
  - key:             modernize-replace-auto-ptr.IncludeStyle
    value:           llvm
  - key:             modernize-replace-random-shuffle.IncludeStyle
    value:           llvm
  - key:             modernize-use-auto.MinTypeNameLength
    value:           '5'
  - key:             modernize-use-auto.RemoveStars
    value:           '0'
  - key:             modernize-use-default-member-init.IgnoreMacros
    value:           '1'
  - key:             modernize-use-default-member-init.UseAssignment
    value:           '0'
  - key:             modernize-use-emplace.ContainersWithPushBack
    value:           '::std::vector;::std::list;::std::deque'
  - key:             modernize-use-emplace.SmartPointers
    value:           '::std::shared_ptr;::std::unique_ptr;::std::auto_ptr;::std::weak_ptr'
  - key:             modernize-use-emplace.TupleMakeFunctions
    value:           '::std::make_pair;::std::make_tuple'
  - key:             modernize-use-emplace.TupleTypes
    value:           '::std::pair;::std::tuple'
  - key:             modernize-use-equals-default.IgnoreMacros
    value:           '1'
  - key:             modernize-use-equals-delete.IgnoreMacros
    value:           '1'
  - key:             modernize-use-nodiscard.ReplacementString
    value:           '[[nodiscard]]'
  - key:             modernize-use-noexcept.ReplacementString
    value:           ''
  - key:             modernize-use-noexcept.UseNoexceptFalse
    value:           '1'
  - key:             modernize-use-nullptr.NullMacros
    value:           'NULL'
  - key:             modernize-use-override.FinalSpelling
    value:           final
  - key:             modernize-use-override.IgnoreDestructors
    value:           '0'
  - key:             modernize-use-override.OverrideSpelling
    value:           override
  - key:             modernize-use-transparent-functors.SafeMode
    value:           '0'
  - key:             modernize-use-using.IgnoreMacros
    value:           '1'
  - key:             readability-braces-around-statements.ShortStatementLines
    value:           '0'
  - key:             readability-function-size.BranchThreshold
    value:           '4294967295'
  - key:             readability-function-size.LineThreshold
    value:           '4294967295'
  - key:             readability-function-size.NestingThreshold
    value:           '4294967295'
  - key:             readability-function-size.ParameterThreshold
    value:           '4294967295'
  - key:             readability-function-size.StatementThreshold
    value:           '800'
  - key:             readability-function-size.VariableThreshold
    value:           '4294967295'
  - key:             readability-identifier-naming.IgnoreFailedSplit
    value:           '0'
  - key:             readability-implicit-bool-conversion.AllowIntegerConditions
    value:           '0'
  - key:             readability-implicit-bool-conversion.AllowPointerConditions
    value:           '0'
  - key:             readability-inconsistent-declaration-parameter-name.IgnoreMacros
    value:           '1'
  - key:             readability-inconsistent-declaration-parameter-name.Strict
    value:           '0'
  - key:             readability-magic-numbers.IgnoredFloatingPointValues
    value:           '1.0;100.0;'
  - key:             readability-magic-numbers.IgnoredIntegerValues
    value:           '1;2;3;4;'
  - key:             readability-redundant-smartptr-get.IgnoreMacros
    value:           '1'
  - key:             readability-simplify-boolean-expr.ChainedConditionalAssignment
    value:           '0'
  - key:             readability-simplify-boolean-expr.ChainedConditionalReturn
    value:           '0'
  - key:             readability-simplify-subscript-expr.Types
    value:           '::std::basic_string;::std::basic_string_view;::std::vector;::std::array'
  - key:             readability-static-accessed-through-instance.NameSpecifierNestingThreshold
    value:           '3'
  - key:             readability-uppercase-literal-suffix.IgnoreMacros
    value:           '1'
  - key:             readability-uppercase-literal-suffix.NewSuffixes
    value:           ''
...

