---
Language:        Cpp

# Put a function on a single line if possible, but only in a class (typically
# for accessors and mutators).
AllowShortFunctionsOnASingleLine: InlineOnly

# Newline after the return type of a function, but only for definitions (not
# declarations), and not for member function definitions.
AlwaysBreakAfterReturnType: TopLevelDefinitions

# Newline after `template` line.
AlwaysBreakTemplateDeclarations: Yes

# Break before operators, not after (including assignment operator).
BreakBeforeBinaryOperators: All

BreakBeforeBraces: GNU

# Indentation width in initializers.
ConstructorInitializerIndentWidth: 2

# Indentation width in expression continued on next line.
ContinuationIndentWidth: 2

# No spaces inside braced list.
Cpp11BracedListStyle: true

# Always put each constructor initializer on its own line.
PackConstructorInitializers: Never

# Never rewrap comments.  Some of them contain ASCII art.
ReflowComments: false

# Never sort includes.  The order sometimes matters.
SortIncludes: Never

# Space after `(void)` in `(void) ...;`.  (We don't use C-style casts for
# anything but void.)
SpaceAfterCStyleCast: true

# Space in C++11 braced-list initialization:
# Foo foo {bar};
#        ^
SpaceBeforeCpp11BracedList: true

SpaceBeforeParens: Always
