ores.cpp.component

Table of Contents

This page is the node for the ores.cpp.component facet of the codegen template library, part of the ores.cpp technical space. Each archetype below is documented, and holds its mustache source, in its own linked page — this page is the facet-level summary and the routing table to them.

1. Summary

The files every component keeps for its whole life: the aggregate include header that documents its outermost namespace, the shared-library export macros (all four component profiles) and the Catch2 test_main (all four profiles). The first-generation scaffolding that used to sit beside them – the stub function, its implementation and its test – moved to ores.cpp.scaffold, which is opt-in.

The umbrella header is not scaffolding and did not stay there. Every component keeps one, a multi-module component keeps one per module, and a composite keeps none because it has no namespace of its own. It is regenerated like any other artefact, so editing the model's description updates the Doxygen brief.

2. The ores.cpp.component facet

The minimal C++ presence of a component: enough generated source that CMake targets build and the test runner passes, with or without real code. A component that has no models yet adds the opt-in scaffold facet for a placeholder to compile and test; once it has one, these three files are what remain.

3. Archetypes

Archetype Description
ores.cpp.component.export Per-component shared-library export/import macros. All component profiles.
ores.cpp.component.test_main Catch2 main with the project's logging/test-env setup.
ores.cpp.component.test_suite The test target's shared constants: its logger name and the fixture values every test file uses.
ores.cpp.component.umbrella_header The aggregate include header that carries the component's Doxygen namespace brief.

4. See also

Emacs 29.3 (Org mode 9.6.15)