---
Language:        Cpp
BasedOnStyle:  LLVM
AccessModifierOffset: -2
# AlignAfterOpenBracket: Align
# AlignArrayOfStructures: None
# AlignConsecutiveAssignments:
#   Enabled:         false
#   AcrossEmptyLines: false
#   AcrossComments:  false
#   AlignCompound:   false
#   PadOperators:    true
# AlignConsecutiveBitFields:
#   Enabled:         false
#   AcrossEmptyLines: false
#   AcrossComments:  false
#   AlignCompound:   false
#   PadOperators:    false
# AlignConsecutiveDeclarations:
#   Enabled:         false
#   AcrossEmptyLines: false
#   AcrossComments:  false
#   AlignCompound:   false
#   PadOperators:    false
# AlignConsecutiveMacros:
#   Enabled:         false
#   AcrossEmptyLines: false
#   AcrossComments:  false
#   AlignCompound:   false
#   PadOperators:    false
# AlignConsecutiveShortCaseStatements:
#   Enabled:         false
#   AcrossEmptyLines: false
#   AcrossComments:  false
#   AlignCaseColons: false
AlignEscapedNewlines: DontAlign
# AlignOperands:   Align
AlignTrailingComments:
  Kind:            Leave
  # OverEmptyLines:  0
AllowAllArgumentsOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: Empty
# AllowShortCaseLabelsOnASingleLine: false
# AllowShortEnumsOnASingleLine: true
# AllowShortFunctionsOnASingleLine: All
# AllowShortIfStatementsOnASingleLine: Never
# AllowShortLambdasOnASingleLine: All
# AllowShortLoopsOnASingleLine: false
# AlwaysBreakAfterDefinitionReturnType: None
# AlwaysBreakAfterReturnType: None
# AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: Yes
# AttributeMacros:
#   - __capability
# BinPackArguments: true
# BinPackParameters: true
# BitFieldColonSpacing: Both
# BraceWrapping:
  # AfterCaseLabel:  false
  # AfterClass:      false
  # AfterControlStatement: Never
  # AfterEnum:       false
  # AfterExternBlock: false
  # AfterFunction:   false
  # AfterNamespace:  false
  # AfterObjCDeclaration: false
  # AfterStruct:     false
  # AfterUnion:      false
  # BeforeCatch:     false
  # BeforeElse:      false
  # BeforeLambdaBody: false
  # BeforeWhile:     false
  # IndentBraces:    false
  # SplitEmptyFunction: true
  # SplitEmptyRecord: true
  # SplitEmptyNamespace: true
# BreakAfterAttributes: Never
# BreakAfterJavaFieldAnnotations: false
# BreakArrays:     true
BreakBeforeBinaryOperators: NonAssignment
# BreakBeforeConceptDeclarations: Always
# BreakBeforeBraces: Attach
# BreakBeforeInlineASMColon: OnlyMultiline
BreakBeforeTernaryOperators: false
# BreakConstructorInitializers: BeforeColon
# BreakInheritanceList: BeforeColon
BreakStringLiterals: false
ColumnLimit: 120
# CommentPragmas:  '^ IWYU pragma:'
# CompactNamespaces: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
# Cpp11BracedListStyle: true
# DerivePointerAlignment: false
# DisableFormat:   false
# EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: Always
# ExperimentalAutoDetectBinPacking: false
# FixNamespaceComments: true
# ForEachMacros:
#   - foreach
#   - Q_FOREACH
#   - BOOST_FOREACH
# IfMacros:
#   - KJ_IF_MAYBE
IncludeBlocks:   Regroup
IncludeCategories:
  - Regex:           '^"(llvm|llvm-c|clang|clang-c)/'
    Priority:        2
    SortPriority:    0
    CaseSensitive:   false
  - Regex:           '^(<|"(gtest|gmock|isl|json)/)'
    Priority:        3
    SortPriority:    0
    CaseSensitive:   false
  - Regex:           '.*'
    Priority:        1
    SortPriority:    0
    CaseSensitive:   false
