# .clang-format for clang-format-13 cpp only
# https://clang.llvm.org/docs/ClangFormatStyleOptions.html
BasedOnStyle: Google
AccessModifierOffset: -1
AlignAfterOpenBracket: AlwaysBreak
AlignConsecutiveAssignments: AcrossComments
AlignConsecutiveBitFields: AcrossComments
AlignConsecutiveDeclarations: AcrossComments
AlignConsecutiveMacros: AcrossComments
AlignEscapedNewlines: Right
AlignOperands: AlignAfterOperator
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: true
AllowAllConstructorInitializersOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: Always
AllowShortCaseLabelsOnASingleLine: true
AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: All
AllowShortIfStatementsOnASingleLine: OnlyFirstIf
AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: Yes
# AttributeMacros: ['__capability', '__output', '__ununsed']
BinPackArguments: false
BinPackParameters: false
BitFieldColonSpacing: Both
BraceWrapping:
  AfterCaseLabel: false
  AfterClass: false
  AfterControlStatement: Never
  AfterEnum: false
  AfterFunction: false
  AfterNamespace: true
  # AfterObjCDeclaration: 
  AfterStruct: false
  AfterUnion: false
  AfterExternBlock: false
  BeforeCatch: false
  BeforeElse: false
  BeforeLambdaBody: false
  BeforeWhile: false
  IndentBraces: false
  SplitEmptyFunction: true
  SplitEmptyRecord: true
  SplitEmptyNamespace: true
BreakAfterJavaFieldAnnotations: false
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeBraces: Custom
BreakBeforeConceptDeclarations: true
BreakBeforeTernaryOperators: false
BreakConstructorInitializers: AfterColon
BreakInheritanceList: AfterColon
BreakStringLiterals: true
ColumnLimit: 80
# CommentPragmas: 
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 2
ContinuationIndentWidth: 2
Cpp11BracedListStyle: false
# DeriveLineEnding: 
DerivePointerAlignment: false
# DisableFormat: 
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: Never
# ExperimentalAutoDetectBinPacking: 
FixNamespaceComments: true
# ForEachMacros: ['RANGES_FOR', 'FOREACH']
IncludeBlocks: Regroup
# IncludeCategories: 
# IncludeIsMainRegex: 
# IncludeIsMainSourceRegex: 
IndentAccessModifiers: true
IndentCaseBlocks: false
IndentCaseLabels: true
IndentExternBlock: Indent
IndentGotoLabels: true
IndentPPDirectives: AfterHash
IndentRequires: true
IndentWidth: 2
IndentWrappedFunctionNames: false
InsertTrailingCommas: Wrapped
# JavaScriptQuotes: Double
# JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
Language: Cpp
# MacroBlockBegin: 
# MacroBlockEnd: 
MaxEmptyLinesToKeep: 1
NamespaceIndentation: All
# NamespaceMacros: 
# ObjCBinPackProtocolList: 
# ObjCBlockIndentWidth: 
# ObjCBreakBeforeNestedBlockParam: 
# ObjCSpaceAfterProperty: 
# ObjCSpaceBeforeProtocolList: 
PPIndentWidth: 2
PenaltyBreakAssignment: 200
PointerAlignment: Right
# RawStringFormats: 
ReflowComments: true
ShortNamespaceLines: 1
SortIncludes: CaseInsensitive
# SortJavaStaticImport: 
SortUsingDeclarations: true
# SpaceAfterCStyleCast: 
SpaceAfterLogicalNot: true
SpaceAfterTemplateKeyword: true
SpaceAroundPointerQualifiers: Before
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: true
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatementsExceptForEachMacros
SpaceBeforeRangeBasedForLoopColon: false
SpaceBeforeSquareBrackets: true
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInConditionalStatement: false
SpacesInContainerLiterals: true
SpacesInLineCommentPrefix: 
  Minimum: 1
  Maximum: 1
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Auto
# StatementAttributeLikeMacros: 
# StatementMacros: 
TabWidth: 2
# TypenameMacros: 
# UseCRLF: 
UseTab: Never
# WhitespaceSensitiveMacros: 
