Documentation generation produces consumable output in one command

Building the docs target now generates the reference and leaves finished
documents in the build tree's docs directory: pdf/ holds the compiled
PDF, html/ holds the browsable reference when that format is enabled.
Doxygen and LaTeX work under docs/tmp/, which clean removes along with
the rest of the tree.

The reference has a front page and a structure. The markdown documents
in docs/ are part of the input, OVERVIEW.md becomes the landing page,
and the rest follow as chapters ahead of the namespace, class, and file
reference. The module contract, previously a plain comment block
invisible to Doxygen, is a page in its own right.

Struct and enum members throughout the headers carry documentation, on
their own lines above what they describe.
This commit is contained in:
2026-08-15 20:19:26 -04:00
parent 17acad2b02
commit 1cd79e79f3
8 changed files with 183 additions and 114 deletions

View File

@@ -30,16 +30,28 @@
/** @brief A loaded, fully validated module */
struct dpm_module {
/** Module name, its filename minus .so. */
std::string name;
void* handle = nullptr;
/** The dlopen handle. */
void* handle = nullptr;
/** dpm_module_version() as read at load. */
std::string version;
/** dpm_module_description() as read at load. */
std::string description;
/** Resolved dpm_module_execute; the only path into module code. */
int (*execute)(dpm_ctx*, const char*, int, char**) = nullptr;
};
/** @brief Enumeration cursor over validated modules */
struct dpm_cursor {
/** One entry per valid module. */
std::vector<dpm_module_info> infos;
/** Position of the next entry. */
size_t idx = 0;
};