# Style contract for this repo. Taken from the CPP modules, so both codebases # read the same way, with the Standard line corrected — see below. # Google as the base (2-space indent, K&R braces, west-const pointers). --- Language: Cpp BasedOnStyle: Google # `Standard` only tells clang-format how to *parse* the source; it has nothing to # do with what the compiler is given. There is no `c++23` value — the enum stops # at `c++20` plus `Latest` and `Auto` (verified against clang-format 18.1.3: # c++23 rejected, c++20/Latest/Auto accepted), and an unknown value makes # clang-format refuse the whole file with "unknown enumerated scalar", not fall # back to a default. `Latest` is the value that means "the newest this binary # knows". The language standard is set once, in the Makefile: `-std=c++23`. Standard: Latest # 80 columns, straight from the Google C++ Style Guide ("Line Length"). This is # the dominant limit across C++ house styles: Google, LLVM, Chromium, Mozilla, # Abseil, folly. The 100 used by Rust/Kotlin/Qt is a newer-language convention # and does not carry over. Nothing to do with norminette, which is a C rule. ColumnLimit: 80 IndentWidth: 2 # Access specifiers get their own indent level: `public:` at 2, members at 4. IndentAccessModifiers: true # `T& name` / `T* name` — west style. PointerAlignment: Left ReferenceAlignment: Pointer # One-liner bodies allowed only for functions defined inside a class — trivial # accessors in headers. An out-of-line definition always gets a real body. # (The CPP modules use None; Google and LLVM both default to All. Inline is the # middle ground, and the only part of this file that deviates from them.) AllowShortFunctionsOnASingleLine: Inline AllowShortIfStatementsOnASingleLine: Never AllowShortLoopsOnASingleLine: false AllowShortCaseLabelsOnASingleLine: false # Include order is deliberate (own header first, then std by topic) — don't shuffle. SortIncludes: false