Files
paulhorn db41258d16 feat: PDA als libpda + pda nach P1204R0
Ersetzt das Geruest (counter/notebook) durch ein echtes Beispiel und teilt
es in zwei eigenstaendige Projekte, wie P1204R0 es fuer Bibliothek plus
Programm verlangt.

libpda: textfile (C, Datei-I/O und Feld-Escaping), calculator
(Recursive-Descent-Parser mit std::expected), contact, editor, explorer.
Exportiert pda::pda ueber install(EXPORT) und ist per find_package(pda)
benutzbar.

pda: Shell ohne Ein-/Ausgabe (execute() gibt Text zurueck, deshalb ohne
Terminal testbar), REPL und Stapelbetrieb in main.cpp.

examples/consumer und tools/check-install.sh pruefen die Export-Kette
Ende-zu-Ende: installieren, dann ein fremdes Projekt dagegen bauen.

docs/CMAKE.md erklaert das Target-Modell, PUBLIC/PRIVATE/INTERFACE,
Generator-Ausdruecke, install/export und Symbolsichtbarkeit an diesem
Projekt.

71 Tests gruen unter Homebrew-clang 22, Apple clang und GCC 16, statisch
und shared, mit und ohne ASan/UBSan.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-30 16:39:35 +02:00

58 lines
2.1 KiB
YAML

# House checks. Adopted from PaulDB/tui-framework unchanged EXCEPT
# HeaderFilterRegex.
#
# The original was '.*', which makes clang-tidy analyse every transitively
# included header -- including the standard library and the vendored 363 KB
# doctest.h. Running live through clangd, that floods the editor with
# diagnostics you cannot act on. Scoped to this project's own source tree
# instead; third_party/ is a sibling directory and so is excluded by construction.
# Zwei projektspezifische Abschaltungen, begruendet:
#
# -misc-no-recursion Ein Recursive-Descent-Parser IST wechselseitig
# rekursiv (libpda/calculator.cpp). Das ist die
# Bauform, nicht ein Versehen; die Tiefe ist durch
# die Klammertiefe der Eingabe begrenzt.
#
# -performance-enum-size Schlaegt bei JEDEM enum an und will std::uint8_t
# als Basistyp. Gewinn: drei Byte in einem
# Rueckgabewert. Preis: eine ABI-Festlegung und
# Laerm in jeder Datei.
#
# ACHTUNG: Diese Kommentare stehen hier und NICHT im Checks-Block darunter.
# 'Checks: >' ist ein YAML-Folded-Scalar -- darin ist '#' gewoehnlicher Text
# und wuerde als Checkname in die Liste wandern.
Checks: >
bugprone-*,
cert-*,
clang-analyzer-*,
misc-*,
performance-*,
portability-*,
readability-*,
-readability-magic-numbers,
-readability-identifier-length,
-readability-function-cognitive-complexity,
-readability-braces-around-statements,
-cert-err33-c,
-misc-include-cleaner,
-readability-implicit-bool-conversion,
-misc-no-recursion,
-performance-enum-size
CheckOptions:
- key: bugprone-easily-swappable-parameters.MinimumLength
value: 3
- key: readability-identifier-naming.FunctionCase
value: lower_case
- key: readability-identifier-naming.VariableCase
value: lower_case
- key: readability-identifier-naming.MacroDefinitionCase
value: UPPER_CASE
- key: readability-identifier-naming.TypedefCase
value: CamelCase
- key: readability-identifier-naming.StructCase
value: CamelCase
HeaderFilterRegex: '.*/playground/.*'
FormatStyle: file