Generators
Mr.Docs uses a generator to convert the extracted symbols into documentation.
Mr.Docs supports multiple output formats that can be specified via the generate option:
The generator option can be used to specify the output format:
# ...
generator: adoc
# ...
Three output formats are supported:
| Format | Description |
|---|---|
|
AsciiDoc format. |
|
HTML format. |
|
XML format. |
The corpus of symbols is provided to the generator responsible for converting these symbols into the desired output format.
The xml generator is used as an intermediary format for other tools or for testing purposes.
Users can write their own tools to process the XML output and generate custom documentation.
The adoc and html generators use templates to generate the documentation.
These templates can be customized to change the output format and style.
Asciidoc is a text-based format that is easy to read and write. It can also be converted to other formats such as HTML and Markdown.
HTML can be generated directly with the html format.
Choosing the Right Generator
The scatter plot below illustrates the available output formats for Mr.Docs, along with hypothetical solutions, in terms of redundancy and convenience.
-
Redundancy: The amount of duplicated or unstructured information in the output format. Lower redundancy is generally preferred for post-processing, while higher redundancy can allow the output to use formats that are easier to use directly.
-
Convenience: Reflects how readily the output format can be used without requiring additional tools or steps.
Although Clang can generate and print an Abstract Syntax Tree (AST) directly for a Translation Unit (TU), it is not the most convenient format for generating documentation:
-
It does not provide the AST in a format that’s easy to process.
-
Equivalent symbols can be redeclared multiple times in the same translation unit and across translation units.
-
The documentation for equivalent symbols also needs to be unified.
The scatter plot shows the following output formats supported by Mr.Docs:
-
XML: Aggregates all symbols and their documentation in a format that is straightforward to process. It’s suitable for advanced use cases involving custom post-processing tools.
-
Asciidoc: Similar to HTML in convenience, Asciidoc files can be easily converted to HTML and multiple other formats with backends.
-
HTML: Generates output that is directly usable in a variety of contexts, such as web pages or documentation systems.
The Asciidoc and HTML generators also support Custom Templates to change the output format and style. This forms another possibility in the trade-off between redundancy and convenience.
The best trade-offs, represented by the line passing through the generators, indicate the optimal solutions in terms of redundancy and convenience. Solutions on this line balance these goals effectively. Dots in the background represent other potential formats that do not lie on the front of best trade-offs, as they fail to optimize either redundancy or convenience compared to the available generators.
Generator Templates
Mr.Docs attempts to support various alternatives for customizing the output format and style without complex workflows to post-process XML output.
The adoc and html generators use Handlebars templates.
These templates can be customized to change the output format and style of the documentation.
The templates used to generate the documentation are located in the share/mrdocs/addons/generator directory.
Users can create a copy of these files and provide their own addons directory via the addons option in the configuration file or via the command line.
addons: /path/to/custom/addons
Each symbol goes through a main layout template in the <addons>/generator/<generator>/layouts/single-symbol.<generator>.hbs directory.
This template is a simple entry point that renders the partial relative to the symbol kind.
The partials are located in the <addons>/generator/<generator>/partials directory.
It typically contains the following files and subdirectories:
-
symbol: A generic partial for rendering symbols. -
location: Partials for rendering location objects. -
symbol: Partials for rendering Symbol Objects. -
template: Partials for rendering Template Info Objects. -
type: Partials for rendering Type Objects. -
markup: partials for rendering markup elements such as lists, tables, and code blocks, in the output format.
Please refer to the Document Object Model Reference for more information on each type of object.
Partials common to all generators are available in the <addons>/generator/common/partials directory.
The common partials are loaded before the generator-specific partials, which can override any common partials.
The multipage generator renders the layout multiple times as separate pages for each symbol. The single-page generator renders the layout multiple times and concatenates the results in a single page.
Each time the generator encounters a symbol, it renders the layout template with the symbol data as the Handlebars context.
The layout template can include other partial templates to render the symbol data. These partials are available in the <addons>/generator/<generator>/partials directory.
The Document Object Model (DOM) for each symbol includes all information about the symbol.One advantage of custom templates over post-processing XML files is the ability to access symbols as a graph.If symbol A refers to symbol B, some properties of symbol B are likely to be required in the documentation of A.All templates and generators can access a reference to B by searching the symbol tree or simply by accessing the elements A refers to.All references to other symbols are resolved in the templates.
Stylesheet Options
The HTML and AsciiDoc generators ship a bundled stylesheet that is inlined by default. You can replace or layer styles with the following options (available in config files and on the CLI):
-
stylesheets: ordered list of stylesheet paths or URLs. If empty, the bundled CSS is used. Remote URLs requirelinkcss: true. -
no-default-styles: skip the bundled CSS entirely. -
linkcss: emit<link>tags instead of inline<style>blocks. Local styles are copied by default; remote URLs are only linked. -
copycss: when linking, copy bundled and local styles into the output tree (defaulttrue). Set tofalseto skip copying. -
stylesdir: directory (relative to the output root) used for linked styles, e.g.cssresults incss/custom.css.
Example config:
generator: html
stylesheets:
- custom.css
linkcss: true
stylesdir: css
Equivalent CLI flags:
mrdocs --generator=html --stylesheets custom.css --linkcss --stylesdir css
Document Object Model Reference
The Document Object Model (DOM) is a tree structure that represents the symbols extracted from the source code.The DOM is used by the generator to render the documentation.
Top-Level Fields
The top-level object in the DOM is the context for a template.The top-level object has the following properties:
| Property | Type | Description |
|---|---|---|
|
The symbol being rendered. |
|
|
The configuration object. |
NamespaceSymbol
A namespace declaration. The implicit global namespace appears as a namespace symbol with an empty name and no parent.
| Property | Type | Description |
|---|---|---|
name |
string | Unqualified name of the symbol, as written in the source. |
loc (required) |
string | Source location information for the symbol's declaration and definition. |
kind (required) |
string ("namespace" | "record" | "function" | "overloads" | "enum" | "enum-constant" | "typedef" | "variable" | "guide" | "namespace-alias" | "using" | "concept") |
Discriminator selecting the symbol kind (e.g. `"function"`, `"record"`). Each concrete symbol type constrains this field to a single literal value. |
id (required) |
string | Stable, base64-encoded identifier used for cross-references between DOM objects. |
access (required) |
string ("none" | "public" | "protected" | "private") |
Access specifier (`"public"`, `"protected"`, `"private"`); empty for namespace-scope members. |
extraction (required) |
string ("regular" | "see-below" | "implementation-defined" | "dependency") |
Why the symbol was extracted: `"regular"`, `"see-below"`, `"implementation-defined"`, or `"dependency"`. |
isCopyFromInherited (required) |
boolean | True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option). |
parent (required) |
string | Identifier of the enclosing scope, or empty when the symbol lives in the global namespace. |
doc |
DocComment |
Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented. |
isInline (required) |
boolean | True if the namespace is declared `inline`. |
isAnonymous (required) |
boolean | True if the namespace has no name in source. |
usingDirectives (required) |
array of Name |
List of `using namespace` directives found in this namespace's scope. |
members (required) |
NamespaceTranche |
All members of the namespace, grouped into tranches by kind. |
class (required) |
"symbol" |
Tag set to the literal `"symbol"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`. |
$meta |
object |
RecordSymbol
A class, struct, or union declaration.
| Property | Type | Description |
|---|---|---|
name |
string | Unqualified name of the symbol, as written in the source. |
loc (required) |
string | Source location information for the symbol's declaration and definition. |
kind (required) |
string ("namespace" | "record" | "function" | "overloads" | "enum" | "enum-constant" | "typedef" | "variable" | "guide" | "namespace-alias" | "using" | "concept") |
Discriminator selecting the symbol kind (e.g. `"function"`, `"record"`). Each concrete symbol type constrains this field to a single literal value. |
id (required) |
string | Stable, base64-encoded identifier used for cross-references between DOM objects. |
access (required) |
string ("none" | "public" | "protected" | "private") |
Access specifier (`"public"`, `"protected"`, `"private"`); empty for namespace-scope members. |
extraction (required) |
string ("regular" | "see-below" | "implementation-defined" | "dependency") |
Why the symbol was extracted: `"regular"`, `"see-below"`, `"implementation-defined"`, or `"dependency"`. |
isCopyFromInherited (required) |
boolean | True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option). |
parent (required) |
string | Identifier of the enclosing scope, or empty when the symbol lives in the global namespace. |
doc |
DocComment |
Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented. |
keyKind (required) |
string ("struct" | "class" | "union") |
The introducing keyword: `"class"`, `"struct"`, or `"union"`. |
template |
TemplateInfo |
Template head if this is a class template; absent for non-templates. |
isTypeDef (required) |
boolean | True when the record was introduced by an anonymous `typedef struct { ... } Name;` declaration. |
isFinal (required) |
boolean | True if the class is declared `final`. |
isFinalDestructor (required) |
boolean | True when the record's destructor is declared `final`. |
bases (required) |
array of BaseInfo |
Direct base classes, in declaration order. |
derived (required) |
array of string | Identifiers of records that derive from this one and appear in the corpus. |
interface (required) |
RecordInterface |
Per-access summary of the record's members (public, protected, private, plus aggregated views). |
friends (required) |
array of FriendInfo |
List of friend declarations attached to the record. |
class (required) |
"symbol" |
Tag set to the literal `"symbol"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`. |
$meta |
object |
FunctionSymbol
A function declaration, including free functions, member functions, constructors, destructors, and user-defined operators.
| Property | Type | Description |
|---|---|---|
name |
string | Unqualified name of the symbol, as written in the source. |
loc (required) |
string | Source location information for the symbol's declaration and definition. |
kind (required) |
string ("namespace" | "record" | "function" | "overloads" | "enum" | "enum-constant" | "typedef" | "variable" | "guide" | "namespace-alias" | "using" | "concept") |
Discriminator selecting the symbol kind (e.g. `"function"`, `"record"`). Each concrete symbol type constrains this field to a single literal value. |
id (required) |
string | Stable, base64-encoded identifier used for cross-references between DOM objects. |
access (required) |
string ("none" | "public" | "protected" | "private") |
Access specifier (`"public"`, `"protected"`, `"private"`); empty for namespace-scope members. |
extraction (required) |
string ("regular" | "see-below" | "implementation-defined" | "dependency") |
Why the symbol was extracted: `"regular"`, `"see-below"`, `"implementation-defined"`, or `"dependency"`. |
isCopyFromInherited (required) |
boolean | True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option). |
parent (required) |
string | Identifier of the enclosing scope, or empty when the symbol lives in the global namespace. |
doc |
DocComment |
Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented. |
returnType (required) |
Type |
Return type. Absent for constructors and destructors. |
params (required) |
array of Param |
Function parameter list, in declaration order. |
template |
TemplateInfo |
Template head if this is a function template; absent for non-templates. |
funcClass (required) |
string ("normal" | "constructor" | "conversion" | "destructor") |
Special-function classification (`"constructor"`, `"destructor"`, `"conversion"`, etc.) or empty for ordinary functions. |
noexcept (required) |
string | Rendered `noexcept` specifier, if any. |
requires |
string | Trailing `requires`-clause expression as written. |
isVariadic (required) |
boolean | True when the function accepts a C-style `...` argument list. |
isDefaulted (required) |
boolean | True when the function is `= default`. |
isExplicitlyDefaulted (required) |
boolean | True when the function carries an explicit `= default` in source (not just an implicit defaulted special member). |
isDeleted (required) |
boolean | True when the function is `= delete` (whether written explicitly or implied by language rules). |
isDeletedAsWritten (required) |
boolean | True only when the function is `= delete` as written in source; distinguishes user-deleted from implicitly deleted. |
isNoReturn (required) |
boolean | True when the function is marked `[[noreturn]]`. |
hasOverrideAttr (required) |
boolean | True when the function carries the `override` specifier. |
hasTrailingReturn (required) |
boolean | True when the function uses trailing-return-type syntax (`auto ... -> T`). |
isNodiscard (required) |
boolean | True when the function is marked `[[nodiscard]]`. |
isExplicitObjectMemberFunction (required) |
boolean | True when the function declares an explicit object parameter (deducing-this member function). |
constexpr |
string ("none" | "constexpr" | "consteval") |
Constexpr level: `"constexpr"`, `"consteval"`, or empty. |
overloadedOperator (required) |
string | Overloaded operator name (e.g. `"operator+"`) or empty if not an operator. |
storageClass |
string ("none" | "extern" | "static" | "auto" | "register") |
Storage class: `"static"`, `"extern"`, etc., or empty. |
isRecordMethod (required) |
boolean | True when the function is a member of a class, struct, or union. |
isVirtual (required) |
boolean | True when the function is virtual (whether by `virtual` keyword or by overriding a virtual function). |
isVirtualAsWritten (required) |
boolean | True only when the `virtual` keyword appears in source. |
isPure (required) |
boolean | True when the function is pure virtual (`= 0`). |
isConst (required) |
boolean | True when the function is a `const` member function. |
isVolatile (required) |
boolean | True when the function is a `volatile` member function. |
isFinal (required) |
boolean | True when the function is declared `final`. |
refQualifier |
string | Reference qualifier on the implicit object parameter: `"&"`, `"&&"`, or empty. |
explicit (required) |
string | Rendered `explicit` specifier (with optional condition) for constructors and conversion functions. |
attributes (required) |
array of string | Attributes attached to the declaration. |
functionObjectImpl |
string | Identifier of the function object this function is the call-operator implementation of, when the `auto-function-objects` feature recognized it as such; empty otherwise. |
class (required) |
"symbol" |
Tag set to the literal `"symbol"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`. |
$meta |
object |
OverloadsSymbol
An aggregate of overloaded functions sharing a name. Used to group overload sets in the corpus.
| Property | Type | Description |
|---|---|---|
name |
string | Unqualified name of the symbol, as written in the source. |
loc (required) |
string | Source location information for the symbol's declaration and definition. |
kind (required) |
string ("namespace" | "record" | "function" | "overloads" | "enum" | "enum-constant" | "typedef" | "variable" | "guide" | "namespace-alias" | "using" | "concept") |
Discriminator selecting the symbol kind (e.g. `"function"`, `"record"`). Each concrete symbol type constrains this field to a single literal value. |
id (required) |
string | Stable, base64-encoded identifier used for cross-references between DOM objects. |
access (required) |
string ("none" | "public" | "protected" | "private") |
Access specifier (`"public"`, `"protected"`, `"private"`); empty for namespace-scope members. |
extraction (required) |
string ("regular" | "see-below" | "implementation-defined" | "dependency") |
Why the symbol was extracted: `"regular"`, `"see-below"`, `"implementation-defined"`, or `"dependency"`. |
isCopyFromInherited (required) |
boolean | True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option). |
parent (required) |
string | Identifier of the enclosing scope, or empty when the symbol lives in the global namespace. |
doc |
DocComment |
Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented. |
funcClass (required) |
string ("normal" | "constructor" | "conversion" | "destructor") |
Shared special-function classification of the overload set, when applicable. |
overloadedOperator (required) |
string | Shared overloaded-operator name when the overload set is for an operator. |
members (required) |
array of string | Identifiers of the function declarations belonging to this overload set. |
returnType (required) |
Type |
Common return type when every overload shares it; absent otherwise. |
class (required) |
"symbol" |
Tag set to the literal `"symbol"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`. |
$meta |
object |
EnumSymbol
An enum declaration (scoped or unscoped).
| Property | Type | Description |
|---|---|---|
name |
string | Unqualified name of the symbol, as written in the source. |
loc (required) |
string | Source location information for the symbol's declaration and definition. |
kind (required) |
string ("namespace" | "record" | "function" | "overloads" | "enum" | "enum-constant" | "typedef" | "variable" | "guide" | "namespace-alias" | "using" | "concept") |
Discriminator selecting the symbol kind (e.g. `"function"`, `"record"`). Each concrete symbol type constrains this field to a single literal value. |
id (required) |
string | Stable, base64-encoded identifier used for cross-references between DOM objects. |
access (required) |
string ("none" | "public" | "protected" | "private") |
Access specifier (`"public"`, `"protected"`, `"private"`); empty for namespace-scope members. |
extraction (required) |
string ("regular" | "see-below" | "implementation-defined" | "dependency") |
Why the symbol was extracted: `"regular"`, `"see-below"`, `"implementation-defined"`, or `"dependency"`. |
isCopyFromInherited (required) |
boolean | True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option). |
parent (required) |
string | Identifier of the enclosing scope, or empty when the symbol lives in the global namespace. |
doc |
DocComment |
Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented. |
scoped (required) |
boolean | True for `enum class` / `enum struct`; false for unscoped enums. |
underlyingType |
Type |
Underlying integer type, when an explicit one was specified. |
constants (required) |
array of string | Identifiers of the enum's constants, in declaration order. |
class (required) |
"symbol" |
Tag set to the literal `"symbol"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`. |
$meta |
object |
EnumConstantSymbol
A single enumerator within an enum declaration.
| Property | Type | Description |
|---|---|---|
name |
string | Unqualified name of the symbol, as written in the source. |
loc (required) |
string | Source location information for the symbol's declaration and definition. |
kind (required) |
string ("namespace" | "record" | "function" | "overloads" | "enum" | "enum-constant" | "typedef" | "variable" | "guide" | "namespace-alias" | "using" | "concept") |
Discriminator selecting the symbol kind (e.g. `"function"`, `"record"`). Each concrete symbol type constrains this field to a single literal value. |
id (required) |
string | Stable, base64-encoded identifier used for cross-references between DOM objects. |
access (required) |
string ("none" | "public" | "protected" | "private") |
Access specifier (`"public"`, `"protected"`, `"private"`); empty for namespace-scope members. |
extraction (required) |
string ("regular" | "see-below" | "implementation-defined" | "dependency") |
Why the symbol was extracted: `"regular"`, `"see-below"`, `"implementation-defined"`, or `"dependency"`. |
isCopyFromInherited (required) |
boolean | True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option). |
parent (required) |
string | Identifier of the enclosing scope, or empty when the symbol lives in the global namespace. |
doc |
DocComment |
Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented. |
initializer |
string | Initializer expression as written, or empty when the enumerator takes its implicit value. |
class (required) |
"symbol" |
Tag set to the literal `"symbol"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`. |
$meta |
object |
TypedefSymbol
A type alias declaration (`typedef` or `using`).
| Property | Type | Description |
|---|---|---|
name |
string | Unqualified name of the symbol, as written in the source. |
loc (required) |
string | Source location information for the symbol's declaration and definition. |
kind (required) |
string ("namespace" | "record" | "function" | "overloads" | "enum" | "enum-constant" | "typedef" | "variable" | "guide" | "namespace-alias" | "using" | "concept") |
Discriminator selecting the symbol kind (e.g. `"function"`, `"record"`). Each concrete symbol type constrains this field to a single literal value. |
id (required) |
string | Stable, base64-encoded identifier used for cross-references between DOM objects. |
access (required) |
string ("none" | "public" | "protected" | "private") |
Access specifier (`"public"`, `"protected"`, `"private"`); empty for namespace-scope members. |
extraction (required) |
string ("regular" | "see-below" | "implementation-defined" | "dependency") |
Why the symbol was extracted: `"regular"`, `"see-below"`, `"implementation-defined"`, or `"dependency"`. |
isCopyFromInherited (required) |
boolean | True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option). |
parent (required) |
string | Identifier of the enclosing scope, or empty when the symbol lives in the global namespace. |
doc |
DocComment |
Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented. |
type (required) |
Type |
Aliased type. |
isUsing (required) |
boolean | True for `using`-style aliases; false for the `typedef` keyword. |
template |
TemplateInfo |
Template head if this is an alias template; absent for non-templates. |
class (required) |
"symbol" |
Tag set to the literal `"symbol"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`. |
$meta |
object |
VariableSymbol
A variable declaration: namespace-scope variable, static data member, or non-static data member.
| Property | Type | Description |
|---|---|---|
name |
string | Unqualified name of the symbol, as written in the source. |
loc (required) |
string | Source location information for the symbol's declaration and definition. |
kind (required) |
string ("namespace" | "record" | "function" | "overloads" | "enum" | "enum-constant" | "typedef" | "variable" | "guide" | "namespace-alias" | "using" | "concept") |
Discriminator selecting the symbol kind (e.g. `"function"`, `"record"`). Each concrete symbol type constrains this field to a single literal value. |
id (required) |
string | Stable, base64-encoded identifier used for cross-references between DOM objects. |
access (required) |
string ("none" | "public" | "protected" | "private") |
Access specifier (`"public"`, `"protected"`, `"private"`); empty for namespace-scope members. |
extraction (required) |
string ("regular" | "see-below" | "implementation-defined" | "dependency") |
Why the symbol was extracted: `"regular"`, `"see-below"`, `"implementation-defined"`, or `"dependency"`. |
isCopyFromInherited (required) |
boolean | True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option). |
parent (required) |
string | Identifier of the enclosing scope, or empty when the symbol lives in the global namespace. |
doc |
DocComment |
Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented. |
type (required) |
Type |
Declared type of the variable. |
template |
TemplateInfo |
Template head if this is a variable template. |
initializer |
string | Initializer expression as written, or empty when the variable has no initializer. |
storageClass |
string ("none" | "extern" | "static" | "auto" | "register") |
Storage class: `"static"`, `"extern"`, `"thread_local"`, etc., or empty. |
isInline (required) |
boolean | True when the variable is declared `inline`. |
isConstexpr (required) |
boolean | True when the variable is declared `constexpr`. |
isConstinit (required) |
boolean | True when the variable is declared `constinit`. |
isThreadLocal (required) |
boolean | True when the variable has thread-storage duration. |
attributes (required) |
array of string | Attributes attached to the declaration. |
isMaybeUnused (required) |
boolean | True when the variable carries `[[maybe_unused]]`. |
isDeprecated (required) |
boolean | True when the variable carries `[[deprecated]]`. |
hasNoUniqueAddress (required) |
boolean | True when the data member carries `[[no_unique_address]]`. |
isRecordField (required) |
boolean | True when the variable is a non-static data member of a class, struct, or union. |
isMutable (required) |
boolean | True when the data member is declared `mutable`. |
isVariant (required) |
boolean | True when the data member is part of an anonymous union. |
isBitfield (required) |
boolean | True when the data member is a bit-field. |
bitfieldWidth |
string | Bit-field width expression, when the member is a bit-field. |
class (required) |
"symbol" |
Tag set to the literal `"symbol"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`. |
$meta |
object |
GuideSymbol
A user-provided class-template deduction guide.
| Property | Type | Description |
|---|---|---|
name |
string | Unqualified name of the symbol, as written in the source. |
loc (required) |
string | Source location information for the symbol's declaration and definition. |
kind (required) |
string ("namespace" | "record" | "function" | "overloads" | "enum" | "enum-constant" | "typedef" | "variable" | "guide" | "namespace-alias" | "using" | "concept") |
Discriminator selecting the symbol kind (e.g. `"function"`, `"record"`). Each concrete symbol type constrains this field to a single literal value. |
id (required) |
string | Stable, base64-encoded identifier used for cross-references between DOM objects. |
access (required) |
string ("none" | "public" | "protected" | "private") |
Access specifier (`"public"`, `"protected"`, `"private"`); empty for namespace-scope members. |
extraction (required) |
string ("regular" | "see-below" | "implementation-defined" | "dependency") |
Why the symbol was extracted: `"regular"`, `"see-below"`, `"implementation-defined"`, or `"dependency"`. |
isCopyFromInherited (required) |
boolean | True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option). |
parent (required) |
string | Identifier of the enclosing scope, or empty when the symbol lives in the global namespace. |
doc |
DocComment |
Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented. |
deduced (required) |
Type |
Deduced class-template specialization the guide produces. |
template |
TemplateInfo |
Template parameters of the deduction guide. |
params (required) |
array of Param |
Parameter list used for argument deduction. |
explicit (required) |
string | Rendered `explicit` specifier, if any. |
class (required) |
"symbol" |
Tag set to the literal `"symbol"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`. |
$meta |
object |
NamespaceAliasSymbol
A namespace-alias declaration (`namespace alias = target;`).
| Property | Type | Description |
|---|---|---|
name |
string | Unqualified name of the symbol, as written in the source. |
loc (required) |
string | Source location information for the symbol's declaration and definition. |
kind (required) |
string ("namespace" | "record" | "function" | "overloads" | "enum" | "enum-constant" | "typedef" | "variable" | "guide" | "namespace-alias" | "using" | "concept") |
Discriminator selecting the symbol kind (e.g. `"function"`, `"record"`). Each concrete symbol type constrains this field to a single literal value. |
id (required) |
string | Stable, base64-encoded identifier used for cross-references between DOM objects. |
access (required) |
string ("none" | "public" | "protected" | "private") |
Access specifier (`"public"`, `"protected"`, `"private"`); empty for namespace-scope members. |
extraction (required) |
string ("regular" | "see-below" | "implementation-defined" | "dependency") |
Why the symbol was extracted: `"regular"`, `"see-below"`, `"implementation-defined"`, or `"dependency"`. |
isCopyFromInherited (required) |
boolean | True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option). |
parent (required) |
string | Identifier of the enclosing scope, or empty when the symbol lives in the global namespace. |
doc |
DocComment |
Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented. |
aliasedSymbol (required) |
IdentifierName |
Reference to the namespace this alias refers to. |
class (required) |
"symbol" |
Tag set to the literal `"symbol"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`. |
$meta |
object |
UsingSymbol
A `using`-declaration (introduces names from another scope, including using-enum).
| Property | Type | Description |
|---|---|---|
name |
string | Unqualified name of the symbol, as written in the source. |
loc (required) |
string | Source location information for the symbol's declaration and definition. |
kind (required) |
string ("namespace" | "record" | "function" | "overloads" | "enum" | "enum-constant" | "typedef" | "variable" | "guide" | "namespace-alias" | "using" | "concept") |
Discriminator selecting the symbol kind (e.g. `"function"`, `"record"`). Each concrete symbol type constrains this field to a single literal value. |
id (required) |
string | Stable, base64-encoded identifier used for cross-references between DOM objects. |
access (required) |
string ("none" | "public" | "protected" | "private") |
Access specifier (`"public"`, `"protected"`, `"private"`); empty for namespace-scope members. |
extraction (required) |
string ("regular" | "see-below" | "implementation-defined" | "dependency") |
Why the symbol was extracted: `"regular"`, `"see-below"`, `"implementation-defined"`, or `"dependency"`. |
isCopyFromInherited (required) |
boolean | True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option). |
parent (required) |
string | Identifier of the enclosing scope, or empty when the symbol lives in the global namespace. |
doc |
DocComment |
Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented. |
class (required) |
"symbol" |
Tag set to the literal `"symbol"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`. |
introducedName (required) |
Name |
Name introduced into the current scope, qualified by the source scope. |
shadowDeclarations (required) |
array of string | Symbols brought into scope by the using-declaration. |
$meta |
object |
ConceptSymbol
A concept declaration.
| Property | Type | Description |
|---|---|---|
name |
string | Unqualified name of the symbol, as written in the source. |
loc (required) |
string | Source location information for the symbol's declaration and definition. |
kind (required) |
string ("namespace" | "record" | "function" | "overloads" | "enum" | "enum-constant" | "typedef" | "variable" | "guide" | "namespace-alias" | "using" | "concept") |
Discriminator selecting the symbol kind (e.g. `"function"`, `"record"`). Each concrete symbol type constrains this field to a single literal value. |
id (required) |
string | Stable, base64-encoded identifier used for cross-references between DOM objects. |
access (required) |
string ("none" | "public" | "protected" | "private") |
Access specifier (`"public"`, `"protected"`, `"private"`); empty for namespace-scope members. |
extraction (required) |
string ("regular" | "see-below" | "implementation-defined" | "dependency") |
Why the symbol was extracted: `"regular"`, `"see-below"`, `"implementation-defined"`, or `"dependency"`. |
isCopyFromInherited (required) |
boolean | True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option). |
parent (required) |
string | Identifier of the enclosing scope, or empty when the symbol lives in the global namespace. |
doc |
DocComment |
Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented. |
template |
TemplateInfo |
Concept's template parameter list. |
constraint |
string | Constraint expression that defines the concept. |
class (required) |
"symbol" |
Tag set to the literal `"symbol"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`. |
$meta |
object |
NamedType
A type referred to by name (a class, an enum, a typedef, or a fundamental type like `int`).
| Property | Type | Description |
|---|---|---|
kind (required) |
string | Discriminator selecting the type kind. Each concrete type constrains this field to a single literal value. |
isPackExpansion (required) |
boolean | True when the type appears as the pattern of a pack expansion (`T...`). |
isConst (required) |
boolean | True when the type carries a top-level `const` qualifier. |
isVolatile (required) |
boolean | True when the type carries a top-level `volatile` qualifier. |
constraints (required) |
array of string | Constraint expressions associated with the type, such as those discovered by SFINAE detection around `std::enable_if_t<..., T>`. |
name (required) |
Name |
The name as written, including any qualifications and template arguments. |
fundamentalType |
string | Fundamental-type tag (`"int"`, `"double"`, ...) when the named type is a built-in type; empty otherwise. |
$meta |
object |
DecltypeType
A type expressed as `decltype(expr)`.
| Property | Type | Description |
|---|---|---|
kind (required) |
string | Discriminator selecting the type kind. Each concrete type constrains this field to a single literal value. |
isPackExpansion (required) |
boolean | True when the type appears as the pattern of a pack expansion (`T...`). |
isConst (required) |
boolean | True when the type carries a top-level `const` qualifier. |
isVolatile (required) |
boolean | True when the type carries a top-level `volatile` qualifier. |
constraints (required) |
array of string | Constraint expressions associated with the type, such as those discovered by SFINAE detection around `std::enable_if_t<..., T>`. |
operand |
string | The expression inside `decltype(...)`. |
$meta |
object |
AutoType
A placeholder type introduced by `auto` or `decltype(auto)`.
| Property | Type | Description |
|---|---|---|
kind (required) |
string | Discriminator selecting the type kind. Each concrete type constrains this field to a single literal value. |
isPackExpansion (required) |
boolean | True when the type appears as the pattern of a pack expansion (`T...`). |
isConst (required) |
boolean | True when the type carries a top-level `const` qualifier. |
isVolatile (required) |
boolean | True when the type carries a top-level `volatile` qualifier. |
constraints (required) |
array of string | Constraint expressions associated with the type, such as those discovered by SFINAE detection around `std::enable_if_t<..., T>`. |
keyword (required) |
string | Which placeholder was used: `"auto"` or `"decltype(auto)"`. |
constraint |
Name |
Concept constraint applied to the placeholder, if any. |
$meta |
object |
LValueReferenceType
An lvalue-reference type (`T&`).
| Property | Type | Description |
|---|---|---|
kind (required) |
string | Discriminator selecting the type kind. Each concrete type constrains this field to a single literal value. |
isPackExpansion (required) |
boolean | True when the type appears as the pattern of a pack expansion (`T...`). |
isConst (required) |
boolean | True when the type carries a top-level `const` qualifier. |
isVolatile (required) |
boolean | True when the type carries a top-level `volatile` qualifier. |
constraints (required) |
array of string | Constraint expressions associated with the type, such as those discovered by SFINAE detection around `std::enable_if_t<..., T>`. |
pointeeType (required) |
Type |
The referenced type. |
$meta |
object |
RValueReferenceType
An rvalue-reference type (`T&&`).
| Property | Type | Description |
|---|---|---|
kind (required) |
string | Discriminator selecting the type kind. Each concrete type constrains this field to a single literal value. |
isPackExpansion (required) |
boolean | True when the type appears as the pattern of a pack expansion (`T...`). |
isConst (required) |
boolean | True when the type carries a top-level `const` qualifier. |
isVolatile (required) |
boolean | True when the type carries a top-level `volatile` qualifier. |
constraints (required) |
array of string | Constraint expressions associated with the type, such as those discovered by SFINAE detection around `std::enable_if_t<..., T>`. |
pointeeType (required) |
Type |
The referenced type. |
$meta |
object |
PointerType
A pointer type (`T*`).
| Property | Type | Description |
|---|---|---|
kind (required) |
string | Discriminator selecting the type kind. Each concrete type constrains this field to a single literal value. |
isPackExpansion (required) |
boolean | True when the type appears as the pattern of a pack expansion (`T...`). |
isConst (required) |
boolean | True when the type carries a top-level `const` qualifier. |
isVolatile (required) |
boolean | True when the type carries a top-level `volatile` qualifier. |
constraints (required) |
array of string | Constraint expressions associated with the type, such as those discovered by SFINAE detection around `std::enable_if_t<..., T>`. |
pointeeType (required) |
Type |
The pointed-to type. |
$meta |
object |
MemberPointerType
A pointer-to-member type (`T C::*`).
| Property | Type | Description |
|---|---|---|
kind (required) |
string | Discriminator selecting the type kind. Each concrete type constrains this field to a single literal value. |
isPackExpansion (required) |
boolean | True when the type appears as the pattern of a pack expansion (`T...`). |
isConst (required) |
boolean | True when the type carries a top-level `const` qualifier. |
isVolatile (required) |
boolean | True when the type carries a top-level `volatile` qualifier. |
constraints (required) |
array of string | Constraint expressions associated with the type, such as those discovered by SFINAE detection around `std::enable_if_t<..., T>`. |
parentType (required) |
Type |
The class type the pointer is a member of. |
pointeeType (required) |
Type |
The type of the member being pointed to. |
$meta |
object |
ArrayType
An array type (`T[N]`).
| Property | Type | Description |
|---|---|---|
kind (required) |
string | Discriminator selecting the type kind. Each concrete type constrains this field to a single literal value. |
isPackExpansion (required) |
boolean | True when the type appears as the pattern of a pack expansion (`T...`). |
isConst (required) |
boolean | True when the type carries a top-level `const` qualifier. |
isVolatile (required) |
boolean | True when the type carries a top-level `volatile` qualifier. |
constraints (required) |
array of string | Constraint expressions associated with the type, such as those discovered by SFINAE detection around `std::enable_if_t<..., T>`. |
elementType (required) |
Type |
The element type. |
bounds |
string | Array bound expression as written, or empty for unknown-bound arrays. |
$meta |
object |
FunctionType
A function type (used for function pointers, pointers-to-members, etc.).
| Property | Type | Description |
|---|---|---|
kind (required) |
string | Discriminator selecting the type kind. Each concrete type constrains this field to a single literal value. |
isPackExpansion (required) |
boolean | True when the type appears as the pattern of a pack expansion (`T...`). |
isConst (required) |
boolean | True when the type carries a top-level `const` qualifier. |
isVolatile (required) |
boolean | True when the type carries a top-level `volatile` qualifier. |
constraints (required) |
array of string | Constraint expressions associated with the type, such as those discovered by SFINAE detection around `std::enable_if_t<..., T>`. |
returnType (required) |
Type |
The return type. |
paramTypes (required) |
array of Type |
Parameter types, in declaration order. |
refQualifier |
string | Reference qualifier on the implicit object parameter (for member-function types): `"&"`, `"&&"`, or empty. |
exceptionSpec (required) |
string | Rendered exception specification, if any. |
isVariadic (required) |
boolean | True when the function type accepts a C-style `...` argument list. |
$meta |
object |
IdentifierName
A plain (possibly qualified) name without template arguments, e.g. `std::vector` or `MyClass::nested`.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("identifier" | "specialization") |
Discriminator selecting the name kind. Each concrete name constrains this field to a single literal value. |
id (required) |
string | Identifier of the named symbol when it lives in the corpus; empty when the name refers to something outside it. |
identifier |
string | Unqualified spelling of the name, as written in the source. |
prefix |
Name |
Qualifying prefix (the `A::B::` part of `A::B::Name`); absent when the name is unqualified. |
$meta |
object |
SpecializationName
A template-id: a name applied to template arguments, e.g. `std::vector<int>` or `Outer<T>::Inner`.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("identifier" | "specialization") |
Discriminator selecting the name kind. Each concrete name constrains this field to a single literal value. |
id (required) |
string | Identifier of the named symbol when it lives in the corpus; empty when the name refers to something outside it. |
identifier |
string | Unqualified spelling of the name, as written in the source. |
prefix |
Name |
Qualifying prefix (the `A::B::` part of `A::B::Name`); absent when the name is unqualified. |
templateArgs (required) |
array of TArg |
Template arguments applied to the name, in declaration order. |
$meta |
object |
TypeTParam
A type template parameter (`template <typename T>` or `template <class T>`).
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("type" | "constant" | "template") |
Discriminator selecting the template-parameter kind. Each concrete TParam constrains this field to a single literal value. |
name |
string | Parameter name as written; empty for unnamed template parameters. |
isParameterPack (required) |
boolean | True when the template parameter is a parameter pack (`typename... Ts`, `int... Ns`, etc.). |
default |
TArg |
Default argument expression as written; absent when the parameter has no default. |
keyKind (required) |
string ("class" | "typename") |
Introducing keyword: `"typename"` or `"class"`. |
constraint |
Name |
Concept constraint applied to the parameter, if any. |
$meta |
object |
ConstantTParam
A non-type template parameter (`template <int N>`, `template <auto V>`, ...).
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("type" | "constant" | "template") |
Discriminator selecting the template-parameter kind. Each concrete TParam constrains this field to a single literal value. |
name |
string | Parameter name as written; empty for unnamed template parameters. |
isParameterPack (required) |
boolean | True when the template parameter is a parameter pack (`typename... Ts`, `int... Ns`, etc.). |
default |
TArg |
Default argument expression as written; absent when the parameter has no default. |
type (required) |
Type |
Declared type of the parameter. |
$meta |
object |
TemplateTParam
A template template parameter (`template <template <typename> class C>`).
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("type" | "constant" | "template") |
Discriminator selecting the template-parameter kind. Each concrete TParam constrains this field to a single literal value. |
name |
string | Parameter name as written; empty for unnamed template parameters. |
isParameterPack (required) |
boolean | True when the template parameter is a parameter pack (`typename... Ts`, `int... Ns`, etc.). |
default |
TArg |
Default argument expression as written; absent when the parameter has no default. |
params (required) |
array of TParam |
Inner template parameter list of the parameter. |
$meta |
object |
TypeTArg
A template argument that is a type, e.g. `int` in `std::vector<int>`.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("type" | "constant" | "template") |
Discriminator selecting the template-argument kind. Each concrete TArg constrains this field to a single literal value. |
isPackExpansion (required) |
boolean | True when the argument is a pack expansion (`Args...`). |
type (required) |
Type |
The argument type. |
$meta |
object |
ConstantTArg
A template argument that is a non-type value, e.g. `42` in `std::array<int, 42>`.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("type" | "constant" | "template") |
Discriminator selecting the template-argument kind. Each concrete TArg constrains this field to a single literal value. |
isPackExpansion (required) |
boolean | True when the argument is a pack expansion (`Args...`). |
value |
string | The argument expression as written. |
$meta |
object |
TemplateTArg
A template argument that is itself a template, used for template-template parameters.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("type" | "constant" | "template") |
Discriminator selecting the template-argument kind. Each concrete TArg constrains this field to a single literal value. |
isPackExpansion (required) |
boolean | True when the argument is a pack expansion (`Args...`). |
template (required) |
string | Identifier of the referenced template. |
name |
string | Name of the template as written. |
$meta |
object |
AdmonitionBlock
An admonition (note, warning, etc.) container introduced by `@note`, `@warning`, and similar commands.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("admonition" | "brief" | "code" | "heading" | "paragraph" | "list" | "definition-list" | "quote" | "thematic-break" | "footnote-definition" | "table" | "math" | "param" | "postcondition" | "precondition" | "returns" | "see" | "throws" | "t-param") |
Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value. |
blocks (required) |
array of Block |
Block-level children in document order. |
admonish (required) |
string ("none" | "note" | "tip" | "important" | "caution" | "warning") |
Admonition kind: `"note"`, `"tip"`, `"important"`, `"caution"`, or `"warning"`. |
$meta |
object |
BriefBlock
The brief description of a symbol, sourced from a `@brief` command, `@copybrief` reference, or the first sentence of the doc comment.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("admonition" | "brief" | "code" | "heading" | "paragraph" | "list" | "definition-list" | "quote" | "thematic-break" | "footnote-definition" | "table" | "math" | "param" | "postcondition" | "precondition" | "returns" | "see" | "throws" | "t-param") |
Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value. |
children (required) |
array of Inline |
Inline-level children in document order. |
copiedFrom (required) |
array of string | Identifier of the symbol the brief was copied from via `@copybrief`, or empty. |
$meta |
object |
CodeBlock
A fenced code block in the doc comment.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("admonition" | "brief" | "code" | "heading" | "paragraph" | "list" | "definition-list" | "quote" | "thematic-break" | "footnote-definition" | "table" | "math" | "param" | "postcondition" | "precondition" | "returns" | "see" | "throws" | "t-param") |
Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value. |
literal |
string | Verbatim contents of the code block. |
info |
string | Info string after the opening fence (typically the language identifier, e.g. `"cpp"`). |
$meta |
object |
HeadingBlock
A heading within the doc comment.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("admonition" | "brief" | "code" | "heading" | "paragraph" | "list" | "definition-list" | "quote" | "thematic-break" | "footnote-definition" | "table" | "math" | "param" | "postcondition" | "precondition" | "returns" | "see" | "throws" | "t-param") |
Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value. |
children (required) |
array of Inline |
Inline-level children in document order. |
level (required) |
integer | Heading depth (1 for top-level, 2 for second-level, and so on). |
$meta |
object |
ParagraphBlock
A paragraph: a sequence of inline elements terminated by a blank line.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("admonition" | "brief" | "code" | "heading" | "paragraph" | "list" | "definition-list" | "quote" | "thematic-break" | "footnote-definition" | "table" | "math" | "param" | "postcondition" | "precondition" | "returns" | "see" | "throws" | "t-param") |
Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value. |
children (required) |
array of Inline |
Inline-level children in document order. |
$meta |
object |
ListBlock
An ordered or unordered list.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("admonition" | "brief" | "code" | "heading" | "paragraph" | "list" | "definition-list" | "quote" | "thematic-break" | "footnote-definition" | "table" | "math" | "param" | "postcondition" | "precondition" | "returns" | "see" | "throws" | "t-param") |
Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value. |
items (required) |
array of ListItem |
List items, each holding a sequence of blocks. |
listKind (required) |
string ("unordered" | "ordered") |
Whether the list is ordered or unordered. |
$meta |
object |
DefinitionListBlock
A definition list (terms with descriptions).
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("admonition" | "brief" | "code" | "heading" | "paragraph" | "list" | "definition-list" | "quote" | "thematic-break" | "footnote-definition" | "table" | "math" | "param" | "postcondition" | "precondition" | "returns" | "see" | "throws" | "t-param") |
Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value. |
items (required) |
array of DefinitionListItem |
Definition-list items, each pairing a term with its description. |
$meta |
object |
QuoteBlock
A block-level quotation, holding nested blocks.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("admonition" | "brief" | "code" | "heading" | "paragraph" | "list" | "definition-list" | "quote" | "thematic-break" | "footnote-definition" | "table" | "math" | "param" | "postcondition" | "precondition" | "returns" | "see" | "throws" | "t-param") |
Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value. |
blocks (required) |
array of Block |
Block-level children in document order. |
$meta |
object |
ThematicBreakBlock
A horizontal rule (`---`) separating sections.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("admonition" | "brief" | "code" | "heading" | "paragraph" | "list" | "definition-list" | "quote" | "thematic-break" | "footnote-definition" | "table" | "math" | "param" | "postcondition" | "precondition" | "returns" | "see" | "throws" | "t-param") |
Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value. |
$meta |
object |
FootnoteDefinitionBlock
A footnote definition referenced by a `FootnoteReferenceInline` elsewhere in the comment.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("admonition" | "brief" | "code" | "heading" | "paragraph" | "list" | "definition-list" | "quote" | "thematic-break" | "footnote-definition" | "table" | "math" | "param" | "postcondition" | "precondition" | "returns" | "see" | "throws" | "t-param") |
Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value. |
blocks (required) |
array of Block |
Block-level children in document order. |
label |
string | Label that footnote references use to point at this definition. |
$meta |
object |
TableBlock
A table with header and body rows.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("admonition" | "brief" | "code" | "heading" | "paragraph" | "list" | "definition-list" | "quote" | "thematic-break" | "footnote-definition" | "table" | "math" | "param" | "postcondition" | "precondition" | "returns" | "see" | "throws" | "t-param") |
Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value. |
alignments (required) |
array of string ("none" | "left" | "center" | "right") |
Per-column alignment for the table. |
items (required) |
array of TableRow |
Rows of the table, each a sequence of cells. |
$meta |
object |
MathBlock
A display-math block.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("admonition" | "brief" | "code" | "heading" | "paragraph" | "list" | "definition-list" | "quote" | "thematic-break" | "footnote-definition" | "table" | "math" | "param" | "postcondition" | "precondition" | "returns" | "see" | "throws" | "t-param") |
Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value. |
literal |
string | Verbatim TeX/LaTeX source for the formula. |
$meta |
object |
ParamBlock
Documentation of a function parameter, sourced from a `@param` command.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("admonition" | "brief" | "code" | "heading" | "paragraph" | "list" | "definition-list" | "quote" | "thematic-break" | "footnote-definition" | "table" | "math" | "param" | "postcondition" | "precondition" | "returns" | "see" | "throws" | "t-param") |
Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value. |
children (required) |
array of Inline |
Inline-level children in document order. |
name |
string | Name of the documented parameter (matches a parameter of the enclosing function). |
direction (required) |
string ("none" | "in" | "out" | "inout") |
Parameter direction (`"in"`, `"out"`, `"inout"`), or empty when unspecified. |
$meta |
object |
PostconditionBlock
A `@post` clause describing a function postcondition.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("admonition" | "brief" | "code" | "heading" | "paragraph" | "list" | "definition-list" | "quote" | "thematic-break" | "footnote-definition" | "table" | "math" | "param" | "postcondition" | "precondition" | "returns" | "see" | "throws" | "t-param") |
Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value. |
children (required) |
array of Inline |
Inline-level children in document order. |
$meta |
object |
PreconditionBlock
A `@pre` clause describing a function precondition.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("admonition" | "brief" | "code" | "heading" | "paragraph" | "list" | "definition-list" | "quote" | "thematic-break" | "footnote-definition" | "table" | "math" | "param" | "postcondition" | "precondition" | "returns" | "see" | "throws" | "t-param") |
Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value. |
children (required) |
array of Inline |
Inline-level children in document order. |
$meta |
object |
ReturnsBlock
Documentation of the function's return value, sourced from a `@returns` / `@return` command.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("admonition" | "brief" | "code" | "heading" | "paragraph" | "list" | "definition-list" | "quote" | "thematic-break" | "footnote-definition" | "table" | "math" | "param" | "postcondition" | "precondition" | "returns" | "see" | "throws" | "t-param") |
Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value. |
children (required) |
array of Inline |
Inline-level children in document order. |
$meta |
object |
SeeBlock
A `@see` cross-reference clause.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("admonition" | "brief" | "code" | "heading" | "paragraph" | "list" | "definition-list" | "quote" | "thematic-break" | "footnote-definition" | "table" | "math" | "param" | "postcondition" | "precondition" | "returns" | "see" | "throws" | "t-param") |
Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value. |
children (required) |
array of Inline |
Inline-level children in document order. |
$meta |
object |
ThrowsBlock
Documentation of an exception thrown by the function, sourced from a `@throws` / `@throw` / `@exception` command.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("admonition" | "brief" | "code" | "heading" | "paragraph" | "list" | "definition-list" | "quote" | "thematic-break" | "footnote-definition" | "table" | "math" | "param" | "postcondition" | "precondition" | "returns" | "see" | "throws" | "t-param") |
Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value. |
children (required) |
array of Inline |
Inline-level children in document order. |
exception (required) |
ReferenceInline |
Name of the exception type the function may throw. |
$meta |
object |
TParamBlock
Documentation of a template parameter, sourced from a `@tparam` command.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("admonition" | "brief" | "code" | "heading" | "paragraph" | "list" | "definition-list" | "quote" | "thematic-break" | "footnote-definition" | "table" | "math" | "param" | "postcondition" | "precondition" | "returns" | "see" | "throws" | "t-param") |
Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value. |
children (required) |
array of Inline |
Inline-level children in document order. |
name |
string | Name of the documented template parameter. |
$meta |
object |
ReferenceInline
A cross-reference to a symbol in the corpus, produced by `@ref`, `@p`, or implicit name lookup.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("reference" | "copy-details" | "link" | "text" | "soft-break" | "line-break" | "code" | "emph" | "strong" | "image" | "footnote-reference" | "strikethrough" | "math" | "superscript" | "subscript" | "highlight") |
Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value. |
literal |
string | The reference text as written in the doc comment. |
id (required) |
string | Identifier of the resolved target, or empty when the reference could not be resolved. |
$meta |
object |
CopyDetailsInline
A pending `@copydetails` reference. Resolved during doc-comment finalization; surviving instances indicate an unresolved reference.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("reference" | "copy-details" | "link" | "text" | "soft-break" | "line-break" | "code" | "emph" | "strong" | "image" | "footnote-reference" | "strikethrough" | "math" | "superscript" | "subscript" | "highlight") |
Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value. |
string |
string | The reference string as written after `@copydetails`. |
id (required) |
string | Identifier of the referenced symbol once resolved, or empty if the reference could not be resolved. |
$meta |
object |
LinkInline
A hyperlink whose visible text is the contained inlines.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("reference" | "copy-details" | "link" | "text" | "soft-break" | "line-break" | "code" | "emph" | "strong" | "image" | "footnote-reference" | "strikethrough" | "math" | "superscript" | "subscript" | "highlight") |
Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value. |
children (required) |
array of Inline |
Inline-level children in document order. |
href |
string | Target URL of the link. |
$meta |
object |
TextInline
A run of plain text within a paragraph or other inline container.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("reference" | "copy-details" | "link" | "text" | "soft-break" | "line-break" | "code" | "emph" | "strong" | "image" | "footnote-reference" | "strikethrough" | "math" | "superscript" | "subscript" | "highlight") |
Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value. |
literal |
string | Verbatim text content. |
$meta |
object |
SoftBreakInline
A soft line break within a paragraph (rendered as whitespace by most generators).
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("reference" | "copy-details" | "link" | "text" | "soft-break" | "line-break" | "code" | "emph" | "strong" | "image" | "footnote-reference" | "strikethrough" | "math" | "superscript" | "subscript" | "highlight") |
Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value. |
$meta |
object |
LineBreakInline
A hard line break within a paragraph (`<br>`-equivalent).
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("reference" | "copy-details" | "link" | "text" | "soft-break" | "line-break" | "code" | "emph" | "strong" | "image" | "footnote-reference" | "strikethrough" | "math" | "superscript" | "subscript" | "highlight") |
Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value. |
$meta |
object |
CodeInline
An inline code span (`` `like this` ``).
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("reference" | "copy-details" | "link" | "text" | "soft-break" | "line-break" | "code" | "emph" | "strong" | "image" | "footnote-reference" | "strikethrough" | "math" | "superscript" | "subscript" | "highlight") |
Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value. |
children (required) |
array of Inline |
Inline-level children in document order. |
$meta |
object |
EmphInline
Emphasized inline text (typically rendered italic).
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("reference" | "copy-details" | "link" | "text" | "soft-break" | "line-break" | "code" | "emph" | "strong" | "image" | "footnote-reference" | "strikethrough" | "math" | "superscript" | "subscript" | "highlight") |
Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value. |
children (required) |
array of Inline |
Inline-level children in document order. |
$meta |
object |
StrongInline
Strongly emphasized inline text (typically rendered bold).
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("reference" | "copy-details" | "link" | "text" | "soft-break" | "line-break" | "code" | "emph" | "strong" | "image" | "footnote-reference" | "strikethrough" | "math" | "superscript" | "subscript" | "highlight") |
Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value. |
children (required) |
array of Inline |
Inline-level children in document order. |
$meta |
object |
ImageInline
An inline image.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("reference" | "copy-details" | "link" | "text" | "soft-break" | "line-break" | "code" | "emph" | "strong" | "image" | "footnote-reference" | "strikethrough" | "math" | "superscript" | "subscript" | "highlight") |
Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value. |
children (required) |
array of Inline |
Inline-level children in document order. |
src |
string | Image source URL or path. |
alt |
string | Alternative text for the image. |
$meta |
object |
FootnoteReferenceInline
An inline reference pointing at a `FootnoteDefinitionBlock` with the matching label.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("reference" | "copy-details" | "link" | "text" | "soft-break" | "line-break" | "code" | "emph" | "strong" | "image" | "footnote-reference" | "strikethrough" | "math" | "superscript" | "subscript" | "highlight") |
Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value. |
label |
string | Label of the footnote being referenced. |
$meta |
object |
StrikethroughInline
Inline text with strikethrough styling.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("reference" | "copy-details" | "link" | "text" | "soft-break" | "line-break" | "code" | "emph" | "strong" | "image" | "footnote-reference" | "strikethrough" | "math" | "superscript" | "subscript" | "highlight") |
Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value. |
children (required) |
array of Inline |
Inline-level children in document order. |
$meta |
object |
MathInline
An inline math span.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("reference" | "copy-details" | "link" | "text" | "soft-break" | "line-break" | "code" | "emph" | "strong" | "image" | "footnote-reference" | "strikethrough" | "math" | "superscript" | "subscript" | "highlight") |
Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value. |
literal |
string | Verbatim TeX/LaTeX source for the formula. |
$meta |
object |
SuperscriptInline
Inline text rendered as superscript.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("reference" | "copy-details" | "link" | "text" | "soft-break" | "line-break" | "code" | "emph" | "strong" | "image" | "footnote-reference" | "strikethrough" | "math" | "superscript" | "subscript" | "highlight") |
Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value. |
children (required) |
array of Inline |
Inline-level children in document order. |
$meta |
object |
SubscriptInline
Inline text rendered as subscript.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("reference" | "copy-details" | "link" | "text" | "soft-break" | "line-break" | "code" | "emph" | "strong" | "image" | "footnote-reference" | "strikethrough" | "math" | "superscript" | "subscript" | "highlight") |
Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value. |
children (required) |
array of Inline |
Inline-level children in document order. |
$meta |
object |
HighlightInline
Inline text rendered with highlight (e.g. `<mark>`) styling.
| Property | Type | Description |
|---|---|---|
kind (required) |
string ("reference" | "copy-details" | "link" | "text" | "soft-break" | "line-break" | "code" | "emph" | "strong" | "image" | "footnote-reference" | "strikethrough" | "math" | "superscript" | "subscript" | "highlight") |
Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value. |
children (required) |
array of Inline |
Inline-level children in document order. |
$meta |
object |
Type
A C++ type. The DOM serializes the most-derived kind (named, pointer, reference, array, function, etc.); see the `oneOf` entries for the per-kind shape.
One of:
Name
A (possibly qualified) name occurring in source, such as the name of a base class or the type referenced by a `NamedType`.
One of:
TParam
A template parameter of a templated symbol. The DOM serializes the most-derived kind (type, non-type, template); see the `oneOf` entries for the per-kind shape.
One of:
TArg
A template argument supplied to a template specialization. The DOM serializes the most-derived kind (type, non-type, template); see the `oneOf` entries for the per-kind shape.
One of:
Block
A block-level node in a parsed documentation comment (paragraphs, lists, headings, and command blocks like `@brief` / `@param` / `@returns`).
One of:
Inline
An inline-level node in a parsed documentation comment (text, emphasis, code spans, references, etc.).
One of:
Location
A source location (file path plus line/column).
| Property | Type | Description |
|---|---|---|
shortPath |
string | Path relative to the configured source root, suitable for display. |
sourcePath |
string | Path relative to the source-root setting, used for documentation cross-references. |
lineNumber (required) |
integer | 1-based line number of the location. |
columnNumber (required) |
integer | 1-based column number of the location. |
documented (required) |
boolean | True when a doc comment was attached at this location. |
$meta |
object |
Param
A function parameter.
| Property | Type | Description |
|---|---|---|
type (required) |
Type |
Declared parameter type. |
name |
string | Parameter name as written in the declaration. Empty for unnamed parameters. |
default |
string | Default argument expression as written, or absent if the parameter has no default. |
$meta |
object |
TemplateInfo
Template metadata attached to a templated symbol: parameters, arguments (for specializations), and a reference to the primary template.
| Property | Type | Description |
|---|---|---|
params (required) |
array of TParam |
Template parameter list, in declaration order. |
args (required) |
array of TArg |
Template arguments applied to the primary template, in declaration order. Present on (partial) specializations and instantiations; empty for the primary template itself. |
requires |
string | Trailing `requires`-clause expression as written; empty when the template has no constraints. |
primary (required) |
string | Identifier of the primary template this entry specializes; empty when this is itself the primary. |
$meta |
object |
SourceInfo
Source-location metadata for a symbol: every declaration site plus the definition site, when one exists.
| Property | Type | Description |
|---|---|---|
defLoc |
Location |
Location of the symbol's definition; absent when no definition was extracted. |
loc (required) |
array of Location |
Locations of the symbol's declarations (one entry per source declaration). |
$meta |
object |
BaseInfo
A base-class clause of a class or struct declaration.
| Property | Type | Description |
|---|---|---|
type (required) |
Type |
Base type as written in the inheritance clause (a class or template specialization). |
access (required) |
string ("none" | "public" | "protected" | "private") |
Access specifier of the base (`"public"`, `"protected"`, or `"private"`). |
isVirtual (required) |
boolean | True when the base is inherited virtually. |
$meta |
object |
FriendInfo
A `friend` declaration appearing inside a class or struct.
| Property | Type | Description |
|---|---|---|
type |
Type |
Type befriended, used when the friend declaration names a type rather than a corpus symbol. |
id (required) |
string | Identifier of the symbol befriended when it lives in the corpus; empty when the friend points outside it. |
$meta |
object |
Config Fields
The Config object represents the configuration object.
It includes all values provided to MrDocs in the configuration file or via the command line.
Please refer to the configuration file reference for more information.