---
Language: Cpp
BasedOnStyle: Microsoft
# Includes
SortIncludes: CaseInsensitive
IncludeCategories:
  # Our OpenGL loader must come before GLFW
  - Regex: 'glad\/gl\.h'
    Priority: 1
    CaseSensitive: false
  - Regex: 'GLFW\/glfw3\.h'
    Priority: 2
    CaseSensitive: false
  # Windows.h comes first to avoid some wonky redefinitions
  - Regex: "Windows.h"
    Priority: 10000
    CaseSensitive: false
# Alignment
AlignAfterOpenBracket: Align
AlignArrayOfStructures: Right
AlignConsecutiveAssignments:
  Enabled: true
  AcrossEmptyLines: false
  AcrossComments: true
  AlignCompound: true
  AlignFunctionPointers: true
  PadOperators: true
AlignConsecutiveDeclarations: true
AlignConsecutiveMacros: true
AlignEscapedNewlines: Left
AlignOperands: AlignAfterOperator
AlignTrailingComments: Always
# Single-line blocks
AllowShortBlocksOnASingleLine: Empty
#AllowShortEnumsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: Empty
AllowShortLoopsOnASingleLine: false
# ???
BinPackArguments: false
BinPackParameters: false
# ???
BitFieldColonSpacing: Both
BreakBeforeBraces: Custom
BraceWrapping:
  AfterCaseLabel: true
  AfterClass: false
  AfterControlStatement: Never
  AfterEnum: false
  AfterFunction: false
  AfterNamespace: true
  AfterStruct: false
  AfterUnion: false
  AfterExternBlock: true
  BeforeCatch: false
  BeforeElse: false
  BeforeLambdaBody: false
  BeforeWhile: false
  SplitEmptyFunction: false
  SplitEmptyRecord: false
  SplitEmptyNamespace: false
# Line breaks
BreakTemplateDeclarations: Yes
BreakAfterAttributes: Always
BreakBeforeConceptDeclarations: Allowed
BreakBeforeInlineASMColon: OnlyMultiline
BreakConstructorInitializers: BeforeColon
BreakInheritanceList: BeforeColon
BreakStringLiterals: true
PackConstructorInitializers: NextLineOnly # Could change to CurrentLine or NextLine
# idk
ColumnLimit: 120
IndentWidth: 4
TabWidth: 4
InsertNewlineAtEOF: true
# KeepEmptyLines:
#   AtEndOfFile: false
#   AtStartOfBlock: false
#   AtStartOfFile: false
LineEnding: DeriveLF
MaxEmptyLinesToKeep: 1
NamespaceIndentation: Inner
PointerAlignment: Left
QualifierAlignment: Left
# ReflowComments: true
SpaceAfterCStyleCast: true
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: false
SpaceAroundPointerQualifiers: Default
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: true
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
