﻿# Project-wide C++ formatting (C++ latest / Visual Studio + clang-format)
BasedOnStyle: Mozilla
Language: Cpp

# General layout
ColumnLimit: 0
IndentWidth: 2
ContinuationIndentWidth: 2
AlwaysBreakBeforeMultilineStrings: false
TabWidth: 2
UseTab: Never

# Braces/style (matches your current Allman-like style)
BreakBeforeBraces: Allman
#AllowShortIfStatementsOnASingleLine: Never
#AllowShortBlocksOnASingleLine: Never
# AllowShortFunctionsOnASingleLine: None
AllowShortFunctionsOnASingleLine: Inline
AllowShortLoopsOnASingleLine: false
#AllowShortLambdasOnASingleLine: None

# Lambdas
LambdaBodyIndentation: Signature

# Wrapping / argument formatting
# BinPackArguments: false
# BinPackParameters: false
AllowAllParametersOfDeclarationOnNextLine: false
# AlignAfterOpenBracket: DontAlign
AlignAfterOpenBracket: Align

# Pointers/references
PointerAlignment: Right
ReferenceAlignment: Right

# Namespaces
FixNamespaceComments: true

# Includes
SortIncludes: CaseSensitive
IncludeBlocks: Regroup

# Keep comments readable
ReflowComments: true

# Breaking
BreakAfterReturnType: None
AlwaysBreakAfterDefinitionReturnType: None
BreakConstructorInitializersBeforeComma: false
BreakBeforeTernaryOperators: true

# Spacing
SpaceBeforeParens: ControlStatements
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 5
AccessModifierOffset: 0
AlignConsecutiveAssignments: true
AlignConsecutiveDeclarations: true
AlignEscapedNewlines: Left
AlignOperands: true
AlignTrailingComments: true
AllowShortCaseLabelsOnASingleLine: false
IndentCaseLabels: true
IndentPPDirectives: AfterHash
NamespaceIndentation: None

# Sorting
SortUsingDeclarations: Lexicographic

# C++ specifics
Standard: Latest
