# The style used for all options not specifically set in the configuration.
BasedOnStyle: LLVM

# The extra indent or outdent of access modifiers, e.g. public:.
AccessModifierOffset: -4

# If true, aligns escaped newlines as far left as possible. Otherwise puts them into the right-most column.
AlignEscapedNewlinesLeft: true

# If true, aligns trailing comments.
AlignTrailingComments: false

# Allow putting all parameters of a function declaration onto the next line even if BinPackParameters is false.
AllowAllParametersOfDeclarationOnNextLine: false

# Allows contracting simple braced statements to a single line.
AllowShortBlocksOnASingleLine: false

# If true, short case labels will be contracted to a single line.
AllowShortCaseLabelsOnASingleLine: false

# Dependent on the value, int f() { return 0; } can be put on a single line. Possible values: None, Inline, All.
AllowShortFunctionsOnASingleLine: None

# If true, if (a) return; can be put on a single line.
AllowShortIfStatementsOnASingleLine: false

# If true, while (true) continue; can be put on a single line.
AllowShortLoopsOnASingleLine: false

# If true, always break after function definition return types.
AlwaysBreakAfterDefinitionReturnType: false

# If true, always break before multiline string literals.
AlwaysBreakBeforeMultilineStrings: false

# If true, always break after the template<...> of a template declaration.
AlwaysBreakTemplateDeclarations: true

# If false, a function call's arguments will either be all on the same line or will have one line each.
BinPackArguments: true

# If false, a function declaration's or function definition's parameters will either all be on the same line
# or will have one line each.
BinPackParameters: true

# The way to wrap binary operators. Possible values: None, NonAssignment, All.
BreakBeforeBinaryOperators: None

# The brace breaking style to use. Possible values: Attach, Linux, Stroustrup, Allman, GNU.
BreakBeforeBraces: Allman

# If true, ternary operators will be placed after line breaks.
BreakBeforeTernaryOperators: false

# Always break constructor initializers before commas and align the commas with the colon.
BreakConstructorInitializersBeforeComma: true

# The column limit. A column limit of 0 means that there is no column limit.
ColumnLimit: 120

# A regular expression that describes comments with special meaning, which should not be split into lines or otherwise changed.
CommentPragmas: '^ *'

# If the constructor initializers don't fit on a line, put each initializer on its own line.
ConstructorInitializerAllOnOneLineOrOnePerLine: false

# The number of characters to use for indentation of constructor initializer lists.
ConstructorInitializerIndentWidth: 4

# Indent width for line continuations.
ContinuationIndentWidth: 4

# If true, format braced lists as best suited for C++11 braced lists.
Cpp11BracedListStyle: false

# Disables formatting at all.
DisableFormat: false

# A vector of macros that should be interpreted as foreach loops instead of as function calls.
#ForEachMacros: ''

# Indent case labels one level from the switch statement.
# When false, use the same indentation level as for the switch statement.
# Switch statement body is always indented one level more than case labels.
IndentCaseLabels: false

# The number of columns to use for indentation.
IndentWidth: 4

# Indent if a function definition or declaration is wrapped after the type.
IndentWrappedFunctionNames: false

# If true, empty lines at the start of blocks are kept.
KeepEmptyLinesAtTheStartOfBlocks: true

# Language, this format style is targeted at. Possible values: None, Cpp, Java, JavaScript, Proto.
Language: Cpp

# The maximum number of consecutive empty lines to keep.
MaxEmptyLinesToKeep: 1

# The indentation used for namespaces. Possible values: None, Inner, All.
NamespaceIndentation: None

# The penalty for breaking a function call after "call(".
PenaltyBreakBeforeFirstCallParameter: 19

# The penalty for each line break introduced inside a comment.
PenaltyBreakComment: 300

# The penalty for breaking before the first <<.
PenaltyBreakFirstLessLess: 120

# The penalty for each line break introduced inside a string literal.
PenaltyBreakString: 1000

# The penalty for each character outside of the column limit.
PenaltyExcessCharacter: 1000000

# Penalty for putting the return type of a function onto its own line.
PenaltyReturnTypeOnItsOwnLine: 1000000000

# Pointer and reference alignment style. Possible values: Left, Right, Middle.
PointerAlignment: Right

# If true, a space may be inserted after C style casts.
SpaceAfterCStyleCast: false

# If false, spaces will be removed before assignment operators.
SpaceBeforeAssignmentOperators: true

# Defines in which cases to put a space before opening parentheses. Possible values: Never, ControlStatements, Always.
SpaceBeforeParens: ControlStatements

# If true, spaces may be inserted into '()'.
SpaceInEmptyParentheses: false

# The number of spaces before trailing line comments (// - comments).
SpacesBeforeTrailingComments: 1

# If true, spaces will be inserted after '<' and before '>' in template argument lists.
SpacesInAngles: false

# If true, spaces may be inserted into C style casts.
SpacesInCStyleCastParentheses: false

# If true, spaces are inserted inside container literals (e.g. ObjC and Javascript array and dict literals).
SpacesInContainerLiterals: false

# If true, spaces will be inserted after '(' and before ')'.
SpacesInParentheses: false

# If true, spaces will be inserted after '[' and befor']'.
SpacesInSquareBrackets: false

# Format compatible with this standard, e.g. use A<A<int> > instead of A<A<int>> for LS_Cpp03. Possible values: Cpp03, Cpp11, Auto.
Standard: Cpp11

# The number of columns used for tab stops.
TabWidth: 4

# The way to use tab characters in the resulting file. Possible values: Never, ForIndentation, Always.
UseTab: ForIndentation

# Do not reflow comments
ReflowComments: false
