
# Copyright 2017 Daniel James.
# Distributed under the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

# Using clang format 4.0
# http://llvm.org/releases/4.0.0/tools/clang/docs/ClangFormatStyleOptions.html

BasedOnStyle: LLVM

# Basic settings
ColumnLimit: 80
NamespaceIndentation: All
ContinuationIndentWidth: 4
IndentWidth: 4
UseTab: Never
Language: Cpp
Standard: Cpp03

# Code layout
AlignAfterOpenBracket: AlwaysBreak
AlignTrailingComments: true
AllowShortBlocksOnASingleLine: true
AllowShortFunctionsOnASingleLine: true
AllowShortIfStatementsOnASingleLine: true
BinPackParameters: false
BreakBeforeBraces: Custom
ConstructorInitializerAllOnOneLineOrOnePerLine: true
BreakConstructorInitializersBeforeComma: true
BraceWrapping:
    AfterNamespace: true
    AfterClass: true
    AfterStruct: true
    AfterUnion: true
    AfterEnum: true
    AfterFunction: true
    AfterControlStatement: false
    BeforeCatch: false
    BeforeElse: true
PointerAlignment: Left

PenaltyReturnTypeOnItsOwnLine: 1000

# Include order

IncludeCategories:
  - Regex: '^<windows.h>$'
    Priority: 10
  - Regex: '^<boost/.*>$'
    Priority: 30
  - Regex: '^<.*>$'
    Priority: 20
  - Regex: '^".*"$'
    Priority: 40

# Boost specific stuff
ForEachMacros: [ BOOST_FOREACH ]
