Language: Cpp
Standard: c++20

BasedOnStyle: llvm

PointerAlignment: Left

AccessModifierOffset: -4
# BreakConstructorInitializers: BeforeComma
# BreakBeforeParameter: EndsInComma
#ExperimentalAutoDetectBinPacking: true
ExperimentalAutoDetectBinPacking: true
Cpp11BracedListStyle: true

NamespaceIndentation: All

CommentPragmas: "^ q:"

ReflowComments: false

ColumnLimit: 100
SortIncludes: true

#BreakBeforeBraces: GNU
BreakBeforeBraces: Allman
AllowShortIfStatementsOnASingleLine: false
IndentCaseLabels: true

MaxEmptyLinesToKeep: 2

#BraceWrapping:
#  BeforeWhile: true

# AlignConsecutiveAssignments: Consecutive

BinPackArguments: false
BinPackParameters: false

AllowAllParametersOfDeclarationOnNextLine: false

AllowAllConstructorInitializersOnNextLine: true
BreakConstructorInitializers: AfterColon
ConstructorInitializerAllOnOneLineOrOnePerLine: true

BreakInheritanceList: AfterColon

# ReturnTypeBreakingStyle: All
# ReturnTypeBreakingStyle: AllDefinitions
# BreakTemplateDeclarationsStyle: Yes

# breaks return type
AlwaysBreakAfterDefinitionReturnType: All

AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: false
AllowShortLoopsOnASingleLine: false

AlwaysBreakTemplateDeclarations: true

BreakBeforeTernaryOperators: true

#ContinuationIndentWidth: 8
IndentWidth: 4
#TabWidth: 4
UseTab: "Never"

AllowAllArgumentsOnNextLine: true

FixNamespaceComments: true
AlignAfterOpenBracket: Align

IncludeBlocks: Regroup

IncludeCategories:


  - Regex: "<[[:alnum:,_].]+>"
    Priority: 30
  - Regex: "<[[:alnum:,_].]+>"
    Priority: 30
  - Regex: "<[[:alnum:].]+>"
    Priority: 30
  - Regex: "<[:alnum:]+>"
    Priority: 30
  - Regex: "^(<unordered_map>)"
    Priority: 30
  - Regex: "^(<type_traits>)"
    Priority: 30
  - Regex: "^(<range/)"
    Priority: 40
  - Regex: "^(<ceres/)"
    Priority: 45
  - Regex: "^(<boost/)"
    Priority: 50
  - Regex: "^(<Eigen/)"
    Priority: 60
  - Regex: "^(<pcl/)"
    Priority: 70
  - Regex: "^(<opencv2/)"
    Priority: 80
  - Regex: "^(<cartographer/)"
    Priority: 81
  - Regex: "<wykobi.hpp>"
    Priority: 85
  - Regex: "^(<IceUtil/)"
    Priority: 90
  - Regex: "^(<Ice/)"
    Priority: 91
  - Regex: "^(<VirtualRobot/)"
    Priority: 100
  - Regex: "^(<SimoxUtility/)"
    Priority: 100
  - Regex: '^((<|")ArmarXCore/)'
    Priority: 200
  - Regex: '^((<|")ArmarXGui/)'
    Priority: 210
  - Regex: '^((<|")RobotAPI/)'
    Priority: 220
  - Regex: '^((<|")VisionX/)'
    Priority: 230
  - Regex: '^((<|")RobotComponents/)'
    Priority: 240
  - Regex: '^((<|")ArmarXSimulation/)'
    Priority: 250
  - Regex: '^((<|")RobotSkillTemplates/)'
    Priority: 260
  - Regex: '^((<|")armar6_rt/)'
    Priority: 270
  - Regex: '^((<|")Armar6Skills/)'
    Priority: 280
  - Regex: '^((<|")armar6_rt/)'
    Priority: 290
  - Regex: '^((<|")MobileManipulation/)'
    Priority: 300
  - Regex: '^((<|")ROBDEKON/)'
    Priority: 310
  # - Regex:           '^"(llvm|llvm-c|clang|clang-c)/'
  #   Priority:        2
  #   SortPriority:    2
  #   CaseSensitive:   true
  # - Regex:           '^(<|"(gtest|gmock|isl|json)/)'
  #   Priority:        3
  # # - Regex:           '^(<|"(Eigen)/)'
  # #   Priority:        3
  # - Regex:           '^<VirtualRobot/'
  #   Priority:        4
  # - Regex:           '.*'
  #   Priority:        1
  #   SortPriority:    0