Mr.Docs
Mr.Docs is a C++ reference documentation generator built on Clang/LLVM. It reads your project’s source through a compilation database, builds a complete symbol corpus from the real Clang AST, and emits documentation in several formats. The same corpus feeds rendered documents intended for human readers and structured data intended for downstream tools.
doc comments"]:::input CFG[Configuration]:::input CORPUS([Symbol corpus]):::stage GENS([Generators]):::stage RENDERED[Rendered documentation]:::output DATA[Structured data]:::output EXT[Extensions]:::ext CPP --> CORPUS CFG --> CORPUS CORPUS --> GENS GENS --> RENDERED GENS --> DATA EXT <-.-> CORPUS EXT <-.-> GENS
What Mr.Docs reads
Real C++ through Clang. Namespaces, classes and structs, function and class templates, concepts, deduction guides, enumerations, type aliases, variables, and using declarations all come through; partial and explicit specializations come along because the parser has resolved them already.
Doc comments in the Javadoc and Doxygen tradition. Block-level commands describe parameters, return values, exceptions, preconditions, and the surrounding prose. Inline commands handle emphasis, code spans, links, math, and the small markup pieces between sentences. The Documenting the Code section spells out which comments Mr.Docs understands and how each one renders.
Unresolved include directive in modules/ROOT/pages/index.adoc - include::example$snippets/landing/sqrt.cpp[]
What Mr.Docs produces
-
Several generators emit documentation in formats ranging from rendered documents for human readers to structured data for downstream tooling.
-
Customizable templates for the rendering generators, so the visual layout and the content shape of the output can be changed without touching the binary.
-
An extension surface that lets users plug in custom generators, register helpers used by the templates, and transform the corpus before it reaches a generator.
The Configuration Options section covers how to select a generator and shape its output. The Generators section covers how templates are organized and how to override or replace them.
Unresolved include directive in modules/ROOT/pages/index.adoc - include::example$snippets/landing/sqrt.adoc[]
What Mr.Docs makes of the declaration above.
See it in action
The Demo Gallery hosts Mr.Docs-generated reference documentation for several third-party libraries in every supported output format.