# IncludeIsMainRegex: '(Test)?$'
# IncludeIsMainSourceRegex: ''
# IndentAccessModifiers: false
# IndentCaseBlocks: false
# IndentCaseLabels: false
# IndentExternBlock: AfterExternBlock
# IndentGotoLabels: true
# IndentPPDirectives: None
# IndentRequiresClause: true
IndentWidth:     2
# IndentWrappedFunctionNames: false
# InsertBraces:    false
# InsertNewlineAtEOF: false
# InsertTrailingCommas: None
# IntegerLiteralSeparator:
#   Binary:          0
#   BinaryMinDigits: 0
#   Decimal:         0
#   DecimalMinDigits: 0
#   Hex:             0
#   HexMinDigits:    0
# JavaScriptQuotes: Leave
# JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
# KeepEmptyLinesAtEOF: false
# LambdaBodyIndentation: Signature
# LineEnding:      DeriveLF
# MacroBlockBegin: ''
# MacroBlockEnd:   ''
# MaxEmptyLinesToKeep: 1
# NamespaceIndentation: None
# ObjCBinPackProtocolList: Auto
# ObjCBlockIndentWidth: 2
# ObjCBreakBeforeNestedBlockParam: true
# ObjCSpaceAfterProperty: false
# ObjCSpaceBeforeProtocolList: true
# PackConstructorInitializers: BinPack
# PenaltyBreakAssignment: 2
# PenaltyBreakBeforeFirstCallParameter: 19
# PenaltyBreakComment: 300
# PenaltyBreakFirstLessLess: 120
# PenaltyBreakOpenParenthesis: 0
# PenaltyBreakString: 1000
# PenaltyBreakTemplateDeclaration: 10
# PenaltyExcessCharacter: 1000000
# PenaltyIndentedWhitespace: 0
# PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Left
# PPIndentWidth:   -1
# QualifierAlignment: Leave
# ReferenceAlignment: Pointer
# ReflowComments:  true
RemoveBracesLLVM: false # set to true?
# RemoveParentheses: Leave
# RemoveSemicolon: false
# RequiresClausePosition: OwnLine
# RequiresExpressionIndentation: OuterScope
SeparateDefinitionBlocks: Leave # set to Always?
# ShortNamespaceLines: 1
# SortIncludes:    CaseSensitive
# SortJavaStaticImport: Before
# SortUsingDeclarations: LexicographicNumeric
# SpaceAfterCStyleCast: false
# SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: false
# SpaceAroundPointerQualifiers: Default
# SpaceBeforeAssignmentOperators: true
# SpaceBeforeCaseColon: false
# SpaceBeforeCpp11BracedList: false
# SpaceBeforeCtorInitializerColon: true
# SpaceBeforeInheritanceColon: true
# SpaceBeforeJsonColon: false
# SpaceBeforeParens: ControlStatements
# SpaceBeforeParensOptions:
#   AfterControlStatements: true
#   AfterForeachMacros: true
#   AfterFunctionDefinitionName: false
#   AfterFunctionDeclarationName: false
#   AfterIfMacros:   true
#   AfterOverloadedOperator: false
#   AfterRequiresInClause: false
#   AfterRequiresInExpression: false
#   BeforeNonEmptyParentheses: false
# SpaceBeforeRangeBasedForLoopColon: true
# SpaceBeforeSquareBrackets: false
# SpaceInEmptyBlock: false
SpacesBeforeTrailingComments: 2
# SpacesInAngles:  Never
# SpacesInContainerLiterals: true
# SpacesInLineCommentPrefix:
#   Minimum:         1
#   Maximum:         -1
# SpacesInParens:  Never
# SpacesInParensOptions:
#   InCStyleCasts:   false
#   InConditionalStatements: false
#   InEmptyParentheses: false
#   Other:           false
# SpacesInSquareBrackets: false
Standard:        Latest # set to c++17?
# StatementAttributeLikeMacros:
#   - Q_EMIT
# StatementMacros:
#   - Q_UNUSED
#   - QT_REQUIRE_VERSION
# TabWidth:        8
# UseTab:          Never
# VerilogBreakBetweenInstancePorts: true
# WhitespaceSensitiveMacros:
#   - BOOST_PP_STRINGIZE
#   - CF_SWIFT_NAME
#   - NS_SWIFT_NAME
#   - PP_STRINGIZE
#   - STRINGIZE
...
