###############################################################################
# Mobile Robot Programming Toolkit (MRPT)
# https://www.mrpt.org/
#
###############################################################################

# For all the available options - and taking in account the version of
# clang-format see the following links:
#
# More accurate if we know the version in advance
# http://releases.llvm.org/3.8.0/tools/clang/docs/ClangFormatStyleOptions.html
#
# Holds a general list of keys - may not be applicable for our version though
# https://clang.llvm.org/docs/ClangFormatStyleOptions.html

Language:        Cpp
BasedOnStyle: Google
# ---
#AccessModifierOffset: -4
AlignAfterOpenBracket: AlwaysBreak # Values: Align, DontAlign, AlwaysBreak
#AlignConsecutiveAssignments: true
#AlignConsecutiveDeclarations: true
#AlignEscapedNewlinesLeft: true
#AlignOperands:   false
AlignTrailingComments: false # Should be off, causes many dummy problems!!
#AllowAllParametersOfDeclarationOnNextLine: true
#AllowShortBlocksOnASingleLine: false
#AllowShortCaseLabelsOnASingleLine: false
#AllowShortFunctionsOnASingleLine: Empty
#AllowShortIfStatementsOnASingleLine: false
#AllowShortLoopsOnASingleLine: false
#AlwaysBreakAfterDefinitionReturnType: None
#AlwaysBreakAfterReturnType: None
#AlwaysBreakBeforeMultilineStrings: true
#AlwaysBreakTemplateDeclarations: true
#BinPackArguments: false
#BinPackParameters: false
#BraceWrapping:
  #AfterClass:      false
  #AfterControlStatement: false
  #AfterEnum:       false
  #AfterFunction:   false
  #AfterNamespace:  false
  #AfterObjCDeclaration: false
  #AfterStruct:     false
  #AfterUnion:      false
  #BeforeCatch:     false
  #BeforeElse:      true
  #IndentBraces:    false
#BreakBeforeBinaryOperators: None
BreakBeforeBraces: Allman
#BreakBeforeTernaryOperators: true
#BreakConstructorInitializersBeforeComma: false
ColumnLimit: 80
#CommentPragmas:  ''
#ConstructorInitializerAllOnOneLineOrOnePerLine: true
#ConstructorInitializerIndentWidth: 4
#ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
#DerivePointerAlignment: false
#DisableFormat:   false
#ExperimentalAutoDetectBinPacking: false
##FixNamespaceComments: true # Not applicable in 3.8
#ForEachMacros:   [ foreach, Q_FOREACH, BOOST_FOREACH ]
#IncludeCategories:
  #- Regex:           '.*'
    #Priority:        1
IndentCaseLabels: true
IndentWidth:     4
IndentWrappedFunctionNames: true
#KeepEmptyLinesAtTheStartOfBlocks: true
#MacroBlockBegin: ''
#MacroBlockEnd:   ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
#PenaltyBreakBeforeFirstCallParameter: 19
#PenaltyBreakComment: 300
#PenaltyBreakFirstLessLess: 120
#PenaltyBreakString: 1000
#PenaltyExcessCharacter: 1000000
#PenaltyReturnTypeOnItsOwnLine: 200
DerivePointerAlignment: false
#PointerAlignment: Left
ReflowComments:  true # Should be true, otherwise clang-format doesn't touch comments
SortIncludes:    true
#SpaceAfterCStyleCast: false
SpaceBeforeAssignmentOperators: true
#SpaceBeforeParens: ControlStatements
#SpaceInEmptyParentheses: false
#SpacesBeforeTrailingComments: 2
#SpacesInAngles:  false
#SpacesInContainerLiterals: true
#SpacesInCStyleCastParentheses: false
#SpacesInParentheses: false
#SpacesInSquareBrackets: false
Standard:        Cpp11
TabWidth:        4
UseTab:          Always # Available options are Never, Always, ForIndentation
#---
