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

adoc

AsciiDoc format.

html

HTML format.

xml

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.

Output Formats Scatter Plot
  • 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:

  1. 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.

  2. Asciidoc: Similar to HTML in convenience, Asciidoc files can be easily converted to HTML and multiple other formats with backends.

  3. 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 require linkcss: 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 (default true). Set to false to skip copying.

  • stylesdir: directory (relative to the output root) used for linked styles, e.g. css results in css/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

symbol

Symbol Object

The symbol being rendered.

config

Config Object

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

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:

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.