brokk_bifrost_cpp/lib.rs
1//! C++ language knowledge for Bifrost.
2//!
3//! Internal implementation detail of `brokk-bifrost`; no stability guarantees --
4//! depend on `brokk-bifrost` instead.
5//!
6//! This crate sits between [`brokk_bifrost_core`] and `brokk-bifrost-analysis`.
7//! It holds C++ *language knowledge* -- the declaration walk with its
8//! macro-sentinel error recovery, `#include` parsing and include-target
9//! resolution, out-of-line member identity reconciliation, the structural spec,
10//! test detection, clone normalization, compile-database ingestion and the
11//! usage-graph scans -- as plain functions and data. It depends on no other
12//! Bifrost crate than core, so nothing here may name `IAnalyzer`,
13//! `TreeSitterAnalyzer`, or `CppAnalyzer`.
14//!
15//! Where analysis code would reach for an analyzer handle, the functions here
16//! take a C++ source trait -- a core
17//! [`brokk_bifrost_core::analyzer::CodeUnitIndex`] plus the memoized C++
18//! products the language logic resolves through. `analyzer/cpp/` in
19//! `brokk-bifrost-analysis` keeps the shim: the `CppAnalyzer` struct with its
20//! five moka caches, three `OnceLock` cells, one `PoolSafeMemo` and six
21//! `test-support` counters, the `CodeUnitIndex` impl carrying the #1134
22//! reconciliation overlay, the `IAnalyzer` impl, the `CppAdapter` forwarding
23//! shell, the SPI block, and the downcasts that produce the arguments.
24
25pub mod adapter;
26pub mod call_match;
27pub mod clones;
28pub mod compile_context;
29pub mod declarations;
30pub mod diagnostics;
31pub mod external_declarations;
32pub mod graph;
33pub mod graph_support;
34pub mod hierarchy;
35pub mod identity;
36pub mod imports;
37pub mod queries;
38pub mod raii;
39pub mod reconcile;
40pub mod structural;
41pub mod test_detection;