---
Checks: '*,-abseil-*,-altera-*,-android-cloexec-*,-bugprone-branch-clone,-bugprone-easily-swappable-parameters,-cppcoreguidelines-avoid-c-arrays,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-macro-usage,-cppcoreguidelines-owning-memory,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-type-static-cast-downcast,-cppcoreguidelines-pro-type-vararg,-fuchsia-*,-hicpp-avoid-c-arrays,-hicpp-no-array-decay,-hicpp-vararg,-llvmlibc-*,-misc-no-recursion,-modernize-avoid-c-arrays,-modernize-use-trailing-return-type,-readability-convert-member-functions-to-static,-readability-implicit-bool-conversion,-readability-magic-numbers'
#
#  For a list of check options, see:
#  https://clang.llvm.org/extra/clang-tidy/checks/list.html
#
#  Disabled checks:
#
#  abseil-*
#    We are not using abseil.
#
#  altera-*
#    Doesn't apply.
#
#  android-cloexec-*
#    O_CLOEXEC isn't available on Windows making this non-portable.
#
#  bugprone-branch-clone
#    There are several cases in this code where the code seems much more
#    readable with branch clones than without.
#
#  bugprone-easily-swappable-parameters
#    Not much we can do about those except inventing new types for everything
#    and anything.
#
#  cppcoreguidelines-avoid-c-arrays
#  hicpp-avoid-c-arrays
#  modernize-avoid-c-arrays
#    Makes sense for some array, but especially for char arrays using
#    std::array isn't a good solution.
#
#  cppcoreguidelines-avoid-magic-numbers
#  readability-magic-numbers
#    Generally good advice, but there are too many places where this is
#    useful, for instance in tests.
#
#  cppcoreguidelines-macro-usage
#    There are cases where we actually need macros.
#
#  cppcoreguidelines-owning-memory
#    Don't want to add dependency on gsl library.
#
#  cppcoreguidelines-pro-bounds-array-to-pointer-decay
#  hicpp-no-array-decay
#    Limited use and many false positives including for all asserts.
#
#  cppcoreguidelines-pro-bounds-pointer-arithmetic
#    Difficult to get by without it...
#
#  cppcoreguidelines-pro-type-static-cast-downcast
#    This is needed and totally okay if we are sure about the types.
#
#  cppcoreguidelines-pro-type-vararg
#    We need some of these functions at least and for some functions it isn't
#    even clear that those are vararg functions.
#
#  fuchsia-*
#    Much too strict.
#
#  hicpp-vararg
#    Too strict, sometimes calling vararg functions is necessary.
#
#  llvmlibc-*
#    Not applicable.
#
#  misc-no-recursion
#    Nothing wrong about recursion.
#
#  modernize-use-trailing-return-type
#    I am not quite that modern.
#
#  readability-convert-member-functions-to-static
#    Not a bad idea, but it is overzealous when there are member functions
#    overwritten in child classes and some of them can't be static.
#
#  readability-implicit-bool-conversion
#    I don't think this makes the code more readable.
#
#WarningsAsErrors: '*'
CheckOptions:
    - key: cppcoreguidelines-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
      value: true
    - key: misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
      value: true
...
