# .clangd configuration file
---
Diagnostics:
  ClangTidy:
    # A specific list of checks to enable.
    Add:
      - bugprone-argument-comment
      - bugprone-assert-side-effect
      - bugprone-assignment-in-if-condition
      - bugprone-bad-signal-to-kill-thread
      - bugprone-bool-pointer-implicit-conversion
      - bugprone-branch-clone
      - bugprone-casting-through-void
      - bugprone-chained-comparison
      - bugprone-compare-pointer-to-member-virtual-function
      - bugprone-copy-constructor-init
      - bugprone-crtp-constructor-accessibility
      - bugprone-dangling-handle
      - bugprone-dynamic-static-initializers
      - bugprone-empty-catch
      - bugprone-exception-escape
      - bugprone-fold-init-type
      - bugprone-forward-declaration-namespace
      - bugprone-forwarding-reference-overload
      - bugprone-implicit-widening-of-multiplication-result
      - bugprone-inaccurate-erase
      - bugprone-inc-dec-in-conditions
      - bugprone-incorrect-enable-if
      - bugprone-incorrect-roundings
      - bugprone-infinite-loop
      - bugprone-integer-division
      - bugprone-lambda-function-name
      - bugprone-macro-parentheses
      - bugprone-macro-repeated-side-effects
      - bugprone-misplaced-operator-in-strlen-in-alloc
      - bugprone-misplaced-pointer-arithmetic-in-alloc
      - bugprone-misplaced-widening-cast
      - bugprone-move-forwarding-reference
      - bugprone-multi-level-implicit-pointer-conversion
      - bugprone-multiple-new-in-one-expression
      - bugprone-multiple-statement-macro
      - bugprone-no-escape
      - bugprone-non-zero-enum-to-bool-conversion
      - bugprone-not-null-terminated-result
      - bugprone-optional-value-conversion
      - bugprone-parent-virtual-call
      - bugprone-pointer-arithmetic-on-polymorphic-object
      - bugprone-posix-return
      - bugprone-redundant-branch-condition
      - bugprone-reserved-identifier
      - bugprone-return-const-ref-from-parameter
      - bugprone-shared-ptr-array-mismatch
      - bugprone-signal-handler
      - bugprone-signed-char-misuse
      - bugprone-sizeof-container
      - bugprone-sizeof-expression
      - bugprone-spuriously-wake-up-functions
      - bugprone-standalone-empty
      - bugprone-string-constructor
      - bugprone-string-integer-assignment
      - bugprone-string-literal-with-embedded-nul
      - bugprone-stringview-nullptr
      - bugprone-suspicious-enum-usage
      - bugprone-suspicious-include
      - bugprone-suspicious-memory-comparison
      - bugprone-suspicious-memset-usage
      - bugprone-suspicious-missing-comma
      - bugprone-suspicious-realloc-usage
      - bugprone-suspicious-semicolon
      - bugprone-suspicious-string-compare
      - bugprone-suspicious-stringview-data-usage
      - bugprone-swapped-arguments
      - bugprone-switch-missing-default-case
      - bugprone-terminating-continue
      - bugprone-throw-keyword-missing
      - bugprone-too-small-loop-variable
      - bugprone-unchecked-optional-access
      - bugprone-undefined-memory-manipulation
      - bugprone-undelegated-constructor
      - bugprone-unhandled-exception-at-new
      - bugprone-unhandled-self-assignment
      - bugprone-unique-ptr-array-mismatch
      - bugprone-unsafe-functions
      - bugprone-unused-local-non-trivial-variable
      - bugprone-unused-raii
      - bugprone-unused-return-value
      - bugprone-use-after-move
      - bugprone-virtual-near-miss
      - cert-con36-c
      - cert-con54-cpp
      - cert-ctr56-cpp
      - cert-dcl03-c
      - cert-dcl16-c
      - cert-dcl50-cpp
      - cert-dcl54-cpp
      - cert-dcl58-cpp
      - cert-dcl59-cpp
      - cert-env33-c
      - cert-err09-cpp
      - cert-err33-c
      - cert-err34-c
      - cert-err52-cpp
      - cert-err60-cpp
      - cert-err61-cpp
      - cert-exp42-c
      - cert-fio38-c
      - cert-flp30-c
      - cert-flp37-c
      - cert-int09-c
      - cert-mem57-cpp
      - cert-msc24-c
      - cert-msc30-c
      - cert-msc32-c
      - cert-msc33-c
      - cert-msc50-cpp
      - cert-msc51-cpp
      - cert-oop54-cpp
      - cert-oop57-cpp
      - cert-oop58-cpp
      - cert-pos44-c
      - cert-pos47-c
      - cert-str34-c
      - clang-analyzer-apiModeling.Errno
      - clang-analyzer-apiModeling.TrustNonnull
      - clang-analyzer-apiModeling.TrustReturnsNonnull
      - clang-analyzer-apiModeling.google.GTest
      - clang-analyzer-apiModeling.llvm.CastValue
      - clang-analyzer-apiModeling.llvm.ReturnValue
      - clang-analyzer-core.BitwiseShift
      - clang-analyzer-core.CallAndMessage
      - clang-analyzer-core.CallAndMessageModeling
      - clang-analyzer-core.DivideZero
      - clang-analyzer-core.DynamicTypePropagation
      - clang-analyzer-core.NonNullParamChecker
      - clang-analyzer-core.NonnilStringConstants
      - clang-analyzer-core.NullDereference
      - clang-analyzer-core.StackAddrEscapeBase
      - clang-analyzer-core.StackAddressEscape
      - clang-analyzer-core.UndefinedBinaryOperatorResult
      - clang-analyzer-core.VLASize
      - clang-analyzer-core.builtin.BuiltinFunctions
      - clang-analyzer-core.builtin.NoReturnFunctions
      - clang-analyzer-core.uninitialized.ArraySubscript
      - clang-analyzer-core.uninitialized.Assign
      - clang-analyzer-core.uninitialized.Branch
      - clang-analyzer-core.uninitialized.CapturedBlockVariable
      - clang-analyzer-core.uninitialized.NewArraySize
      - clang-analyzer-core.uninitialized.UndefReturn
      - clang-analyzer-cplusplus.ArrayDelete
      - clang-analyzer-cplusplus.InnerPointer
      - clang-analyzer-cplusplus.Move
      - clang-analyzer-cplusplus.NewDelete
      - clang-analyzer-cplusplus.NewDeleteLeaks
      - clang-analyzer-cplusplus.PlacementNew
      - clang-analyzer-cplusplus.PureVirtualCall
      - clang-analyzer-cplusplus.SelfAssignment
      - clang-analyzer-cplusplus.SmartPtrModeling
      - clang-analyzer-cplusplus.StringChecker
      - clang-analyzer-cplusplus.VirtualCallModeling
      - clang-analyzer-deadcode.DeadStores
      - clang-analyzer-fuchsia.HandleChecker
      - clang-analyzer-nullability.NullPassedToNonnull
      - clang-analyzer-nullability.NullReturnedFromNonnull
      - clang-analyzer-nullability.NullabilityBase
      - clang-analyzer-nullability.NullableDereferenced
      - clang-analyzer-nullability.NullablePassedToNonnull
      - clang-analyzer-nullability.NullableReturnedFromNonnull
      - clang-analyzer-optin.core.EnumCastOutOfRange
      - clang-analyzer-optin.cplusplus.UninitializedObject
      - clang-analyzer-optin.cplusplus.VirtualCall
      - clang-analyzer-optin.mpi.MPI-Checker
      - clang-analyzer-optin.osx.OSObjectCStyleCast
      - clang-analyzer-optin.osx.cocoa.localizability.EmptyLocalizationContextChecker
      - clang-analyzer-optin.osx.cocoa.localizability.NonLocalizedStringChecker
      - clang-analyzer-optin.performance.GCDAntipattern
      - clang-analyzer-optin.performance.Padding
      - clang-analyzer-optin.portability.UnixAPI
      - clang-analyzer-optin.taint.TaintedAlloc
      - clang-analyzer-osx.API
      - clang-analyzer-osx.MIG
      - clang-analyzer-osx.NSOrCFErrorDerefChecker
      - clang-analyzer-osx.NumberObjectConversion
      - clang-analyzer-osx.OSObjectRetainCount
      - clang-analyzer-osx.ObjCProperty
      - clang-analyzer-osx.SecKeychainAPI
      - clang-analyzer-osx.cocoa.AtSync
      - clang-analyzer-osx.cocoa.AutoreleaseWrite
      - clang-analyzer-osx.cocoa.ClassRelease
      - clang-analyzer-osx.cocoa.Dealloc
      - clang-analyzer-osx.cocoa.IncompatibleMethodTypes
      - clang-analyzer-osx.cocoa.Loops
      - clang-analyzer-osx.cocoa.MissingSuperCall
      - clang-analyzer-osx.cocoa.NSAutoreleasePool
      - clang-analyzer-osx.cocoa.NSError
      - clang-analyzer-osx.cocoa.NilArg
      - clang-analyzer-osx.cocoa.NonNilReturnValue
      - clang-analyzer-osx.cocoa.ObjCGenerics
      - clang-analyzer-osx.cocoa.RetainCount
      - clang-analyzer-osx.cocoa.RetainCountBase
      - clang-analyzer-osx.cocoa.RunLoopAutoreleaseLeak
      - clang-analyzer-osx.cocoa.SelfInit
      - clang-analyzer-osx.cocoa.SuperDealloc
      - clang-analyzer-osx.cocoa.UnusedIvars
      - clang-analyzer-osx.cocoa.VariadicMethodTypes
      - clang-analyzer-osx.coreFoundation.CFError
      - clang-analyzer-osx.coreFoundation.CFNumber
      - clang-analyzer-osx.coreFoundation.CFRetainRelease
      - clang-analyzer-osx.coreFoundation.containers.OutOfBounds
      - clang-analyzer-osx.coreFoundation.containers.PointerSizedValues
      - clang-analyzer-security.FloatLoopCounter
      - clang-analyzer-security.PutenvStackArray
      - clang-analyzer-security.SetgidSetuidOrder
      - clang-analyzer-security.cert.env.InvalidPtr
      - clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling
      - clang-analyzer-security.insecureAPI.SecuritySyntaxChecker
      - clang-analyzer-security.insecureAPI.UncheckedReturn
      - clang-analyzer-security.insecureAPI.bcmp
      - clang-analyzer-security.insecureAPI.bcopy
      - clang-analyzer-security.insecureAPI.bzero
      - clang-analyzer-security.insecureAPI.decodeValueOfObjCType
      - clang-analyzer-security.insecureAPI.getpw
      - clang-analyzer-security.insecureAPI.gets
      - clang-analyzer-security.insecureAPI.mkstemp
      - clang-analyzer-security.insecureAPI.mktemp
      - clang-analyzer-security.insecureAPI.rand
      - clang-analyzer-security.insecureAPI.strcpy
      - clang-analyzer-security.insecureAPI.vfork
      - clang-analyzer-unix.API
      - clang-analyzer-unix.BlockInCriticalSection
      - clang-analyzer-unix.DynamicMemoryModeling
      - clang-analyzer-unix.Errno
      - clang-analyzer-unix.Malloc
      - clang-analyzer-unix.MallocSizeof
      - clang-analyzer-unix.MismatchedDeallocator
      - clang-analyzer-unix.StdCLibraryFunctions
      - clang-analyzer-unix.Stream
      - clang-analyzer-unix.Vfork
      - clang-analyzer-unix.cstring.BadSizeArg
      - clang-analyzer-unix.cstring.CStringModeling
      - clang-analyzer-unix.cstring.NullArg
      - clang-analyzer-valist.CopyToSelf
      - clang-analyzer-valist.Uninitialized
      - clang-analyzer-valist.Unterminated
      - clang-analyzer-valist.ValistBase
      - clang-analyzer-webkit.NoUncountedMemberChecker
      - clang-analyzer-webkit.RefCntblBaseVirtualDtor
      - clang-analyzer-webkit.UncountedLambdaCapturesChecker
      - concurrency-mt-unsafe
      - concurrency-thread-canceltype-asynchronous
      - cppcoreguidelines-avoid-c-arrays
      - cppcoreguidelines-avoid-capturing-lambda-coroutines
      - cppcoreguidelines-avoid-const-or-ref-data-members
      - cppcoreguidelines-avoid-do-while
      - cppcoreguidelines-avoid-goto
      - cppcoreguidelines-avoid-non-const-global-variables
      - cppcoreguidelines-avoid-reference-coroutine-parameters
      - cppcoreguidelines-c-copy-assignment-signature
      - cppcoreguidelines-explicit-virtual-functions
      - cppcoreguidelines-init-variables
      - cppcoreguidelines-interfaces-global-init
      - cppcoreguidelines-macro-to-enum
      - cppcoreguidelines-macro-usage
      - cppcoreguidelines-misleading-capture-default-by-value
      - cppcoreguidelines-missing-std-forward
      - cppcoreguidelines-narrowing-conversions
      - cppcoreguidelines-no-malloc
      - cppcoreguidelines-no-suspend-with-lock
      - cppcoreguidelines-noexcept-destructor
      - cppcoreguidelines-noexcept-move-operations
      - cppcoreguidelines-noexcept-swap
      - cppcoreguidelines-owning-memory
      - cppcoreguidelines-prefer-member-initializer
      - cppcoreguidelines-pro-bounds-array-to-pointer-decay
      - cppcoreguidelines-pro-bounds-constant-array-index
      - cppcoreguidelines-pro-type-const-cast
      - cppcoreguidelines-pro-type-cstyle-cast
      - cppcoreguidelines-pro-type-member-init
      - cppcoreguidelines-pro-type-static-cast-downcast
      - cppcoreguidelines-rvalue-reference-param-not-moved
      - cppcoreguidelines-slicing
      - cppcoreguidelines-special-member-functions
      - cppcoreguidelines-use-default-member-init
      - cppcoreguidelines-virtual-class-destructor
      - darwin-avoid-spinlock
      - darwin-dispatch-once-nonstatic
      - google-build-explicit-make-pair
      - google-build-namespaces
      - google-build-using-namespace
      - google-default-arguments
      - google-explicit-constructor
      - google-global-names-in-headers
      - google-objc-avoid-nsobject-new
      - google-objc-avoid-throwing-exception
      - google-objc-function-naming
      - google-objc-global-variable-declaration
      - google-readability-avoid-underscore-in-googletest-name
      - google-readability-casting
      - google-readability-function-size
      - google-readability-namespace-comments
      - google-runtime-int
      - google-runtime-operator
      - google-upgrade-googletest-case
      - hicpp-avoid-goto
      - hicpp-exception-baseclass
      - hicpp-function-size
      - hicpp-ignored-remove-result
      - hicpp-move-const-arg
      - hicpp-multiway-paths-covered
      - hicpp-new-delete-operators
      - hicpp-no-assembler
      - hicpp-static-assert
      - hicpp-undelegated-constructor
      - hicpp-use-equals-delete
      - hicpp-use-noexcept
      - linuxkernel-must-check-errs
      - llvm-include-order
      - llvm-namespace-comment
      - llvm-prefer-isa-or-dyn-cast-in-conditionals
      - llvm-prefer-register-over-unsigned
      - llvm-twine-local
      - misc-confusable-identifiers
      - misc-coroutine-hostile-raii
      - misc-definitions-in-headers
      - misc-header-include-cycle
      - misc-include-cleaner
      - misc-misleading-bidirectional
      - misc-misleading-identifier
      - misc-misplaced-const
      - misc-new-delete-overloads
      - misc-no-recursion
      - misc-non-copyable-objects
      - misc-redundant-expression
      - misc-static-assert
      - misc-throw-by-value-catch-by-reference
      - misc-unconventional-assign-operator
      - misc-uniqueptr-reset-release
      - misc-unused-alias-decls
      - misc-unused-parameters
      - misc-unused-using-decls
      - misc-use-anonymous-namespace
      - misc-use-internal-linkage
      - modernize-deprecated-headers
      - modernize-deprecated-ios-base-aliases
      - modernize-loop-convert
      - modernize-macro-to-enum
      - modernize-make-shared
      - modernize-make-unique
      - modernize-min-max-use-initializer-list
      - modernize-pass-by-value
      - modernize-raw-string-literal
      - modernize-redundant-void-arg
      - modernize-replace-auto-ptr
      - modernize-replace-disallow-copy-and-assign-macro
      - modernize-replace-random-shuffle
      - modernize-shrink-to-fit
      - modernize-type-traits
      - modernize-unary-static-assert
      - modernize-use-bool-literals
      - modernize-use-constraints
      - modernize-use-default-member-init
      - modernize-use-designated-initializers
      - modernize-use-emplace
      - modernize-use-equals-default
      - modernize-use-equals-delete
      - modernize-use-noexcept
      - modernize-use-nullptr
      - modernize-use-ranges
      - modernize-use-starts-ends-with
      - modernize-use-std-format
      - modernize-use-std-numbers
      - modernize-use-std-print
      - modernize-use-transparent-functors
      - modernize-use-uncaught-exceptions
      - modernize-use-using
      - mpi-buffer-deref
      - mpi-type-mismatch
      - objc-assert-equals
      - objc-avoid-nserror-init
      - objc-dealloc-in-category
      - objc-forbidden-subclassing
      - objc-missing-hash
      - objc-nsdate-formatter
      - objc-nsinvocation-argument-lifetime
      - objc-property-declaration
      - objc-super-self
      - openmp-exception-escape
      - openmp-use-default-none
      - performance-enum-size
      - performance-faster-string-find
      - performance-for-range-copy
      - performance-implicit-conversion-in-loop
      - performance-inefficient-algorithm
      - performance-inefficient-string-concatenation
      - performance-inefficient-vector-operation
      - performance-move-const-arg
      - performance-move-constructor-init
      - performance-no-automatic-move
      - performance-no-int-to-ptr
      - performance-noexcept-destructor
      - performance-trivially-destructible
      - performance-type-promotion-in-math-fn
      - performance-unnecessary-copy-initialization
      - performance-unnecessary-value-param
      - portability-restrict-system-includes
      - portability-simd-intrinsics
      - portability-std-allocator-const
      - readability-avoid-const-params-in-decls
      - readability-avoid-nested-conditional-operator
      - readability-avoid-return-with-void-value
      - readability-avoid-unconditional-preprocessor-if
      - readability-braces-around-statements
      - readability-const-return-type
      - readability-container-contains
      - readability-container-data-pointer
      - readability-container-size-empty
      - readability-convert-member-functions-to-static
      - readability-delete-null-pointer
      - readability-duplicate-include
      - readability-enum-initial-value
      - readability-function-cognitive-complexity
      - readability-function-size
      - readability-identifier-length
      - readability-identifier-naming
      - readability-implicit-bool-conversion
      - readability-inconsistent-declaration-parameter-name
      - readability-isolate-declaration
      - readability-make-member-function-const
      - readability-math-missing-parentheses
      - readability-misleading-indentation
      - readability-misplaced-array-index
      - readability-named-parameter
      - readability-non-const-parameter
      - readability-operators-representation
      - readability-redundant-access-specifiers
      - readability-redundant-casting
      - readability-redundant-control-flow
      - readability-redundant-declaration
      - readability-redundant-function-ptr-dereference
      - readability-redundant-inline-specifier
      - readability-redundant-preprocessor
      - readability-redundant-smartptr-get
      - readability-redundant-string-cstr
      - readability-redundant-string-init
      - readability-reference-to-constructed-temporary
      - readability-simplify-boolean-expr
      - readability-simplify-subscript-expr
      - readability-static-accessed-through-instance
      - readability-static-definition-in-anonymous-namespace
      - readability-string-compare
      - readability-suspicious-call-argument
      - readability-uniqueptr-delete-release
      - readability-use-anyofallof
      - readability-use-std-min-max
      - zircon-temporary-objects

    # Key-value pairs to configure specific checks.
    CheckOptions:
      readability-identifier-naming.ClassCase: CamelCase
      readability-identifier-naming.FunctionCase: lower_case
      readability-identifier-naming.VariableCase: lower_case
      readability-identifier-length.IgnoredVariableNames: 'i|j|k|w|h|x|y|z|it|ip|fd'
      readability-identifier-length.IgnoredLoopCounterNames: 'i|j|k|w|h|x|y|z|it|ip|fd|u|v'
      readability-identifier-length.IgnoredParameterNames: 'a|b|w|h|x|y|z|ip|fd'
      performance-unnecessary-value-param.AllowedTypes: 'Eigen::Ref|sync_ptr'
      readability-identifier-naming.MemberCase: lower_case
      readability-identifier-naming.ProtectedMemberSuffix: _
      readability-identifier-naming.PrivateMemberSuffix: _
      readability-identifier-naming.ClassMethodCase: lower_case
      readability-identifier-naming.EnumCase: CamelCase
      readability-identifier-naming.EnumConstantCase: UPPER_CASE
      readability-identifier-naming.ParameterCase: lower_case
      readability-identifier-naming.StructCase: CamelCase
      readability-identifier-naming.TemplateParameterCase: CamelCase
      readability-identifier-naming.NamespaceCase: lower_case
      readability-identifier-naming.MacroDefinitionCase: UPPER_CASE
      readability-identifier-naming.GlobalConstantCase: UPPER_CASE
      readability-function-cognitive-complexity.Threshold: 28
      misc-include-cleaner.IgnoreHeaders: 'Eigen/.*;.*socket.h;jsoncons/.*;spdlog/.*;netdb.h;netinet/.*;arpa/.*;sys/.*;bits/.*;tins/.*;pcap/.*;GL/.*;glad.h;glfw.h;GLFW/.*;pybind11/.*;flatbuffers/.*'