Global namespace

Namespaces

NameDescription
mrdocs Core MrDocs support utilities.

mrdocs namespace

Core MrDocs support utilities.

Namespaces

NameDescription
doc Doc-comment enums and helpers that describe admonition kinds.
dom Objects representing JSON-like values.
files Filesystem helpers (join, temp, canonicalize) used throughout MrDocs.
helpers Handlebars helper registry for templates.
js JavaScript interop helpers for the embedded runtime.
lua Lua interop helpers for the optional scripting/backend integration.
report Reporting utilities (messages, statistics, sinks).

Types

NameDescription
AnyFileVisitor Polymorphic visitor for files discovered during traversal.
ArrayType C++ array type (bounded or unbounded).
ArrayView A non-owning, read-only view over a contiguous array of T.
AutoType Represents auto or decltype(auto) placeholder type.
BadExpectedAccess Base class for accessing an empty Expected.
BadExpectedAccess<void> Exception thrown when reading the value of an empty Expected.
BaseInfo Metadata for a direct base.
ConceptSymbol Info for concepts.
Config Configuration used to generate the Corpus and Docs
ConstantExprInfo Represents an expression with a (possibly known) value
ConstantTArg Non-type template argument.
ConstantTParam A constant template parameter
Corpus The collection of declarations in extracted form.
DecltypeType decltype(expr) type wrapper.
DocComment A processed documentation comment attached to a declaration.
DomCorpus Front-end factory for producing Dom nodes.
EnumConstantSymbol Info for enum constants.
EnumSymbol Metadata for an enumeration declaration.
Error Holds the description of an error, or success.
Exception Type of all exceptions thrown by the API.
ExecutorGroup A set of execution agents for performing concurrent work.
ExecutorGroupBase Base class that owns a pool of execution agents and a shared work queue.
Expected A container holding an error or a value.
Expected<T, E> Expected specialization for void values. Holds either success (no payload) or an unexpected error E.
Expected<T&, E> Expected specialization for lvalue references. Holds either a bound reference to T or an unexpected error E.
ExplicitInfo Stores only the operand of the explicit-specifier or noexcept-specifier as a string. The complete expression is not preserved at this time. This is a temporary design and may be improved in the future.
ExprInfo Represents an expression
FormatString A format string with source location.
FriendInfo Info for friend declarations.
FunctionSymbol Metadata for a function or method.
FunctionType Function type with parameters, qualifiers, and noexcept info.
Generator Base class for documentation generators.
GlobPattern A glob pattern matcher
GuideSymbol Info for deduction guides.
Handlebars A handlebars environment
HandlebarsError An error thrown or returned by Handlebars
HandlebarsOptions Options for handlebars
IdentifierName Represents an identifier
LValueReferenceType An lvalue reference type.
Location Source location of a symbol or entity.
MemberPointerType Pointer-to-member type (object or function).
Name Represents a name for a named Type
NamedType A type identified by name (possibly fundamental).
NamespaceAliasSymbol Info for namespace aliases.
NamespaceSymbol Describes a namespace and its members.
NamespaceTranche Buckets the members that appear inside a namespace.
NoexceptInfo Captures a noexcept specification and its evaluated form.
Optional A compact optional that automatically uses nullable_traits<T> when available.
Optional<T&> Optional reference wrapper that never owns storage.
OutputRef Reference to output stream used by handlebars
Overload Combines multiple callable types into a single overloaded function object.
OverloadsSymbol Represents a set of function overloads.
Param Represents a single function parameter
ParseResult The result of a parse operation.
PathGlobPattern A glob pattern matcher for paths
PointerType Pointer type wrapper.
Polymorphic A polymorphic value-type.
RValueReferenceType An rvalue reference type.
RangeFor Range adapter to expose first/last flags inside range-for loops.
RecordInterface The aggregated interface for a given struct, class, or union.
RecordSymbol Metadata for struct, class, or union.
RecordTranche A group of members that have the same access specifier.
ReferenceDirectories Reference directories used to resolve paths
ScopeExit Execute a callable when the enclosing scope exits unless dismissed.
ScopeExitRestore RAII helper that restores a referenced value on scope exit.
SourceInfo Stores source information for a declaration.
SourceLocation A source location with filename prettification.
SpecializationName Represents a (possibly qualified) symbol name with template arguments.
SplitLinesAdaptor Range adaptor that constructs a SplitLinesView.
SplitLinesView A lazy input range of std::string_view lines split on all known line breaks.
StringHash Transparent hash functor for string-like keys.
Symbol Base class with common properties of all symbols
SymbolCommonBase Base class for providing variant discriminator functions.
SymbolGlobPattern A glob pattern matcher for C++ symbols
SymbolID A unique identifier for a symbol.
TArg Base class for any template argument.
TArgCommonBase CRTP base that fixes the argument kind.
TParam Base class for a template parameter declaration.
TParamCommonBase CRTP base that fixes the parameter kind.
TaskGroup A subset of possible work in a thread pool.
TemplateInfo Information about templates and specializations thereof.
TemplateTArg Template template argument.
TemplateTParam Template template parameter.
ThreadPool A pool of threads for executing work concurrently.
Type A possibly qualified type.
TypeCommonBase CRTP base that ties a concrete type to a fixed TypeKind.
TypeTArg Type template argument.
TypeTParam Type template parameter.
TypedefSymbol Info for typedef and using declarations.
Unexpected Holds an unexpected error value for Expected.
UsingSymbol Info for using declarations.
VariableSymbol A variable.
Visitor A visitor for a type
YCombinator Enables recursive lambdas by passing a self-reference as the first argument.
add_const_from Propagate const qualification from From to To, keeping references.
add_cv_from Propagate both const and volatile qualifiers from From to To.
add_cvref_from Propagate cv-qualification and reference category from From to To.
add_lvalue_reference_from Propagate lvalue-reference from From to To if present.
add_reference_from Propagate reference qualification from From to To.
add_rvalue_reference_from Propagate rvalue-reference from From to To if present.
add_volatile_from Propagate volatile qualification from From to To, keeping references.
any_callable A movable, type-erased function object.
any_callable<R(Args...)> Type-erased callable wrapper for signature R(Args...).
make_dependent Dependent alias of T, useful for delaying instantiation.
nullable_traits nullable_traits<T> defines how to treat a T as “nullable” without an external engaged bit.
nullable_traits<Location> nullable_traits specialization for Location.
nullable_traits<T> nullable_traits for types with a sentinel.
nullable_traits<Polymorphic<T>> nullable_traits for Polymorphic<T>.
sentinel_traits Defines a customization point for types that have an intrinsic sentinel value denoting “null”.
sentinel_traits<std::nullptr_t> sentinel_traits specialization for std::nullptr_t.
sentinel_traits<T> sentinel_traits specialization for unsigned integral types.
sentinel_traits<T*> sentinel_traits specialization for raw pointers.
unexpect_t Tag type used to select unexpected construction.
unlock_guard A scoped guard which unlocks a mutex.
UnorderedStringMap unordered_map keyed by std::string with transparent hashing.
UnorderedStringMultiMap unordered_multimap keyed by std::string with transparent hashing.
add_const_from_t Alias for add_const_from<From, To>::type.
add_cv_from_t Alias for add_cv_from<From, To>::type.
add_cvref_from_t Alias for add_cvref_from<From, To>::type.
add_lvalue_reference_from_t Alias for add_lvalue_reference_from<From, To>::type.
add_reference_from_t Alias for add_reference_from<From, To>::type.
add_rvalue_reference_from_t Alias for add_rvalue_reference_from<From, To>::type.
add_volatile_from_t Alias for add_volatile_from<From, To>::type.
make_dependent_t Alias for make_dependent<T, U>::type.

Enums

NameDescription
AccessKind Access specifier.
AutoKind The kind of auto keyword used in a declaration.
ConstexprKind constexpr/consteval specifier kinds
ExplicitKind Explicit specifier kinds
ExtractionMode Determine why a symbol is extracted
FileKind Classifies where a file originates from.
FunctionClass Function classifications
FundamentalTypeKind Categorically describes a fundamental type.
ListKind Classification of list ordering.
NameKind Kinds of names that appear in type and symbol metadata.
NoexceptKind Exception specification kinds
OperatorKind Operator kinds
QualifierKind Type qualifiers
RecordKeyKind The kind of record: struct, class, or union.
ReferenceKind Reference type kinds
StorageClassKind Storage class kinds
SymbolKind Info variant discriminator
TArgKind The kind of template argument.
TParamKeyKind The keyword a template parameter was declared with
TParamKind Discriminates the different template parameter categories.
TableAlignmentKind Horizontal alignment for table columns.
TemplateSpecKind The kind of template or specialization.
TypeKind Variants of C++ types captured in metadata.
UsingClass The class of using declaration.

Functions

NameDescription
CompareDerived Compares two polymorphic objects that have visit functions
HTMLEscape HTMLEscape overloads
addMember Append a new function overload to the set.
allMembers allMembers overloads
assert_failed Handler invoked when MRDOCS_ASSERT fails.
bottomUpTraverse Traverse a DocComment tree bottom-up (post-order).
canMerge Check whether two symbols may be merged.
cast cast overloads
cast_or_null cast_or_null overloads
compareSymbolNames Return the result of comparing s0 to s1.
contains Determine if a range contains a specific element.
contains_any Determine if a range contains any of the specified elements.
contains_n Determine if a range contains at least N instances of the specified element.
contains_n_any Determine if a range contains at least N instances of any of the specified elements.
countSymbolKind Count the number of SymbolKind enumerators.
createFrame Create child data objects.
dyn_cast dyn_cast overloads
dyn_cast_or_null dyn_cast_or_null overloads
endsWithOneOf Determine if a string ends with one of the specified characters
escapeExpression
findGenerator Find a generator by its id.
find_last_of Find the last element in a range that matches an element in the specified range.
forEachFile forEachFile overloads
formatError Return a formatted error.
fromString Convert a string to a FundamentalTypeKind.
getDefaultAccessString Return the default accessibility for a record key kind.
getOperatorKind Return the short name of an operator as a string.
getOperatorKindFromSuffix Return the short name of an operator as a string.
getOperatorName Return the name of an operator as a string.
getOperatorReadableName Return the human-readable name of the operator
getParents getParents overloads
getPrimaryLocation getPrimaryLocation overloads
getSafeOperatorName Return the safe name of an operator as a string.
getShortOperatorName Return the short name of an operator as a string.
getSinglePageFullPath Return the full path for single page output.
innerType Return the inner type.
innerTypePtr Return the inner type.
innermostType innermostType overloads
installGenerator Install a custom generator.
isAlphaNumeric isAlphaNumeric overloads
isAlphabetic isAlphabetic overloads
isBinaryOperator Determines whether the operator is potentially binary.
isDigit isDigit overloads
isEmpty Determine if a value is empty
isLowerCase isLowerCase overloads
isUnaryOperator Determines whether the operator is potentially unary.
isUpperCase isUpperCase overloads
isWhitespace isWhitespace overloads
is_null is_null helper that uses nullable_traits<T> if available.
is_one_of Determine if an element is equal to any of the elements in the specified range.
isa Return true if the polymorphic object holds a value of type To.
isa_or_null Return true if pointer is non-null and referent is of type To.
leastSpecific Compare ExtractionModes and returns the least specific
ltrim ltrim overloads
makeChar Apply the "char" specifier to the type
makeLong Apply the "long" specifier to the type
makeOverload Factory function that creates an Overload from the given callables.
makeShort Apply the "short" specifier to the type
makeSigned Apply the "signed" specifier to the type
makeUnsigned Apply the "unsigned" specifier to the type
makeVisitor Make a visitor for a base type
make_array_view make_array_view overloads
make_null make_null helper that uses nullable_traits<T> if available.
match Applies a set of callables to a std::variant using std::visit and Overload.
merge merge overloads
mostSpecific Compare ExtractionModes and returns the most specific
null_of null_of helper that constructs a null T using nullable_traits<T>.
operator| Pipe a contiguous character range into the adaptor.
overrides Determine if one function would override the other
parse Parse a string view
reindentCode Reindent code by removing the common leading spaces and adding the specified indent.
replace Return the substring without leading and trailing horizontal whitespace.
rtrim rtrim overloads
safeString safeString overloads
startsWithOneOf Determine if a string starts with one of the specified characters
swap swap overloads
tag_invoke tag_invoke overloads
toBase16Str Convert a SymbolID to a string
toCamelCase Convert a string to camelCase using ASCII letter rules.
toKebabCase Convert a string to kebab-case using ASCII letter rules.
toLowerCase toLowerCase overloads
toPascalCase Convert a string to PascalCase using ASCII letter rules.
toSnakeCase Convert a string to snake_case using ASCII letter rules.
toString toString overloads
toUpperCase toUpperCase overloads
to_underlying Return the value as its underlying type.
topDownTraverse Traverse a DocComment tree top-down (pre-order).
trim trim overloads
visit visit overloads
visitIndexed Visits a std::variant and calls the combined callable with the active index and the value.
yCombinator Factory that creates a YCombinator from a callable.
operator<< Write to output
operator== Equality operators
operator!= Inequality operators
operator< Less-than operators
operator<= Less-than-or-equal operators
operator> Greater-than operators
operator>= Greater-than-or-equal operators
operator<=> Three-way comparison operators

Variables

NameDescription
splitLines Split a string view into lines, recognizing all common line breaks
unexpect Tag object to request unexpected construction.

Concepts

NameDescription
ClearableContainerLike Internal concept that matches “empty-clear default-constructible” types.
DocCommentNode Concept to check if a type represents a DocComment node.
DocCommentNodeTraversable Types that can be traversed by DocComment helpers.
HasParse Concept to determine if there's a parse function for a type.
HasSentinel Concept that is satisfied when sentinel_traits<T> declares a usable sentinel.
SymbolParent A concept for types that have Symbol members.
dereferenceable Determine if a type is dereferenceable
has_nullable_traits_v Utility concept that returns true if T has a nullable_traits specialization enabled.
pair_like Concept to check if a type is pair-like
polymorphic_storage_for Concept to check if a type is representing a polymorphic storage
range_of Concept to check if a type is a range of T
range_of_tuple_like Concept to check if a range is a range of tuple-like elements
reference_constructs_from_temporary_v Like reference_converts_from_temporary_v, but for construction.
reference_converts_from_temporary_v True when binding To from From would require a temporary conversion.
tuple_like Concept to check if a type is tuple-like

Deduction Guides

NameDescription
ArrayView<T> Deduce ArrayView element type from C-style array.
ArrayView<T> Deduce ArrayView element type from pointer and count.
Overload<Ts...> Class template argument deduction guide for Overload.
RangeFor<Container> Deduction guide for RangeFor.
ScopeExit<F> Deduction guide for ScopeExit.
ScopeExitRestore<T> Deduction guide for ScopeExitRestore taking a reference.
ScopeExitRestore<T> Deduction guide for ScopeExitRestore taking a reference and new value.
Unexpected<E> Deduction guide for Unexpected, forwarding the error type.

Using Declarations

NameDescription
source_location Alias to std::source_location when available.

mrdocs::doc namespace

Doc-comment enums and helpers that describe admonition kinds.

Types

NameDescription
AdmonitionBlock A block for side-notes like tips, warnings, notes
Block A piece of block content
BlockCommonBase Base class for providing variant discriminator functions.
BlockContainer A composite block that stores a sequence of child blocks.
BriefBlock The brief description
CodeBlock Preformatted source code.
CodeInline Inline code (monospaced) used for short snippets within text.
CopyDetailsInline Documentation copied from another symbol.
DefinitionListBlock A list of terms paired with definitions.
DefinitionListItem An item in a definition list
EmphInline Emphasized text (typically rendered in italics).
FootnoteDefinitionBlock Text defining the content of a footnote reference.
FootnoteReferenceInline A reference to a symbol.
HeadingBlock A manually specified section heading.
HighlightInline Highlighted text span used to call out important words.
ImageInline An image.
Inline A Node containing a string of text.
InlineCommonBase Base class for providing variant discriminator functions.
InlineContainer An internal node in the inline element tree.
InlineTextLeaf A leaf node that stores a string of text.
LineBreakInline A hard line break that renders as ""
LinkInline A hyperlink.
ListBlock A list of list items
ListItem An item in a ListBlock
MathBlock A block of LaTeX math
MathInline An inline LaTeX math expression
ParagraphBlock A sequence of text nodes.
ParamBlock Documentation for a function parameter
PostconditionBlock Text describing conditions guaranteed on successful exit.
PreconditionBlock Text describing required conditions before entry.
QuoteBlock A quoted block of text.
ReferenceInline A reference to a symbol.
ReturnsBlock Documentation for a function return type
SeeBlock A
SoftBreakInline A line break that may render as a space
StrikethroughInline Strikethrough span to show removed or deprecated text.
StrongInline Strong emphasis span (typically rendered in bold).
SubscriptInline Subscript text fragment (lowered baseline).
SuperscriptInline Superscript text fragment (raised baseline).
TParamBlock Documentation for a template parameter
TableBlock A table block
TableCell A cell in a table
TableRow An item in a list
TextInline A Node containing a string of text.
ThematicBreakBlock A horizontal thematic break separating sections.
ThrowsBlock Documentation for a function exception clause

Enums

NameDescription
AdmonitionKind An admonishment style.
BlockKind Enumerates the different kinds of DocComment blocks.
InlineKind Enumerates the different kinds of inline nodes.
ParamDirection Parameter pass direction.
Parts Which parts of the documentation to copy.

Functions

NameDescription
getAsPlainText getAsPlainText overloads
isBlockCommand Return true if the given block kind represents a command block.
isEmpty Determine if the inline is empty
ltrim ltrim overloads
rtrim rtrim overloads
tag_invoke tag_invoke overloads
toString toString overloads
traverse Traverse a list of inlines.
trim trim overloads
visit visit overloads
operator== Equality delegates to the three-way comparison.
operator<=> Three-way comparison operators

mrdocs::dom namespace

Objects representing JSON-like values.

Namespaces

NameDescription
JSON JSON serialization helpers for DOM values.

Types

NameDescription
Array An array of values
ArrayImpl Abstract array interface.
DefaultArrayImpl The default array implementation.
DefaultFunctionImpl Function implementation that wraps a fixed-arity callable.
DefaultObjectImpl The default Object implementation.
Function Value-semantic wrapper over a callable exposed to the DOM layer.
FunctionImpl Value-semantic wrapper over a callable exposed to the DOM layer.
LazyArrayImpl Lazy array implementation
LazyArrayImpl Lazy array implementation
LazyObjectImpl Lazy object implementation.
LazyObjectImpl Lazy object implementation.
LazyObjectMapTag Customization point tag.
Object A container of key and value pairs.
ObjectImpl Abstract object interface.
String UTF-8 string value used by the DOM.
Value A variant container for any kind of Dom value.
ValueFromTag Customization point tag.
VariadicFunctionImpl Function implementation that forwards the entire Array to a callable.
function_traits Helper traits to extract return and argument types from callables.
function_traits<F> Traits specialization for functors/lambdas.
function_traits<R(*)(Args...)> Traits specialization for function pointers.
function_traits<R(Args...)> Traits specialization for free functions.
function_traits<R const volatile(C::*)(Args...)> Traits specialization for member functions.

Enums

NameDescription
Kind The type of data in a Value.

Functions

NameDescription
LazyArray LazyArray overloads
LazyObject LazyObject overloads
TransformArray Return a new dom::Array based on a transformed lazy array implementation.
ValueFrom ValueFrom overloads
makeInvocable Create a Function from a fixed-arity invocable.
makeVariadicInvocable Create a Function that receives the argument Array directly.
newArray Return a new array using a custom implementation.
newFunction Return a diagnostic string.
newObject Return a new object using a custom implementation.
operator&& Return the first dom::Value that is not truthy, or the last one.
operator+ Addition operators
operator|| Return the first dom::Value that is truthy, or the last one.
stringOrNull Return a non-empty string, or a null.
swap swap overloads
toString toString overloads
operator== Equality operators
operator!= Return the result of comparing two strings.
operator<=> Three-way comparison operators

Concepts

NameDescription
HasLazyObjectMap Determine if T can be converted to dom::Value.
HasLazyObjectMapWithContext Concept to determine if a type can be mapped to a dom::LazyObjectImpl with a user-provided conversion.
HasLazyObjectMapWithoutContext Concept to determine if a type can be mapped to a dom::LazyObjectImpl with a user-provided conversion.
HasStandaloneValueFrom Determine if T can be converted to dom::Value without a context.
HasValueFrom Determine if T can be converted to dom::Value.
HasValueFromWithContext Concept to determine if a type can be converted to a dom::Value with a user-provided conversion.
HasValueFromWithoutContext Concept to determine if a type can be converted to a dom::Value with a user-provided conversion.
StringLikeTy Satisfied if StringTy is convertible to String but not a String.
function_traits_convertible_to_value Concept selecting callables convertible to dom::Value.
has_function_args_for_default_function_impl Concept requiring all arguments be convertible to dom::Value.
has_function_traits Concept true when function_traits is defined for F.
has_function_traits_for_default_function_impl Concept combining argument and return constraints for default wrapper.
has_invoke_expected_result_convertible_to_dom_value Concept true when F returns Expected<dom::Value> or Expected<void>.
has_invoke_result_convertible_to_dom_value Concept true when F returns a dom::Value or void.
has_invoke_result_for_default_function_impl Concept enabling default function wrapper for supported return types.

mrdocs::dom::JSON namespace

JSON serialization helpers for DOM values.

Functions

NameDescription
stringify Stringify a value as JSON

mrdocs::files namespace

Filesystem helpers (join, temp, canonicalize) used throughout MrDocs.

Enums

NameDescription
FileType The type of a file.

Functions

NameDescription
appendPath appendPath overloads
createDirectory Create a directory.
exists Determine if a path exists
getFileName Return the filename part of the path.
getFileText Return the contents of a file as a string.
getFileType Return the file type or an error
getParentDir Return the parent directory.
getSourceFilename Return the relevant suffix of a source file path.
isAbsolute Return true if pathName is absolute.
isDirectory Determine if a path is a directory.
isDirsy Return true if pathName ends in a separator.
isLexicalDirectory Determine lexically if a path is a directory.
isPosixStyle Check if the path is posix style.
makeAbsolute Return an absolute path from a possibly relative path.
makeDirsy Append a trailing native separator if not already present.
makePosixStyle Convert all backward slashes to forward slashes.
normalizeDir Return a normalized directory.
normalizePath Return a normalized path.
requireAbsolute Return an error if pathName is not absolute.
requireDirectory Return an error if the path is not a directory.
startsWith Checks if the given path starts with the specified prefix.
withExtension Return the filename with a new or different extension.

mrdocs::helpers namespace

Handlebars helper registry for templates.

Functions

NameDescription
and_fn "and" helper function
detag_fn "detag" helper function
eq_fn "eq" helper function
increment_fn "increment" helper function
ne_fn "ne" helper function
not_fn "not" helper function
or_fn "or" helper function
registerAntoraHelpers Register all the Antora helpers into a Handlebars instance
registerBuiltinHelpers Register all the built-in helpers into a Handlebars instance
registerConstructorHelpers Register contructor helpers into a Handlebars instance
registerContainerHelpers Register helpers to manipulate composite data types
registerLogicalHelpers Register logical helpers into a Handlebars instance
registerMathHelpers Register math helpers into a Handlebars instance
registerStringHelpers Register string helpers into a Handlebars instance
registerTypeHelpers Register type helpers into a Handlebars instance
relativize_fn "relativize" helper function
select_fn "select" helper function
year_fn "year" helper function

mrdocs::js namespace

JavaScript interop helpers for the embedded runtime.

Types

NameDescription
Array Lightweight handle to a JavaScript array.
Boolean Boolean wrapper for JavaScript values.
Context An isolated JavaScript interpreter instance.
Object Object wrapper for JavaScript values.
Scope A JavaScript scope for value lifetime management.
String String wrapper for JavaScript values.
Value An ECMAScript value.

Enums

NameDescription
Type Types of values.

Functions

NameDescription
operator&& Return the first Value that is not truthy, or the last one.
operator|| Return the first Value that is truthy, or the last one.
registerHelper Register a JavaScript helper function
swap Swap two values.
toString Return value as a string.
operator== Compare two values for equality.
operator!= Inequality operators
operator<=> Compare two values for inequality.

mrdocs::lua namespace

Lua interop helpers for the optional scripting/backend integration.

Types

NameDescription
Access Internal tag granting access to lua internals.
Context A reference to an instance of a Lua interpreter.
Function A Lua function.
Param A lazy container to push values to the Lua stack.
Scope Stack scope guard for Lua calls.
String A Lua string.
Table A Lua table.
Value A Lua value.
zstring A null-terminated string.
FunctionPtr Pointer to a Lua-callable function returning Value.

Enums

NameDescription
Type Types of values.

mrdocs::report namespace

Reporting utilities (messages, statistics, sinks).

Types

NameDescription
Located Parameter type that adds a source location to a value.
Results Provides statistics on the number of reported messages.

Enums

NameDescription
Level Severity levels attached to reported messags.

Functions

NameDescription
debug Emit a debug-level diagnostic for troubleshooting.
error Emit an error that indicates failure but allows continuation.
fatal Emit a fatal error and mark the report as the highest severity.
getMinimumLevel Get the minimum threshold level for reporting.
info Emit an informational message for users.
log Format a message to the console.
print Report a message to the console.
setMinimumLevel Set the minimum threshold level for reporting.
setSourceLocationWarnings If true, source location information will be printed with warnings, errors, and fatal messages.
trace Emit a trace-level diagnostic (verbose, off by default).
warn Emit a warning that does not stop execution.

Variables

NameDescription
results Holds current statistics on reported messages.

Core MrDocs support utilities.

Description

The public mrdocs namespace here centralizes assert/assume hooks so we can swap behavior (terminate, throw, debugbreak) in one place without leaking platform specifics into the rest of the codebase.

Doc-comment enums and helpers that describe admonition kinds.

Reporting utilities (messages, statistics, sinks).

The report namespace owns severity enums, message structs, and output sinks so tooling and libraries emit diagnostics in a uniform, testable format regardless of UI.

Namespaces

NameDescription
doc Doc-comment enums and helpers that describe admonition kinds.
dom Objects representing JSON-like values.
files Filesystem helpers (join, temp, canonicalize) used throughout MrDocs.
helpers Handlebars helper registry for templates.
js JavaScript interop helpers for the embedded runtime.
lua Lua interop helpers for the optional scripting/backend integration.
report Reporting utilities (messages, statistics, sinks).

Types

NameDescription
AnyFileVisitor Polymorphic visitor for files discovered during traversal.
ArrayType C++ array type (bounded or unbounded).
ArrayView A non-owning, read-only view over a contiguous array of T.
AutoType Represents auto or decltype(auto) placeholder type.
BadExpectedAccess Base class for accessing an empty Expected.
BadExpectedAccess<void> Exception thrown when reading the value of an empty Expected.
BaseInfo Metadata for a direct base.
ConceptSymbol Info for concepts.
Config Configuration used to generate the Corpus and Docs
ConstantExprInfo Represents an expression with a (possibly known) value
ConstantTArg Non-type template argument.
ConstantTParam A constant template parameter
Corpus The collection of declarations in extracted form.
DecltypeType decltype(expr) type wrapper.
DocComment A processed documentation comment attached to a declaration.
DomCorpus Front-end factory for producing Dom nodes.
EnumConstantSymbol Info for enum constants.
EnumSymbol Metadata for an enumeration declaration.
Error Holds the description of an error, or success.
Exception Type of all exceptions thrown by the API.
ExecutorGroup A set of execution agents for performing concurrent work.
ExecutorGroupBase Base class that owns a pool of execution agents and a shared work queue.
Expected A container holding an error or a value.
Expected<T, E> Expected specialization for void values. Holds either success (no payload) or an unexpected error E.
Expected<T&, E> Expected specialization for lvalue references. Holds either a bound reference to T or an unexpected error E.
ExplicitInfo Stores only the operand of the explicit-specifier or noexcept-specifier as a string. The complete expression is not preserved at this time. This is a temporary design and may be improved in the future.
ExprInfo Represents an expression
FormatString A format string with source location.
FriendInfo Info for friend declarations.
FunctionSymbol Metadata for a function or method.
FunctionType Function type with parameters, qualifiers, and noexcept info.
Generator Base class for documentation generators.
GlobPattern A glob pattern matcher
GuideSymbol Info for deduction guides.
Handlebars A handlebars environment
HandlebarsError An error thrown or returned by Handlebars
HandlebarsOptions Options for handlebars
IdentifierName Represents an identifier
LValueReferenceType An lvalue reference type.
Location Source location of a symbol or entity.
MemberPointerType Pointer-to-member type (object or function).
Name Represents a name for a named Type
NamedType A type identified by name (possibly fundamental).
NamespaceAliasSymbol Info for namespace aliases.
NamespaceSymbol Describes a namespace and its members.
NamespaceTranche Buckets the members that appear inside a namespace.
NoexceptInfo Captures a noexcept specification and its evaluated form.
Optional A compact optional that automatically uses nullable_traits<T> when available.
Optional<T&> Optional reference wrapper that never owns storage.
OutputRef Reference to output stream used by handlebars
Overload Combines multiple callable types into a single overloaded function object.
OverloadsSymbol Represents a set of function overloads.
Param Represents a single function parameter
ParseResult The result of a parse operation.
PathGlobPattern A glob pattern matcher for paths
PointerType Pointer type wrapper.
Polymorphic A polymorphic value-type.
RValueReferenceType An rvalue reference type.
RangeFor Range adapter to expose first/last flags inside range-for loops.
RecordInterface The aggregated interface for a given struct, class, or union.
RecordSymbol Metadata for struct, class, or union.
RecordTranche A group of members that have the same access specifier.
ReferenceDirectories Reference directories used to resolve paths
ScopeExit Execute a callable when the enclosing scope exits unless dismissed.
ScopeExitRestore RAII helper that restores a referenced value on scope exit.
SourceInfo Stores source information for a declaration.
SourceLocation A source location with filename prettification.
SpecializationName Represents a (possibly qualified) symbol name with template arguments.
SplitLinesAdaptor Range adaptor that constructs a SplitLinesView.
SplitLinesView A lazy input range of std::string_view lines split on all known line breaks.
StringHash Transparent hash functor for string-like keys.
Symbol Base class with common properties of all symbols
SymbolCommonBase Base class for providing variant discriminator functions.
SymbolGlobPattern A glob pattern matcher for C++ symbols
SymbolID A unique identifier for a symbol.
TArg Base class for any template argument.
TArgCommonBase CRTP base that fixes the argument kind.
TParam Base class for a template parameter declaration.
TParamCommonBase CRTP base that fixes the parameter kind.
TaskGroup A subset of possible work in a thread pool.
TemplateInfo Information about templates and specializations thereof.
TemplateTArg Template template argument.
TemplateTParam Template template parameter.
ThreadPool A pool of threads for executing work concurrently.
Type A possibly qualified type.
TypeCommonBase CRTP base that ties a concrete type to a fixed TypeKind.
TypeTArg Type template argument.
TypeTParam Type template parameter.
TypedefSymbol Info for typedef and using declarations.
Unexpected Holds an unexpected error value for Expected.
UsingSymbol Info for using declarations.
VariableSymbol A variable.
Visitor A visitor for a type
YCombinator Enables recursive lambdas by passing a self-reference as the first argument.
add_const_from Propagate const qualification from From to To, keeping references.
add_cv_from Propagate both const and volatile qualifiers from From to To.
add_cvref_from Propagate cv-qualification and reference category from From to To.
add_lvalue_reference_from Propagate lvalue-reference from From to To if present.
add_reference_from Propagate reference qualification from From to To.
add_rvalue_reference_from Propagate rvalue-reference from From to To if present.
add_volatile_from Propagate volatile qualification from From to To, keeping references.
any_callable A movable, type-erased function object.
any_callable<R(Args...)> Type-erased callable wrapper for signature R(Args...).
make_dependent Dependent alias of T, useful for delaying instantiation.
nullable_traits nullable_traits<T> defines how to treat a T as “nullable” without an external engaged bit.
nullable_traits<Location> nullable_traits specialization for Location.
nullable_traits<T> nullable_traits for types with a sentinel.
nullable_traits<Polymorphic<T>> nullable_traits for Polymorphic<T>.
sentinel_traits Defines a customization point for types that have an intrinsic sentinel value denoting “null”.
sentinel_traits<std::nullptr_t> sentinel_traits specialization for std::nullptr_t.
sentinel_traits<T> sentinel_traits specialization for unsigned integral types.
sentinel_traits<T*> sentinel_traits specialization for raw pointers.
unexpect_t Tag type used to select unexpected construction.
unlock_guard A scoped guard which unlocks a mutex.
UnorderedStringMap unordered_map keyed by std::string with transparent hashing.
UnorderedStringMultiMap unordered_multimap keyed by std::string with transparent hashing.
add_const_from_t Alias for add_const_from<From, To>::type.
add_cv_from_t Alias for add_cv_from<From, To>::type.
add_cvref_from_t Alias for add_cvref_from<From, To>::type.
add_lvalue_reference_from_t Alias for add_lvalue_reference_from<From, To>::type.
add_reference_from_t Alias for add_reference_from<From, To>::type.
add_rvalue_reference_from_t Alias for add_rvalue_reference_from<From, To>::type.
add_volatile_from_t Alias for add_volatile_from<From, To>::type.
make_dependent_t Alias for make_dependent<T, U>::type.

Enums

NameDescription
AccessKind Access specifier.
AutoKind The kind of auto keyword used in a declaration.
ConstexprKind constexpr/consteval specifier kinds
ExplicitKind Explicit specifier kinds
ExtractionMode Determine why a symbol is extracted
FileKind Classifies where a file originates from.
FunctionClass Function classifications
FundamentalTypeKind Categorically describes a fundamental type.
ListKind Classification of list ordering.
NameKind Kinds of names that appear in type and symbol metadata.
NoexceptKind Exception specification kinds
OperatorKind Operator kinds
QualifierKind Type qualifiers
RecordKeyKind The kind of record: struct, class, or union.
ReferenceKind Reference type kinds
StorageClassKind Storage class kinds
SymbolKind Info variant discriminator
TArgKind The kind of template argument.
TParamKeyKind The keyword a template parameter was declared with
TParamKind Discriminates the different template parameter categories.
TableAlignmentKind Horizontal alignment for table columns.
TemplateSpecKind The kind of template or specialization.
TypeKind Variants of C++ types captured in metadata.
UsingClass The class of using declaration.

Functions

NameDescription
CompareDerived Compares two polymorphic objects that have visit functions
HTMLEscape HTMLEscape overloads
addMember Append a new function overload to the set.
allMembers allMembers overloads
assert_failed Handler invoked when MRDOCS_ASSERT fails.
bottomUpTraverse Traverse a DocComment tree bottom-up (post-order).
canMerge Check whether two symbols may be merged.
cast cast overloads
cast_or_null cast_or_null overloads
compareSymbolNames Return the result of comparing s0 to s1.
contains Determine if a range contains a specific element.
contains_any Determine if a range contains any of the specified elements.
contains_n Determine if a range contains at least N instances of the specified element.
contains_n_any Determine if a range contains at least N instances of any of the specified elements.
countSymbolKind Count the number of SymbolKind enumerators.
createFrame Create child data objects.
dyn_cast dyn_cast overloads
dyn_cast_or_null dyn_cast_or_null overloads
endsWithOneOf Determine if a string ends with one of the specified characters
escapeExpression
findGenerator Find a generator by its id.
find_last_of Find the last element in a range that matches an element in the specified range.
forEachFile forEachFile overloads
formatError Return a formatted error.
fromString Convert a string to a FundamentalTypeKind.
getDefaultAccessString Return the default accessibility for a record key kind.
getOperatorKind Return the short name of an operator as a string.
getOperatorKindFromSuffix Return the short name of an operator as a string.
getOperatorName Return the name of an operator as a string.
getOperatorReadableName Return the human-readable name of the operator
getParents getParents overloads
getPrimaryLocation getPrimaryLocation overloads
getSafeOperatorName Return the safe name of an operator as a string.
getShortOperatorName Return the short name of an operator as a string.
getSinglePageFullPath Return the full path for single page output.
innerType Return the inner type.
innerTypePtr Return the inner type.
innermostType innermostType overloads
installGenerator Install a custom generator.
isAlphaNumeric isAlphaNumeric overloads
isAlphabetic isAlphabetic overloads
isBinaryOperator Determines whether the operator is potentially binary.
isDigit isDigit overloads
isEmpty Determine if a value is empty
isLowerCase isLowerCase overloads
isUnaryOperator Determines whether the operator is potentially unary.
isUpperCase isUpperCase overloads
isWhitespace isWhitespace overloads
is_null is_null helper that uses nullable_traits<T> if available.
is_one_of Determine if an element is equal to any of the elements in the specified range.
isa Return true if the polymorphic object holds a value of type To.
isa_or_null Return true if pointer is non-null and referent is of type To.
leastSpecific Compare ExtractionModes and returns the least specific
ltrim ltrim overloads
makeChar Apply the "char" specifier to the type
makeLong Apply the "long" specifier to the type
makeOverload Factory function that creates an Overload from the given callables.
makeShort Apply the "short" specifier to the type
makeSigned Apply the "signed" specifier to the type
makeUnsigned Apply the "unsigned" specifier to the type
makeVisitor Make a visitor for a base type
make_array_view make_array_view overloads
make_null make_null helper that uses nullable_traits<T> if available.
match Applies a set of callables to a std::variant using std::visit and Overload.
merge merge overloads
mostSpecific Compare ExtractionModes and returns the most specific
null_of null_of helper that constructs a null T using nullable_traits<T>.
operator| Pipe a contiguous character range into the adaptor.
overrides Determine if one function would override the other
parse Parse a string view
reindentCode Reindent code by removing the common leading spaces and adding the specified indent.
replace Return the substring without leading and trailing horizontal whitespace.
rtrim rtrim overloads
safeString safeString overloads
startsWithOneOf Determine if a string starts with one of the specified characters
swap swap overloads
tag_invoke tag_invoke overloads
toBase16Str Convert a SymbolID to a string
toCamelCase Convert a string to camelCase using ASCII letter rules.
toKebabCase Convert a string to kebab-case using ASCII letter rules.
toLowerCase toLowerCase overloads
toPascalCase Convert a string to PascalCase using ASCII letter rules.
toSnakeCase Convert a string to snake_case using ASCII letter rules.
toString toString overloads
toUpperCase toUpperCase overloads
to_underlying Return the value as its underlying type.
topDownTraverse Traverse a DocComment tree top-down (pre-order).
trim trim overloads
visit visit overloads
visitIndexed Visits a std::variant and calls the combined callable with the active index and the value.
yCombinator Factory that creates a YCombinator from a callable.
operator<< Write to output
operator== Equality operators
operator!= Inequality operators
operator< Less-than operators
operator<= Less-than-or-equal operators
operator> Greater-than operators
operator>= Greater-than-or-equal operators
operator<=> Three-way comparison operators

Variables

NameDescription
splitLines Split a string view into lines, recognizing all common line breaks
unexpect Tag object to request unexpected construction.

Concepts

NameDescription
ClearableContainerLike Internal concept that matches “empty-clear default-constructible” types.
DocCommentNode Concept to check if a type represents a DocComment node.
DocCommentNodeTraversable Types that can be traversed by DocComment helpers.
HasParse Concept to determine if there's a parse function for a type.
HasSentinel Concept that is satisfied when sentinel_traits<T> declares a usable sentinel.
SymbolParent A concept for types that have Symbol members.
dereferenceable Determine if a type is dereferenceable
has_nullable_traits_v Utility concept that returns true if T has a nullable_traits specialization enabled.
pair_like Concept to check if a type is pair-like
polymorphic_storage_for Concept to check if a type is representing a polymorphic storage
range_of Concept to check if a type is a range of T
range_of_tuple_like Concept to check if a range is a range of tuple-like elements
reference_constructs_from_temporary_v Like reference_converts_from_temporary_v, but for construction.
reference_converts_from_temporary_v True when binding To from From would require a temporary conversion.
tuple_like Concept to check if a type is tuple-like

Deduction Guides

NameDescription
ArrayView<T> Deduce ArrayView element type from C-style array.
ArrayView<T> Deduce ArrayView element type from pointer and count.
Overload<Ts...> Class template argument deduction guide for Overload.
RangeFor<Container> Deduction guide for RangeFor.
ScopeExit<F> Deduction guide for ScopeExit.
ScopeExitRestore<T> Deduction guide for ScopeExitRestore taking a reference.
ScopeExitRestore<T> Deduction guide for ScopeExitRestore taking a reference and new value.
Unexpected<E> Deduction guide for Unexpected, forwarding the error type.

Using Declarations

NameDescription
source_location Alias to std::source_location when available.

Doc-comment enums and helpers that describe admonition kinds.

Types

NameDescription
AdmonitionBlock A block for side-notes like tips, warnings, notes
Block A piece of block content
BlockCommonBase Base class for providing variant discriminator functions.
BlockContainer A composite block that stores a sequence of child blocks.
BriefBlock The brief description
CodeBlock Preformatted source code.
CodeInline Inline code (monospaced) used for short snippets within text.
CopyDetailsInline Documentation copied from another symbol.
DefinitionListBlock A list of terms paired with definitions.
DefinitionListItem An item in a definition list
EmphInline Emphasized text (typically rendered in italics).
FootnoteDefinitionBlock Text defining the content of a footnote reference.
FootnoteReferenceInline A reference to a symbol.
HeadingBlock A manually specified section heading.
HighlightInline Highlighted text span used to call out important words.
ImageInline An image.
Inline A Node containing a string of text.
InlineCommonBase Base class for providing variant discriminator functions.
InlineContainer An internal node in the inline element tree.
InlineTextLeaf A leaf node that stores a string of text.
LineBreakInline A hard line break that renders as ""
LinkInline A hyperlink.
ListBlock A list of list items
ListItem An item in a ListBlock
MathBlock A block of LaTeX math
MathInline An inline LaTeX math expression
ParagraphBlock A sequence of text nodes.
ParamBlock Documentation for a function parameter
PostconditionBlock Text describing conditions guaranteed on successful exit.
PreconditionBlock Text describing required conditions before entry.
QuoteBlock A quoted block of text.
ReferenceInline A reference to a symbol.
ReturnsBlock Documentation for a function return type
SeeBlock A
SoftBreakInline A line break that may render as a space
StrikethroughInline Strikethrough span to show removed or deprecated text.
StrongInline Strong emphasis span (typically rendered in bold).
SubscriptInline Subscript text fragment (lowered baseline).
SuperscriptInline Superscript text fragment (raised baseline).
TParamBlock Documentation for a template parameter
TableBlock A table block
TableCell A cell in a table
TableRow An item in a list
TextInline A Node containing a string of text.
ThematicBreakBlock A horizontal thematic break separating sections.
ThrowsBlock Documentation for a function exception clause

Enums

NameDescription
AdmonitionKind An admonishment style.
BlockKind Enumerates the different kinds of DocComment blocks.
InlineKind Enumerates the different kinds of inline nodes.
ParamDirection Parameter pass direction.
Parts Which parts of the documentation to copy.

Functions

NameDescription
getAsPlainText getAsPlainText overloads
isBlockCommand Return true if the given block kind represents a command block.
isEmpty Determine if the inline is empty
ltrim ltrim overloads
rtrim rtrim overloads
tag_invoke tag_invoke overloads
toString toString overloads
traverse Traverse a list of inlines.
trim trim overloads
visit visit overloads
operator== Equality delegates to the three-way comparison.
operator<=> Three-way comparison operators

A block for side-notes like tips, warnings, notes

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/AdmonitionBlock.hpp>
struct AdmonitionBlock final
    : BlockCommonBase<BlockKind::Admonition>
    , BlockContainer

Description

This paragraph represents an admonition, such as a note, tip, important, caution, or warning.

Syntax:

@note text

Base Classes

Name Description
BlockCommonBase<BlockKind::Admonition>Base class for providing variant discriminator functions.
BlockContainerA composite block that stores a sequence of child blocks.

Member Functions

NameDescription
AdmonitionBlock [constructor]Construct an admonition with the given kind.
asBlockContainer asBlockContainer overloads
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isAdmonition
isBrief
isCode
isDefinitionList
isFootnoteDefinition
isHeading
isList
isMath
isParagraph
isParam
isPostcondition
isPrecondition
isQuote
isReturns
isSee
isTParam
isTable
isThematicBreak
isThrows

Data Members

NameDescription
Title Optional title for the admonition
admonish The kind of admonition
blocks Child blocks contained within this composite block.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the first text elements
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the last text elements
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the text elements

Construct an admonition with the given kind.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/AdmonitionBlock.hpp>
explicit
AdmonitionBlock(AdmonitionKind const admonish_ = AdmonitionKind::none) noexcept;

Parameters

Name Description
admonish_ The object to construct from

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/AdmonitionBlock.hpp>

Equality compares the admonition contents.

constexpr
bool
operator==(AdmonitionBlock const& rhs) const noexcept = default;
» more...

Equality compares the stored child blocks.

constexpr
bool
operator==(BlockContainer const& rhs) const = default;
» more...

Equality compares the admonition contents.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/AdmonitionBlock.hpp>
constexpr
bool
operator==(AdmonitionBlock const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares the stored child blocks.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
bool
operator==(BlockContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Compare admonitions by kind, title, and contents.

auto
operator<=>(AdmonitionBlock const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Admonition> const& rhs) const = default;
» more...

Order containers lexicographically by their children.

std::strong_ordering
operator<=>(BlockContainer const& rhs) const;
» more...

Compare admonitions by kind, title, and contents.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/AdmonitionBlock.hpp>
auto
operator<=>(AdmonitionBlock const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Admonition> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Order containers lexicographically by their children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
std::strong_ordering
operator<=>(BlockContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isAdmonition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isBrief() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isDefinitionList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isFootnoteDefinition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isHeading() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isParagraph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPostcondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPrecondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isQuote() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isReturns() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isSee() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isTParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isTable() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isThematicBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isThrows() noexcept;

Optional title for the admonition

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/AdmonitionBlock.hpp>
Optional<Polymorphic<Inline>> Title;

The kind of admonition

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/AdmonitionBlock.hpp>
AdmonitionKind admonish;

Description

This is typically a string in other implementations.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr static
BlockKind kind_id;

A piece of block content

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
struct Block;

Description

The top level is a list of blocks.

There are two types of blocks: headings and paragraphs.

Member Functions

NameDescription
~Block [destructor] [virtual]Virtual to allow deleting through a base pointer.
asBlock asBlock overloads
operator== Equality compares the block contents.
operator<=> Three-way comparison on the block contents.

Data Members

NameDescription
Kind Discriminator identifying which concrete block this instance holds.

Protected Member Functions

NameDescription
Block [constructor]Constructors

Non-Member Functions

Name Description
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.

Derived Classes

Name Description
BlockCommonBase Base class for providing variant discriminator functions.

Virtual to allow deleting through a base pointer.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
virtual
~Block() = default;

asBlock overloads

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

View this object as a Block reference.

constexpr
Block const&
asBlock() const noexcept;
» more...

View this object as a mutable Block reference.

constexpr
Block&
asBlock() noexcept;
» more...

View this object as a Block reference.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
Block const&
asBlock() const noexcept;

Return Value

A piece of block content

View this object as a mutable Block reference.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
Block&
asBlock() noexcept;

Return Value

A piece of block content

Equality compares the block contents.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
bool
operator==(Block const& other) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
other The right operand

Three-way comparison on the block contents.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(Block const& other) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

Discriminator identifying which concrete block this instance holds.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
BlockKind Kind = BlockKind::Paragraph;

Constructors

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Default-construct a paragraph block.

constexpr
Block() = default;
» more...

Construct a block with the specified discriminant.

explicit
Block(BlockKind const kind_) noexcept;
» more...

Default-construct a paragraph block.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
Block() = default;

Construct a block with the specified discriminant.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
explicit
Block(BlockKind const kind_) noexcept;

Parameters

Name Description
kind_ The object to construct from

Base class for providing variant discriminator functions.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
template<BlockKind K>
struct BlockCommonBase
    : Block

Description

This offers functions that return a boolean at compile-time, indicating if the most-derived class is a certain type.

Base Classes

Name Description
BlockA piece of block content

Member Functions

NameDescription
~BlockCommonBase [destructor] [virtual]Virtual to keep dynamic dispatch working for block hierarchies.
asBlock asBlock overloads
operator== Equality compares the block contents.
operator<=> Three-way comparison operators

Data Members

NameDescription
Kind Discriminator identifying which concrete block this instance holds.

Static Data Members

NameDescription
kind_id The variant discriminator constant of the most-derived class.

Protected Member Functions

NameDescription
BlockCommonBase [constructor]Construct with the fixed block kind.

Non-Member Functions

Name Description
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.

Derived Classes

Name Description
AdmonitionBlock A block for side-notes like tips, warnings, notes
BriefBlock The brief description
CodeBlock Preformatted source code.
DefinitionListBlock A list of terms paired with definitions.
FootnoteDefinitionBlock Text defining the content of a footnote reference.
HeadingBlock A manually specified section heading.
ListBlock A list of list items
MathBlock A block of LaTeX math
ParagraphBlock A sequence of text nodes.
ParamBlock Documentation for a function parameter
PostconditionBlock Text describing conditions guaranteed on successful exit.
PreconditionBlock Text describing required conditions before entry.
QuoteBlock A quoted block of text.
ReturnsBlock Documentation for a function return type
SeeBlock A
TParamBlock Documentation for a template parameter
TableBlock A table block
ThematicBreakBlock A horizontal thematic break separating sections.
ThrowsBlock Documentation for a function exception clause

Virtual to keep dynamic dispatch working for block hierarchies.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
virtual
~BlockCommonBase() override = default;

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Compare two blocks that share the same kind_id.

auto
operator<=>(BlockCommonBase const& rhs) const = default;
» more...

Three-way comparison on the block contents.

constexpr
auto
operator<=>(Block const& other) const = default;
» more...

Compare two blocks that share the same kind_id.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
auto
operator<=>(BlockCommonBase const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison on the block contents.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(Block const& other) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

The variant discriminator constant of the most-derived class.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
inline constexpr static
BlockKind kind_id = K;

Description

It only distinguishes from Block::kind in that it is a constant.

Construct with the fixed block kind.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
explicit
BlockCommonBase();

A composite block that stores a sequence of child blocks.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
struct BlockContainer;

Member Functions

NameDescription
asBlockContainer asBlockContainer overloads
operator== Equality compares the stored child blocks.
operator<=> Order containers lexicographically by their children.

Data Members

NameDescription
blocks Child blocks contained within this composite block.

Non-Member Functions

Name Description
ltrimRemoves leading whitespace from the first text elements
rtrimRemoves trailing whitespace from the last text elements
trimRemoves leading and trailing whitespace from the text elements

Derived Classes

Name Description
AdmonitionBlock A block for side-notes like tips, warnings, notes
DefinitionListItem An item in a definition list
FootnoteDefinitionBlock Text defining the content of a footnote reference.
ListItem An item in a ListBlock
QuoteBlock A quoted block of text.

asBlockContainer overloads

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Access the container as a mutable view.

BlockContainer&
asBlockContainer();
» more...

Access the container as a const view.

BlockContainer const&
asBlockContainer() const;
» more...

Access the container as a mutable view.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
BlockContainer&
asBlockContainer();

Return Value

A composite block that stores a sequence of child blocks.

Access the container as a const view.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
BlockContainer const&
asBlockContainer() const;

Return Value

A composite block that stores a sequence of child blocks.

Equality compares the stored child blocks.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
bool
operator==(BlockContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Order containers lexicographically by their children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
std::strong_ordering
operator<=>(BlockContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Child blocks contained within this composite block.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
std::vector<Polymorphic<Block>> blocks;

The brief description

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BriefBlock.hpp>
struct BriefBlock final
    : BlockCommonBase<BlockKind::Brief>
    , InlineContainer

Description

Syntax:

@brief summary

Base Classes

Name Description
BlockCommonBase<BlockKind::Brief>Base class for providing variant discriminator functions.
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
BriefBlock [constructor]Constructors
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality compares child sequences.
operator<=> Three-way comparison operators

Static Member Functions

Name
isAdmonition
isBrief
isCode
isDefinitionList
isFootnoteDefinition
isHeading
isList
isMath
isParagraph
isParam
isPostcondition
isPrecondition
isQuote
isReturns
isSee
isTParam
isTable
isThematicBreak
isThrows

Data Members

NameDescription
children Child inline elements contained here.
copiedFrom Names of declarations whose brief text was reused.

Static Data Members

Name
kind_id

Using Declarations

NameDescription
BriefBlock Inherit inline container constructors.
operator= Reuse inline container assignment operators.

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Constructors

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BriefBlock.hpp>

Create an empty brief.

constexpr
BriefBlock() = default;
» more...

Copy-construct from another brief.

constexpr
BriefBlock(BriefBlock const& other) = default;
» more...

Create an empty brief.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BriefBlock.hpp>
constexpr
BriefBlock() = default;

Copy-construct from another brief.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BriefBlock.hpp>
constexpr
BriefBlock(BriefBlock const& other) = default;

Parameters

Name Description
other The object to copy construct from

Assignment operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Copy-assign another brief.

constexpr
BriefBlock&
operator=(BriefBlock const& other) = default;
» more...

Copy-assign child nodes.

constexpr
InlineContainer&
operator=(InlineContainer const& other) = default;
» more...

Move-assign child nodes.

constexpr
InlineContainer&
operator=(InlineContainer&& other) noexcept = default;
» more...

Assign an InlineContainer with a single TextInline child.

InlineContainer&
operator=(std::string_view text);
» more...

Copy-assign another brief.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BriefBlock.hpp>
constexpr
BriefBlock&
operator=(BriefBlock const& other) = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Copy-assign child nodes.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
InlineContainer&
operator=(InlineContainer const& other) = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Move-assign child nodes.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
InlineContainer&
operator=(InlineContainer&& other) noexcept = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to move assign from

Assign an InlineContainer with a single TextInline child.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
InlineContainer&
operator=(std::string_view text);

Return Value

Reference to the current object

Parameters

Name Description
text The object to assign from

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Compare briefs by inline content and provenance.

auto
operator<=>(BriefBlock const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Brief> const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Compare briefs by inline content and provenance.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BriefBlock.hpp>
auto
operator<=>(BriefBlock const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Brief> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isAdmonition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isBrief() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isDefinitionList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isFootnoteDefinition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isHeading() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isParagraph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPostcondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPrecondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isQuote() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isReturns() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isSee() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isTParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isTable() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isThematicBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isThrows() noexcept;

Names of declarations whose brief text was reused.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BriefBlock.hpp>
std::vector<std::string> copiedFrom;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr static
BlockKind kind_id;

Inherit inline container constructors.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BriefBlock.hpp>
using InlineContainer::BriefBlock;

Introduced Symbols

Name Description
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Move-construct child nodes.
mrdocs::doc::InlineContainer::InlineContainer Copy-construct all child nodes.

Reuse inline container assignment operators.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BriefBlock.hpp>
using InlineContainer::operator=;

Introduced Symbols

Name Description
mrdocs::doc::InlineContainer::operator= Assign an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::operator= Move-assign child nodes.
mrdocs::doc::InlineContainer::operator= Copy-assign child nodes.

Preformatted source code.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/CodeBlock.hpp>
struct CodeBlock final
    : BlockCommonBase<BlockKind::Code>

Base Classes

Name Description
BlockCommonBase<BlockKind::Code>Base class for providing variant discriminator functions.

Member Functions

NameDescription
CodeBlock [constructor]Construct an empty code block.
operator== Equality compares literal and info string.
operator<=> Compare code blocks by literal and info string.

Static Member Functions

Name
isAdmonition
isBrief
isCode
isDefinitionList
isFootnoteDefinition
isHeading
isList
isMath
isParagraph
isParam
isPostcondition
isPrecondition
isQuote
isReturns
isSee
isTParam
isTable
isThematicBreak
isThrows

Data Members

NameDescription
info Fence info string, e.g. "cpp"
literal Raw code text inside the fenced block.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.

Construct an empty code block.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/CodeBlock.hpp>
constexpr
CodeBlock() noexcept = default;

Equality compares literal and info string.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/CodeBlock.hpp>
constexpr
bool
operator==(CodeBlock const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Compare code blocks by literal and info string.

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Compare code blocks by literal and info string.

constexpr
auto
operator<=>(CodeBlock const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Code> const& rhs) const = default;
» more...

Compare code blocks by literal and info string.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/CodeBlock.hpp>
constexpr
auto
operator<=>(CodeBlock const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Code> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isAdmonition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isBrief() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isDefinitionList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isFootnoteDefinition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isHeading() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isParagraph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPostcondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPrecondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isQuote() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isReturns() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isSee() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isTParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isTable() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isThematicBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isThrows() noexcept;

Fence info string, e.g. "cpp"

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/CodeBlock.hpp>
std::string info;

Raw code text inside the fenced block.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/CodeBlock.hpp>
std::string literal;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr static
BlockKind kind_id;

Inline code (monospaced) used for short snippets within text.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/CodeInline.hpp>
struct CodeInline final
    : InlineCommonBase<InlineKind::Code>
    , InlineContainer

Description

Syntax:

@c inline_code

or

`inline_code`

Base Classes

Name Description
InlineCommonBase<InlineKind::Code>Base class for providing variant discriminator functions.
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isCode
isCopyDetails
isEmph
isFootnoteReference
isHighlight
isImage
isLineBreak
isLink
isMath
isReference
isSoftBreak
isStrikethrough
isStrong
isSubscript
isSuperscript
isText

Data Members

NameDescription
children Child inline elements contained here.

Static Data Members

Name
kind_id

Using Declarations

NameDescription
CodeInline Inherit inline container constructors.

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextGet the plain text representation of an inline element tree.
getAsPlainTextGet the plain text representation of an inline element tree.
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/CodeInline.hpp>

Equality compares inline content.

constexpr
bool
operator==(CodeInline const& rhs) const noexcept = default;
» more...

Equality compares child sequences.

constexpr
bool
operator==(InlineContainer const& rhs) const = default;
» more...

Equality compares inline content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/CodeInline.hpp>
constexpr
bool
operator==(CodeInline const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares child sequences.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order inline code by literal content.

auto
operator<=>(CodeInline const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Code> const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Order inline code by literal content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/CodeInline.hpp>
auto
operator<=>(CodeInline const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Code> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCopyDetails() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isEmph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isFootnoteReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isHighlight() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isImage() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLineBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLink() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSoftBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrikethrough() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrong() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSubscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSuperscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isText() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr static
InlineKind kind_id;

Inherit inline container constructors.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/CodeInline.hpp>
using InlineContainer::CodeInline;

Introduced Symbols

Name Description
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Move-construct child nodes.
mrdocs::doc::InlineContainer::InlineContainer Copy-construct all child nodes.

Documentation copied from another symbol.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/CopyDetailsInline.hpp>
struct CopyDetailsInline final
    : InlineCommonBase<InlineKind::CopyDetails>

Description

Syntax:

@copydetails other_symbol

Base Classes

Name Description
InlineCommonBase<InlineKind::CopyDetails>Base class for providing variant discriminator functions.

Member Functions

NameDescription
CopyDetailsInline [constructor]Construct with optional text payload.
operator== Equality compares text and symbol id.
operator<=> Order copy directives by text and symbol id.

Static Member Functions

Name
isCode
isCopyDetails
isEmph
isFootnoteReference
isHighlight
isImage
isLineBreak
isLink
isMath
isReference
isSoftBreak
isStrikethrough
isStrong
isSubscript
isSuperscript
isText

Data Members

NameDescription
id Symbol to copy details from.
string Element to copy the details from

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
getAsPlainTextGet the plain text representation of an inline element tree.
getAsPlainTextGet the plain text representation of an inline element tree.

Construct with optional text payload.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/CopyDetailsInline.hpp>
CopyDetailsInline(std::string string_ = std::string()) noexcept;

Parameters

Name Description
string_ The object to construct from

Equality compares text and symbol id.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/CopyDetailsInline.hpp>
constexpr
bool
operator==(CopyDetailsInline const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Order copy directives by text and symbol id.

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/CopyDetailsInline.hpp>

Order copy directives by text and symbol id.

auto
operator<=>(CopyDetailsInline const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::CopyDetails> const& rhs) const = default;
» more...

Order copy directives by text and symbol id.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/CopyDetailsInline.hpp>
auto
operator<=>(CopyDetailsInline const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::CopyDetails> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCopyDetails() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isEmph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isFootnoteReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isHighlight() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isImage() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLineBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLink() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSoftBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrikethrough() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrong() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSubscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSuperscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isText() noexcept;

Symbol to copy details from.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/CopyDetailsInline.hpp>
SymbolID id = = SymbolID::invalid;

Element to copy the details from

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/CopyDetailsInline.hpp>
std::string string;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr static
InlineKind kind_id;

A list of terms paired with definitions.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/DefinitionListBlock.hpp>
struct DefinitionListBlock final
    : BlockCommonBase<BlockKind::List>

Description

Syntax:

Markdown : A lightweight markup language : Created by John Gruber in 2004 HTML : A standard markup language used to create web pages : Used for structuring content on the internet

In HTML, it looks like:

<dl> <dt>First Term</dt> <dd>This is the definition of the first term.</dd> <dt>Second Term</dt> <dd>This is one definition of the second term. </dd> <dd>This is another definition of the second term.</dd> </dl>

Base Classes

Name Description
BlockCommonBase<BlockKind::List>Base class for providing variant discriminator functions.

Member Functions

NameDescription
operator== Equality compares the contained items.
operator<=> Order items and their definitions lexicographically.

Static Member Functions

Name
isAdmonition
isBrief
isCode
isDefinitionList
isFootnoteDefinition
isHeading
isList
isMath
isParagraph
isParam
isPostcondition
isPrecondition
isQuote
isReturns
isSee
isTParam
isTable
isThematicBreak
isThrows

Data Members

NameDescription
items Sequence of definition list items.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.

Equality compares the contained items.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/DefinitionListBlock.hpp>
constexpr
bool
operator==(DefinitionListBlock const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Order items and their definitions lexicographically.

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Order items and their definitions lexicographically.

auto
operator<=>(DefinitionListBlock const& other) const;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::List> const& rhs) const = default;
» more...

Order items and their definitions lexicographically.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/DefinitionListBlock.hpp>
auto
operator<=>(DefinitionListBlock const& other) const;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::List> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isAdmonition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isBrief() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isDefinitionList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isFootnoteDefinition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isHeading() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isParagraph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPostcondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPrecondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isQuote() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isReturns() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isSee() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isTParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isTable() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isThematicBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isThrows() noexcept;

Sequence of definition list items.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/DefinitionListBlock.hpp>
std::vector<DefinitionListItem> items;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr static
BlockKind kind_id;

An item in a definition list

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/DefinitionListItem.hpp>
struct DefinitionListItem final
    : BlockContainer

Base Classes

Name Description
BlockContainerA composite block that stores a sequence of child blocks.

Member Functions

NameDescription
asBlockContainer asBlockContainer overloads
operator== Equality operators
operator<=> Three-way comparison operators

Data Members

NameDescription
blocks Child blocks contained within this composite block.
term The term being defined.

Non-Member Functions

Name Description
ltrimRemoves leading whitespace from the first text elements
rtrimRemoves trailing whitespace from the last text elements
trimRemoves leading and trailing whitespace from the text elements

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Equality compares term and definitions.

constexpr
bool
operator==(DefinitionListItem const& rhs) const noexcept = default;
» more...

Equality compares the stored child blocks.

constexpr
bool
operator==(BlockContainer const& rhs) const = default;
» more...

Equality compares term and definitions.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/DefinitionListItem.hpp>
constexpr
bool
operator==(DefinitionListItem const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares the stored child blocks.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
bool
operator==(BlockContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Compare items by term and definition blocks.

auto
operator<=>(DefinitionListItem const& rhs) const = default;
» more...

Order containers lexicographically by their children.

std::strong_ordering
operator<=>(BlockContainer const& rhs) const;
» more...

Compare items by term and definition blocks.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/DefinitionListItem.hpp>
auto
operator<=>(DefinitionListItem const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Order containers lexicographically by their children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
std::strong_ordering
operator<=>(BlockContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

The term being defined.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/DefinitionListItem.hpp>
InlineContainer term;

Emphasized text (typically rendered in italics).

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/EmphInline.hpp>
struct EmphInline final
    : InlineCommonBase<InlineKind::Emph>
    , InlineContainer

Description

Syntax:

@e emphasized or *italic text* or _italic text_

Base Classes

Name Description
InlineCommonBase<InlineKind::Emph>Base class for providing variant discriminator functions.
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isCode
isCopyDetails
isEmph
isFootnoteReference
isHighlight
isImage
isLineBreak
isLink
isMath
isReference
isSoftBreak
isStrikethrough
isStrong
isSubscript
isSuperscript
isText

Data Members

NameDescription
children Child inline elements contained here.

Static Data Members

Name
kind_id

Using Declarations

NameDescription
EmphInline Inherit inline container constructors.

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextGet the plain text representation of an inline element tree.
getAsPlainTextGet the plain text representation of an inline element tree.
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/EmphInline.hpp>

Equality compares contained text.

constexpr
bool
operator==(EmphInline const& rhs) const noexcept = default;
» more...

Equality compares child sequences.

constexpr
bool
operator==(InlineContainer const& rhs) const = default;
» more...

Equality compares contained text.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/EmphInline.hpp>
constexpr
bool
operator==(EmphInline const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares child sequences.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order emphasis spans by their contents.

auto
operator<=>(EmphInline const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Emph> const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Order emphasis spans by their contents.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/EmphInline.hpp>
auto
operator<=>(EmphInline const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Emph> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCopyDetails() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isEmph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isFootnoteReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isHighlight() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isImage() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLineBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLink() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSoftBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrikethrough() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrong() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSubscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSuperscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isText() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr static
InlineKind kind_id;

Inherit inline container constructors.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/EmphInline.hpp>
using InlineContainer::EmphInline;

Introduced Symbols

Name Description
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Move-construct child nodes.
mrdocs::doc::InlineContainer::InlineContainer Copy-construct all child nodes.

Text defining the content of a footnote reference.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/FootnoteDefinitionBlock.hpp>
struct FootnoteDefinitionBlock final
    : BlockCommonBase<BlockKind::FootnoteDefinition>
    , BlockContainer

Description

Syntax:

This is a sentence with a footnote[^1]. [^1]: This is the content of the footnote. It can also have multiple paragraphs. Here is the second paragraph, which needs to be indented.

Base Classes

Name Description
BlockCommonBase<BlockKind::FootnoteDefinition>Base class for providing variant discriminator functions.
BlockContainerA composite block that stores a sequence of child blocks.

Member Functions

NameDescription
FootnoteDefinitionBlock [constructor]Construct an empty footnote definition.
asBlockContainer asBlockContainer overloads
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isAdmonition
isBrief
isCode
isDefinitionList
isFootnoteDefinition
isHeading
isList
isMath
isParagraph
isParam
isPostcondition
isPrecondition
isQuote
isReturns
isSee
isTParam
isTable
isThematicBreak
isThrows

Data Members

NameDescription
blocks Child blocks contained within this composite block.
label Footnote label identifier.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the first text elements
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the last text elements
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the text elements

Construct an empty footnote definition.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/FootnoteDefinitionBlock.hpp>
constexpr
FootnoteDefinitionBlock() noexcept = default;

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Equality compares label and block content.

constexpr
bool
operator==(FootnoteDefinitionBlock const& rhs) const noexcept = default;
» more...

Equality compares the stored child blocks.

constexpr
bool
operator==(BlockContainer const& rhs) const = default;
» more...

Equality compares label and block content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/FootnoteDefinitionBlock.hpp>
constexpr
bool
operator==(FootnoteDefinitionBlock const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares the stored child blocks.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
bool
operator==(BlockContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Compare definitions by label and block content.

auto
operator<=>(FootnoteDefinitionBlock const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::FootnoteDefinition> const& rhs) const = default;
» more...

Order containers lexicographically by their children.

std::strong_ordering
operator<=>(BlockContainer const& rhs) const;
» more...

Compare definitions by label and block content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/FootnoteDefinitionBlock.hpp>
auto
operator<=>(FootnoteDefinitionBlock const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::FootnoteDefinition> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Order containers lexicographically by their children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
std::strong_ordering
operator<=>(BlockContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isAdmonition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isBrief() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isDefinitionList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isFootnoteDefinition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isHeading() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isParagraph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPostcondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPrecondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isQuote() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isReturns() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isSee() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isTParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isTable() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isThematicBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isThrows() noexcept;

Footnote label identifier.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/FootnoteDefinitionBlock.hpp>
std::string label;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr static
BlockKind kind_id;

A reference to a symbol.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/FootnoteReferenceInline.hpp>
struct FootnoteReferenceInline
    : InlineCommonBase<InlineKind::FootnoteReference>

Description

In markdown, this is represented as "[]".

Syntax:

[^footnote-id]

Base Classes

Name Description
InlineCommonBase<InlineKind::FootnoteReference>Base class for providing variant discriminator functions.

Member Functions

NameDescription
operator== Equality compares labels.
operator<=> Order references by their label.

Static Member Functions

Name
isCode
isCopyDetails
isEmph
isFootnoteReference
isHighlight
isImage
isLineBreak
isLink
isMath
isReference
isSoftBreak
isStrikethrough
isStrong
isSubscript
isSuperscript
isText

Data Members

NameDescription
label Footnote label that the reference points to.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
getAsPlainTextGet the plain text representation of an inline element tree.
getAsPlainTextGet the plain text representation of an inline element tree.

Equality compares labels.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/FootnoteReferenceInline.hpp>
constexpr
bool
operator==(FootnoteReferenceInline const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Order references by their label.

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/FootnoteReferenceInline.hpp>

Order references by their label.

constexpr
auto
operator<=>(FootnoteReferenceInline const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::FootnoteReference> const& rhs) const = default;
» more...

Order references by their label.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/FootnoteReferenceInline.hpp>
constexpr
auto
operator<=>(FootnoteReferenceInline const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::FootnoteReference> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCopyDetails() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isEmph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isFootnoteReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isHighlight() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isImage() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLineBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLink() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSoftBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrikethrough() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrong() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSubscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSuperscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isText() noexcept;

Footnote label that the reference points to.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/FootnoteReferenceInline.hpp>
std::string label;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr static
InlineKind kind_id;

A manually specified section heading.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/HeadingBlock.hpp>
struct HeadingBlock final
    : BlockCommonBase<BlockKind::Heading>
    , InlineContainer

Description

Syntax:

@par Heading

or in Markdown:

# Heading 1 ## Heading 2 ### Heading 3 #### Heading 4 ##### Heading 5 ###### Heading 6

Base Classes

Name Description
BlockCommonBase<BlockKind::Heading>Base class for providing variant discriminator functions.
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isAdmonition
isBrief
isCode
isDefinitionList
isFootnoteDefinition
isHeading
isList
isMath
isParagraph
isParam
isPostcondition
isPrecondition
isQuote
isReturns
isSee
isTParam
isTable
isThematicBreak
isThrows

Data Members

NameDescription
children Child inline elements contained here.
level Heading depth (1..6).

Static Data Members

Name
kind_id

Using Declarations

NameDescription
HeadingBlock Inherit inline container constructors.

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/HeadingBlock.hpp>

Equality compares level and inline content.

constexpr
bool
operator==(HeadingBlock const& rhs) const noexcept = default;
» more...

Equality compares child sequences.

constexpr
bool
operator==(InlineContainer const& rhs) const = default;
» more...

Equality compares level and inline content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/HeadingBlock.hpp>
constexpr
bool
operator==(HeadingBlock const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares child sequences.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order headings by level and inline content.

auto
operator<=>(HeadingBlock const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Heading> const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Order headings by level and inline content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/HeadingBlock.hpp>
auto
operator<=>(HeadingBlock const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Heading> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isAdmonition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isBrief() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isDefinitionList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isFootnoteDefinition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isHeading() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isParagraph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPostcondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPrecondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isQuote() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isReturns() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isSee() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isTParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isTable() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isThematicBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isThrows() noexcept;

Heading depth (1..6).

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/HeadingBlock.hpp>
unsigned int level = 1;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr static
BlockKind kind_id;

Inherit inline container constructors.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/HeadingBlock.hpp>
using InlineContainer::HeadingBlock;

Introduced Symbols

Name Description
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Move-construct child nodes.
mrdocs::doc::InlineContainer::InlineContainer Copy-construct all child nodes.

Highlighted text span used to call out important words.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/HighlightInline.hpp>
struct HighlightInline final
    : InlineCommonBase<InlineKind::Highlight>
    , InlineContainer

Description

Syntax:

==highlight== or <mark>highlighted</mark>

Base Classes

Name Description
InlineCommonBase<InlineKind::Highlight>Base class for providing variant discriminator functions.
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isCode
isCopyDetails
isEmph
isFootnoteReference
isHighlight
isImage
isLineBreak
isLink
isMath
isReference
isSoftBreak
isStrikethrough
isStrong
isSubscript
isSuperscript
isText

Data Members

NameDescription
children Child inline elements contained here.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextGet the plain text representation of an inline element tree.
getAsPlainTextGet the plain text representation of an inline element tree.
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/HighlightInline.hpp>

Equality compares inline content.

constexpr
bool
operator==(HighlightInline const& rhs) const noexcept = default;
» more...

Equality compares child sequences.

constexpr
bool
operator==(InlineContainer const& rhs) const = default;
» more...

Equality compares inline content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/HighlightInline.hpp>
constexpr
bool
operator==(HighlightInline const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares child sequences.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order highlights by their inline content.

auto
operator<=>(HighlightInline const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Highlight> const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Order highlights by their inline content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/HighlightInline.hpp>
auto
operator<=>(HighlightInline const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Highlight> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCopyDetails() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isEmph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isFootnoteReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isHighlight() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isImage() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLineBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLink() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSoftBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrikethrough() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrong() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSubscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSuperscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isText() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr static
InlineKind kind_id;

An image.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/ImageInline.hpp>
struct ImageInline final
    : InlineCommonBase<InlineKind::Image>
    , InlineContainer

Description

Syntax:

@image html path/to/img "alt text"

or

![Alt text](image_url "Optional title text")

Base Classes

Name Description
InlineCommonBase<InlineKind::Image>Base class for providing variant discriminator functions.
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isCode
isCopyDetails
isEmph
isFootnoteReference
isHighlight
isImage
isLineBreak
isLink
isMath
isReference
isSoftBreak
isStrikethrough
isStrong
isSubscript
isSuperscript
isText

Data Members

NameDescription
alt Alternate text when the image cannot be shown.
children Child inline elements contained here.
src Image source URL or path.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextGet the plain text representation of an inline element tree.
getAsPlainTextGet the plain text representation of an inline element tree.
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/ImageInline.hpp>

Equality compares source, alt text, and contents.

constexpr
bool
operator==(ImageInline const& rhs) const noexcept = default;
» more...

Equality compares child sequences.

constexpr
bool
operator==(InlineContainer const& rhs) const = default;
» more...

Equality compares source, alt text, and contents.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/ImageInline.hpp>
constexpr
bool
operator==(ImageInline const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares child sequences.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order images by source, alt text, and inline children.

auto
operator<=>(ImageInline const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Image> const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Order images by source, alt text, and inline children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/ImageInline.hpp>
auto
operator<=>(ImageInline const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Image> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCopyDetails() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isEmph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isFootnoteReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isHighlight() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isImage() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLineBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLink() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSoftBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrikethrough() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrong() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSubscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSuperscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isText() noexcept;

Alternate text when the image cannot be shown.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/ImageInline.hpp>
std::string alt;

Image source URL or path.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/ImageInline.hpp>
std::string src;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr static
InlineKind kind_id;

A Node containing a string of text.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
struct Inline;

Description

There will be no newlines in the text. Otherwise, this would be represented as multiple text nodes within a Paragraph node.

Member Functions

NameDescription
~Inline [destructor] [virtual]Virtual destructor to enable polymorphic deletion.
asInline asInline overloads
operator== Equality compares active kind and stored data.
operator<=> Three-way comparison by active inline kind and data.

Data Members

NameDescription
Kind Discriminator identifying which inline variant is active.

Protected Member Functions

NameDescription
Inline [constructor]Constructors

Non-Member Functions

Name Description
getAsPlainTextGet the plain text representation of an inline element tree.
getAsPlainTextGet the plain text representation of an inline element tree.

Derived Classes

Name Description
InlineCommonBase Base class for providing variant discriminator functions.

Virtual destructor to enable polymorphic deletion.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
virtual
~Inline() = default;

asInline overloads

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

View as const Inline reference.

constexpr
Inline const&
asInline() const noexcept;
» more...

View as mutable Inline reference.

constexpr
Inline&
asInline() noexcept;
» more...

View as const Inline reference.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
Inline const&
asInline() const noexcept;

Return Value

A Node containing a string of text.

View as mutable Inline reference.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
Inline&
asInline() noexcept;

Return Value

A Node containing a string of text.

Equality compares active kind and stored data.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(Inline const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison by active inline kind and data.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
auto
operator<=>(Inline const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Discriminator identifying which inline variant is active.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
InlineKind Kind = InlineKind::Text;

Constructors

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Default-construct a text inline.

constexpr
Inline() noexcept = default;
» more...

Construct with a specific inline kind.

Inline(InlineKind kind_);
» more...

Default-construct a text inline.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
Inline() noexcept = default;

Construct with a specific inline kind.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
Inline(InlineKind kind_);

Parameters

Name Description
kind_ The object to construct from

Base class for providing variant discriminator functions.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
template<InlineKind K>
struct InlineCommonBase
    : Inline

Description

This offers functions that return a boolean at compile-time, indicating if the most-derived class is a certain type.

Base Classes

Name Description
InlineA Node containing a string of text.

Member Functions

NameDescription
~InlineCommonBase [destructor] [virtual]Virtual destructor to preserve polymorphic cleanup.
asInline asInline overloads
operator== Equality compares active kind and stored data.
operator<=> Three-way comparison operators

Data Members

NameDescription
Kind Discriminator identifying which inline variant is active.

Static Data Members

NameDescription
kind_id The variant discriminator constant of the most-derived class.

Protected Member Functions

NameDescription
InlineCommonBase [constructor]Default-construct with the fixed inline kind.

Non-Member Functions

Name Description
getAsPlainTextGet the plain text representation of an inline element tree.
getAsPlainTextGet the plain text representation of an inline element tree.

Derived Classes

Name Description
CodeInline Inline code (monospaced) used for short snippets within text.
CopyDetailsInline Documentation copied from another symbol.
EmphInline Emphasized text (typically rendered in italics).
FootnoteReferenceInline A reference to a symbol.
HighlightInline Highlighted text span used to call out important words.
ImageInline An image.
LineBreakInline A hard line break that renders as ""
LinkInline A hyperlink.
MathInline An inline LaTeX math expression
ReferenceInline A reference to a symbol.
SoftBreakInline A line break that may render as a space
StrikethroughInline Strikethrough span to show removed or deprecated text.
StrongInline Strong emphasis span (typically rendered in bold).
SubscriptInline Subscript text fragment (lowered baseline).
SuperscriptInline Superscript text fragment (raised baseline).
TextInline A Node containing a string of text.

Virtual destructor to preserve polymorphic cleanup.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
virtual
~InlineCommonBase() override = default;

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Three-way comparison forwards to the underlying inline.

auto
operator<=>(InlineCommonBase const& rhs) const = default;
» more...

Three-way comparison by active inline kind and data.

constexpr
auto
operator<=>(Inline const& rhs) const = default;
» more...

Three-way comparison forwards to the underlying inline.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
auto
operator<=>(InlineCommonBase const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison by active inline kind and data.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
auto
operator<=>(Inline const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

The variant discriminator constant of the most-derived class.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
inline constexpr static
InlineKind kind_id = K;

Description

It only distinguishes from Inline::kind in that it is a constant.

Default-construct with the fixed inline kind.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
explicit
InlineCommonBase();

An internal node in the inline element tree.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
struct InlineContainer;

Member Functions

NameDescription
InlineContainer [constructor]Constructors
~InlineContainer [destructor] [virtual]Virtual destructor for derived containers.
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality compares child sequences.
operator<=> Compare two InlineContainers.

Data Members

NameDescription
children Child inline elements contained here.

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Derived Classes

Name Description
BriefBlock The brief description
CodeInline Inline code (monospaced) used for short snippets within text.
EmphInline Emphasized text (typically rendered in italics).
HeadingBlock A manually specified section heading.
HighlightInline Highlighted text span used to call out important words.
ImageInline An image.
LinkInline A hyperlink.
ParagraphBlock A sequence of text nodes.
ParamBlock Documentation for a function parameter
PostconditionBlock Text describing conditions guaranteed on successful exit.
PreconditionBlock Text describing required conditions before entry.
ReturnsBlock Documentation for a function return type
SeeBlock A
StrikethroughInline Strikethrough span to show removed or deprecated text.
StrongInline Strong emphasis span (typically rendered in bold).
SubscriptInline Subscript text fragment (lowered baseline).
SuperscriptInline Superscript text fragment (raised baseline).
TParamBlock Documentation for a template parameter
TableCell A cell in a table
ThrowsBlock Documentation for a function exception clause

Constructors

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Default-construct an empty container.

constexpr
InlineContainer() = default;
» more...

Copy-construct all child nodes.

constexpr
InlineContainer(InlineContainer const& other) = default;
» more...

Move-construct child nodes.

constexpr
InlineContainer(InlineContainer&& other) noexcept = default;
» more...

Construct an InlineContainer with a single TextInline child.

explicit
InlineContainer(std::string_view text);
» more...

Construct an InlineContainer with a single TextInline child.

explicit
InlineContainer(std::string const& text);
» more...

Construct an InlineContainer with a single TextInline child.

explicit
InlineContainer(std::string&& text);
» more...

Construct an InlineContainer with a single TextInline child.

explicit
InlineContainer(char const* text);
» more...

Default-construct an empty container.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
InlineContainer() = default;

Copy-construct all child nodes.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
InlineContainer(InlineContainer const& other) = default;

Parameters

Name Description
other The object to copy construct from

Move-construct child nodes.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
InlineContainer(InlineContainer&& other) noexcept = default;

Parameters

Name Description
other The object to move construct from

Construct an InlineContainer with a single TextInline child.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
explicit
InlineContainer(std::string_view text);

Parameters

Name Description
text The object to construct from

Construct an InlineContainer with a single TextInline child.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
explicit
InlineContainer(std::string const& text);

Parameters

Name Description
text The object to copy construct from

Construct an InlineContainer with a single TextInline child.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
explicit
InlineContainer(std::string&& text);

Parameters

Name Description
text The object to move construct from

Construct an InlineContainer with a single TextInline child.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
explicit
InlineContainer(char const* text);

Parameters

Name Description
text The value to construct from

Virtual destructor for derived containers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
virtual
~InlineContainer() = default;

Assignment operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Copy-assign child nodes.

constexpr
InlineContainer&
operator=(InlineContainer const& other) = default;
» more...

Move-assign child nodes.

constexpr
InlineContainer&
operator=(InlineContainer&& other) noexcept = default;
» more...

Assign an InlineContainer with a single TextInline child.

InlineContainer&
operator=(std::string_view text);
» more...

Copy-assign child nodes.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
InlineContainer&
operator=(InlineContainer const& other) = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Move-assign child nodes.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
InlineContainer&
operator=(InlineContainer&& other) noexcept = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to move assign from

Assign an InlineContainer with a single TextInline child.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
InlineContainer&
operator=(std::string_view text);

Return Value

Reference to the current object

Parameters

Name Description
text The object to assign from

append overloads

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Append a TextInline child.

InlineContainer&
append(std::string_view text);
» more...

Append a child of the specified type.

template<
    std::derived_from<Inline> InlineTy,
    class... Args>
InlineContainer&
append(Args&&... args);
» more...

Return Value

A reference to this container.

Template Parameters

Name Description
InlineTy The Inline-derived type to add.

Parameters

Name Description
text The text to append.
args Constructor arguments forwarded to the child.

Append a TextInline child.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
InlineContainer&
append(std::string_view text);

Return Value

A reference to this container.

Parameters

Name Description
text The text to append.

Append a child of the specified type.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
template<
    std::derived_from<Inline> InlineTy,
    class... Args>
InlineContainer&
append(Args&&... args);

Return Value

A reference to this container.

Template Parameters

Name Description
InlineTy The Inline-derived type to add.

Parameters

Name Description
args Constructor arguments forwarded to the child.

Return this container as a base-class reference.

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Return this container as a base-class reference.

InlineContainer&
asInlineContainer();
» more...

Return this container as a base-class reference.

InlineContainer const&
asInlineContainer() const;
» more...

Return Value

A reference to the underlying InlineContainer.

Return this container as a base-class reference.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
InlineContainer&
asInlineContainer();

Return Value

A reference to the underlying InlineContainer.

Return this container as a base-class reference.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
InlineContainer const&
asInlineContainer() const;

Return Value

A reference to the underlying InlineContainer.

Get the last inline child.

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Get the last inline child.

Polymorphic<Inline> const&
back() const;
» more...

Get the last inline child.

Polymorphic<Inline>&
back();
» more...

Get the last inline child.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
Polymorphic<Inline> const&
back() const;

Return Value

the last inline child.

Get the last inline child.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
Polymorphic<Inline>&
back();

Return Value

the last inline child.

Begin iterator forwarding to children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
decltype(auto)
begin(this auto&& self) noexcept;

Return Value

Iterator to the first child.

Parameters

Name Description
self The container instance.

Clear all inline children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
void
clear();

Append a child of the specified type in-place.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
template<
    std::derived_from<Inline> InlineTy,
    class... Args>
InlineContainer&
emplace_back(Args&&... args);

Return Value

A reference to this container.

Template Parameters

Name Description
InlineTy The Inline-derived type to emplace.

Parameters

Name Description
args Constructor arguments forwarded to the child.

Determine if there are no inline children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
bool
empty() const noexcept;

Return Value

if there are no inline children.

End iterator forwarding to children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
decltype(auto)
end(this auto&& self) noexcept;

Return Value

Iterator past the last child.

Parameters

Name Description
self The container instance.

Erase inline children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
decltype(auto)
erase(this 
    auto&& self,
    auto&&... args);

Return Value

The iterator returned by erase.

Parameters

Name Description
self The container instance.
args Arguments forwarded to std::vector::erase.

Get the first inline child.

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Get the first inline child.

Polymorphic<Inline> const&
front() const;
» more...

Get the first inline child.

Polymorphic<Inline>&
front();
» more...

Get the first inline child.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
Polymorphic<Inline> const&
front() const;

Return Value

the first inline child.

Get the first inline child.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
Polymorphic<Inline>&
front();

Return Value

the first inline child.

Insert inline children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
decltype(auto)
insert(this 
    auto&& self,
    auto&&... args);

Return Value

The iterator returned by insert.

Parameters

Name Description
self The container instance.
args Arguments forwarded to std::vector::insert.

Addition assignment operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Append a TextInline child.

InlineContainer&
operator+=(std::string_view text);
» more...

Append an inline child.

template<std::derived_from<Inline> InlineTy>
InlineContainer&
operator+=(InlineTy&& inlineChild);
» more...

Append a TextInline child.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
InlineContainer&
operator+=(std::string_view text);

Return Value

Reference to the current object

Parameters

Name Description
text The right operand

Append an inline child.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
template<std::derived_from<Inline> InlineTy>
InlineContainer&
operator+=(InlineTy&& inlineChild);

Return Value

Reference to the current object

Parameters

Name Description
inlineChild The right operand

Get the number of inline children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::size_t
size() const noexcept;

Return Value

the number of inline children.

Equality compares child sequences.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Child inline elements contained here.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::vector<Polymorphic<Inline>> children;

A leaf node that stores a string of text.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
struct InlineTextLeaf;

Member Functions

NameDescription
InlineTextLeaf [constructor]Constructors
operator== Equality compares literal text.
operator<=> Order text leaves lexicographically by content.

Data Members

NameDescription
literal Raw literal text stored in this leaf node.

Constructors

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Construct from a string view.

explicit
InlineTextLeaf(std::string_view literal_);
» more...

Construct from a string copy.

explicit
InlineTextLeaf(std::string const& literal_);
» more...

Construct by moving a string.

explicit
InlineTextLeaf(std::string&& literal_) noexcept;
» more...

Construct from a string view.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
explicit
InlineTextLeaf(std::string_view literal_);

Parameters

Name Description
literal_ The object to construct from

Construct from a string copy.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
explicit
InlineTextLeaf(std::string const& literal_);

Parameters

Name Description
literal_ The object to copy construct from

Construct by moving a string.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
explicit
InlineTextLeaf(std::string&& literal_) noexcept;

Parameters

Name Description
literal_ The object to move construct from

Equality compares literal text.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineTextLeaf const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Order text leaves lexicographically by content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
auto
operator<=>(InlineTextLeaf const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Raw literal text stored in this leaf node.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::string literal;

A hard line break that renders as ""

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/LineBreakInline.hpp>
struct LineBreakInline
    : InlineCommonBase<InlineKind::LineBreak>

Description

Syntax:

first line\ second line

or

first line<br>second line

Base Classes

Name Description
InlineCommonBase<InlineKind::LineBreak>Base class for providing variant discriminator functions.

Member Functions

NameDescription
LineBreakInline [constructor]Construct a line break node.
~LineBreakInline [destructor] [virtual]Virtual destructor for the inline hierarchy.
operator== Equality compares line breaks (trivial).
operator<=> Order line breaks (trivial).

Static Member Functions

Name
isCode
isCopyDetails
isEmph
isFootnoteReference
isHighlight
isImage
isLineBreak
isLink
isMath
isReference
isSoftBreak
isStrikethrough
isStrong
isSubscript
isSuperscript
isText

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
getAsPlainTextGet the plain text representation of an inline element tree.
getAsPlainTextGet the plain text representation of an inline element tree.

Construct a line break node.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/LineBreakInline.hpp>
constexpr
LineBreakInline() noexcept = default;

Virtual destructor for the inline hierarchy.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/LineBreakInline.hpp>
constexpr
virtual
~LineBreakInline() override = default;

Equality compares line breaks (trivial).

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/LineBreakInline.hpp>
constexpr
bool
operator==(LineBreakInline const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Order line breaks (trivial).

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order line breaks (trivial).

constexpr
auto
operator<=>(LineBreakInline const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::LineBreak> const& rhs) const = default;
» more...

Order line breaks (trivial).

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/LineBreakInline.hpp>
constexpr
auto
operator<=>(LineBreakInline const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::LineBreak> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCopyDetails() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isEmph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isFootnoteReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isHighlight() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isImage() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLineBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLink() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSoftBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrikethrough() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrong() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSubscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSuperscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isText() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr static
InlineKind kind_id;

A hyperlink.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/LinkInline.hpp>
struct LinkInline final
    : InlineCommonBase<InlineKind::Link>
    , InlineContainer

Description

Syntax:

@link https://example.com label @endlink

Or with markdown syntax:

[link text](URL) [link text](URL "title")

Or:

<a href="https://www.example.com">Visit Example.com</a>

Base Classes

Name Description
InlineCommonBase<InlineKind::Link>Base class for providing variant discriminator functions.
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
LinkInline [constructor]Constructors
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isCode
isCopyDetails
isEmph
isFootnoteReference
isHighlight
isImage
isLineBreak
isLink
isMath
isReference
isSoftBreak
isStrikethrough
isStrong
isSubscript
isSuperscript
isText

Data Members

NameDescription
children Child inline elements contained here.
href Destination of the hyperlink.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextGet the plain text representation of an inline element tree.
getAsPlainTextGet the plain text representation of an inline element tree.
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Constructors

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/LinkInline.hpp>

Construct an empty link.

constexpr
LinkInline() = default;
» more...

Construct a link with display text and target.

LinkInline(
    std::string_view text,
    std::string_view href);
» more...

Parameters

Name Description
text Link text to display.
href Destination URI.

Construct an empty link.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/LinkInline.hpp>
constexpr
LinkInline() = default;

Construct a link with display text and target.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/LinkInline.hpp>
LinkInline(
    std::string_view text,
    std::string_view href);

Parameters

Name Description
text Link text to display.
href Destination URI.

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Equality compares href and child content.

constexpr
bool
operator==(LinkInline const& rhs) const noexcept = default;
» more...

Equality compares child sequences.

constexpr
bool
operator==(InlineContainer const& rhs) const = default;
» more...

Equality compares href and child content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/LinkInline.hpp>
constexpr
bool
operator==(LinkInline const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares child sequences.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order links by href and child content.

auto
operator<=>(LinkInline const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Link> const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Order links by href and child content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/LinkInline.hpp>
auto
operator<=>(LinkInline const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Link> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCopyDetails() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isEmph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isFootnoteReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isHighlight() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isImage() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLineBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLink() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSoftBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrikethrough() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrong() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSubscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSuperscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isText() noexcept;

Destination of the hyperlink.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/LinkInline.hpp>
std::string href;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr static
InlineKind kind_id;

A list of list items

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ListBlock.hpp>
struct ListBlock final
    : BlockCommonBase<BlockKind::List>

Description

Syntax:

- item one - item two

Unordered list:

- Item 1 - Item 2 - Nested item 2.1 - Nested item 2.2 Item 3 + Item 4

Ordered list:

1. First item 2. Second item 1. Nested ordered item 2.1 2. Nested ordered item 2.2 3. Third item

Task lists (Checklists):

- [x] Completed task - [ ] Pending task - [x] Another completed task

Definition Lists (DefinitionListBlock)

Term 1 : Definition of Term 1 Term 2 : Definition of Term 2 : Another definition for Term 2

Base Classes

Name Description
BlockCommonBase<BlockKind::List>Base class for providing variant discriminator functions.

Member Functions

NameDescription
operator== Equality compares the list style and items.
operator<=> Order lists by item content and list style.

Static Member Functions

Name
isAdmonition
isBrief
isCode
isDefinitionList
isFootnoteDefinition
isHeading
isList
isMath
isParagraph
isParam
isPostcondition
isPrecondition
isQuote
isReturns
isSee
isTParam
isTable
isThematicBreak
isThrows

Data Members

NameDescription
items Items contained in the list.
listKind Display style for the list.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.

Equality compares the list style and items.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ListBlock.hpp>
constexpr
bool
operator==(ListBlock const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Order lists by item content and list style.

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Order lists by item content and list style.

auto
operator<=>(ListBlock const& other) const;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::List> const& rhs) const = default;
» more...

Order lists by item content and list style.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ListBlock.hpp>
auto
operator<=>(ListBlock const& other) const;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::List> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isAdmonition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isBrief() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isDefinitionList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isFootnoteDefinition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isHeading() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isParagraph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPostcondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPrecondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isQuote() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isReturns() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isSee() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isTParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isTable() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isThematicBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isThrows() noexcept;

Items contained in the list.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ListBlock.hpp>
std::vector<ListItem> items;

Display style for the list.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ListBlock.hpp>
ListKind listKind = ListKind::Unordered;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr static
BlockKind kind_id;

An item in a ListBlock

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ListItem.hpp>
struct ListItem final
    : BlockContainer

Base Classes

Name Description
BlockContainerA composite block that stores a sequence of child blocks.

Member Functions

NameDescription
asBlockContainer asBlockContainer overloads
operator== Equality operators
operator<=> Three-way comparison operators

Data Members

NameDescription
blocks Child blocks contained within this composite block.

Non-Member Functions

Name Description
ltrimRemoves leading whitespace from the first text elements
rtrimRemoves trailing whitespace from the last text elements
trimRemoves leading and trailing whitespace from the text elements

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Equality compares contained blocks.

constexpr
bool
operator==(ListItem const& rhs) const noexcept = default;
» more...

Equality compares the stored child blocks.

constexpr
bool
operator==(BlockContainer const& rhs) const = default;
» more...

Equality compares contained blocks.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ListItem.hpp>
constexpr
bool
operator==(ListItem const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares the stored child blocks.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
bool
operator==(BlockContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Order list items by their child blocks.

auto
operator<=>(ListItem const& rhs) const = default;
» more...

Order containers lexicographically by their children.

std::strong_ordering
operator<=>(BlockContainer const& rhs) const;
» more...

Order list items by their child blocks.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ListItem.hpp>
auto
operator<=>(ListItem const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Order containers lexicographically by their children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
std::strong_ordering
operator<=>(BlockContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

A block of LaTeX math

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/MathBlock.hpp>
struct MathBlock final
    : BlockCommonBase<BlockKind::Math>

Description

A block of LaTeX math, typically between … or fenced with "math".

On a new line:

$$ \int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi} $$

Or as a code block:

```math \int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi} ```

Base Classes

Name Description
BlockCommonBase<BlockKind::Math>Base class for providing variant discriminator functions.

Member Functions

NameDescription
MathBlock [constructor]Copy-construct a math block.
operator= Copy-assign a math block.
operator<=> Compare math blocks by literal content.

Static Member Functions

Name
isAdmonition
isBrief
isCode
isDefinitionList
isFootnoteDefinition
isHeading
isList
isMath
isParagraph
isParam
isPostcondition
isPrecondition
isQuote
isReturns
isSee
isTParam
isTable
isThematicBreak
isThrows

Data Members

NameDescription
literal Raw TeX math source

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.

Copy-construct a math block.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/MathBlock.hpp>
constexpr
MathBlock(MathBlock const& other) = default;

Parameters

Name Description
other The object to copy construct from

Copy-assign a math block.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/MathBlock.hpp>
constexpr
MathBlock&
operator=(MathBlock const& other) = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Compare math blocks by literal content.

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Compare math blocks by literal content.

constexpr
auto
operator<=>(MathBlock const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Math> const& rhs) const = default;
» more...

Compare math blocks by literal content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/MathBlock.hpp>
constexpr
auto
operator<=>(MathBlock const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Math> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isAdmonition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isBrief() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isDefinitionList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isFootnoteDefinition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isHeading() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isParagraph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPostcondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPrecondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isQuote() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isReturns() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isSee() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isTParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isTable() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isThematicBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isThrows() noexcept;

Raw TeX math source

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/MathBlock.hpp>
std::string literal;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr static
BlockKind kind_id;

An inline LaTeX math expression

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/MathInline.hpp>
struct MathInline
    : InlineCommonBase<InlineKind::Math>

Description

Inline LaTeX math, typically between ….

Syntax:

$2 + 2 = 4$ or $x_{i+1}^2$

Base Classes

Name Description
InlineCommonBase<InlineKind::Math>Base class for providing variant discriminator functions.

Member Functions

NameDescription
MathInline [constructor]Constructors
~MathInline [destructor] [virtual]Virtual destructor for inline hierarchy.
operator== Equality compares literal content.
operator<=> Order math spans by their literal content.

Static Member Functions

Name
isCode
isCopyDetails
isEmph
isFootnoteReference
isHighlight
isImage
isLineBreak
isLink
isMath
isReference
isSoftBreak
isStrikethrough
isStrong
isSubscript
isSuperscript
isText

Data Members

NameDescription
literal Raw LaTeX/TeX math content.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
getAsPlainTextGet the plain text representation of an inline element tree.
getAsPlainTextGet the plain text representation of an inline element tree.

Constructors

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/MathInline.hpp>

Construct an empty math inline.

constexpr
MathInline() noexcept = default;
» more...

Construct a math inline from source text.

explicit
MathInline(std::string string_) noexcept;
» more...

Construct an empty math inline.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/MathInline.hpp>
constexpr
MathInline() noexcept = default;

Construct a math inline from source text.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/MathInline.hpp>
explicit
MathInline(std::string string_) noexcept;

Parameters

Name Description
string_ The object to construct from

Virtual destructor for inline hierarchy.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/MathInline.hpp>
constexpr
virtual
~MathInline() override = default;

Equality compares literal content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/MathInline.hpp>
constexpr
bool
operator==(MathInline const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Order math spans by their literal content.

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order math spans by their literal content.

constexpr
auto
operator<=>(MathInline const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Math> const& rhs) const = default;
» more...

Order math spans by their literal content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/MathInline.hpp>
constexpr
auto
operator<=>(MathInline const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Math> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCopyDetails() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isEmph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isFootnoteReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isHighlight() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isImage() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLineBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLink() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSoftBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrikethrough() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrong() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSubscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSuperscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isText() noexcept;

Raw LaTeX/TeX math content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/MathInline.hpp>
std::string literal;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr static
InlineKind kind_id;

A sequence of text nodes.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParagraphBlock.hpp>
struct ParagraphBlock
    : BlockCommonBase<BlockKind::Paragraph>
    , InlineContainer

Description

Syntax:

Plain paragraph text. Another paragraph.

Base Classes

Name Description
BlockCommonBase<BlockKind::Paragraph>Base class for providing variant discriminator functions.
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
ParagraphBlock [constructor]Construct an empty paragraph.
~ParagraphBlock [destructor] [virtual]Virtual destructor for the polymorphic block hierarchy.
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality compares child sequences.
operator<=> Three-way comparison operators

Static Member Functions

Name
isAdmonition
isBrief
isCode
isDefinitionList
isFootnoteDefinition
isHeading
isList
isMath
isParagraph
isParam
isPostcondition
isPrecondition
isQuote
isReturns
isSee
isTParam
isTable
isThematicBreak
isThrows

Data Members

NameDescription
children Child inline elements contained here.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Construct an empty paragraph.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParagraphBlock.hpp>
constexpr
ParagraphBlock() noexcept = default;

Virtual destructor for the polymorphic block hierarchy.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParagraphBlock.hpp>
constexpr
virtual
~ParagraphBlock() override = default;

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Compare paragraphs by their inline content.

auto
operator<=>(ParagraphBlock const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Paragraph> const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Compare paragraphs by their inline content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParagraphBlock.hpp>
auto
operator<=>(ParagraphBlock const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Paragraph> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isAdmonition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isBrief() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isDefinitionList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isFootnoteDefinition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isHeading() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isParagraph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPostcondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPrecondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isQuote() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isReturns() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isSee() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isTParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isTable() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isThematicBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isThrows() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr static
BlockKind kind_id;

Documentation for a function parameter

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParamBlock.hpp>
struct ParamBlock final
    : BlockCommonBase<BlockKind::Param>
    , InlineContainer

Description

Syntax:

@param name description

Base Classes

Name Description
BlockCommonBase<BlockKind::Param>Base class for providing variant discriminator functions.
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
ParamBlock [constructor]Constructors
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isAdmonition
isBrief
isCode
isDefinitionList
isFootnoteDefinition
isHeading
isList
isMath
isParagraph
isParam
isPostcondition
isPrecondition
isQuote
isReturns
isSee
isTParam
isTable
isThematicBreak
isThrows

Data Members

NameDescription
children Child inline elements contained here.
direction Direction (in/out/inout) of the parameter.
name Name of the parameter being documented.

Static Data Members

Name
kind_id

Using Declarations

NameDescription
ParamBlock Inherit inline container constructors.

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Constructors

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/ParamBlock.hpp>

Build from an existing inline container.

ParamBlock(InlineContainer const& other);
» more...

Build from an rvalue inline container.

ParamBlock(InlineContainer&& other) noexcept;
» more...

Construct from name, text, and direction.

ParamBlock(
    std::string_view name,
    std::string_view text,
    ParamDirection direction = ParamDirection::none);
» more...

Parameters

Name Description
name Parameter identifier.
text Description text.
direction Flow direction of the parameter.

Build from an existing inline container.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParamBlock.hpp>
ParamBlock(InlineContainer const& other);

Parameters

Name Description
other The object to copy construct from

Build from an rvalue inline container.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParamBlock.hpp>
ParamBlock(InlineContainer&& other) noexcept;

Parameters

Name Description
other The object to move construct from

Construct from name, text, and direction.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParamBlock.hpp>
ParamBlock(
    std::string_view name,
    std::string_view text,
    ParamDirection direction = ParamDirection::none);

Parameters

Name Description
name Parameter identifier.
text Description text.
direction Flow direction of the parameter.

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/ParamBlock.hpp>

Equality compares name, direction, and text.

constexpr
bool
operator==(ParamBlock const& rhs) const noexcept = default;
» more...

Equality compares child sequences.

constexpr
bool
operator==(InlineContainer const& rhs) const = default;
» more...

Equality compares name, direction, and text.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParamBlock.hpp>
constexpr
bool
operator==(ParamBlock const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares child sequences.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order parameter docs by name, direction, and text.

auto
operator<=>(ParamBlock const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Param> const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Order parameter docs by name, direction, and text.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParamBlock.hpp>
auto
operator<=>(ParamBlock const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Param> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isAdmonition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isBrief() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isDefinitionList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isFootnoteDefinition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isHeading() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isParagraph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPostcondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPrecondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isQuote() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isReturns() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isSee() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isTParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isTable() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isThematicBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isThrows() noexcept;

Direction (in/out/inout) of the parameter.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParamBlock.hpp>
ParamDirection direction = ParamDirection::none;

Name of the parameter being documented.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParamBlock.hpp>
std::string name;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr static
BlockKind kind_id;

Inherit inline container constructors.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParamBlock.hpp>
using InlineContainer::ParamBlock;

Introduced Symbols

Name Description
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.

Text describing conditions guaranteed on successful exit.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/PostconditionBlock.hpp>
struct PostconditionBlock
    : BlockCommonBase<BlockKind::Postcondition>
    , InlineContainer

Description

Syntax:

@post condition

Base Classes

Name Description
BlockCommonBase<BlockKind::Postcondition>Base class for providing variant discriminator functions.
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isAdmonition
isBrief
isCode
isDefinitionList
isFootnoteDefinition
isHeading
isList
isMath
isParagraph
isParam
isPostcondition
isPrecondition
isQuote
isReturns
isSee
isTParam
isTable
isThematicBreak
isThrows

Data Members

NameDescription
children Child inline elements contained here.

Static Data Members

Name
kind_id

Using Declarations

NameDescription
PostconditionBlock Inherit inline container constructors.

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/PostconditionBlock.hpp>

Equality compares the inline text.

constexpr
bool
operator==(PostconditionBlock const& rhs) const noexcept = default;
» more...

Equality compares child sequences.

constexpr
bool
operator==(InlineContainer const& rhs) const = default;
» more...

Equality compares the inline text.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/PostconditionBlock.hpp>
constexpr
bool
operator==(PostconditionBlock const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares child sequences.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order postconditions by their inline text.

auto
operator<=>(PostconditionBlock const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Postcondition> const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Order postconditions by their inline text.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/PostconditionBlock.hpp>
auto
operator<=>(PostconditionBlock const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Postcondition> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isAdmonition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isBrief() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isDefinitionList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isFootnoteDefinition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isHeading() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isParagraph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPostcondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPrecondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isQuote() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isReturns() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isSee() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isTParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isTable() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isThematicBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isThrows() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr static
BlockKind kind_id;

Inherit inline container constructors.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/PostconditionBlock.hpp>
using InlineContainer::PostconditionBlock;

Introduced Symbols

Name Description
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Move-construct child nodes.
mrdocs::doc::InlineContainer::InlineContainer Copy-construct all child nodes.

Text describing required conditions before entry.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/PreconditionBlock.hpp>
struct PreconditionBlock final
    : BlockCommonBase<BlockKind::Precondition>
    , InlineContainer

Description

Syntax:

@pre condition

Base Classes

Name Description
BlockCommonBase<BlockKind::Precondition>Base class for providing variant discriminator functions.
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isAdmonition
isBrief
isCode
isDefinitionList
isFootnoteDefinition
isHeading
isList
isMath
isParagraph
isParam
isPostcondition
isPrecondition
isQuote
isReturns
isSee
isTParam
isTable
isThematicBreak
isThrows

Data Members

NameDescription
children Child inline elements contained here.

Static Data Members

Name
kind_id

Using Declarations

NameDescription
PreconditionBlock Inherit inline container constructors.

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/PreconditionBlock.hpp>

Equality compares the inline text.

constexpr
bool
operator==(PreconditionBlock const& rhs) const noexcept = default;
» more...

Equality compares child sequences.

constexpr
bool
operator==(InlineContainer const& rhs) const = default;
» more...

Equality compares the inline text.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/PreconditionBlock.hpp>
constexpr
bool
operator==(PreconditionBlock const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares child sequences.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order preconditions by their inline text.

auto
operator<=>(PreconditionBlock const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Precondition> const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Order preconditions by their inline text.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/PreconditionBlock.hpp>
auto
operator<=>(PreconditionBlock const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Precondition> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isAdmonition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isBrief() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isDefinitionList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isFootnoteDefinition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isHeading() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isParagraph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPostcondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPrecondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isQuote() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isReturns() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isSee() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isTParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isTable() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isThematicBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isThrows() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr static
BlockKind kind_id;

Inherit inline container constructors.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/PreconditionBlock.hpp>
using InlineContainer::PreconditionBlock;

Introduced Symbols

Name Description
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Move-construct child nodes.
mrdocs::doc::InlineContainer::InlineContainer Copy-construct all child nodes.

A quoted block of text.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/QuoteBlock.hpp>
struct QuoteBlock final
    : BlockCommonBase<BlockKind::Quote>
    , BlockContainer

Description

Syntax:

> quoted text

Multi-line quotes:

> This is the first line of a multi-line quote. > This is the second line. > And this is the third.

Nested quotes:

> This is the outer quote. > > > This is a nested quote within the outer quote. > > > > > This is a further nested quote.

Quotes with other markdown elements:

> ### Important Note > > - This blockquote contains a heading. > - And a list item. > > *Emphasis* and **strong emphasis** also work within blockquotes.

Base Classes

Name Description
BlockCommonBase<BlockKind::Quote>Base class for providing variant discriminator functions.
BlockContainerA composite block that stores a sequence of child blocks.

Member Functions

NameDescription
asBlockContainer asBlockContainer overloads
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isAdmonition
isBrief
isCode
isDefinitionList
isFootnoteDefinition
isHeading
isList
isMath
isParagraph
isParam
isPostcondition
isPrecondition
isQuote
isReturns
isSee
isTParam
isTable
isThematicBreak
isThrows

Data Members

NameDescription
blocks Child blocks contained within this composite block.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the first text elements
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the last text elements
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the text elements

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Equality compares quoted child content.

constexpr
bool
operator==(QuoteBlock const& rhs) const noexcept = default;
» more...

Equality compares the stored child blocks.

constexpr
bool
operator==(BlockContainer const& rhs) const = default;
» more...

Equality compares quoted child content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/QuoteBlock.hpp>
constexpr
bool
operator==(QuoteBlock const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares the stored child blocks.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
bool
operator==(BlockContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Order quote blocks by their child content.

auto
operator<=>(QuoteBlock const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Quote> const& rhs) const = default;
» more...

Order containers lexicographically by their children.

std::strong_ordering
operator<=>(BlockContainer const& rhs) const;
» more...

Order quote blocks by their child content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/QuoteBlock.hpp>
auto
operator<=>(QuoteBlock const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Quote> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Order containers lexicographically by their children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
std::strong_ordering
operator<=>(BlockContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isAdmonition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isBrief() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isDefinitionList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isFootnoteDefinition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isHeading() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isParagraph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPostcondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPrecondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isQuote() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isReturns() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isSee() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isTParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isTable() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isThematicBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isThrows() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr static
BlockKind kind_id;

A reference to a symbol.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/ReferenceInline.hpp>
struct ReferenceInline
    : InlineCommonBase<InlineKind::Reference>

Description

Syntax:

@ref target "label"

Base Classes

Name Description
InlineCommonBase<InlineKind::Reference>Base class for providing variant discriminator functions.

Member Functions

NameDescription
ReferenceInline [constructor]Construct a reference with optional display text.
operator== Equality compares literal and target id.
operator<=> Order references by literal and target id.

Static Member Functions

Name
isCode
isCopyDetails
isEmph
isFootnoteReference
isHighlight
isImage
isLineBreak
isLink
isMath
isReference
isSoftBreak
isStrikethrough
isStrong
isSubscript
isSuperscript
isText

Data Members

NameDescription
id Symbol being referenced.
literal Display text of the reference.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
getAsPlainTextGet the plain text representation of an inline element tree.
getAsPlainTextGet the plain text representation of an inline element tree.

Construct a reference with optional display text.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/ReferenceInline.hpp>
explicit
ReferenceInline(std::string str = {}) noexcept;

Parameters

Name Description
str The object to construct from

Equality compares literal and target id.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/ReferenceInline.hpp>
constexpr
bool
operator==(ReferenceInline const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Order references by literal and target id.

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order references by literal and target id.

auto
operator<=>(ReferenceInline const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Reference> const& rhs) const = default;
» more...

Order references by literal and target id.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/ReferenceInline.hpp>
auto
operator<=>(ReferenceInline const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Reference> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCopyDetails() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isEmph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isFootnoteReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isHighlight() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isImage() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLineBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLink() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSoftBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrikethrough() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrong() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSubscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSuperscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isText() noexcept;

Symbol being referenced.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/ReferenceInline.hpp>
SymbolID id = = SymbolID::invalid;

Display text of the reference.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/ReferenceInline.hpp>
std::string literal;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr static
InlineKind kind_id;

Documentation for a function return type

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ReturnsBlock.hpp>
struct ReturnsBlock final
    : BlockCommonBase<BlockKind::Returns>
    , InlineContainer

Description

Syntax:

@return description

Base Classes

Name Description
BlockCommonBase<BlockKind::Returns>Base class for providing variant discriminator functions.
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
ReturnsBlock [constructor]Constructors
~ReturnsBlock [destructor] [virtual]Virtual destructor for polymorphic base.
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isAdmonition
isBrief
isCode
isDefinitionList
isFootnoteDefinition
isHeading
isList
isMath
isParagraph
isParam
isPostcondition
isPrecondition
isQuote
isReturns
isSee
isTParam
isTable
isThematicBreak
isThrows

Data Members

NameDescription
children Child inline elements contained here.

Static Data Members

Name
kind_id

Using Declarations

NameDescription
ReturnsBlock Inherit inline container constructors.

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Constructors

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/ReturnsBlock.hpp>

Copy constructor.

constexpr
ReturnsBlock(ReturnsBlock const& other) = default;
» more...

Move constructor.

constexpr
ReturnsBlock(ReturnsBlock&& other) noexcept = default;
» more...

Construct from inline content (copy).

ReturnsBlock(InlineContainer const& other);
» more...

Construct from inline content (move).

ReturnsBlock(InlineContainer&& other) noexcept;
» more...

Copy constructor.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ReturnsBlock.hpp>
constexpr
ReturnsBlock(ReturnsBlock const& other) = default;

Parameters

Name Description
other The object to copy construct from

Move constructor.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ReturnsBlock.hpp>
constexpr
ReturnsBlock(ReturnsBlock&& other) noexcept = default;

Parameters

Name Description
other The object to move construct from

Construct from inline content (copy).

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ReturnsBlock.hpp>
ReturnsBlock(InlineContainer const& other);

Parameters

Name Description
other The object to copy construct from

Construct from inline content (move).

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ReturnsBlock.hpp>
ReturnsBlock(InlineContainer&& other) noexcept;

Parameters

Name Description
other The object to move construct from

Virtual destructor for polymorphic base.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ReturnsBlock.hpp>
constexpr
virtual
~ReturnsBlock() override = default;

Assignment operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Copy-assign child nodes.

constexpr
InlineContainer&
operator=(InlineContainer const& other) = default;
» more...

Copy assignment.

constexpr
ReturnsBlock&
operator=(ReturnsBlock const& other) = default;
» more...

Move-assign child nodes.

constexpr
InlineContainer&
operator=(InlineContainer&& other) noexcept = default;
» more...

Move assignment.

constexpr
ReturnsBlock&
operator=(ReturnsBlock&& other) noexcept = default;
» more...

Assign an InlineContainer with a single TextInline child.

InlineContainer&
operator=(std::string_view text);
» more...

Copy-assign child nodes.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
InlineContainer&
operator=(InlineContainer const& other) = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Copy assignment.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ReturnsBlock.hpp>
constexpr
ReturnsBlock&
operator=(ReturnsBlock const& other) = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Move-assign child nodes.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
InlineContainer&
operator=(InlineContainer&& other) noexcept = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to move assign from

Move assignment.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ReturnsBlock.hpp>
constexpr
ReturnsBlock&
operator=(ReturnsBlock&& other) noexcept = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to move assign from

Assign an InlineContainer with a single TextInline child.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
InlineContainer&
operator=(std::string_view text);

Return Value

Reference to the current object

Parameters

Name Description
text The object to assign from

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/ReturnsBlock.hpp>

Equality compares inline content.

constexpr
bool
operator==(ReturnsBlock const& rhs) const noexcept = default;
» more...

Equality compares child sequences.

constexpr
bool
operator==(InlineContainer const& rhs) const = default;
» more...

Equality compares inline content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ReturnsBlock.hpp>
constexpr
bool
operator==(ReturnsBlock const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares child sequences.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order return docs by inline content.

auto
operator<=>(ReturnsBlock const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Returns> const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Order return docs by inline content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ReturnsBlock.hpp>
auto
operator<=>(ReturnsBlock const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Returns> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isAdmonition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isBrief() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isDefinitionList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isFootnoteDefinition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isHeading() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isParagraph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPostcondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPrecondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isQuote() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isReturns() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isSee() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isTParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isTable() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isThematicBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isThrows() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr static
BlockKind kind_id;

Inherit inline container constructors.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ReturnsBlock.hpp>
using InlineContainer::ReturnsBlock;

Introduced Symbols

Name Description
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.

A

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/SeeBlock.hpp>
struct SeeBlock final
    : BlockCommonBase<BlockKind::See>
    , InlineContainer

Description

Syntax:

@see other_symbol

or

@see AnotherFunction() @see MyClass::calculateSomething() @see MyFile.h @see "The Doxygen Manual"

Base Classes

Name Description
BlockCommonBase<BlockKind::See>Base class for providing variant discriminator functions.
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isAdmonition
isBrief
isCode
isDefinitionList
isFootnoteDefinition
isHeading
isList
isMath
isParagraph
isParam
isPostcondition
isPrecondition
isQuote
isReturns
isSee
isTParam
isTable
isThematicBreak
isThrows

Data Members

NameDescription
children Child inline elements contained here.

Static Data Members

Name
kind_id

Using Declarations

NameDescription
SeeBlock Inherit inline container constructors.

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

See Also

paragraph listing related symbols or references.

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/SeeBlock.hpp>

Equality compares inline content.

constexpr
bool
operator==(SeeBlock const& rhs) const noexcept = default;
» more...

Equality compares child sequences.

constexpr
bool
operator==(InlineContainer const& rhs) const = default;
» more...

Equality compares inline content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/SeeBlock.hpp>
constexpr
bool
operator==(SeeBlock const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares child sequences.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order see-also entries by inline content.

auto
operator<=>(SeeBlock const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::See> const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Order see-also entries by inline content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/SeeBlock.hpp>
auto
operator<=>(SeeBlock const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::See> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isAdmonition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isBrief() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isDefinitionList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isFootnoteDefinition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isHeading() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isParagraph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPostcondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPrecondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isQuote() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isReturns() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isSee() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isTParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isTable() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isThematicBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isThrows() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr static
BlockKind kind_id;

Inherit inline container constructors.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/SeeBlock.hpp>
using InlineContainer::SeeBlock;

Introduced Symbols

Name Description
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Move-construct child nodes.
mrdocs::doc::InlineContainer::InlineContainer Copy-construct all child nodes.

A line break that may render as a space

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/SoftBreakInline.hpp>
struct SoftBreakInline
    : InlineCommonBase<InlineKind::SoftBreak>

Description

Syntax:

This is the first part of a line, and this is the continuation on the next line.

Placing a backslash (\) at the end of a line, followed by a new line, can also create a soft line break. This method is often preferred because it is less susceptible to space-trimming issues.

This is the first part of a line,\ and this is the continuation on the next line.

Base Classes

Name Description
InlineCommonBase<InlineKind::SoftBreak>Base class for providing variant discriminator functions.

Member Functions

NameDescription
SoftBreakInline [constructor]Construct a soft line break node.
~SoftBreakInline [destructor] [virtual]Virtual destructor for inline hierarchy.
operator== Equality compares soft breaks (trivial).
operator<=> Order soft breaks (trivial).

Static Member Functions

Name
isCode
isCopyDetails
isEmph
isFootnoteReference
isHighlight
isImage
isLineBreak
isLink
isMath
isReference
isSoftBreak
isStrikethrough
isStrong
isSubscript
isSuperscript
isText

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
getAsPlainTextGet the plain text representation of an inline element tree.
getAsPlainTextGet the plain text representation of an inline element tree.

Construct a soft line break node.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/SoftBreakInline.hpp>
constexpr
SoftBreakInline() noexcept = default;

Virtual destructor for inline hierarchy.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/SoftBreakInline.hpp>
constexpr
virtual
~SoftBreakInline() override = default;

Equality compares soft breaks (trivial).

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/SoftBreakInline.hpp>
constexpr
bool
operator==(SoftBreakInline const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Order soft breaks (trivial).

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order soft breaks (trivial).

constexpr
auto
operator<=>(SoftBreakInline const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::SoftBreak> const& rhs) const = default;
» more...

Order soft breaks (trivial).

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/SoftBreakInline.hpp>
constexpr
auto
operator<=>(SoftBreakInline const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::SoftBreak> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCopyDetails() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isEmph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isFootnoteReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isHighlight() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isImage() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLineBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLink() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSoftBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrikethrough() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrong() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSubscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSuperscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isText() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr static
InlineKind kind_id;

Strikethrough span to show removed or deprecated text.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/StrikethroughInline.hpp>
struct StrikethroughInline final
    : InlineCommonBase<InlineKind::Strikethrough>
    , InlineContainer

Description

Syntax:

~~crossed out~~

When rendered to HTML, the Markdown syntax above typically translates into the del tag, which represents content that has been deleted or is no longer accurate.

<del>This text is struck through.</del>

Base Classes

Name Description
InlineCommonBase<InlineKind::Strikethrough>Base class for providing variant discriminator functions.
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isCode
isCopyDetails
isEmph
isFootnoteReference
isHighlight
isImage
isLineBreak
isLink
isMath
isReference
isSoftBreak
isStrikethrough
isStrong
isSubscript
isSuperscript
isText

Data Members

NameDescription
children Child inline elements contained here.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextGet the plain text representation of an inline element tree.
getAsPlainTextGet the plain text representation of an inline element tree.
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Equality compares contained inline children.

constexpr
bool
operator==(StrikethroughInline const& rhs) const noexcept = default;
» more...

Equality compares child sequences.

constexpr
bool
operator==(InlineContainer const& rhs) const = default;
» more...

Equality compares contained inline children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/StrikethroughInline.hpp>
constexpr
bool
operator==(StrikethroughInline const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares child sequences.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order strikethrough spans by their children.

auto
operator<=>(StrikethroughInline const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Strikethrough> const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Order strikethrough spans by their children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/StrikethroughInline.hpp>
auto
operator<=>(StrikethroughInline const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Strikethrough> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCopyDetails() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isEmph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isFootnoteReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isHighlight() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isImage() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLineBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLink() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSoftBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrikethrough() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrong() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSubscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSuperscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isText() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr static
InlineKind kind_id;

Strong emphasis span (typically rendered in bold).

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/StrongInline.hpp>
struct StrongInline final
    : InlineCommonBase<InlineKind::Strong>
    , InlineContainer

Description

Syntax:

@b bold

Base Classes

Name Description
InlineCommonBase<InlineKind::Strong>Base class for providing variant discriminator functions.
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isCode
isCopyDetails
isEmph
isFootnoteReference
isHighlight
isImage
isLineBreak
isLink
isMath
isReference
isSoftBreak
isStrikethrough
isStrong
isSubscript
isSuperscript
isText

Data Members

NameDescription
children Child inline elements contained here.

Static Data Members

Name
kind_id

Using Declarations

NameDescription
StrongInline Inherit text container constructors.

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextGet the plain text representation of an inline element tree.
getAsPlainTextGet the plain text representation of an inline element tree.
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Equality compares contained inline children.

constexpr
bool
operator==(StrongInline const& rhs) const noexcept = default;
» more...

Equality compares child sequences.

constexpr
bool
operator==(InlineContainer const& rhs) const = default;
» more...

Equality compares contained inline children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/StrongInline.hpp>
constexpr
bool
operator==(StrongInline const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares child sequences.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order strong spans by their children.

auto
operator<=>(StrongInline const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Strong> const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Order strong spans by their children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/StrongInline.hpp>
auto
operator<=>(StrongInline const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Strong> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCopyDetails() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isEmph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isFootnoteReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isHighlight() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isImage() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLineBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLink() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSoftBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrikethrough() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrong() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSubscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSuperscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isText() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr static
InlineKind kind_id;

Inherit text container constructors.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/StrongInline.hpp>
using InlineContainer::StrongInline;

Introduced Symbols

Name Description
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Move-construct child nodes.
mrdocs::doc::InlineContainer::InlineContainer Copy-construct all child nodes.

Subscript text fragment (lowered baseline).

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/SubscriptInline.hpp>
struct SubscriptInline final
    : InlineCommonBase<InlineKind::Subscript>
    , InlineContainer

Description

Syntax:

H~2~O

Base Classes

Name Description
InlineCommonBase<InlineKind::Subscript>Base class for providing variant discriminator functions.
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isCode
isCopyDetails
isEmph
isFootnoteReference
isHighlight
isImage
isLineBreak
isLink
isMath
isReference
isSoftBreak
isStrikethrough
isStrong
isSubscript
isSuperscript
isText

Data Members

NameDescription
children Child inline elements contained here.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextGet the plain text representation of an inline element tree.
getAsPlainTextGet the plain text representation of an inline element tree.
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Equality compares contained inline children.

constexpr
bool
operator==(SubscriptInline const& rhs) const noexcept = default;
» more...

Equality compares child sequences.

constexpr
bool
operator==(InlineContainer const& rhs) const = default;
» more...

Equality compares contained inline children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/SubscriptInline.hpp>
constexpr
bool
operator==(SubscriptInline const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares child sequences.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order subscript spans by their children.

auto
operator<=>(SubscriptInline const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Subscript> const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Order subscript spans by their children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/SubscriptInline.hpp>
auto
operator<=>(SubscriptInline const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Subscript> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCopyDetails() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isEmph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isFootnoteReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isHighlight() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isImage() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLineBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLink() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSoftBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrikethrough() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrong() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSubscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSuperscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isText() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr static
InlineKind kind_id;

Superscript text fragment (raised baseline).

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/SuperscriptInline.hpp>
struct SuperscriptInline final
    : InlineCommonBase<InlineKind::Superscript>
    , InlineContainer

Description

Syntax:

x^2^

Base Classes

Name Description
InlineCommonBase<InlineKind::Superscript>Base class for providing variant discriminator functions.
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isCode
isCopyDetails
isEmph
isFootnoteReference
isHighlight
isImage
isLineBreak
isLink
isMath
isReference
isSoftBreak
isStrikethrough
isStrong
isSubscript
isSuperscript
isText

Data Members

NameDescription
children Child inline elements contained here.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextGet the plain text representation of an inline element tree.
getAsPlainTextGet the plain text representation of an inline element tree.
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Equality compares contained inline children.

constexpr
bool
operator==(SuperscriptInline const& rhs) const noexcept = default;
» more...

Equality compares child sequences.

constexpr
bool
operator==(InlineContainer const& rhs) const = default;
» more...

Equality compares contained inline children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/SuperscriptInline.hpp>
constexpr
bool
operator==(SuperscriptInline const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares child sequences.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order superscript spans by their children.

auto
operator<=>(SuperscriptInline const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Superscript> const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Order superscript spans by their children.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/SuperscriptInline.hpp>
auto
operator<=>(SuperscriptInline const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Superscript> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCopyDetails() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isEmph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isFootnoteReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isHighlight() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isImage() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLineBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLink() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSoftBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrikethrough() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrong() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSubscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSuperscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isText() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr static
InlineKind kind_id;

Documentation for a template parameter

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TParamBlock.hpp>
struct TParamBlock final
    : BlockCommonBase<BlockKind::TParam>
    , InlineContainer

Description

Syntax:

@tparam T description

Base Classes

Name Description
BlockCommonBase<BlockKind::TParam>Base class for providing variant discriminator functions.
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isAdmonition
isBrief
isCode
isDefinitionList
isFootnoteDefinition
isHeading
isList
isMath
isParagraph
isParam
isPostcondition
isPrecondition
isQuote
isReturns
isSee
isTParam
isTable
isThematicBreak
isThrows

Data Members

NameDescription
children Child inline elements contained here.
name Template parameter name.

Static Data Members

Name
kind_id

Using Declarations

NameDescription
TParamBlock Inherit inline container constructors.

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/TParamBlock.hpp>

Equality compares name and inline content.

constexpr
bool
operator==(TParamBlock const& rhs) const noexcept = default;
» more...

Equality compares child sequences.

constexpr
bool
operator==(InlineContainer const& rhs) const = default;
» more...

Equality compares name and inline content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TParamBlock.hpp>
constexpr
bool
operator==(TParamBlock const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares child sequences.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order template parameter docs by name and text.

auto
operator<=>(TParamBlock const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::TParam> const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Order template parameter docs by name and text.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TParamBlock.hpp>
auto
operator<=>(TParamBlock const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::TParam> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isAdmonition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isBrief() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isDefinitionList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isFootnoteDefinition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isHeading() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isParagraph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPostcondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPrecondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isQuote() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isReturns() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isSee() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isTParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isTable() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isThematicBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isThrows() noexcept;

Template parameter name.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TParamBlock.hpp>
std::string name;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr static
BlockKind kind_id;

Inherit inline container constructors.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TParamBlock.hpp>
using InlineContainer::TParamBlock;

Introduced Symbols

Name Description
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Move-construct child nodes.
mrdocs::doc::InlineContainer::InlineContainer Copy-construct all child nodes.

A table block

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableBlock.hpp>
struct TableBlock final
    : BlockCommonBase<BlockKind::Table>

Description

Syntax:

| Header 1 | Header 2 | Header 3 | | :------- | :------: | -------: | | Left | Center | Right | | Cell 1A | Cell 1B | Cell 1C | | Cell 2A | Cell 2B | Cell 2C |

Base Classes

Name Description
BlockCommonBase<BlockKind::Table>Base class for providing variant discriminator functions.

Member Functions

NameDescription
operator== Equality compares alignments and rows.
operator<=> Order tables by row contents and alignments.

Static Member Functions

Name
isAdmonition
isBrief
isCode
isDefinitionList
isFootnoteDefinition
isHeading
isList
isMath
isParagraph
isParam
isPostcondition
isPrecondition
isQuote
isReturns
isSee
isTParam
isTable
isThematicBreak
isThrows

Data Members

NameDescription
Alignments Column alignments for each table column.
items Rows that make up the table body (header first when present).

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.

Equality compares alignments and rows.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableBlock.hpp>
constexpr
bool
operator==(TableBlock const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Order tables by row contents and alignments.

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Order tables by row contents and alignments.

auto
operator<=>(TableBlock const& other) const;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Table> const& rhs) const = default;
» more...

Order tables by row contents and alignments.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableBlock.hpp>
auto
operator<=>(TableBlock const& other) const;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Table> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isAdmonition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isBrief() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isDefinitionList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isFootnoteDefinition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isHeading() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isParagraph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPostcondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPrecondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isQuote() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isReturns() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isSee() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isTParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isTable() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isThematicBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isThrows() noexcept;

Column alignments for each table column.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableBlock.hpp>
std::vector<TableAlignmentKind> Alignments;

Rows that make up the table body (header first when present).

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableBlock.hpp>
std::vector<TableRow> items;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr static
BlockKind kind_id;

A cell in a table

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableCell.hpp>
struct TableCell final
    : InlineContainer

Base Classes

Name Description
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality operators
operator<=> Three-way comparison operators

Data Members

NameDescription
children Child inline elements contained here.

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/TableCell.hpp>

Equality compares inline content.

constexpr
bool
operator==(TableCell const& rhs) const noexcept = default;
» more...

Equality compares child sequences.

constexpr
bool
operator==(InlineContainer const& rhs) const = default;
» more...

Equality compares inline content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableCell.hpp>
constexpr
bool
operator==(TableCell const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares child sequences.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order cells by their inline content.

auto
operator<=>(TableCell const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Order cells by their inline content.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableCell.hpp>
auto
operator<=>(TableCell const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

An item in a list

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableRow.hpp>
struct TableRow final

Member Functions

NameDescription
operator== Equality compares header flag and cells.
operator<=> Order rows by header flag then cell contents.

Data Members

NameDescription
Cells Cells contained in the row.
is_header True if this row represents a header.

Equality compares header flag and cells.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableRow.hpp>
constexpr
bool
operator==(TableRow const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Order rows by header flag then cell contents.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableRow.hpp>
constexpr
auto
operator<=>(TableRow const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Cells contained in the row.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableRow.hpp>
std::vector<TableCell> Cells;

True if this row represents a header.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableRow.hpp>
bool is_header = false;

A Node containing a string of text.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/TextInline.hpp>
struct TextInline
    : InlineCommonBase<InlineKind::Text>

Description

There will be no newlines in the text. Otherwise, this would be represented as multiple text nodes within a Paragraph node.

Syntax:

plain text

Base Classes

Name Description
InlineCommonBase<InlineKind::Text>Base class for providing variant discriminator functions.

Member Functions

NameDescription
TextInline [constructor]Constructors
~TextInline [destructor] [virtual]Virtual destructor for the inline hierarchy.
operator== Equality compares literal strings.
operator<=> Order text nodes lexicographically by their literal.

Static Member Functions

Name
isCode
isCopyDetails
isEmph
isFootnoteReference
isHighlight
isImage
isLineBreak
isLink
isMath
isReference
isSoftBreak
isStrikethrough
isStrong
isSubscript
isSuperscript
isText

Data Members

NameDescription
literal Plain text carried by this inline node.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
getAsPlainTextGet the plain text representation of an inline element tree.
getAsPlainTextGet the plain text representation of an inline element tree.

Constructors

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/TextInline.hpp>

Construct an empty text inline.

constexpr
TextInline() noexcept = default;
» more...

Construct from a string view.

explicit
TextInline(std::string_view str) noexcept;
» more...

Construct from a string copy.

explicit
TextInline(std::string const& str) noexcept;
» more...

Construct by moving text storage.

explicit
TextInline(std::string&& str) noexcept;
» more...

Construct from a C string.

explicit
TextInline(char const* str) noexcept;
» more...

Construct an empty text inline.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/TextInline.hpp>
constexpr
TextInline() noexcept = default;

Construct from a string view.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/TextInline.hpp>
explicit
TextInline(std::string_view str) noexcept;

Parameters

Name Description
str The object to construct from

Construct from a string copy.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/TextInline.hpp>
explicit
TextInline(std::string const& str) noexcept;

Parameters

Name Description
str The object to copy construct from

Construct by moving text storage.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/TextInline.hpp>
explicit
TextInline(std::string&& str) noexcept;

Parameters

Name Description
str The object to move construct from

Construct from a C string.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/TextInline.hpp>
explicit
TextInline(char const* str) noexcept;

Parameters

Name Description
str The value to construct from

Virtual destructor for the inline hierarchy.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/TextInline.hpp>
constexpr
virtual
~TextInline() override = default;

Equality compares literal strings.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/TextInline.hpp>
constexpr
bool
operator==(TextInline const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Order text nodes lexicographically by their literal.

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order text nodes lexicographically by their literal.

constexpr
auto
operator<=>(TextInline const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Text> const& rhs) const = default;
» more...

Order text nodes lexicographically by their literal.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/TextInline.hpp>
constexpr
auto
operator<=>(TextInline const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
auto
operator<=>(InlineCommonBase<mrdocs::doc::InlineKind::Text> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isCopyDetails() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isEmph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isFootnoteReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isHighlight() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isImage() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLineBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isLink() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSoftBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrikethrough() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isStrong() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSubscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isSuperscript() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineNodes.inc>
constexpr
static
bool
isText() noexcept;

Plain text carried by this inline node.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/TextInline.hpp>
std::string literal;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr static
InlineKind kind_id;

A horizontal thematic break separating sections.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ThematicBreakBlock.hpp>
struct ThematicBreakBlock final
    : BlockCommonBase<BlockKind::ThematicBreak>

Description

Syntax:

---

or

**

or

___

or

- - -

- You can use an asterisk (), dash (-), or underscore (). - There must be at least three characters in a row. - Spaces can be used between the characters, but no other characters. - The thematic break should be on its own line, separated by blank lines above and below. - Thematic breaks can also be used inside lists, but the character used for the break must be different from the list marker.

Base Classes

Name Description
BlockCommonBase<BlockKind::ThematicBreak>Base class for providing variant discriminator functions.

Member Functions

NameDescription
ThematicBreakBlock [constructor]Copy constructor.
operator= Copy assignment.
operator<=> Compare break blocks (trivial as they hold no data).

Static Member Functions

Name
isAdmonition
isBrief
isCode
isDefinitionList
isFootnoteDefinition
isHeading
isList
isMath
isParagraph
isParam
isPostcondition
isPrecondition
isQuote
isReturns
isSee
isTParam
isTable
isThematicBreak
isThrows

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.

Copy constructor.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ThematicBreakBlock.hpp>
constexpr
ThematicBreakBlock(ThematicBreakBlock const& other) = default;

Parameters

Name Description
other The object to copy construct from

Copy assignment.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ThematicBreakBlock.hpp>
constexpr
ThematicBreakBlock&
operator=(ThematicBreakBlock const& other) = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Compare break blocks (trivial as they hold no data).

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Compare break blocks (trivial as they hold no data).

constexpr
auto
operator<=>(ThematicBreakBlock const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::ThematicBreak> const& rhs) const = default;
» more...

Compare break blocks (trivial as they hold no data).

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ThematicBreakBlock.hpp>
constexpr
auto
operator<=>(ThematicBreakBlock const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::ThematicBreak> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isAdmonition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isBrief() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isDefinitionList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isFootnoteDefinition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isHeading() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isParagraph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPostcondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPrecondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isQuote() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isReturns() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isSee() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isTParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isTable() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isThematicBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isThrows() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr static
BlockKind kind_id;

Documentation for a function exception clause

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ThrowsBlock.hpp>
struct ThrowsBlock final
    : BlockCommonBase<BlockKind::Throws>
    , InlineContainer

Description

Syntax:

@throws Type description

Base Classes

Name Description
BlockCommonBase<BlockKind::Throws>Base class for providing variant discriminator functions.
InlineContainerAn internal node in the inline element tree.

Member Functions

NameDescription
operator= Assignment operators
append append overloads
asInlineContainer Return this container as a base-class reference.
back Get the last inline child.
begin Begin iterator forwarding to children.
clear Clear all inline children.
emplace_back Append a child of the specified type in-place.
empty Determine if there are no inline children.
end End iterator forwarding to children.
erase Erase inline children.
front Get the first inline child.
insert Insert inline children.
operator+= Addition assignment operators
size Get the number of inline children.
operator== Equality operators
operator<=> Three-way comparison operators

Static Member Functions

Name
isAdmonition
isBrief
isCode
isDefinitionList
isFootnoteDefinition
isHeading
isList
isMath
isParagraph
isParam
isPostcondition
isPrecondition
isQuote
isReturns
isSee
isTParam
isTable
isThematicBreak
isThrows

Data Members

NameDescription
children Child inline elements contained here.
exception Exception type being described.

Static Data Members

Name
kind_id

Using Declarations

NameDescription
ThrowsBlock Inherit inline container constructors.

Non-Member Functions

Name Description
getAsPlainTextFlatten an InlineContainer to plain text.
getAsPlainTextFlatten an InlineContainer to plain text.
isEmptyDetermine if the inline is empty
ltrimRemoves leading whitespace from the first text element in the given InlineContainer.
ltrimRemoves leading whitespace from the block.
rtrimRemoves trailing whitespace from the last text element in the given InlineContainer.
rtrimRemoves trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the block.
trimRemoves leading and trailing whitespace from the text elements in the given InlineContainer.

Equality operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/ThrowsBlock.hpp>

Equality compares exception and description.

constexpr
bool
operator==(ThrowsBlock const& rhs) const noexcept = default;
» more...

Equality compares child sequences.

constexpr
bool
operator==(InlineContainer const& rhs) const = default;
» more...

Equality compares exception and description.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ThrowsBlock.hpp>
constexpr
bool
operator==(ThrowsBlock const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Equality compares child sequences.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
constexpr
bool
operator==(InlineContainer const& rhs) const = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Order throw clauses by exception and description.

auto
operator<=>(ThrowsBlock const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Throws> const& rhs) const = default;
» more...

Compare two InlineContainers.

std::strong_ordering
operator<=>(InlineContainer const& rhs) const;
» more...

Order throw clauses by exception and description.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ThrowsBlock.hpp>
auto
operator<=>(ThrowsBlock const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr
auto
operator<=>(BlockCommonBase<mrdocs::doc::BlockKind::Throws> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare two InlineContainers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::strong_ordering
operator<=>(InlineContainer const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isAdmonition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isBrief() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isCode() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isDefinitionList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isFootnoteDefinition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isHeading() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isList() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isMath() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isParagraph() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPostcondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isPrecondition() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isQuote() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isReturns() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isSee() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isTParam() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isTable() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockNodes.inc>
constexpr
static
bool
isThematicBreak() noexcept;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockCommandNodes.inc>
constexpr
static
bool
isThrows() noexcept;

Exception type being described.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ThrowsBlock.hpp>
ReferenceInline exception;

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
constexpr static
BlockKind kind_id;

Inherit inline container constructors.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ThrowsBlock.hpp>
using InlineContainer::ThrowsBlock;

Introduced Symbols

Name Description
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Construct an InlineContainer with a single TextInline child.
mrdocs::doc::InlineContainer::InlineContainer Move-construct child nodes.
mrdocs::doc::InlineContainer::InlineContainer Copy-construct all child nodes.

An admonishment style.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/AdmonitionKind.hpp>
enum class AdmonitionKind : int;

Members

NameDescription
none No admonishment
note A general note
tip A tip to the reader
important Something important
caution A caution admonishment
warning A warning admonishment

Non-Member Functions

Name Description
toStringReturn the name of the Admonish as a string.

Enumerates the different kinds of DocComment blocks.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockKind.hpp>
enum class BlockKind : int;

Non-Member Functions

Name Description
isBlockCommandReturn true if the given block kind represents a command block.
toStringConvert a block kind to its kebab-case string name.

Enumerates the different kinds of inline nodes.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineKind.hpp>
enum class InlineKind : int;

Non-Member Functions

Name Description
toStringConvert an inline kind to its kebab-case string.

Parameter pass direction.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParamDirection.hpp>
enum class ParamDirection : int;

Members

NameDescription
none No direction specified
in Parameter is passed
out Parameter is passed back to the caller
inout Parameter is passed and passed back to the caller

Non-Member Functions

Name Description
toStringReturn the name of the ParamDirection as a string.

Which parts of the documentation to copy.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/Parts.hpp>
enum class Parts : int;

Description

Members

NameDescription
all Copy the brief and the description
brief Copy the brief
description Copy the description

Non-Member Functions

Name Description
toStringReturn the name of the Parts as a string.

getAsPlainText overloads

Synopses

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>

Get the plain text representation of an inline element tree.

std::string
getAsPlainText(doc::Inline const& in);
» more...

Flatten an InlineContainer to plain text.

std::string
getAsPlainText(doc::InlineContainer const& in);
» more...

Get the plain text representation of an inline element tree.

void
getAsPlainText(
    doc::Inline const& in,
    std::string& dst);
» more...

Flatten an InlineContainer to plain text.

void
getAsPlainText(
    doc::InlineContainer const& in,
    std::string& dst);
» more...

Return Value

The flattened plain text.

Parameters

Name Description
in The input inline element.
dst The output string to append to.

Get the plain text representation of an inline element tree.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::string
getAsPlainText(doc::Inline const& in);

Description

This strips all formatting and returns just the text content.

Return Value

The flattened plain text.

Parameters

Name Description
in The input inline element.

Flatten an InlineContainer to plain text.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
std::string
getAsPlainText(doc::InlineContainer const& in);

Description

This concatenates all text nodes, ignoring formatting.

Return Value

The flattened plain text.

Parameters

Name Description
in The InlineContainer to flatten.

Get the plain text representation of an inline element tree.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
void
getAsPlainText(
    doc::Inline const& in,
    std::string& dst);

Description

This strips all formatting and returns just the text content.

Return Value

the plain text representation of an inline element tree.

Parameters

Name Description
in The input inline element.
dst The output string to append to.

Flatten an InlineContainer to plain text.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
void
getAsPlainText(
    doc::InlineContainer const& in,
    std::string& dst);

Description

This concatenates all text nodes, ignoring formatting.

Parameters

Name Description
in The InlineContainer to flatten.
dst The output string to append to.

Return true if the given block kind represents a command block.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockKind.hpp>
constexpr
bool
isBlockCommand(BlockKind k) noexcept;

Return Value

true if the given block kind represents a command block.

Parameters

Name Description
k Enumerates the different kinds of DocComment blocks.

Determine if the inline is empty

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Determine if the inline is empty

bool
isEmpty(Block const& el);
» more...

Determine if the inline is empty

bool
isEmpty(Polymorphic<Block> const& el);
» more...

Determine if the inline is empty

bool
isEmpty(Polymorphic<Inline> const& el);
» more...

Determine if the inline is empty

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
bool
isEmpty(Block const& el);

Return Value

if the inline is empty

Parameters

Name Description
el A piece of block content

Determine if the inline is empty

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block.hpp>
bool
isEmpty(Polymorphic<Block> const& el);

Return Value

if the inline is empty

Parameters

Name Description
el A polymorphic value-type.

Determine if the inline is empty

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline.hpp>
bool
isEmpty(Polymorphic<Inline> const& el);

Description

This determines if the inline is considered to have no content for the purposes of trimming.

Return Value

if the inline is empty

Parameters

Name Description
el A polymorphic value-type.

ltrim overloads

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Removes leading whitespace from the block.

void
ltrim(Block& el);
» more...

Removes leading whitespace from the first text elements

void
ltrim(BlockContainer& blocks);
» more...

Removes leading whitespace from the first text element in the given InlineContainer.

void
ltrim(InlineContainer& inlines);
» more...

Removes leading whitespace from the block.

void
ltrim(Polymorphic<Block>& el);
» more...

Removes leading whitespace from the inline element.

void
ltrim(Polymorphic<Inline>& el);
» more...

Return Value

void

Parameters

Name Description
el The Block to trim.
blocks The BlockContainer to trim.
inlines The InlineContainer to trim.

Removes leading whitespace from the block.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
void
ltrim(Block& el);

Return Value

void

Parameters

Name Description
el The Block to trim.

Removes leading whitespace from the first text elements

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
void
ltrim(BlockContainer& blocks);

Return Value

void

Parameters

Name Description
blocks The BlockContainer to trim.

Removes leading whitespace from the first text element in the given InlineContainer.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
void
ltrim(InlineContainer& inlines);

Return Value

void

Parameters

Name Description
inlines The InlineContainer to trim.

Removes leading whitespace from the block.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block.hpp>
void
ltrim(Polymorphic<Block>& el);

Return Value

void

Parameters

Name Description
el The Polymorphic<Block> to trim.

Removes leading whitespace from the inline element.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline.hpp>
void
ltrim(Polymorphic<Inline>& el);

Return Value

void

Parameters

Name Description
el The Polymorphic<Inline> to trim.

rtrim overloads

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Removes trailing whitespace from the block.

void
rtrim(Block& el);
» more...

Removes trailing whitespace from the last text elements

void
rtrim(BlockContainer& blocks);
» more...

Removes trailing whitespace from the last text element in the given InlineContainer.

void
rtrim(InlineContainer& inlines);
» more...

Removes trailing whitespace from the block.

void
rtrim(Polymorphic<Block>& el);
» more...

Removes trailing whitespace from the inline element.

void
rtrim(Polymorphic<Inline>& el);
» more...

Return Value

void

Parameters

Name Description
el The Block to trim.
blocks The BlockContainer to trim.
inlines The InlineContainer to trim.

Removes trailing whitespace from the block.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
void
rtrim(Block& el);

Return Value

void

Parameters

Name Description
el The Block to trim.

Removes trailing whitespace from the last text elements

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
void
rtrim(BlockContainer& blocks);

Return Value

void

Parameters

Name Description
blocks The BlockContainer to trim.

Removes trailing whitespace from the last text element in the given InlineContainer.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
void
rtrim(InlineContainer& inlines);

Return Value

void

Parameters

Name Description
inlines The InlineContainer to trim.

Removes trailing whitespace from the block.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block.hpp>
void
rtrim(Polymorphic<Block>& el);

Return Value

void

Parameters

Name Description
el The Polymorphic<Block> to trim.

Removes trailing whitespace from the inline element.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline.hpp>
void
rtrim(Polymorphic<Inline>& el);

Return Value

void

Parameters

Name Description
el The Polymorphic<Inline> to trim.

tag_invoke overloads

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>

Return the Admonish from a dom::Value string.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    AdmonitionKind const kind);
» more...

Write a block kind into a DOM value as its string name.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    BlockKind const kind);
» more...

Serialize an inline kind into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    InlineKind const kind);
» more...

Return the ParamDirection from a dom::Value string.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ParamDirection const kind);
» more...

Return the Parts from a dom::Value string.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Parts const kind);
» more...

Return the AdmonitionBlock as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    AdmonitionBlock const& I,
    DomCorpus const* domCorpus);
» more...

Return the Block as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Block const& I,
    DomCorpus const* domCorpus);
» more...

Return the block container as a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    BlockContainer const& I,
    DomCorpus const* domCorpus);
» more...

Return the BriefBlock as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    BriefBlock const& I,
    DomCorpus const* domCorpus);
» more...

Return the CodeBlock as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    CodeBlock const& I,
    DomCorpus const* domCorpus);
» more...

Return the CodeInline as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    CodeInline const& I,
    DomCorpus const* domCorpus);
» more...

Return the CopyDetailsInline as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    CopyDetailsInline const& I,
    DomCorpus const* domCorpus);
» more...

Convert a definition list block to a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    DefinitionListBlock const& I,
    DomCorpus const* domCorpus);
» more...

Return the DefinitionListItem as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    DefinitionListItem const& I,
    DomCorpus const* domCorpus);
» more...

Return the EmphInline as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    EmphInline const& I,
    DomCorpus const* domCorpus);
» more...

Return the FootnoteDefinitionBlock as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    FootnoteDefinitionBlock const& I,
    DomCorpus const* domCorpus);
» more...

Return the FootnoteReferenceInline as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    FootnoteReferenceInline const& I,
    DomCorpus const* domCorpus);
» more...

Return the HeadingBlock as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    HeadingBlock const& I,
    DomCorpus const* domCorpus);
» more...

Return the HighlightInline as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    HighlightInline const& I,
    DomCorpus const* domCorpus);
» more...

Return the ImageInline as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ImageInline const& I,
    DomCorpus const* domCorpus);
» more...

Return the Inline as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Inline const& I,
    DomCorpus const* domCorpus);
» more...

Convert an InlineContainer to a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    InlineContainer const& I,
    DomCorpus const* domCorpus);
» more...

Return the LineBreakInline as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    LineBreakInline const& I,
    DomCorpus const* domCorpus);
» more...

Return the LinkInline as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    LinkInline const& I,
    DomCorpus const* domCorpus);
» more...

Return the ListBlock as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ListBlock const& I,
    DomCorpus const* domCorpus);
» more...

Return the ListItem as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ListItem const& I,
    DomCorpus const* domCorpus);
» more...

Return the MathBlock as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    MathBlock const& I,
    DomCorpus const* domCorpus);
» more...

Return the MathInline as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    MathInline const& I,
    DomCorpus const* domCorpus);
» more...

Return the ParagraphBlock as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ParagraphBlock const& I,
    DomCorpus const* domCorpus);
» more...

Return the Param as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ParamBlock const& I,
    DomCorpus const* domCorpus);
» more...

Return the PostconditionBlock as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    PostconditionBlock const& I,
    DomCorpus const* domCorpus);
» more...

Return the PreconditionBlock as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    PreconditionBlock const& I,
    DomCorpus const* domCorpus);
» more...

Return the QuoteBlock as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    QuoteBlock const& I,
    DomCorpus const* domCorpus);
» more...

Return the ReferenceInline as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ReferenceInline const& I,
    DomCorpus const* domCorpus);
» more...

Return the ReturnsBlock as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ReturnsBlock const& I,
    DomCorpus const* domCorpus);
» more...

Return the SeeBlock as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    SeeBlock const& I,
    DomCorpus const* domCorpus);
» more...

Return the SoftBreakInline as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    SoftBreakInline const& I,
    DomCorpus const* domCorpus);
» more...

Return the StrikethroughInline as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    StrikethroughInline const& I,
    DomCorpus const* domCorpus);
» more...

Return the StrongInline as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    StrongInline const& I,
    DomCorpus const* domCorpus);
» more...

Return the SubscriptInline as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    SubscriptInline const& I,
    DomCorpus const* domCorpus);
» more...

Return the SuperscriptInline as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    SuperscriptInline const& I,
    DomCorpus const* domCorpus);
» more...

Return the TParam as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TParamBlock const& I,
    DomCorpus const* domCorpus);
» more...

Return the TableBlock as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TableBlock const& I,
    DomCorpus const* domCorpus);
» more...

Return the TableCell as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TableCell const& I,
    DomCorpus const* domCorpus);
» more...

Return the TableRow as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TableRow const& I,
    DomCorpus const* domCorpus);
» more...

Return the TextInline as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TextInline const& I,
    DomCorpus const* domCorpus);
» more...

Return the ThematicBreakBlock as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ThematicBreakBlock const& I,
    DomCorpus const* domCorpus);
» more...

Return the ThrowsBlock as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ThrowsBlock const& I,
    DomCorpus const* domCorpus);
» more...

Map an optional polymorphic block into a DOM value, producing null when empty.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Optional<Polymorphic<Block>> const& I,
    DomCorpus const* domCorpus);
» more...

Map the Polymorphic Block as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Polymorphic<Block> const& I,
    DomCorpus const* domCorpus);
» more...

Map an optional brief block to a DOM value, yielding null when absent.

void
tag_invoke(
    mrdocs::dom::ValueFromTag,
    mrdocs::dom::Value& v,
    Optional<BriefBlock> const& I,
    DomCorpus const* domCorpus);
» more...

Map the Block to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag,
    IO& io,
    Block const& I,
    DomCorpus const*);
» more...

Map a block container into a lazily-evaluated DOM object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag,
    IO& io,
    BlockContainer const& I,
    DomCorpus const* domCorpus);
» more...

Map the Polymorphic Block to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag,
    IO& io,
    Polymorphic<Block> const& I,
    DomCorpus const* domCorpus);
» more...

Map the AdmonitionBlock to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    AdmonitionBlock const& I,
    DomCorpus const* domCorpus);
» more...

Map the BriefBlock to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    BriefBlock const& I,
    DomCorpus const* domCorpus);
» more...

Map the CodeBlock to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    CodeBlock const& I,
    DomCorpus const* domCorpus);
» more...

Map the CodeInline to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    CodeInline const& I,
    DomCorpus const* domCorpus);
» more...

Map the CopyDetailsInline to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    CopyDetailsInline const& I,
    DomCorpus const* domCorpus);
» more...

Map a definition list block into a DOM object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    DefinitionListBlock const& I,
    DomCorpus const* domCorpus);
» more...

Map the DefinitionListItem to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    DefinitionListItem const& I,
    DomCorpus const* domCorpus);
» more...

Map the EmphInline to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    EmphInline const& I,
    DomCorpus const* domCorpus);
» more...

Map the FootnoteDefinitionBlock to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    FootnoteDefinitionBlock const& I,
    DomCorpus const* domCorpus);
» more...

Map the FootnoteReferenceInline to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    FootnoteReferenceInline const& I,
    DomCorpus const* domCorpus);
» more...

Map the HeadingBlock to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    HeadingBlock const& I,
    DomCorpus const* domCorpus);
» more...

Map the HighlightInline to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    HighlightInline const& I,
    DomCorpus const* domCorpus);
» more...

Map the ImageInline to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ImageInline const& I,
    DomCorpus const* domCorpus);
» more...

Map the Inline to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    Inline const& I,
    DomCorpus const* domCorpus);
» more...

Map an InlineContainer into a DOM object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    InlineContainer const& I,
    DomCorpus const* domCorpus);
» more...

Map the LineBreakInline to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    LineBreakInline const& I,
    DomCorpus const* domCorpus);
» more...

Map the LinkInline to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    LinkInline const& I,
    DomCorpus const* domCorpus);
» more...

Map the ListBlock to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ListBlock const& I,
    DomCorpus const* domCorpus);
» more...

Map the ListItem to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ListItem const& I,
    DomCorpus const* domCorpus);
» more...

Map the MathBlock to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    MathBlock const& I,
    DomCorpus const* domCorpus);
» more...

Map the MathInline to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    MathInline const& I,
    DomCorpus const* domCorpus);
» more...

Map the ParagraphBlock to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ParagraphBlock const& I,
    DomCorpus const* domCorpus);
» more...

Map the Param to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ParamBlock const& I,
    DomCorpus const* domCorpus);
» more...

Map the PostconditionBlock to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    PostconditionBlock const& I,
    DomCorpus const* domCorpus);
» more...

Map the PreconditionBlock to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    PreconditionBlock const& I,
    DomCorpus const* domCorpus);
» more...

Map the QuoteBlock to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    QuoteBlock const& I,
    DomCorpus const* domCorpus);
» more...

Map the ReferenceInline to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ReferenceInline const& I,
    DomCorpus const* domCorpus);
» more...

Map the ReturnsBlock to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ReturnsBlock const& I,
    DomCorpus const* domCorpus);
» more...

Map the SeeBlock to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    SeeBlock const& I,
    DomCorpus const* domCorpus);
» more...

Map the SoftBreakInline to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    SoftBreakInline const& I,
    DomCorpus const* domCorpus);
» more...

Map the StrikethroughInline to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    StrikethroughInline const& I,
    DomCorpus const* domCorpus);
» more...

Map the StrongInline to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    StrongInline const& I,
    DomCorpus const* domCorpus);
» more...

Map the SubscriptInline to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    SubscriptInline const& I,
    DomCorpus const* domCorpus);
» more...

Map the SuperscriptInline to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    SuperscriptInline const& I,
    DomCorpus const* domCorpus);
» more...

Map the TParam to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    TParamBlock const& I,
    DomCorpus const* domCorpus);
» more...

Map the TableBlock to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    TableBlock const& I,
    DomCorpus const* domCorpus);
» more...

Map the TableCell to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    TableCell const& I,
    DomCorpus const* domCorpus);
» more...

Map the TableRow to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    TableRow const& I,
    DomCorpus const* domCorpus);
» more...

Map the TextInline to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    TextInline const& I,
    DomCorpus const* domCorpus);
» more...

Map the ThematicBreakBlock to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ThematicBreakBlock const& I,
    DomCorpus const* domCorpus);
» more...

Map the ThrowsBlock to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ThrowsBlock const& I,
    DomCorpus const* domCorpus);
» more...

Serialize a polymorphic inline node into a DOM value.

template<
    class IO,
    polymorphic_storage_for<Block> InlineTy>
void
tag_invoke(
    dom::ValueFromTag,
    IO& io,
    InlineTy const& I,
    DomCorpus const* domCorpus);
» more...

Parameters

Name Description
v Destination value.
kind Block kind to serialize.
I Block container to convert.
domCorpus Corpus context for lazy references.
io The output object.
t The tag.

Return the Admonish from a dom::Value string.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/AdmonitionKind.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    AdmonitionKind const kind);

Parameters

Name Description
v A variant container for any kind of Dom value.
kind An admonishment style.

Write a block kind into a DOM value as its string name.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockKind.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    BlockKind const kind);

Parameters

Name Description
v Destination value.
kind Block kind to serialize.

Serialize an inline kind into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineKind.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    InlineKind const kind);

Parameters

Name Description
v Destination DOM value.
kind Kind to serialize.

Return the ParamDirection from a dom::Value string.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParamDirection.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ParamDirection const kind);

Parameters

Name Description
v A variant container for any kind of Dom value.
kind Parameter pass direction.

Return the Parts from a dom::Value string.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/Parts.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Parts const kind);

Parameters

Name Description
v A variant container for any kind of Dom value.
kind Which parts of the documentation to copy.

Return the AdmonitionBlock as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/AdmonitionBlock.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    AdmonitionBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A block for side-notes like tips, warnings, notes
domCorpus Front-end factory for producing Dom nodes.

Return the Block as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Block const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A piece of block content
domCorpus Front-end factory for producing Dom nodes.

Return the block container as a DOM value.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    BlockContainer const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v Destination value.
I Block container to convert.
domCorpus Corpus context for lazy references.

Return the BriefBlock as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BriefBlock.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    BriefBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I The brief description
domCorpus Front-end factory for producing Dom nodes.

Return the CodeBlock as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/CodeBlock.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    CodeBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Preformatted source code.
domCorpus Front-end factory for producing Dom nodes.

Return the CodeInline as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/CodeInline.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    CodeInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Inline code (monospaced) used for short snippets within text.
domCorpus Front-end factory for producing Dom nodes.

Return the CopyDetailsInline as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/CopyDetailsInline.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    CopyDetailsInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v The output value.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Convert a definition list block to a DOM value.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/DefinitionListBlock.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    DefinitionListBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v Destination value.
I Block to convert.
domCorpus Corpus context for lazy references.

Return the DefinitionListItem as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/DefinitionListItem.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    DefinitionListItem const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I An item in a definition list
domCorpus Front-end factory for producing Dom nodes.

Return the EmphInline as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/EmphInline.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    EmphInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Emphasized text (typically rendered in italics).
domCorpus Front-end factory for producing Dom nodes.

Return the FootnoteDefinitionBlock as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/FootnoteDefinitionBlock.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    FootnoteDefinitionBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Text defining the content of a footnote reference.
domCorpus Front-end factory for producing Dom nodes.

Return the FootnoteReferenceInline as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/FootnoteReferenceInline.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    FootnoteReferenceInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A reference to a symbol.
domCorpus Front-end factory for producing Dom nodes.

Return the HeadingBlock as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/HeadingBlock.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    HeadingBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A manually specified section heading.
domCorpus Front-end factory for producing Dom nodes.

Return the HighlightInline as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/HighlightInline.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    HighlightInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Highlighted text span used to call out important words.
domCorpus Front-end factory for producing Dom nodes.

Return the ImageInline as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/ImageInline.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ImageInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I An image.
domCorpus Front-end factory for producing Dom nodes.

Return the Inline as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Inline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A Node containing a string of text.
domCorpus Front-end factory for producing Dom nodes.

Convert an InlineContainer to a DOM value.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    InlineContainer const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I An internal node in the inline element tree.
domCorpus Front-end factory for producing Dom nodes.

Return the LineBreakInline as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/LineBreakInline.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    LineBreakInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A hard line break that renders as ""
domCorpus Front-end factory for producing Dom nodes.

Return the LinkInline as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/LinkInline.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    LinkInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A hyperlink.
domCorpus Front-end factory for producing Dom nodes.

Return the ListBlock as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ListBlock.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ListBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A list of list items
domCorpus Front-end factory for producing Dom nodes.

Return the ListItem as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ListItem.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ListItem const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I An item in a ListBlock
domCorpus Front-end factory for producing Dom nodes.

Return the MathBlock as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/MathBlock.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    MathBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A block of LaTeX math
domCorpus Front-end factory for producing Dom nodes.

Return the MathInline as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/MathInline.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    MathInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I An inline LaTeX math expression
domCorpus Front-end factory for producing Dom nodes.

Return the ParagraphBlock as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParagraphBlock.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ParagraphBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A sequence of text nodes.
domCorpus Front-end factory for producing Dom nodes.

Return the Param as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParamBlock.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ParamBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Documentation for a function parameter
domCorpus Front-end factory for producing Dom nodes.

Return the PostconditionBlock as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/PostconditionBlock.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    PostconditionBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v The value to assign to.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Return the PreconditionBlock as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/PreconditionBlock.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    PreconditionBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v The value to assign to.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Return the QuoteBlock as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/QuoteBlock.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    QuoteBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A quoted block of text.
domCorpus Front-end factory for producing Dom nodes.

Return the ReferenceInline as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/ReferenceInline.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ReferenceInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A reference to a symbol.
domCorpus Front-end factory for producing Dom nodes.

Return the ReturnsBlock as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ReturnsBlock.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ReturnsBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Documentation for a function return type
domCorpus Front-end factory for producing Dom nodes.

Return the SeeBlock as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/SeeBlock.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    SeeBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A
domCorpus Front-end factory for producing Dom nodes.

Return the SoftBreakInline as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/SoftBreakInline.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    SoftBreakInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A line break that may render as a space
domCorpus Front-end factory for producing Dom nodes.

Return the StrikethroughInline as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/StrikethroughInline.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    StrikethroughInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Strikethrough span to show removed or deprecated text.
domCorpus Front-end factory for producing Dom nodes.

Return the StrongInline as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/StrongInline.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    StrongInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Strong emphasis span (typically rendered in bold).
domCorpus Front-end factory for producing Dom nodes.

Return the SubscriptInline as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/SubscriptInline.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    SubscriptInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Subscript text fragment (lowered baseline).
domCorpus Front-end factory for producing Dom nodes.

Return the SuperscriptInline as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/SuperscriptInline.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    SuperscriptInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Superscript text fragment (raised baseline).
domCorpus Front-end factory for producing Dom nodes.

Return the TParam as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TParamBlock.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TParamBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Documentation for a template parameter
domCorpus Front-end factory for producing Dom nodes.

Return the TableBlock as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableBlock.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TableBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A table block
domCorpus Front-end factory for producing Dom nodes.

Return the TableCell as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableCell.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TableCell const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A cell in a table
domCorpus Front-end factory for producing Dom nodes.

Return the TableRow as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableRow.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TableRow const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I An item in a list
domCorpus Front-end factory for producing Dom nodes.

Return the TextInline as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/TextInline.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TextInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A Node containing a string of text.
domCorpus Front-end factory for producing Dom nodes.

Return the ThematicBreakBlock as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ThematicBreakBlock.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ThematicBreakBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A horizontal thematic break separating sections.
domCorpus Front-end factory for producing Dom nodes.

Return the ThrowsBlock as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ThrowsBlock.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ThrowsBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Documentation for a function exception clause
domCorpus Front-end factory for producing Dom nodes.

Map an optional polymorphic block into a DOM value, producing null when empty.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Optional<Polymorphic<Block>> const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v Destination value.
I Optional block to convert.
domCorpus Corpus context for lazy resolution.

Map the Polymorphic Block as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Polymorphic<Block> const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v The output parameter to receive the dom::Value.
I The polymorphic Block to convert.
domCorpus The DomCorpus used to resolve references.

Map an optional brief block to a DOM value, yielding null when absent.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BriefBlock.hpp>
void
tag_invoke(
    mrdocs::dom::ValueFromTag,
    mrdocs::dom::Value& v,
    Optional<BriefBlock> const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v Destination value.
I Optional brief block to convert.
domCorpus Corpus context for lazy references.

Map the Block to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag,
    IO& io,
    Block const& I,
    DomCorpus const*);

Parameters

Name Description
io The output object.
I The input object.

Map a block container into a lazily-evaluated DOM object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag,
    IO& io,
    BlockContainer const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
io Destination object.
I Block container to convert.
domCorpus Corpus context for lazy references.

Map the Polymorphic Block to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag,
    IO& io,
    Polymorphic<Block> const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
io The output parameter to receive the dom::Object.
I The polymorphic Block to convert.
domCorpus The DomCorpus used to resolve references.

Map the AdmonitionBlock to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/AdmonitionBlock.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    AdmonitionBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the BriefBlock to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BriefBlock.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    BriefBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the CodeBlock to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/CodeBlock.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    CodeBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the CodeInline to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/CodeInline.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    CodeInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the CopyDetailsInline to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/CopyDetailsInline.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    CopyDetailsInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map a definition list block into a DOM object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/DefinitionListBlock.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    DefinitionListBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t Conversion tag.
io Destination object.
I Block to convert.
domCorpus Corpus context for lazy references.

Map the DefinitionListItem to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/DefinitionListItem.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    DefinitionListItem const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the EmphInline to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/EmphInline.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    EmphInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the FootnoteDefinitionBlock to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/FootnoteDefinitionBlock.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    FootnoteDefinitionBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the FootnoteReferenceInline to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/FootnoteReferenceInline.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    FootnoteReferenceInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the HeadingBlock to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/HeadingBlock.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    HeadingBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the HighlightInline to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/HighlightInline.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    HighlightInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the ImageInline to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/ImageInline.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ImageInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the Inline to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    Inline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map an InlineContainer into a DOM object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    InlineContainer const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The mapping tag.
io Output object receiving serialized fields.
I Inline container to serialize.
domCorpus Optional corpus for lazy lookups.

Map the LineBreakInline to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/LineBreakInline.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    LineBreakInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the LinkInline to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/LinkInline.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    LinkInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the ListBlock to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ListBlock.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ListBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the ListItem to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ListItem.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ListItem const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the MathBlock to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/MathBlock.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    MathBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the MathInline to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/MathInline.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    MathInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the ParagraphBlock to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParagraphBlock.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ParagraphBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the Param to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParamBlock.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ParamBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the PostconditionBlock to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/PostconditionBlock.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    PostconditionBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the PreconditionBlock to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/PreconditionBlock.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    PreconditionBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the QuoteBlock to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/QuoteBlock.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    QuoteBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the ReferenceInline to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/ReferenceInline.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ReferenceInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the ReturnsBlock to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ReturnsBlock.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ReturnsBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the SeeBlock to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/SeeBlock.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    SeeBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the SoftBreakInline to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/SoftBreakInline.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    SoftBreakInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the StrikethroughInline to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/StrikethroughInline.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    StrikethroughInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the StrongInline to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/StrongInline.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    StrongInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the SubscriptInline to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/SubscriptInline.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    SubscriptInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the SuperscriptInline to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/SuperscriptInline.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    SuperscriptInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the TParam to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TParamBlock.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    TParamBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the TableBlock to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableBlock.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    TableBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the TableCell to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableCell.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    TableCell const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the TableRow to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableRow.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    TableRow const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the TextInline to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/TextInline.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    TextInline const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the ThematicBreakBlock to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ThematicBreakBlock.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ThematicBreakBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Map the ThrowsBlock to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ThrowsBlock.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ThrowsBlock const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag.
io The output object.
I The input object.
domCorpus The DOM corpus, or nullptr if not part of a corpus.

Serialize a polymorphic inline node into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
template<
    class IO,
    polymorphic_storage_for<Block> InlineTy>
void
tag_invoke(
    dom::ValueFromTag,
    IO& io,
    InlineTy const& I,
    DomCorpus const* domCorpus);

Description

Map the Polymorphic Inline as a dom::Value object.

Convert a polymorphic block storage into a DOM value.

Parameters

Name Description
io Destination value.
I Inline storage to convert.
domCorpus Corpus context for lazy references.

toString overloads

Synopses

Declared in <mrdocs/Metadata/DocComment/Block/AdmonitionKind.hpp>

Return the name of the Admonish as a string.

dom::String
toString(AdmonitionKind kind) noexcept;
» more...

Convert a block kind to its kebab-case string name.

dom::String
toString(BlockKind kind) noexcept;
» more...

Convert an inline kind to its kebab-case string.

dom::String
toString(InlineKind kind) noexcept;
» more...

Return the name of the ParamDirection as a string.

dom::String
toString(ParamDirection kind) noexcept;
» more...

Return the name of the Parts as a string.

dom::String
toString(Parts kind) noexcept;
» more...

Return the name of the Admonish as a string.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/AdmonitionKind.hpp>
dom::String
toString(AdmonitionKind kind) noexcept;

Return Value

the name of the Admonish as a string.

Parameters

Name Description
kind An admonishment style.

Convert a block kind to its kebab-case string name.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockKind.hpp>
dom::String
toString(BlockKind kind) noexcept;

Return Value

UTF-8 string value used by the DOM.

Parameters

Name Description
kind Enumerates the different kinds of DocComment blocks.

Convert an inline kind to its kebab-case string.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineKind.hpp>
dom::String
toString(InlineKind kind) noexcept;

Return Value

UTF-8 string value used by the DOM.

Parameters

Name Description
kind Enumerates the different kinds of inline nodes.

Return the name of the ParamDirection as a string.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ParamDirection.hpp>
dom::String
toString(ParamDirection kind) noexcept;

Return Value

the name of the ParamDirection as a string.

Parameters

Name Description
kind Parameter pass direction.

Return the name of the Parts as a string.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/Parts.hpp>
dom::String
toString(Parts kind) noexcept;

Return Value

the name of the Parts as a string.

Parameters

Name Description
kind Which parts of the documentation to copy.

Traverse a list of inlines.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline.hpp>
template<
    class F,
    class T,
    class... Args>
requires std::derived_from<T, Inline>
void
traverse(
    std::vector<std::unique_ptr<T>> const& list,
    F&& f,
    Args&&... args);

Parameters

Name Description
list The list of texts to traverse.
f The function to call for each text.
args Additional arguments to pass to the function.

trim overloads

Synopses

Declared in <mrdocs/Metadata/DocComment/Block.hpp>

Removes leading and trailing whitespace from the block.

void
trim(Block& el);
» more...

Removes leading and trailing whitespace from the text elements

void
trim(BlockContainer& blocks);
» more...

Removes leading and trailing whitespace from the text elements in the given InlineContainer.

void
trim(InlineContainer& inlines);
» more...

Removes leading and trailing whitespace from the block.

void
trim(Polymorphic<Block>& el);
» more...

Removes leading and trailing whitespace from the inline element.

void
trim(Polymorphic<Inline>& el);
» more...

Return Value

void

Parameters

Name Description
el The Block to trim.
blocks The BlockContainer to trim.
inlines The InlineContainer to trim.

Removes leading and trailing whitespace from the block.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
void
trim(Block& el);

Return Value

void

Parameters

Name Description
el The Block to trim.

Removes leading and trailing whitespace from the text elements

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/BlockBase.hpp>
void
trim(BlockContainer& blocks);

Return Value

void

Parameters

Name Description
blocks The BlockContainer to trim.

Removes leading and trailing whitespace from the text elements in the given InlineContainer.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline/InlineBase.hpp>
void
trim(InlineContainer& inlines);

Return Value

void

Parameters

Name Description
inlines The InlineContainer to trim.

Removes leading and trailing whitespace from the block.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block.hpp>
void
trim(Polymorphic<Block>& el);

Return Value

void

Parameters

Name Description
el The Polymorphic<Block> to trim.

Removes leading and trailing whitespace from the inline element.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline.hpp>
void
trim(Polymorphic<Inline>& el);

Return Value

void

Parameters

Name Description
el The Polymorphic<Inline> to trim.

visit overloads

Synopses

Declared in <mrdocs/Metadata/DocComment/Block.hpp>

Visit a block.

template<
    std::derived_from<Block> BlockTy,
    class Fn,
    class... Args>
decltype(auto)
visit(
    BlockTy& info,
    Fn&& fn,
    Args&&... args);
» more...

Visit an inline.

template<
    class InlineTy,
    class Fn,
    class... Args>
requires std::derived_from<InlineTy, Inline>
decltype(auto)
visit(
    InlineTy& el,
    Fn&& fn,
    Args&&... args);
» more...

Return Value

The result of calling the function.

Parameters

Name Description
info The block to visit.
fn The function to call for each block.
args Additional arguments to pass to the function.
el The inline element to visit.

Visit a block.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block.hpp>
template<
    std::derived_from<Block> BlockTy,
    class Fn,
    class... Args>
decltype(auto)
visit(
    BlockTy& info,
    Fn&& fn,
    Args&&... args);

Return Value

The result of calling the function.

Parameters

Name Description
info The block to visit.
fn The function to call for each block.
args Additional arguments to pass to the function.

Visit an inline.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline.hpp>
template<
    class InlineTy,
    class Fn,
    class... Args>
requires std::derived_from<InlineTy, Inline>
decltype(auto)
visit(
    InlineTy& el,
    Fn&& fn,
    Args&&... args);

Return Value

The result of calling the function.

Parameters

Name Description
el The inline element to visit.
fn The function to call for each inline.
args Additional arguments to pass to the function.

Equality delegates to the three-way comparison.

Synopses

Declared in <mrdocs/Metadata/DocComment/Block.hpp>

Equality delegates to the three-way comparison.

bool
operator==(
    Polymorphic<Inline> const& lhs,
    Polymorphic<Inline> const& rhs);
» more...

Equality delegates to the three-way comparison.

bool
operator==(
    Polymorphic<Block> const& lhs,
    Polymorphic<Block> const& rhs);
» more...

Equality delegates to the three-way comparison.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline.hpp>
bool
operator==(
    Polymorphic<Inline> const& lhs,
    Polymorphic<Inline> const& rhs);

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
lhs The left operand
rhs The right operand

Equality delegates to the three-way comparison.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block.hpp>
bool
operator==(
    Polymorphic<Block> const& lhs,
    Polymorphic<Block> const& rhs);

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
lhs The left operand
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/DocComment/Block.hpp>

Three-way comparison for polymorphic inline elements.

std::strong_ordering
operator<=>(
    Polymorphic<Inline> const& lhs,
    Polymorphic<Inline> const& rhs);
» more...

Three-way comparison between polymorphic block wrappers.

std::strong_ordering
operator<=>(
    Polymorphic<Block> const& lhs,
    Polymorphic<Block> const& rhs);
» more...

Three-way comparison for polymorphic inline elements.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Inline.hpp>
std::strong_ordering
operator<=>(
    Polymorphic<Inline> const& lhs,
    Polymorphic<Inline> const& rhs);

Return Value

The relative order of the objects

Parameters

Name Description
lhs The left operand
rhs The right operand

Three-way comparison between polymorphic block wrappers.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block.hpp>
std::strong_ordering
operator<=>(
    Polymorphic<Block> const& lhs,
    Polymorphic<Block> const& rhs);

Return Value

The relative order of the objects

Parameters

Name Description
lhs The left operand
rhs The right operand

Objects representing JSON-like values.

Description

This class is a variant-like container for holding any kind of value that can be represented in JSON, with extensions for functions and "safe strings".

The class supports the following types:

- Undefined - Null - Boolean - Integer - String - SafeString - Array - Object - Function

The class provides type-safe accessors for each type, as well as methods to check the type of the contained value.

Example:

{.cpp} dom::Value v1 = 42; // Integer dom::Value v2 = "Hello, World!"; // String dom::Value v3 = dom::Array{v1, v2}; // Array if (v1.isInteger()) { std::cout << "v1 is an integer: " << v1.getInteger() << "\n"; } if (v2.isString()) { std::cout << "v2 is a string: " << v2.getString() << "\n"; } if (v3.isArray()) { std::cout << "v3 is an array with " << v3.getArray().size() << " elements.\n"; }

Namespaces

NameDescription
JSON JSON serialization helpers for DOM values.

Types

NameDescription
Array An array of values
ArrayImpl Abstract array interface.
DefaultArrayImpl The default array implementation.
DefaultFunctionImpl Function implementation that wraps a fixed-arity callable.
DefaultObjectImpl The default Object implementation.
Function Value-semantic wrapper over a callable exposed to the DOM layer.
FunctionImpl Value-semantic wrapper over a callable exposed to the DOM layer.
LazyArrayImpl Lazy array implementation
LazyArrayImpl Lazy array implementation
LazyObjectImpl Lazy object implementation.
LazyObjectImpl Lazy object implementation.
LazyObjectMapTag Customization point tag.
Object A container of key and value pairs.
ObjectImpl Abstract object interface.
String UTF-8 string value used by the DOM.
Value A variant container for any kind of Dom value.
ValueFromTag Customization point tag.
VariadicFunctionImpl Function implementation that forwards the entire Array to a callable.
function_traits Helper traits to extract return and argument types from callables.
function_traits<F> Traits specialization for functors/lambdas.
function_traits<R(*)(Args...)> Traits specialization for function pointers.
function_traits<R(Args...)> Traits specialization for free functions.
function_traits<R const volatile(C::*)(Args...)> Traits specialization for member functions.

Enums

NameDescription
Kind The type of data in a Value.

Functions

NameDescription
LazyArray LazyArray overloads
LazyObject LazyObject overloads
TransformArray Return a new dom::Array based on a transformed lazy array implementation.
ValueFrom ValueFrom overloads
makeInvocable Create a Function from a fixed-arity invocable.
makeVariadicInvocable Create a Function that receives the argument Array directly.
newArray Return a new array using a custom implementation.
newFunction Return a diagnostic string.
newObject Return a new object using a custom implementation.
operator&& Return the first dom::Value that is not truthy, or the last one.
operator+ Addition operators
operator|| Return the first dom::Value that is truthy, or the last one.
stringOrNull Return a non-empty string, or a null.
swap swap overloads
toString toString overloads
operator== Equality operators
operator!= Return the result of comparing two strings.
operator<=> Three-way comparison operators

Concepts

NameDescription
HasLazyObjectMap Determine if T can be converted to dom::Value.
HasLazyObjectMapWithContext Concept to determine if a type can be mapped to a dom::LazyObjectImpl with a user-provided conversion.
HasLazyObjectMapWithoutContext Concept to determine if a type can be mapped to a dom::LazyObjectImpl with a user-provided conversion.
HasStandaloneValueFrom Determine if T can be converted to dom::Value without a context.
HasValueFrom Determine if T can be converted to dom::Value.
HasValueFromWithContext Concept to determine if a type can be converted to a dom::Value with a user-provided conversion.
HasValueFromWithoutContext Concept to determine if a type can be converted to a dom::Value with a user-provided conversion.
StringLikeTy Satisfied if StringTy is convertible to String but not a String.
function_traits_convertible_to_value Concept selecting callables convertible to dom::Value.
has_function_args_for_default_function_impl Concept requiring all arguments be convertible to dom::Value.
has_function_traits Concept true when function_traits is defined for F.
has_function_traits_for_default_function_impl Concept combining argument and return constraints for default wrapper.
has_invoke_expected_result_convertible_to_dom_value Concept true when F returns Expected<dom::Value> or Expected<void>.
has_invoke_result_convertible_to_dom_value Concept true when F returns a dom::Value or void.
has_invoke_result_for_default_function_impl Concept enabling default function wrapper for supported return types.

JSON serialization helpers for DOM values.

Description

This namespace wraps the platform JSON encoder/decoder behavior we emulate inside MrDocs so generators can round-trip DOM Value objects to text and back with predictable spacing, escaping, and cyclic-detection rules.

Functions

NameDescription
stringify Stringify a value as JSON

Stringify a value as JSON

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
std::string
stringify(dom::Value const& value);

Description

This function serialized a Value to a string as if JSON.stringify() had been called on it.

Recursive objects are identified.

Return Value

A string containing valid JSON.

Parameters

Name Description
value The value to stringify.

An array of values

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
class Array final

Description

Arrays are a collection of indexed values. They are an extension of objects with a particular relationship between integer-keyed properties and some abstract length-property. Besides, they include convenient methods to manipulate these ordered sequences of values.

Types

NameDescription
iterator A constant iterator referencing an element in an Array.
const_iterator A constant iterator referencing an element in an Array.
const_pointer A pointer to an element.
const_reference A reference to an element.
difference_type A signed integral type.
impl_type The implementation type.
pointer A pointer to an element.
reference A reference to an element.
size_type An unsigned integral type used for indexes and sizes.
storage_type The type of storage used by the default implementation.
value_type The type of an element.

Member Functions

NameDescription
Array [constructor]Constructor.
~Array [destructor]Destructor.
operator= Assignment.
at Return the i-th element.
back Return the last element.
begin Return an iterator to the beginning of the range of elements.
emplace_back Append an element to the end of the array.
empty Return true if the array is empty.
end Return an iterator to the end of the range of elements.
front Return the first element.
get Return the i-th element, without bounds checking.
impl Return the implementation used by this object.
push_back Append an element to the end of the array.
set Set the i-th element, without bounds checking.
size Return the number of elements in the array.
swap Swap two arrays.
type_key Return the type key of the implementation.

Friends

|===
Name Description
newArray Return a new array using a custom implementation.
toString Return a diagnostic string.
operator<=> Compare two arrays for precedence.
operator== Compare two arrays for equality.
swap Swap two arrays.
operator+
operator+
operator+ Concatenate two arrays.

Non-Member Functions

Name Description
LazyArrayReturn a new dom::Array based on a FromValue context
LazyArrayReturn a new dom::Array based on a lazy array implementation.
TransformArrayReturn a new dom::Array based on a transformed lazy array implementation.
::mrdocs::getParentsReturn a list of the parent symbols of the specified Info.
::mrdocs::helpers::and_fn"and" helper function
::mrdocs::helpers::eq_fn"eq" helper function
::mrdocs::helpers::ne_fn"ne" helper function
::mrdocs::helpers::not_fn"not" helper function
::mrdocs::helpers::or_fn"or" helper function

A constant iterator referencing an element in an Array.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
using const_iterator = iterator;

A pointer to an element.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
using const_pointer = value_type const*;

A reference to an element.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
using const_reference = value_type;

Description

This is a read-only reference to an element.

A signed integral type.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
using difference_type = std::ptrdiff_t;

The implementation type.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
using impl_type = std::shared_ptr<ArrayImpl>;

A pointer to an element.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
using pointer = value_type const*;

A reference to an element.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
using reference = value_type;

Description

This is a read-only reference to an element.

An unsigned integral type used for indexes and sizes.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
using size_type = std::size_t;

The type of storage used by the default implementation.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
using storage_type = std::vector<value_type>;

The type of an element.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
using value_type = Value;

A constant iterator referencing an element in an Array.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
class iterator;

Friends

|===
Name Description
operator+
Array An array of values

Constructor.

Synopses

Declared in <mrdocs/Dom/Array.hpp>

Constructor.

Array();
» more...

Constructor.

Array(Array const& other);
» more...

Constructor.

Array(Array&& other);
» more...

Constructor.

Array(impl_type impl) noexcept;
» more...

Constructor.

Array(storage_type elements);
» more...

Parameters

Name Description
elements The elements to acquire.

Constructor.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
Array();

Description

Default-constructed arrays refer to a new, empty array which is distinct from every other empty array.

Constructor.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
Array(Array const& other);

Description

The newly constructed array will contain copies of the scalars in other, and references to its structured data.

Parameters

Name Description
other The object to copy construct from

Constructor.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
Array(Array&& other);

Description

Ownership of the contents is transferred to the new object. The moved-from array will behave as if default-constructed.

Parameters

Name Description
other The object to move construct from

Constructor.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
Array(impl_type impl) noexcept;

Description

This constructs an array from an existing implementation, with shared ownership. The pointer cannot not be null.

Parameters

Name Description
impl The object to construct from

Constructor.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
Array(storage_type elements);

Description

Upon construction, the array will retain ownership of a shallow copy of the specified elements. In particular, dynamic objects will be acquired with shared ownership.

Parameters

Name Description
elements The elements to acquire.

Destructor.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
~Array();

Assignment.

Synopses

Declared in <mrdocs/Dom/Array.hpp>

Assignment.

constexpr
Array&
operator=(Array const& other) = default;
» more...

Assignment.

Array&
operator=(Array&& other);
» more...

Assignment.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
constexpr
Array&
operator=(Array const& other) = default;

Description

This acquires shared ownership of the copied array, and ownership of the previous contents is released.

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Assignment.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
Array&
operator=(Array&& other);

Description

Ownership of the array is transferred to this, and ownership of the previous contents is released. The moved-from array behaves as if default constructed.

Return Value

Reference to the current object

Parameters

Name Description
other The object to move assign from

Return the i-th element.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
value_type
at(size_type i) const;

Exceptions

Name Thrown on
Exception i >= size()

Return Value

the i-th element.

Parameters

Name Description
i An unsigned integral type used for indexes and sizes.

Return the last element.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
value_type
back() const;

Exceptions

Name Thrown on
Exception empty()

Return Value

the last element.

Return an iterator to the beginning of the range of elements.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
iterator
begin() const;

Return Value

an iterator to the beginning of the range of elements.

Append an element to the end of the array.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
template<class... Args>
void
emplace_back(Args&&... args);

Description

If the array is read-only, an exception is thrown.

Parameters

Name Description
args Arguments forwarded to the constructor of Value.

Return true if the array is empty.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
bool
empty() const noexcept;

Return Value

true if the array is empty.

Return an iterator to the end of the range of elements.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
iterator
end() const;

Return Value

an iterator to the end of the range of elements.

Return the first element.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
value_type
front() const;

Exceptions

Name Thrown on
Exception empty()

Return Value

the first element.

Return the i-th element, without bounds checking.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
value_type
get(size_type i) const;

Return Value

the i-th element, without bounds checking.

Parameters

Name Description
i The zero-based index of the element.

Return the implementation used by this object.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
impl_type const&
impl() const noexcept;

Return Value

the implementation used by this object.

Append an element to the end of the array.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
void
push_back(value_type value);

Description

If the array is read-only, an exception is thrown.

Parameters

Name Description
value The type of an element.

Set the i-th element, without bounds checking.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
void
set(
    size_type i,
    Value v);

Parameters

Name Description
i The zero-based index of the element.
v The value to set.

Return the number of elements in the array.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
size_type
size() const noexcept;

Return Value

the number of elements in the array.

Swap two arrays.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
void
swap(Array& other) noexcept;

Parameters

Name Description
other An array of values

Return the type key of the implementation.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
char const*
type_key() const noexcept;

Return Value

the type key of the implementation.

Abstract array interface.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
class ArrayImpl;

Description

This interface is used by Array types.

Types

NameDescription
size_type An unsigned integral type used for indexes and sizes.
value_type The type of an element.

Member Functions

NameDescription
~ArrayImpl [destructor] [virtual]Destructor.
emplace_back [virtual]Append an element to the end of the array.
get [virtual]Return the i-th element, without bounds checking.
set [virtual]Set the i-th element, without bounds checking.
size [virtual]Return the number of elements in the array.
type_key [virtual]Return the type key of the implementation.

Derived Classes

Name Description
DefaultArrayImpl The default array implementation.
LazyArrayImpl Lazy array implementation
LazyArrayImpl Lazy array implementation

An unsigned integral type used for indexes and sizes.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
using size_type = Array::size_type;

The type of an element.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
using value_type = Array::value_type;

Destructor.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
virtual
~ArrayImpl();

Append an element to the end of the array.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
virtual
void
emplace_back(value_type value);

Description

The default implementation throws an exception, making the array effectively read-only.

Parameters

Name Description
value The type of an element.

Return the i-th element, without bounds checking.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
virtual
value_type
get(size_type i) const = 0;

Return Value

the i-th element, without bounds checking.

Parameters

Name Description
i An unsigned integral type used for indexes and sizes.

Set the i-th element, without bounds checking.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
virtual
void
set(
    size_type index,
    Value value);

Parameters

Name Description
index An unsigned integral type used for indexes and sizes.
value A variant container for any kind of Dom value.

Return the number of elements in the array.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
virtual
size_type
size() const = 0;

Return Value

the number of elements in the array.

Return the type key of the implementation.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
virtual
char const*
type_key() const noexcept;

Return Value

the type key of the implementation.

The default array implementation.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
class DefaultArrayImpl
    : public ArrayImpl

Description

This implementation is backed by a simple vector and allows appending.

Base Classes

Name Description
ArrayImplAbstract array interface.

Types

NameDescription
size_type An unsigned integral type used for indexes and sizes.
storage_type The type of storage used by the default implementation.
value_type The type of an element.

Member Functions

NameDescription
DefaultArrayImpl [constructor]Constructors
emplace_back [virtual]Append a value to the array.
get [virtual]Retrieve an element at the specified index.
set [virtual]set overloads
size [virtual]Return the number of stored elements.
type_key [virtual]Return the type key string for this array.

An unsigned integral type used for indexes and sizes.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
using size_type = Array::size_type;

The type of storage used by the default implementation.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
using storage_type = Array::storage_type;

The type of an element.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
using value_type = Array::value_type;

Constructors

Synopses

Declared in <mrdocs/Dom/Array.hpp>

Create an empty array implementation.

DefaultArrayImpl();
» more...

Create an array populated with the given elements.

explicit
DefaultArrayImpl(storage_type elements) noexcept;
» more...

Parameters

Name Description
elements Initial contents to take ownership of.

Create an empty array implementation.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
DefaultArrayImpl();

Create an array populated with the given elements.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
explicit
DefaultArrayImpl(storage_type elements) noexcept;

Parameters

Name Description
elements Initial contents to take ownership of.

Append a value to the array.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
virtual
void
emplace_back(value_type value) override;

Parameters

Name Description
value The type of an element.

Retrieve an element at the specified index.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
virtual
value_type
get(size_type i) const override;

Return Value

The type of an element.

Parameters

Name Description
i Index of the element to fetch.

set overloads

Synopses

Declared in <mrdocs/Dom/Array.hpp>

Replace the element at the specified index.

virtual
void
set(
    size_type i,
    Value v) override;
» more...

Set the i-th element, without bounds checking.

virtual
void
set(
    size_type index,
    Value value);
» more...

Parameters

Name Description
i Index to update.
v New value to store.

Replace the element at the specified index.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
virtual
void
set(
    size_type i,
    Value v) override;

Parameters

Name Description
i Index to update.
v New value to store.

Set the i-th element, without bounds checking.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
virtual
void
set(
    size_type index,
    Value value);

Parameters

Name Description
index An unsigned integral type used for indexes and sizes.
value A variant container for any kind of Dom value.

Return the number of stored elements.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
virtual
size_type
size() const override;

Return Value

the number of stored elements.

Return the type key string for this array.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
virtual
char const*
type_key() const noexcept override;

Return Value

the type key string for this array.

Function implementation that wraps a fixed-arity callable.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<class F>
class DefaultFunctionImpl
    : public FunctionImpl

Base Classes

Name Description
FunctionImplValue-semantic wrapper over a callable exposed to the DOM layer.

Types

NameDescription
args_type Argument tuple type accepted by the callable.
return_type Result type produced by the callable.

Member Functions

NameDescription
DefaultFunctionImpl [constructor]Construct from any callable convertible to F.
call [virtual]Invoke the wrapped callable with the given arguments.
type_key [virtual]Return the type key of the implementation.

Argument tuple type accepted by the callable.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
using args_type = function_traits<F>::args_type;

Result type produced by the callable.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
using return_type = function_traits<F>::return_type;

Construct from any callable convertible to F.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<class U>
DefaultFunctionImpl(U&& u);

Parameters

Name Description
u Callable to wrap.

Invoke the wrapped callable with the given arguments.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
virtual
Expected<Value>
call(Array const& args) const override;

Return Value

A container holding an error or a value.

Parameters

Name Description
args An array of values

Return the type key of the implementation.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
virtual
char const*
type_key() const noexcept override;

Return Value

the type key of the implementation.

The default Object implementation.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
class DefaultObjectImpl
    : public ObjectImpl

Base Classes

Name Description
ObjectImplAbstract object interface.

Types

NameDescription
reference A reference to an element.
storage_type The type of storage used by the default implementation.

Member Functions

NameDescription
DefaultObjectImpl [constructor]Constructors
exists [virtual]Check whether a key exists in the object.
get [virtual]Retrieve a value by key.
set [virtual]Set a value by key.
size [virtual]Return number of elements stored.
type_key [virtual]Return the type key of the implementation.
visit [virtual]visit overloads

Constructors

Synopses

Declared in <mrdocs/Dom/Object.hpp>

Create an empty object implementation.

DefaultObjectImpl() noexcept;
» more...

Create an object pre-populated with entries.

explicit
DefaultObjectImpl(storage_type entries) noexcept;
» more...

Parameters

Name Description
entries Key/value storage to take ownership of.

Create an empty object implementation.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
DefaultObjectImpl() noexcept;

Create an object pre-populated with entries.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
explicit
DefaultObjectImpl(storage_type entries) noexcept;

Parameters

Name Description
entries Key/value storage to take ownership of.

Check whether a key exists in the object.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
virtual
bool
exists(std::string_view key) const override;

Return Value

True if the key exists.

Parameters

Name Description
key Key to test.

Retrieve a value by key.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
virtual
Value
get(std::string_view key) const override;

Return Value

Stored value or undefined if absent.

Parameters

Name Description
key Key to search for.

Set a value by key.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
virtual
void
set(
    String key,
    Value value) override;

Parameters

Name Description
key Key to set.
value New value.

Return number of elements stored.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
virtual
std::size_t
size() const override;

Return Value

number of elements stored.

visit overloads

Synopses

Declared in <mrdocs/Dom/Object.hpp>

Invoke the visitor for each key/value pair.

virtual
bool
visit(std::function<bool(String, Value)> fn) const = 0;
» more...

Visit each key/value pair until the visitor returns false.

virtual
bool
visit(std::function<bool(String, Value)> visitor) const override;
» more...

Return Value

Parameters

Name Description
fn The visitor function.
visitor Callback receiving key and value.

Invoke the visitor for each key/value pair.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
virtual
bool
visit(std::function<bool(String, Value)> fn) const = 0;

Description

The visitor function must return true to continue iteration, or false to stop.

The visit function returns true if the visitor returned true for all elements, otherwise false.

Return Value

true if the visitor returned true for all elements, otherwise false.

Parameters

Name Description
fn The visitor function.

Visit each key/value pair until the visitor returns false.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
virtual
bool
visit(std::function<bool(String, Value)> visitor) const override;

Return Value

False if visitor requested stop, otherwise true.

Parameters

Name Description
visitor Callback receiving key and value.

Value-semantic wrapper over a callable exposed to the DOM layer.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
class Function;

Member Functions

NameDescription
Function [constructor]Constructors
~Function [destructor]Destructor.
operator= Assignment.
call Invoke the function.
impl Return the implementation used by this object.
operator() Invoke the function.
swap Swap two objects.
try_invoke Invoke the function.
type_key Return the type key.

Friends

|===
Name Description
newFunction Return a diagnostic string.
swap Swap two objects.

Non-Member Functions

Name Description
makeInvocableCreate a Function from a fixed-arity invocable.
makeVariadicInvocableCreate a Function that receives the argument Array directly.

Constructors

Synopses

Declared in <mrdocs/Dom/Function.hpp>

Constructor.

Function() noexcept;
» more...

Constructor.

Function(Function const& other) noexcept;
» more...

Constructor.

Function(Function&& other) noexcept;
» more...

Construct a Function from any supported callable.

template<class F>
requires function_traits_convertible_to_value<std::decay_t<F>>
Function(F const& f);
» more...

Parameters

Name Description
f Callable to wrap.

Constructor.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
Function() noexcept;

Description

A default-constructed function has this equivalent implementation:

Value f() { return nullptr; }

Constructor.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
Function(Function const& other) noexcept;

Description

The newly constructed object acquires shared ownership of the function.

Parameters

Name Description
other The object to copy construct from

Constructor.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
Function(Function&& other) noexcept;

Description

Ownership of the function is tranferred. The moved-from object behaves as if default constructed.

Parameters

Name Description
other The object to move construct from

Construct a Function from any supported callable.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<class F>
requires function_traits_convertible_to_value<std::decay_t<F>>
Function(F const& f);

Parameters

Name Description
f Callable to wrap.

Destructor.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
~Function();

Assignment.

Synopses

Declared in <mrdocs/Dom/Function.hpp>

Assignment.

Function&
operator=(Function const& other) noexcept;
» more...

Assignment.

Function&
operator=(Function&& other) noexcept;
» more...

Assignment.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
Function&
operator=(Function const& other) noexcept;

Description

This acquires shared ownership of the function. Ownership of the previous function is removed.

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Assignment.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
Function&
operator=(Function&& other) noexcept;

Description

Ownership of the function is tranferred, and ownership of the previous function is released. The moved-from object behaves as if default constructed.

Return Value

Reference to the current object

Parameters

Name Description
other The object to move assign from

Invoke the function.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
Expected<Value>
call(Array const& args) const;

Return Value

A container holding an error or a value.

Parameters

Name Description
args An array of values

Return the implementation used by this object.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
impl_type const&
impl() const noexcept;

Return Value

the implementation used by this object.

Invoke the function.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<class... Args>
Value
operator()(Args&&... args) const;

Return Value

The return value of the function.

Parameters

Name Description
args The arguments to the function.

Swap two objects.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
void
swap(Function& other) noexcept;

Parameters

Name Description
other The other object.

Invoke the function.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<class... Args>
Expected<Value>
try_invoke(Args&&... args) const;

Return Value

A container holding an error or a value.

Parameters

Name Description
args The arguments to the function.

Return the type key.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
char const*
type_key() const noexcept;

Return Value

the type key.

Value-semantic wrapper over a callable exposed to the DOM layer.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
class FunctionImpl;

Description

Abstract base for function implementations.

Member Functions

NameDescription
~FunctionImpl [destructor] [virtual]Destructor.
call [virtual]Invoke the function.
type_key [virtual]Return the type key of the implementation.

Derived Classes

Name Description
DefaultFunctionImpl Function implementation that wraps a fixed-arity callable.
VariadicFunctionImpl Function implementation that forwards the entire Array to a callable.

Destructor.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
constexpr
virtual
~FunctionImpl() = default;

Invoke the function.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
virtual
Expected<Value>
call(Array const& args) const = 0;

Return Value

A container holding an error or a value.

Parameters

Name Description
args An array of values

Return the type key of the implementation.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
virtual
char const*
type_key() const noexcept;

Return Value

the type key of the implementation.

Lazy array implementation

Synopsis

Declared in <mrdocs/Dom/LazyArray.hpp>
class LazyArrayImpl
    : public ArrayImpl

Description

This array type is used to define a dom::Array whose members are evaluated on demand as they are accessed.

Each member can goes through a transform function before being returned as a Value so that all types can be converted to dom::Value.

The underlying representation of the array is a range from where the elements are extracted. Elements in this range should be convertible to dom::Value.

This class is typically useful for implementing arrays that are expensive and have recursive dependencies, as these recursive dependencies can also be deferred.

Unlike a LazyObjectImpl, which contains an overlay object, this implementation is read-only. The set and emplace_back methods are not implemented.

Base Classes

Name Description
ArrayImplAbstract array interface.

Types

NameDescription
size_type An unsigned integral type used for indexes and sizes.
value_type The type of an element.

Member Functions

NameDescription
LazyArrayImpl [constructor]Constructors
~LazyArrayImpl [destructor] [virtual]Virtual destructor.
emplace_back [virtual]Append an element to the end of the array.
get [virtual]get overloads
set [virtual]Set the i-th element, without bounds checking.
size [virtual]Return the number of elements, computing it lazily if needed.
type_key [virtual]Return the type key of the implementation.

Constructors

Synopses

Declared in <mrdocs/Dom/LazyArray.hpp>

Construct from a range of values.

explicit
LazyArrayImpl(R const& arr);
» more...

Construct from a range and a conversion context.

explicit
LazyArrayImpl(
    R const& arr,
    Context const& ctx);
» more...

Parameters

Name Description
arr Range to wrap lazily.
ctx Context used to convert elements.

Construct from a range of values.

Synopsis

Declared in <mrdocs/Dom/LazyArray.hpp>
explicit
LazyArrayImpl(R const& arr);

Parameters

Name Description
arr The object to copy construct from

Construct from a range and a conversion context.

Synopsis

Declared in <mrdocs/Dom/LazyArray.hpp>
explicit
LazyArrayImpl(
    R const& arr,
    Context const& ctx);

Parameters

Name Description
arr Range to wrap lazily.
ctx Context used to convert elements.

Virtual destructor.

Synopsis

Declared in <mrdocs/Dom/LazyArray.hpp>
virtual
~LazyArrayImpl() override = default;

get overloads

Synopses

Declared in <mrdocs/Dom/Array.hpp>

Retrieve the element at index i, or nil if out of range.

virtual
dom::Value
get(std::size_t i) const override;
» more...

Return the i-th element, without bounds checking.

virtual
value_type
get(size_type i) const = 0;
» more...

Parameters

Name Description
i Index of the element.

Retrieve the element at index i, or nil if out of range.

Synopsis

Declared in <mrdocs/Dom/LazyArray.hpp>
virtual
dom::Value
get(std::size_t i) const override;

Return Value

A variant container for any kind of Dom value.

Parameters

Name Description
i Index of the element.

Return the i-th element, without bounds checking.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
virtual
value_type
get(size_type i) const = 0;

Return Value

the i-th element, without bounds checking.

Parameters

Name Description
i An unsigned integral type used for indexes and sizes.

Return the number of elements, computing it lazily if needed.

Synopsis

Declared in <mrdocs/Dom/LazyArray.hpp>
virtual
std::size_t
size() const noexcept override;

Return Value

the number of elements, computing it lazily if needed.

Return the type key of the implementation.

Synopsis

Declared in <mrdocs/Dom/LazyArray.hpp>
virtual
char const*
type_key() const noexcept override;

Return Value

the type key of the implementation.

Lazy array implementation

Synopsis

Declared in <mrdocs/Dom/LazyArray.hpp>
template<
    std::ranges::random_access_range R,
    class Context = /* implementation-defined */>
requires HasValueFrom<std::ranges::range_value_t<R>, Context> ||
       (std::invocable<Context, std::ranges::range_value_t<R>> &&
        HasStandaloneValueFrom<std::invoke_result_t<Context, std::ranges::range_value_t<R>>>)
class LazyArrayImpl
    : public ArrayImpl

Description

This array type is used to define a dom::Array whose members are evaluated on demand as they are accessed.

Each member can goes through a transform function before being returned as a Value so that all types can be converted to dom::Value.

The underlying representation of the array is a range from where the elements are extracted. Elements in this range should be convertible to dom::Value.

This class is typically useful for implementing arrays that are expensive and have recursive dependencies, as these recursive dependencies can also be deferred.

Unlike a LazyObjectImpl, which contains an overlay object, this implementation is read-only. The set and emplace_back methods are not implemented.

Base Classes

Name Description
ArrayImplAbstract array interface.

Types

NameDescription
size_type An unsigned integral type used for indexes and sizes.
value_type The type of an element.

Member Functions

NameDescription
emplace_back [virtual]Append an element to the end of the array.
get [virtual]Return the i-th element, without bounds checking.
set [virtual]Set the i-th element, without bounds checking.
size [virtual]Return the number of elements in the array.
type_key [virtual]Return the type key of the implementation.

Lazy object implementation.

Synopsis

Declared in <mrdocs/Dom/LazyObject.hpp>
class LazyObjectImpl
    : public ObjectImpl

Description

This interface is used to define objects whose members are evaluated on demand as they are accessed.

When any of the object properties are accessed, the object dom::Value is constructed. In practice, the object never takes any memory besides the pointer to the underlying object.

The keys and values in the underlying object should be mapped using tag_invoke.

This class is typically useful for implementing objects that are expensive and have recursive dependencies, as these recursive dependencies can also be deferred.

A context can also be stored in the object as a form to customize how the object is mapped. This context should be copyable and is propagated to other objects that support an overload with the same context.

The context can be simply a tag identifying how to map the object, or a more complex object carrying data to customize the mapping process.

In the latter case, because the context should be a copyable, the user might want to use a type with reference semantics.

Base Classes

Name Description
ObjectImplAbstract object interface.

Types

NameDescription
reference A reference to an element.
storage_type The type of storage used by the default implementation.

Member Functions

NameDescription
LazyObjectImpl [constructor]Constructors
~LazyObjectImpl [destructor] [virtual]Virtual destructor.
exists [virtual]Determine if a key exists.
get [virtual]Return the value for the specified key, or null.
set [virtual]Insert or set the given key/value pair.
size [virtual]Return the number of properties in the object.
type_key [virtual]Return the type key of the implementation.
visit [virtual]Invoke the visitor for each key/value pair.

Constructors

Synopses

Declared in <mrdocs/Dom/LazyObject.hpp>

Wrap an object using the default lazy mapping.

explicit
LazyObjectImpl(T const& obj)
requires HasLazyObjectMapWithoutContext<T>;
» more...

Wrap an object using a custom mapping context.

explicit
LazyObjectImpl(
    T const& obj,
    Context const& context)
requires HasLazyObjectMapWithContext<T, Context>;
» more...

Parameters

Name Description
obj Object providing the data.
context Context that guides the mapping.

Wrap an object using the default lazy mapping.

Synopsis

Declared in <mrdocs/Dom/LazyObject.hpp>
explicit
LazyObjectImpl(T const& obj)
requires HasLazyObjectMapWithoutContext<T>;

Parameters

Name Description
obj Object providing the data.

Wrap an object using a custom mapping context.

Synopsis

Declared in <mrdocs/Dom/LazyObject.hpp>
explicit
LazyObjectImpl(
    T const& obj,
    Context const& context)
requires HasLazyObjectMapWithContext<T, Context>;

Parameters

Name Description
obj Object providing the data.
context Context that guides the mapping.

Virtual destructor.

Synopsis

Declared in <mrdocs/Dom/LazyObject.hpp>
virtual
~LazyObjectImpl() override = default;

Determine if a key exists.

Synopsis

Declared in <mrdocs/Dom/LazyObject.hpp>
virtual
bool
exists(std::string_view key) const override;

Return Value

true if the key exists, otherwise false.

Parameters

Name Description
key The key to check for existence.

Return the value for the specified key, or null.

Synopsis

Declared in <mrdocs/Dom/LazyObject.hpp>
virtual
Value
get(std::string_view key) const override;

Return Value

The value for the specified key, or null if the key does not exist.

Parameters

Name Description
key The key.

Insert or set the given key/value pair.

Synopsis

Declared in <mrdocs/Dom/LazyObject.hpp>
virtual
void
set(
    String key,
    Value value) override;

Parameters

Name Description
key The key.
value The value to set.

Return the number of properties in the object.

Synopsis

Declared in <mrdocs/Dom/LazyObject.hpp>
virtual
std::size_t
size() const override;

Return Value

the number of properties in the object.

Return the type key of the implementation.

Synopsis

Declared in <mrdocs/Dom/LazyObject.hpp>
virtual
char const*
type_key() const noexcept override;

Return Value

the type key of the implementation.

Invoke the visitor for each key/value pair.

Synopsis

Declared in <mrdocs/Dom/LazyObject.hpp>
virtual
bool
visit(std::function<bool(String, Value)> fn) const override;

Description

The visitor function must return true to continue iteration, or false to stop.

The visit function returns true if the visitor returned true for all elements, otherwise false.

Return Value

true if the visitor returned true for all elements, otherwise false.

Parameters

Name Description
fn The visitor function.

Lazy object implementation.

Synopsis

Declared in <mrdocs/Dom/LazyObject.hpp>
template<
    class T,
    class Context = /* implementation-defined */>
requires HasLazyObjectMap<T, Context>
class LazyObjectImpl
    : public ObjectImpl

Description

This interface is used to define objects whose members are evaluated on demand as they are accessed.

When any of the object properties are accessed, the object dom::Value is constructed. In practice, the object never takes any memory besides the pointer to the underlying object.

The keys and values in the underlying object should be mapped using tag_invoke.

This class is typically useful for implementing objects that are expensive and have recursive dependencies, as these recursive dependencies can also be deferred.

A context can also be stored in the object as a form to customize how the object is mapped. This context should be copyable and is propagated to other objects that support an overload with the same context.

The context can be simply a tag identifying how to map the object, or a more complex object carrying data to customize the mapping process.

In the latter case, because the context should be a copyable, the user might want to use a type with reference semantics.

Base Classes

Name Description
ObjectImplAbstract object interface.

Types

NameDescription
reference A reference to an element.
storage_type The type of storage used by the default implementation.

Member Functions

NameDescription
exists [virtual]Determine if a key exists.
get [virtual]Return the value for the specified key, or null.
set [virtual]Insert or set the given key/value pair.
size [virtual]Return the number of properties in the object.
type_key [virtual]Return the type key of the implementation.
visit [virtual]Invoke the visitor for each key/value pair.

Customization point tag.

Synopsis

Declared in <mrdocs/Dom/LazyObject.hpp>
struct LazyObjectMapTag;

Description

This tag type is used by the class dom::LazyObjectImpl to select overloads of tag_invoke.

NOTE

This type is empty; it has no members.

Non-Member Functions

Name Description
::mrdocs::tag_invokeMap a EnumConstantSymbol to a dom::Object.
::mrdocs::tag_invokeMap a FriendInfo to a dom::Object.
::mrdocs::tag_invokeMap a NamespaceAliasSymbol to a dom::Object.
::mrdocs::tag_invokeMap the DocComment to a dom::Object.
::mrdocs::tag_invokeMap the Polymorphic Symbol to a dom::Object.
::mrdocs::tag_invokeMap a RecordTranche to a dom::Object.
::mrdocs::tag_invokeMap a OverloadsSymbol to a dom::Object.
::mrdocs::tag_invokeMap a TypedefSymbol to a dom::Object.
::mrdocs::tag_invokeMap the Symbol to a dom::Object.
::mrdocs::tag_invokeMap a NamespaceTranche to a dom::Object.
::mrdocs::tag_invokeMap a ConceptSymbol to a dom::Object.
::mrdocs::tag_invokeMap a EnumSymbol to a dom::Object.
::mrdocs::tag_invokeMap a VariableSymbol to a dom::Object.
::mrdocs::tag_invokeMap a UsingSymbol to a dom::Object.
::mrdocs::tag_invokeMap a RecordSymbol to a dom::Object.
::mrdocs::tag_invokeMap a FunctionSymbol to a dom::Object.
::mrdocs::tag_invokeMap a GuideSymbol to a dom::Object.
::mrdocs::tag_invokeMap a NamespaceSymbol to a dom::Object.
::mrdocs::tag_invokeMap a RecordInterface to a dom::Object.
::mrdocs::doc::tag_invokeMap the HighlightInline to a dom::Object.
::mrdocs::doc::tag_invokeMap the CodeInline to a dom::Object.
::mrdocs::doc::tag_invokeMap the StrongInline to a dom::Object.
::mrdocs::doc::tag_invokeMap the TableCell to a dom::Object.
::mrdocs::doc::tag_invokeMap the PreconditionBlock to a dom::Object.
::mrdocs::doc::tag_invokeMap a definition list block into a DOM object.
::mrdocs::doc::tag_invokeMap the BriefBlock to a dom::Object.
::mrdocs::doc::tag_invokeMap the Inline to a dom::Object.
::mrdocs::doc::tag_invokeMap the EmphInline to a dom::Object.
::mrdocs::doc::tag_invokeMap the LineBreakInline to a dom::Object.
::mrdocs::doc::tag_invokeMap the SeeBlock to a dom::Object.
::mrdocs::doc::tag_invokeMap the TextInline to a dom::Object.
::mrdocs::doc::tag_invokeMap the QuoteBlock to a dom::Object.
::mrdocs::doc::tag_invokeMap the SoftBreakInline to a dom::Object.
::mrdocs::doc::tag_invokeMap the ReferenceInline to a dom::Object.
::mrdocs::doc::tag_invokeMap the ListItem to a dom::Object.
::mrdocs::doc::tag_invokeMap the FootnoteReferenceInline to a dom::Object.
::mrdocs::doc::tag_invokeMap the FootnoteDefinitionBlock to a dom::Object.
::mrdocs::doc::tag_invokeMap the ParagraphBlock to a dom::Object.
::mrdocs::doc::tag_invokeMap the Block to a dom::Object.
::mrdocs::doc::tag_invokeMap the ImageInline to a dom::Object.
::mrdocs::doc::tag_invokeMap the ThrowsBlock to a dom::Object.
::mrdocs::doc::tag_invokeMap the PostconditionBlock to a dom::Object.
::mrdocs::doc::tag_invokeMap the StrikethroughInline to a dom::Object.
::mrdocs::doc::tag_invokeMap the Param to a dom::Object.
::mrdocs::doc::tag_invokeMap the ThematicBreakBlock to a dom::Object.
::mrdocs::doc::tag_invokeMap the DefinitionListItem to a dom::Object.
::mrdocs::doc::tag_invokeMap the AdmonitionBlock to a dom::Object.
::mrdocs::doc::tag_invokeMap the TParam to a dom::Object.
::mrdocs::doc::tag_invokeMap the MathInline to a dom::Object.
::mrdocs::doc::tag_invokeMap the MathBlock to a dom::Object.
::mrdocs::doc::tag_invokeMap the ListBlock to a dom::Object.
::mrdocs::doc::tag_invokeMap a block container into a lazily-evaluated DOM object.
::mrdocs::doc::tag_invokeMap the CopyDetailsInline to a dom::Object.
::mrdocs::doc::tag_invokeMap the HeadingBlock to a dom::Object.
::mrdocs::doc::tag_invokeMap the TableRow to a dom::Object.
::mrdocs::doc::tag_invokeMap the LinkInline to a dom::Object.
::mrdocs::doc::tag_invokeMap the ReturnsBlock to a dom::Object.
::mrdocs::doc::tag_invokeMap the SuperscriptInline to a dom::Object.
::mrdocs::doc::tag_invokeMap the Polymorphic Block to a dom::Object.
::mrdocs::doc::tag_invokeMap the TableBlock to a dom::Object.
::mrdocs::doc::tag_invokeMap the SubscriptInline to a dom::Object.
::mrdocs::doc::tag_invokeMap the CodeBlock to a dom::Object.
::mrdocs::doc::tag_invokeMap an InlineContainer into a DOM object.

See Also

dom::LazyObjectImpl tag_invoke: A general pattern for supporting customisable functions

A container of key and value pairs.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
class Object final

Description

Objects are a collection of properties, which are equivalent to key-value pairs. Property values can be any type, including other Objects, allowing for the creation of arbitrarily complex data structures.

An Object is a non-primitive (or reference) type, meaning that they are not copied when assigned or passed as a parameter. Instead, the reference is copied, and the original value is shared.

These reference types are modeled after JavaScript "Objects". All non-primitive types (Object types) are derived from Object in JavaScript. This means types such as Array and Function represent a relevant selection of built-in types that would derive from Object in JavaScript.

Properties

Objects are a collection of properties, which are equivalent to key-value pairs. There are two kinds of properties: @li Data properties: Associates a key with a value. @li Accessor properties: Associates a key with one of two accessor functions (`get` and `set`), which are used to retrieve or set the value. The internal representation of objects can determine how properties are stored and the type of properties being represented. Properties can also be enumerable or non-enumerable. An enumerable property is one that is iterated by the `visit` function. Non-enumerable properties can only be accessed by name with the `get` and `set` functions.

Types

NameDescription
value_type The type of an element.
const_pointer A pointer to an element.
const_reference A reference to an element.
difference_type A signed integral type.
impl_type The implementation type.
pointer A pointer to an element.
reference A reference to an element.
size_type An unsigned integral type used for indexes and sizes.
storage_type The type of storage used by the default implementation.

Member Functions

NameDescription
Object [constructor]Constructor.
~Object [destructor]Destructor.
operator= Assignment.
at Return the element at a given index.
empty Return true if the container is empty.
exists Return true if a key exists.
get Return the element with the specified key
impl Return the implementation used by this object.
set Set or replace the value for a given key.
size Return the number of elements.
swap Swap two objects.
type_key Return the type key.
visit Invoke the visitor for each key/value pair

Friends

|===
Name Description
toString Return a diagnostic string.
operator<=> Compare two objects for precedence.
operator== Compare two objects for equality.
swap Swap two objects.

Non-Member Functions

Name Description
LazyObjectReturn a new dom::Object based on a transformed lazy array implementation.
LazyObjectReturn a new dom::Object based on a lazy object implementation.
newObjectReturn a new object using a custom implementation.
::mrdocs::createFrameCreate child data objects.

A pointer to an element.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
using const_pointer = pointer;

A reference to an element.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
using const_reference = reference;

Description

This is a read-only reference to an element.

A signed integral type.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
using difference_type = std::ptrdiff_t;

The implementation type.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
using impl_type = std::shared_ptr<ObjectImpl>;

A pointer to an element.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
using pointer = value_type const*;

A reference to an element.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
using reference = value_type;

Description

This is a read-only reference to an element.

An unsigned integral type used for indexes and sizes.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
using size_type = std::size_t;

The type of storage used by the default implementation.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
using storage_type = std::vector<value_type>;

The type of an element.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
struct value_type;

Description

Elements of this container are key and value pairs where the key is a string. This type is a copyable, movable value type.

Constructor.

Synopses

Declared in <mrdocs/Dom/Object.hpp>

Constructor.

Object();
» more...

Constructor.

Object(Object const& other) noexcept;
» more...

Constructor.

Object(Object&& other);
» more...

Constructor.

explicit
Object(impl_type impl) noexcept;
» more...

Constructor.

explicit
Object(storage_type list);
» more...

Parameters

Name Description
list The initial list of values.

Constructor.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
Object();

Description

Default-constructed objects refer to a new, empty container which is distinct from every other empty container.

Constructor.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
Object(Object const& other) noexcept;

Description

The newly constructed object will contain copies of the scalars in other, and references to its structured data.

Parameters

Name Description
other The object to copy construct from

Constructor.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
Object(Object&& other);

Description

Ownership of the contents is transferred to the new object. The moved-from object will behave as if default-constructed.

Parameters

Name Description
other The object to move construct from

Constructor.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
explicit
Object(impl_type impl) noexcept;

Description

This constructs an object from an existing implementation, with shared ownership. The pointer cannot not be null.

Parameters

Name Description
impl The object to construct from

Constructor.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
explicit
Object(storage_type list);

Description

Upon construction, the object will retain ownership of a shallow copy of the specified list. In particular, dynamic objects will be acquired with shared ownership.

Parameters

Name Description
list The initial list of values.

Destructor.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
constexpr
~Object() = default;

Assignment.

Synopses

Declared in <mrdocs/Dom/Object.hpp>

Assignment.

Object&
operator=(Object const& other) noexcept;
» more...

Assignment.

Object&
operator=(Object&& other);
» more...

Assignment.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
Object&
operator=(Object const& other) noexcept;

Description

Shared ownership and copies of elements in others are acquired by this. Ownership of the previous contents is released.

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Assignment.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
Object&
operator=(Object&& other);

Description

Ownership of the object is transferred to this, and ownership of the previous contents is released. The moved-from object behaves as if default constructed.

Return Value

Reference to the current object

Parameters

Name Description
other The object to move assign from

Return the element at a given index.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
Value
at(std::string_view i) const;

Return Value

The value at the specified index, or null if the index is out of range.

Parameters

Name Description
i The index.

Return true if the container is empty.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
bool
empty() const;

Return Value

true if the container is empty.

Return true if a key exists.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
bool
exists(std::string_view key) const;

Return Value

true if the key exists, otherwise false.

Parameters

Name Description
key The key to check for existence.

Return the element with the specified key

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
Value
get(std::string_view key) const;

Return Value

The value for the specified key, or null if the key does not exist.

Parameters

Name Description
key The key.

Return the implementation used by this object.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
impl_type const&
impl() const noexcept;

Return Value

the implementation used by this object.

Set or replace the value for a given key.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
void
set(
    String key,
    Value value) const;

Description

This function inserts a new key or changes the value for the existing key if it is already present.

Parameters

Name Description
key The key.
value The value to set.

Return the number of elements.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
std::size_t
size() const;

Return Value

the number of elements.

Swap two objects.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
void
swap(Object& other) noexcept;

Parameters

Name Description
other A container of key and value pairs.

Return the type key.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
char const*
type_key() const noexcept;

Return Value

the type key.

Invoke the visitor for each key/value pair

Synopses

Declared in <mrdocs/Dom/Object.hpp>

Invoke the visitor for each key/value pair

template<class F>
requires std::invocable<F, String, Value> &&
        std::same_as<std::invoke_result_t<F, String, Value>, bool>
bool
visit(F&& fn) const;
» more...

Invoke the visitor for each key/value pair

template<class F>
requires std::invocable<F, String, Value> &&
        mrdocs::detail::isExpected<std::invoke_result_t<F, String, Value>>
Expected<void, std::invoke_result_t<F, String, Value>::error_type>
visit(F&& fn) const;
» more...

Invoke the visitor for each key/value pair

template<class F>
requires std::invocable<F, String, Value> &&
        std::same_as<std::invoke_result_t<F, String, Value>, void>
void
visit(F&& fn) const;
» more...

Return Value

Parameters

Name Description
fn The visitor function.

Invoke the visitor for each key/value pair

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
template<class F>
requires std::invocable<F, String, Value> &&
        std::same_as<std::invoke_result_t<F, String, Value>, bool>
bool
visit(F&& fn) const;

Description

The visitor function must return true to continue iteration, or false to stop iteration early.

Return Value

true if the visitor returned true for all elements, otherwise false.

Parameters

Name Description
fn The visitor function.

Invoke the visitor for each key/value pair

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
template<class F>
requires std::invocable<F, String, Value> &&
        mrdocs::detail::isExpected<std::invoke_result_t<F, String, Value>>
Expected<void, std::invoke_result_t<F, String, Value>::error_type>
visit(F&& fn) const;

Description

The visitor function must return void to continue iteration, or an Unexpected<E> to stop iteration early.

If an error is returned, the iteration stops and the error is returned from this function.

Return Value

Parameters

Name Description
fn The visitor function.

Invoke the visitor for each key/value pair

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
template<class F>
requires std::invocable<F, String, Value> &&
        std::same_as<std::invoke_result_t<F, String, Value>, void>
void
visit(F&& fn) const;

Parameters

Name Description
fn The visitor function.

Abstract object interface.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
class ObjectImpl;

Description

This interface is used by Object types.

Types

NameDescription
reference A reference to an element.
storage_type The type of storage used by the default implementation.

Member Functions

NameDescription
~ObjectImpl [destructor] [virtual]Destructor.
exists [virtual]Determine if a key exists.
get [virtual]Return the value for the specified key, or null.
set [virtual]Insert or set the given key/value pair.
size [virtual]Return the number of properties in the object.
type_key [virtual]Return the type key of the implementation.
visit [virtual]Invoke the visitor for each key/value pair.

Derived Classes

Name Description
DefaultObjectImpl The default Object implementation.
LazyObjectImpl Lazy object implementation.
LazyObjectImpl Lazy object implementation.

A reference to an element.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
using reference = Object::reference;

Description

This is a read-only reference to an element.

The type of storage used by the default implementation.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
using storage_type = Object::storage_type;

Destructor.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
virtual
~ObjectImpl();

Determine if a key exists.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
virtual
bool
exists(std::string_view key) const;

Return Value

true if the key exists, otherwise false.

Parameters

Name Description
key The key to check for existence.

Return the value for the specified key, or null.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
virtual
Value
get(std::string_view key) const = 0;

Return Value

The value for the specified key, or null if the key does not exist.

Parameters

Name Description
key The key.

Insert or set the given key/value pair.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
virtual
void
set(
    String key,
    Value value) = 0;

Parameters

Name Description
key The key.
value The value to set.

Return the number of properties in the object.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
virtual
std::size_t
size() const = 0;

Return Value

the number of properties in the object.

Return the type key of the implementation.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
virtual
char const*
type_key() const noexcept;

Return Value

the type key of the implementation.

Invoke the visitor for each key/value pair.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
virtual
bool
visit(std::function<bool(String, Value)> fn) const = 0;

Description

The visitor function must return true to continue iteration, or false to stop.

The visit function returns true if the visitor returned true for all elements, otherwise false.

Return Value

true if the visitor returned true for all elements, otherwise false.

Parameters

Name Description
fn The visitor function.

UTF-8 string value used by the DOM.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
class String final

Member Functions

NameDescription
String [constructor]Constructor.
~String [destructor]Destructor.
operator= Assignment.
c_str Return the string.
data Return the string.
empty Return true if the string is empty.
get Return the string.
size Return the size.
str Return the string.
swap Swap two strings.
operator std::string_view Return the string.

Friends

|===
Name Description
operator+
operator+
operator+ Concatenate two strings.
operator<=> Return the result of comparing two strings.
operator!= Return the result of comparing two strings.
operator== Return the result of comparing two strings.
operator<=> Return the result of comparing two strings.
operator!= Return the result of comparing two strings.
operator== Return the result of comparing two strings.
swap Swap two strings.

Non-Member Functions

Name Description
::mrdocs::toStringConvert a function class to string form.
::mrdocs::toStringConvert an explicit kind to its string form.
::mrdocs::toStringConvert a reference kind to its string representation.
::mrdocs::toStringReturn the name of the SymbolKind as a string.
::mrdocs::toStringConvert a NameKind to its string form.
::mrdocs::toStringConvert a storage class kind to its string form.
::mrdocs::toStringConvert an alignment enum to its string representation.
::mrdocs::toStringConvert ExplicitInfo to a string.
::mrdocs::toStringConvert a noexcept kind to its string form.
::mrdocs::toStringConvert a cv/ref qualifier kind to its string form.
::mrdocs::toStringConvert a list kind enum to its string name.
::mrdocs::toStringConvert access specifier to its string form.
::mrdocs::toStringConvert NoexceptInfo to a string.
::mrdocs::toStringConvert a TypeKind to its string representation.
::mrdocs::toStringConvert the key kind to its canonical string form.
::mrdocs::toStringConvert an auto-kind to its spelling.
::mrdocs::toStringConvert a constexpr/consteval specifier kind to a string.
::mrdocs::doc::toStringConvert an inline kind to its kebab-case string.
::mrdocs::doc::toStringReturn the name of the Admonish as a string.
::mrdocs::doc::toStringReturn the name of the Parts as a string.
::mrdocs::doc::toStringConvert a block kind to its kebab-case string name.
::mrdocs::doc::toStringReturn the name of the ParamDirection as a string.

Constructor.

Synopses

Declared in <mrdocs/Dom/String.hpp>

Constructor.

constexpr
String() noexcept = default;
» more...

Constructor.

String(String const& other) noexcept;
» more...

Constructor.

constexpr
String(String&& other) noexcept;
» more...

Constructor.

String(std::string_view sv);
» more...

Constructor.

template<StringLikeTy StringLike>
String(StringLike const& s);
» more...

Constructor.

template<std::size_t N>
constexpr
String(char const(& str)[]);
» more...

Constructor.

String(
    char const* str,
    std::size_t len);
» more...

Parameters

Name Description
sv The string to construct with. A copy of this string is made.
s The string to construct with. A copy of this string is made.
str A null-terminated string. If the string is not null-terminated, the result is undefined.
len The length of the string.

Constructor.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
constexpr
String() noexcept = default;

Description

Default constructed strings have a zero size, and include a null terminator.

Constructor.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
String(String const& other) noexcept;

Description

The newly constructed string acquries shared ownership of the string referenced by other.

Parameters

Name Description
other The object to copy construct from

Constructor.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
constexpr
String(String&& other) noexcept;

Description

Ownership of the string is transferred to the newly constructed string. The moved-from string behaves as if default constructed.

Parameters

Name Description
other The object to move construct from

Constructor.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
String(std::string_view sv);

Description

This function constructs a new string from the buffer pointed to by sv.

Parameters

Name Description
sv The string to construct with. A copy of this string is made.

Constructor.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
template<StringLikeTy StringLike>
String(StringLike const& s);

Description

This function constructs a new string from s, which must be convertible to std::string_view.

Parameters

Name Description
s The string to construct with. A copy of this string is made.

Constructor.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
template<std::size_t N>
constexpr
String(char const(& str)[]);

Description

This function constructs a string literal which references the buffer pointed to by str. Ownership is not transferred; the lifetime of the buffer must extend until the string is destroyed, otherwise the behavior is undefined.

Parameters

Name Description
str A null-terminated string. If the string is not null-terminated, the result is undefined.

Constructor.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
String(
    char const* str,
    std::size_t len);

Description

This function constructs a new string from the string pointed to by str of length len.

Parameters

Name Description
str The string to construct with. A copy of this string is made.
len The length of the string.

Destructor.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
~String() noexcept;

Assignment.

Synopses

Declared in <mrdocs/Dom/String.hpp>

Assignment.

String&
operator=(String const& other) noexcept;
» more...

Assignment.

String&
operator=(String&& other) noexcept;
» more...

Assignment.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
String&
operator=(String const& other) noexcept;

Description

This acquires shared ownership of the string referenced by other. Ownership of the previously referenced string is released.

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Assignment.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
String&
operator=(String&& other) noexcept;

Description

This transfers ownership of the string referenced by other to this. Ownership of the previously referened string is released. After the assignment, the moved-from string behaves as if default constructed.

Return Value

Reference to the current object

Parameters

Name Description
other The object to move assign from

Return the string.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
char const*
c_str() const noexcept;

Description

The pointed-to character buffer returned by this function is always null-terminated.

Return Value

the string.

Return the string.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
char const*
data() const noexcept;

Description

The pointed-to character buffer returned by this function is always null-terminated.

Return Value

the string.

Return true if the string is empty.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
bool
empty() const noexcept;

Return Value

true if the string is empty.

Return the string.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
std::string_view
get() const noexcept;

Return Value

the string.

Return the size.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
std::size_t
size() const noexcept;

Return Value

the size.

Return the string.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
std::string
str() const noexcept;

Return Value

the string.

Swap two strings.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
constexpr
void
swap(String& other) noexcept;

Parameters

Name Description
other The other string.

Return the string.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
operator std::string_view() const noexcept;

Return Value

the string.

A variant container for any kind of Dom value.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
class Value;

Member Functions

NameDescription
Value [constructor]Constructors
~Value [destructor]Destroy the contained value, releasing owned storage.
operator= Assignment operators
empty Return if an Array or Object is empty.
exists Return true if a key exists.
get get overloads
getArray Return the array.
getBool Return the underlying boolean value.
getFunction Return the function.
getInteger Return the underlying integer value.
getObject Return the object.
getString Return the underlying string value.
isArray Return true if this is an array.
isBoolean Return true if this is a boolean.
isFunction Return true if this is a function.
isInteger Return true if this is an integer.
isNull Return true if this is null.
isObject Return true if this is an object.
isSafeString Return true if this is a safe string.
isString Return true if this is a string.
isTruthy Determine if a value is truthy
isUndefined Return true if this is undefined.
kind Return the type of value contained.
lookup Lookup a sequence of keys.
operator() Invoke the function.
set Set or replace the value for a given key.
size Return if an Array or Object is empty.
swap Swap two values.
type_key Return the type key of the value.
operator std::string Return the string.
operator bool Determine if a value is truthy

Data Members

NameDescription
arr_ [variant member]Array payload; shared with lazy arrays.
b_ [variant member]Boolean payload when the value kind is Boolean.
fn_ [variant member]Callable payload used by template helpers.
i_ [variant member]Integer payload when the value kind is Integer.
obj_ [variant member]Object payload; shared with lazy objects.
str_ [variant member]UTF-8 string or safe-string payload.

Friends

|===
Name Description
toString Return value as a string.
operator&&
operator&&
operator&& Return the first dom::Value that is not truthy, or the last one.
operator||
operator||
operator|| Return the first dom::Value that is truthy, or the last one.
operator+
operator+
operator+ Add or concatenate two values.
operator<=> Three-way comparison operator
operator<=> Three-way comparison operator
operator<=> Compare two values for inequality.
operator== Compare two values for equality.
swap Swap two values.
safeString Create a wrapper for a safe string.
Object A container of key and value pairs.
Array An array of values

Non-Member Functions

Name Description
ValueFromConvert an object of type T to dom::Value with a context
ValueFromConvert an object of type T to dom::Value.
stringOrNullReturn a non-empty string, or a null.
stringOrNullReturn a non-empty string, or a null.
stringOrNullReturn a non-empty string, or a null.
JSON::stringifyStringify a value as JSON
::mrdocs::isEmptyDetermine if a value is empty
::mrdocs::safeStringReturn a DOM string ensuring special characters are escaped.
::mrdocs::safeStringMark an existing string-like value as safe to emit without escaping.
::mrdocs::helpers::detag_fn"detag" helper function
::mrdocs::helpers::increment_fn"increment" helper function
::mrdocs::helpers::or_fn"or" helper function
::mrdocs::helpers::relativize_fn"relativize" helper function
::mrdocs::helpers::select_fn"select" helper function

Constructors

Synopses

Declared in <mrdocs/Dom/Value.hpp>

Construct an undefined value.

Value() noexcept;
» more...

Copy-construct from another value.

Value(Value const& other);
» more...

Move-construct from another value, leaving it undefined.

Value(Value&& other) noexcept;
» more...

Construct an array value, taking ownership of the elements.

Value(Array arr) noexcept;
» more...

Construct a function value that can be invoked by templates.

Value(Function fn) noexcept;
» more...

Construct an empty value with the specified kind.

Value(dom::Kind kind) noexcept;
» more...

Construct an object value, taking ownership of the members.

Value(Object obj) noexcept;
» more...

Construct a string or safe-string value, taking ownership.

Value(String str) noexcept;
» more...

Construct an integer value.

Value(int64_t v) noexcept;
» more...

Construct a null value.

Value(std::nullptr_t v) noexcept;
» more...

Construct an array value from raw storage.

Value(Array::storage_type elements);
» more...

Construct a single-character string value.

Value(char c) noexcept;
» more...

Construct a string value from a C string.

Value(char const* s);
» more...

Construct an integer value from a floating-point number by truncation.

template<std::floating_point T>
Value(T v) noexcept;
» more...

Construct an integer value from an integral type other than bool or char.

template<std::integral T>
requires (!std::same_as<T, bool>) &&
        (!std::same_as<T, char>)
Value(T v) noexcept;
» more...

Construct a boolean value.

template<std::convertible_to<String> Boolean>
Value(Boolean const& b);
» more...

Construct a function value from a callable object.

template<class F>
requires function_traits_convertible_to_value<F>
Value(F const& f);
» more...

Construct from Optional, using Undefined when empty.

template<class T>
requires std::constructible_from<Value, T>
Value(Optional<T> const& opt);
» more...

Construct from std::optional, using Undefined when empty.

template<class T>
requires std::constructible_from<Value, T>
Value(std::optional<T> const& opt);
» more...

Construct a string value from a string literal.

template<std::size_t N>
Value(char const(& sz)[]);
» more...

Construct an undefined value.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Value() noexcept;

Copy-construct from another value.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Value(Value const& other);

Parameters

Name Description
other The object to copy construct from

Move-construct from another value, leaving it undefined.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Value(Value&& other) noexcept;

Parameters

Name Description
other The object to move construct from

Construct an array value, taking ownership of the elements.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Value(Array arr) noexcept;

Parameters

Name Description
arr The object to construct from

Construct a function value that can be invoked by templates.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Value(Function fn) noexcept;

Parameters

Name Description
fn The object to construct from

Construct an empty value with the specified kind.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Value(dom::Kind kind) noexcept;

Parameters

Name Description
kind The object to construct from

Construct an object value, taking ownership of the members.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Value(Object obj) noexcept;

Parameters

Name Description
obj The object to construct from

Construct a string or safe-string value, taking ownership.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Value(String str) noexcept;

Parameters

Name Description
str The object to construct from

Construct an integer value.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Value(int64_t v) noexcept;

Parameters

Name Description
v The object to construct from

Construct a null value.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Value(std::nullptr_t v) noexcept;

Parameters

Name Description
v The object to construct from

Construct an array value from raw storage.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Value(Array::storage_type elements);

Parameters

Name Description
elements The object to construct from

Construct a single-character string value.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Value(char c) noexcept;

Parameters

Name Description
c The value to construct from

Construct a string value from a C string.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Value(char const* s);

Parameters

Name Description
s The value to construct from

Construct an integer value from a floating-point number by truncation.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
template<std::floating_point T>
Value(T v) noexcept;

Parameters

Name Description
v The object to construct from

Construct an integer value from an integral type other than bool or char.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
template<std::integral T>
requires (!std::same_as<T, bool>) &&
        (!std::same_as<T, char>)
Value(T v) noexcept;

Parameters

Name Description
v The object to construct from

Construct a boolean value.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
template<std::convertible_to<String> Boolean>
Value(Boolean const& b);

Description

Construct a string value from any String-convertible type.

Parameters

Name Description
b The object to copy construct from

Construct a function value from a callable object.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
template<class F>
requires function_traits_convertible_to_value<F>
Value(F const& f);

Parameters

Name Description
f The object to copy construct from

Construct from Optional, using Undefined when empty.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
template<class T>
requires std::constructible_from<Value, T>
Value(Optional<T> const& opt);

Parameters

Name Description
opt The object to copy construct from

Construct from std::optional, using Undefined when empty.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
template<class T>
requires std::constructible_from<Value, T>
Value(std::optional<T> const& opt);

Parameters

Name Description
opt The object to copy construct from

Construct a string value from a string literal.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
template<std::size_t N>
Value(char const(& sz)[]);

Parameters

Name Description
sz The value to construct from

Destroy the contained value, releasing owned storage.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
~Value();

Assignment operators

Synopses

Declared in <mrdocs/Dom/Value.hpp>

Copy-assign from another value, replacing the stored payload.

Value&
operator=(Value const& other);
» more...

Move-assign from another value, leaving it undefined.

Value&
operator=(Value&& other) noexcept;
» more...

Copy-assign from another value, replacing the stored payload.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Value&
operator=(Value const& other);

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Move-assign from another value, leaving it undefined.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Value&
operator=(Value&& other) noexcept;

Return Value

Reference to the current object

Parameters

Name Description
other The object to move assign from

Return if an Array or Object is empty.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
bool
empty() const;

Return Value

if an Array or Object is empty.

Return true if a key exists.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
bool
exists(std::string_view key) const;

Return Value

true if the key exists, otherwise false.

Parameters

Name Description
key The key to check for existence.

get overloads

Synopses

Declared in <mrdocs/Dom/Value.hpp>

Return the element at a given index.

dom::Value
get(std::size_t i) const;
» more...

Return the element for a given key.

dom::Value
get(std::string_view key) const;
» more...

Return the element at a given index or key.

dom::Value
get(dom::Value const& i) const;
» more...

Return the element for a given key.

template<std::convertible_to<std::string_view> S>
dom::Value
get(S const& key) const;
» more...

Return Value

Parameters

Name Description
i The index.
key The key.

Return the element at a given index.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
dom::Value
get(std::size_t i) const;

Return Value

The value at the specified index, or a Value of type

Parameters

Name Description
i The index.

Return the element for a given key.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
dom::Value
get(std::string_view key) const;

Description

If the Value is not an object, or the key is not found, a Value of type Kind::Undefined is returned.

Return Value

The value for the specified key, or a Value of type Kind::Undefined if the key does not exist.

Parameters

Name Description
key The key.

Return the element at a given index or key.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
dom::Value
get(dom::Value const& i) const;

Return Value

the element at a given index or key.

Parameters

Name Description
i A variant container for any kind of Dom value.

Return the element for a given key.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
template<std::convertible_to<std::string_view> S>
dom::Value
get(S const& key) const;

Description

If the Value is not an object, or the key is not found, a Value of type Kind::Undefined is returned.

Return Value

The value for the specified key, or a Value of type Kind::Undefined if the key does not exist.

Parameters

Name Description
key The key.

Return the array.

Synopses

Declared in <mrdocs/Dom/Value.hpp>

Return the array.

Array const&
getArray() const;
» more...
Array&
getArray();
» more...

Exceptions

Name Thrown on
Exception ! isArray()

Return the array.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Array const&
getArray() const;

Exceptions

Name Thrown on
Exception ! isArray()

Return Value

the array.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Array&
getArray();

Return Value

An array of values

Return the underlying boolean value.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
bool
getBool() const noexcept;

Description

NOTE

Behaviour is undefined if !isBoolean()

Return Value

the underlying boolean value.

Return the function.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Function const&
getFunction() const;

Exceptions

Name Thrown on
Exception ! isFunction()

Return Value

the function.

Return the underlying integer value.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
int64_t
getInteger() const noexcept;

Description

NOTE

Behaviour is undefined if !isInteger()

Return Value

the underlying integer value.

Return the object.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Object const&
getObject() const;

Exceptions

Name Thrown on
Exception ! isObject()

Return Value

the object.

Return the underlying string value.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
String const&
getString() const noexcept;

Description

NOTE

Behaviour is undefined if !isString()

Return Value

the underlying string value.

Return true if this is an array.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
bool
isArray() const noexcept;

Return Value

true if this is an array.

Return true if this is a boolean.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
bool
isBoolean() const noexcept;

Return Value

true if this is a boolean.

Return true if this is a function.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
bool
isFunction() const noexcept;

Return Value

true if this is a function.

Return true if this is an integer.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
bool
isInteger() const noexcept;

Return Value

true if this is an integer.

Return true if this is null.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
bool
isNull() const noexcept;

Return Value

true if this is null.

Return true if this is an object.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
bool
isObject() const noexcept;

Return Value

true if this is an object.

Return true if this is a safe string.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
bool
isSafeString() const noexcept;

Return Value

true if this is a safe string.

Return true if this is a string.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
bool
isString() const noexcept;

Return Value

true if this is a string.

Determine if a value is truthy

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
bool
isTruthy() const noexcept;

Description

A value is truthy if it is a boolean and is true, a number and not zero, or an non-empty string, array or object.

Return Value

true if the value is truthy, false otherwise

Return true if this is undefined.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
bool
isUndefined() const noexcept;

Return Value

true if this is undefined.

Return the type of value contained.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
dom::Kind
kind() const noexcept;

Return Value

the type of value contained.

Lookup a sequence of keys.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
dom::Value
lookup(std::string_view keys) const;

Description

This function is equivalent to calling get multiple times, once for each key in the sequence of dot-separated keys.

Return Value

The value at the end of the sequence, or a Value of type Kind::Undefined if any key is not found.

Parameters

Name Description
keys The dot-separated sequence of keys.

Invoke the function.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
template<class... Args>
Value
operator()(Args&&... args) const;

Description

If the Value is not an object, or the key is not found, a Value of type Kind::Undefined is returned.

Return Value

Another instance of the object

Parameters

Name Description
args The arguments to the function.

Set or replace the value for a given key.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
void
set(
    String const& key,
    Value const& value);

Parameters

Name Description
key The key.
value The value to set.

Return if an Array or Object is empty.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
std::size_t
size() const;

Return Value

if an Array or Object is empty.

Swap two values.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
void
swap(Value& other) noexcept;

Parameters

Name Description
other A variant container for any kind of Dom value.

Return the type key of the value.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
char const*
type_key() const noexcept;

Return Value

the type key of the value.

Return the string.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
explicit
operator std::string() const noexcept;

Return Value

the string.

Determine if a value is truthy

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
explicit
operator bool() const noexcept;

Description

A value is truthy if it is a boolean and is true, a number and not zero, or an non-empty string, array or object.

Return Value

true if the value is truthy, false otherwise

Array payload; shared with lazy arrays.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Array arr_;

Boolean payload when the value kind is Boolean.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
bool b_ = {false};

Callable payload used by template helpers.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Function fn_;

Integer payload when the value kind is Integer.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
int64_t i_;

Object payload; shared with lazy objects.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Object obj_;

UTF-8 string or safe-string payload.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
String str_;

Customization point tag.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
struct ValueFromTag;

Description

This tag type is used by the function dom::ValueFrom to select overloads of tag_invoke.

NOTE

This type is empty; it has no members.

Non-Member Functions

Name Description
::mrdocs::tag_invokeConvert a NoexceptInfo to a DOM value.
::mrdocs::tag_invokeSerialize a Type into a DOM value.
::mrdocs::tag_invokeMap the EnumConstantSymbol to a dom::Value object.
::mrdocs::tag_invokeSerialize a polymorphic template argument into a DOM value.
::mrdocs::tag_invokeMap the FriendInfo to a dom::Value object.
::mrdocs::tag_invokeMap the UsingSymbol to a dom::Value object.
::mrdocs::tag_invokeReturn the UsingClass as a dom::Value string.
::mrdocs::tag_invokeReturn the SymbolKind from a dom::Value string.
::mrdocs::tag_invokeSerialize an optional polymorphic name into a DOM value.
::mrdocs::tag_invokeSerialize a polymorphic name into a DOM value.
::mrdocs::tag_invokeReturn the AccessKind as a dom::Value string.
::mrdocs::tag_invokeSerialize an optional polymorphic type into a DOM value.
::mrdocs::tag_invokeMap the ConceptSymbol to a dom::Value object.
::mrdocs::tag_invokeMap the NamespaceAliasSymbol to a dom::Value object.
::mrdocs::tag_invokeMap the NamespaceTranche to a dom::Value object.
::mrdocs::tag_invokeReturn the Symbol as a dom::Value object.
::mrdocs::tag_invokeSerialize an alignment enum into a DOM value.
::mrdocs::tag_invokeMap the VariableSymbol to a dom::Value object.
::mrdocs::tag_invokeMap the TypedefSymbol to a dom::Value object.
::mrdocs::tag_invokeSerialize a list kind into a DOM value.
::mrdocs::tag_invokeConvert SymbolID to dom::Value object in the DOM using Corpus
::mrdocs::tag_invokeSerialize template info into a DOM value.
::mrdocs::tag_invokeConvert SymbolID pointers to dom::Value or null.
::mrdocs::tag_invokeMap the GuideSymbol to a dom::Value object.
::mrdocs::tag_invokeReturn the ConstexprKind as a dom::Value string.
::mrdocs::tag_invokeSerialize the auto kind into a DOM value.
::mrdocs::tag_invokeMap a NameKind into a DOM value.
::mrdocs::tag_invokeSerialize a name into a DOM value.
::mrdocs::tag_invokeMap the OverloadsSymbol to a dom::Value object.
::mrdocs::tag_invokeSerialize source locations into a DOM value.
::mrdocs::tag_invokeSerialize a base description into a DOM value.
::mrdocs::tag_invokeReturn the FunctionClass from a dom::Value string.
::mrdocs::tag_invokeMap a TypeKind into a DOM value.
::mrdocs::tag_invokeSerialize the argument to a DOM value.
::mrdocs::tag_invokeSerialize the keyword kind into a DOM value.
::mrdocs::tag_invokeSerialize a template parameter into a DOM value.
::mrdocs::tag_invokeReturn the Param as a dom::Value object.
::mrdocs::tag_invokeSerialize an optional template info into a DOM value.
::mrdocs::tag_invokeSerialize a polymorphic type into a DOM value.
::mrdocs::tag_invokeSerialize the record key kind into a DOM value.
::mrdocs::tag_invokeReturn the DocComment as a dom::Value object.
::mrdocs::tag_invokeReturn the ReferenceKind as a dom::Value string.
::mrdocs::tag_invokeSerialize a template-argument kind into a DOM value.
::mrdocs::tag_invokeMap the RecordSymbol to a dom::Value object.
::mrdocs::tag_invokeMap an operator kind to a DOM value (its underlying integer).
::mrdocs::tag_invokeReturn the ExplicitInfo as a dom::Value string.
::mrdocs::tag_invokeReturn the SymbolKind from a dom::Value string.
::mrdocs::tag_invokeReturn the StorageClassKind as a dom::Value string.
::mrdocs::tag_invokeSerialize a location into a DOM value.
::mrdocs::tag_invokeMap the RecordInterface to a dom::Value object.
::mrdocs::tag_invokeMap the NamespaceSymbol to a dom::Value object.
::mrdocs::tag_invokeMap the FunctionSymbol to a dom::Value object.
::mrdocs::tag_invokeMap a FileKind into a DOM value.
::mrdocs::tag_invokeConvert SymbolID to dom::Value string in the DOM using toBase16
::mrdocs::tag_invokeMap the EnumSymbol to a dom::Value object.
::mrdocs::tag_invokeMap a QualifierKind into a DOM value.
::mrdocs::tag_invokeSerialize a polymorphic template parameter.
::mrdocs::tag_invokeMap the RecordTranche to a dom::Value object.
::mrdocs::doc::tag_invokeReturn the StrongInline as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the FootnoteReferenceInline as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the Parts from a dom::Value string.
::mrdocs::doc::tag_invokeReturn the TextInline as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the HeadingBlock as a dom::Value object.
::mrdocs::doc::tag_invokeWrite a block kind into a DOM value as its string name.
::mrdocs::doc::tag_invokeReturn the CodeBlock as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the TableBlock as a dom::Value object.
::mrdocs::doc::tag_invokeConvert an InlineContainer to a DOM value.
::mrdocs::doc::tag_invokeReturn the BriefBlock as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the PostconditionBlock as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the LinkInline as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the MathInline as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the SeeBlock as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the Admonish from a dom::Value string.
::mrdocs::doc::tag_invokeReturn the AdmonitionBlock as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the SuperscriptInline as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the PreconditionBlock as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the Inline as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the LineBreakInline as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the EmphInline as a dom::Value object.
::mrdocs::doc::tag_invokeConvert a definition list block to a DOM value.
::mrdocs::doc::tag_invokeReturn the CodeInline as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the block container as a DOM value.
::mrdocs::doc::tag_invokeReturn the Block as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the FootnoteDefinitionBlock as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the ReturnsBlock as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the ParagraphBlock as a dom::Value object.
::mrdocs::doc::tag_invokeMap an optional brief block to a DOM value, yielding null when absent.
::mrdocs::doc::tag_invokeReturn the TableRow as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the TParam as a dom::Value object.
::mrdocs::doc::tag_invokeMap the Polymorphic Block as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the ListItem as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the MathBlock as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the Param as a dom::Value object.
::mrdocs::doc::tag_invokeMap an optional polymorphic block into a DOM value, producing null when empty.
::mrdocs::doc::tag_invokeReturn the CopyDetailsInline as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the ReferenceInline as a dom::Value object.
::mrdocs::doc::tag_invokeSerialize a polymorphic inline node into a DOM value.
::mrdocs::doc::tag_invokeReturn the DefinitionListItem as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the SoftBreakInline as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the TableCell as a dom::Value object.
::mrdocs::doc::tag_invokeSerialize an inline kind into a DOM value.
::mrdocs::doc::tag_invokeReturn the HighlightInline as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the QuoteBlock as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the ListBlock as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the SubscriptInline as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the ImageInline as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the StrikethroughInline as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the ThematicBreakBlock as a dom::Value object.
::mrdocs::doc::tag_invokeReturn the ParamDirection from a dom::Value string.
::mrdocs::doc::tag_invokeReturn the ThrowsBlock as a dom::Value object.

See Also

dom::ValueFrom tag_invoke: A general pattern for supporting customisable functions

Function implementation that forwards the entire Array to a callable.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<class F>
class VariadicFunctionImpl
    : public FunctionImpl

Base Classes

Name Description
FunctionImplValue-semantic wrapper over a callable exposed to the DOM layer.

Types

NameDescription
args_type Argument tuple type accepted by the callable.
return_type Result type produced by the callable.

Member Functions

NameDescription
VariadicFunctionImpl [constructor]Construct from any callable convertible to F.
call [virtual]Invoke the wrapped callable with the full argument array.
type_key [virtual]Return the type key of the implementation.

Argument tuple type accepted by the callable.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
using args_type = function_traits<F>::args_type;

Result type produced by the callable.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
using return_type = function_traits<F>::return_type;

Construct from any callable convertible to F.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<class U>
VariadicFunctionImpl(U&& u);

Parameters

Name Description
u Callable to wrap.

Invoke the wrapped callable with the full argument array.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
virtual
Expected<Value>
call(Array const& args) const override;

Return Value

A container holding an error or a value.

Parameters

Name Description
args An array of values

Return the type key of the implementation.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
virtual
char const*
type_key() const noexcept override;

Return Value

the type key of the implementation.

Helper traits to extract return and argument types from callables.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<typename F>
struct function_traits;

Derived Classes

Name Description
function_traits Traits specialization for functors/lambdas.

Traits specialization for functors/lambdas.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<typename F>
requires requires { &F::operator(); }
struct function_traits<F>
    : function_traits<decltype(&F::operator)>

Base Classes

Name Description
function_traits<decltype(&F::operator)>Helper traits to extract return and argument types from callables.

Traits specialization for function pointers.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<
    typename R,
    typename... Args>
struct function_traits<R(*)(Args...)>;

Types

NameDescription
args_type Tuple of argument types accepted by the callable.
return_type Result type of the callable.

Tuple of argument types accepted by the callable.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
using args_type = std::tuple<Args...>;

Result type of the callable.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
using return_type = R;

Traits specialization for free functions.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<
    typename R,
    typename... Args>
struct function_traits<R(Args...)>;

Types

NameDescription
args_type Tuple of argument types accepted by the callable.
return_type Result type of the callable.

Tuple of argument types accepted by the callable.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
using args_type = std::tuple<Args...>;

Result type of the callable.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
using return_type = R;

Traits specialization for member functions.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<
    typename C,
    typename R,
    typename... Args>
struct function_traits<R const volatile(C::*)(Args...)>;

Description

Traits specialization for const member functions.

Traits specialization for volatile member functions.

Traits specialization for const volatile member functions.

Types

NameDescription
args_type Tuple of argument types accepted by the callable.
return_type Result type of the callable.

Tuple of argument types accepted by the callable.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
using args_type = std::tuple<Args...>;

Result type of the callable.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
using return_type = R;

The type of data in a Value.

Synopsis

Declared in <mrdocs/Dom/Kind.hpp>
enum class Kind : int;

Description

This is the type of data stored in a Value. These types are loosely modeled after the JavaScript types and data structures.

Primitive values are Undefined, Null, Boolean, Integer, and String.

Undefined and Null are inhabited by a single value each. The difference between Undefined and Null is that Undefined is the default value for a Value, while Null represents a value that is explicitly set. Undefined is used to represent things such as:

This distinction is semantically important as algorithms frequently need to distinguish between these two cases.

Booleans, Integers, and Strings are also primitive values. This means they are deeply copied when assigned or passed as a parameter.

Other value types, such as Array, Object, and Function are reference types, meaning that they are not copied when assigned or passed as a parameter. Instead, the reference is copied, and the original value is shared.

These reference types are modeled after JavaScript "Objects". All non-primitive types (Object types) are derived from Object in JavaScript. This means types such as Array and Function represent a relevant selection of built-in types that would derive from Object in JavaScript.

Objects are a collection of properties, which are equivalent to key-value pairs. Property values can be any type, including other Objects, allowing for the creation of arbitrarily complex data structures.

Members

NameDescription
Undefined The value is undefined.
Null The value is null.
Boolean The value is a boolean.
Integer The value is an integer.
String The value is a string.
SafeString The value is a safe string.
Array The value is an array.
Object The value is an object.
Function The value is a function.

LazyArray overloads

Synopses

Declared in <mrdocs/Dom/LazyArray.hpp>

Return a new dom::Array based on a lazy array implementation.

template<std::ranges::random_access_range T>
requires HasStandaloneValueFrom<std::ranges::range_value_t<T>>
Array
LazyArray(T const& arr);
» more...

Return a new dom::Array based on a FromValue context

template<
    std::ranges::random_access_range T,
    class Context>
requires HasValueFrom<std::ranges::range_value_t<T>, Context>
Array
LazyArray(
    T const& arr,
    Context const& ctx);
» more...

Return Value

Parameters

Name Description
arr The underlying range of elements.
ctx The context used to convert each element to a dom::Value.

Return a new dom::Array based on a lazy array implementation.

Synopsis

Declared in <mrdocs/Dom/LazyArray.hpp>
template<std::ranges::random_access_range T>
requires HasStandaloneValueFrom<std::ranges::range_value_t<T>>
Array
LazyArray(T const& arr);

Return Value

A new dom::Array whose elements are the result of converting each element in the underlying range to a dom::Value.

Parameters

Name Description
arr The underlying range of elements.

Return a new dom::Array based on a FromValue context

Synopsis

Declared in <mrdocs/Dom/LazyArray.hpp>
template<
    std::ranges::random_access_range T,
    class Context>
requires HasValueFrom<std::ranges::range_value_t<T>, Context>
Array
LazyArray(
    T const& arr,
    Context const& ctx);

Return Value

A new dom::Array whose elements are the result of converting each element in the underlying range using the specified context.

Parameters

Name Description
arr The underlying range of elements.
ctx The context used to convert each element to a dom::Value.

LazyObject overloads

Synopses

Declared in <mrdocs/Dom/LazyObject.hpp>

Return a new dom::Object based on a lazy object implementation.

template<HasLazyObjectMapWithoutContext T>
Object
LazyObject(T const& obj);
» more...

Return a new dom::Object based on a transformed lazy array implementation.

template<
    class T,
    class Context>
requires HasLazyObjectMap<T, Context>
Object
LazyObject(
    T const& arr,
    Context const& context);
» more...

Return Value

Parameters

Name Description
obj The underlying object.
arr The underlying range of elements.
context The context used to convert each element to a dom::Value.

Return a new dom::Object based on a lazy object implementation.

Synopsis

Declared in <mrdocs/Dom/LazyObject.hpp>
template<HasLazyObjectMapWithoutContext T>
Object
LazyObject(T const& obj);

Return Value

A new dom::Object whose properties are the result of converting each property in the underlying object to a dom::Value.

Parameters

Name Description
obj The underlying object.

Return a new dom::Object based on a transformed lazy array implementation.

Synopsis

Declared in <mrdocs/Dom/LazyObject.hpp>
template<
    class T,
    class Context>
requires HasLazyObjectMap<T, Context>
Object
LazyObject(
    T const& arr,
    Context const& context);

Return Value

A new dom::Array whose elements are the result of converting each element in the underlying range using the specified context.

Parameters

Name Description
arr The underlying range of elements.
context The context used to convert each element to a dom::Value.

Return a new dom::Array based on a transformed lazy array implementation.

Synopsis

Declared in <mrdocs/Dom/LazyArray.hpp>
template<
    std::ranges::random_access_range T,
    class F>
requires std::invocable<F, std::ranges::range_value_t<T>> &&
    HasStandaloneValueFrom<std::invoke_result_t<F, std::ranges::range_value_t<T>>>
Array
TransformArray(
    T const& arr,
    F const& f);

Return Value

A new dom::Array whose elements are the result of applying the transform function to each element in the underlying range.

Parameters

Name Description
arr The underlying range of elements.
f The transform function to apply to each element before converting it to a dom::Value.

ValueFrom overloads

Synopses

Declared in <mrdocs/Dom/Value.hpp>

Convert an object of type T to dom::Value.

template<class T>
requires HasStandaloneValueFrom<T>
Value
ValueFrom(T&& t);
» more...

Convert an object of type T to dom::Value.

template<class T>
requires HasStandaloneValueFrom<T>
void
ValueFrom(
    T&& t,
    Value& v);
» more...

Convert an object of type T to dom::Value with a context

template<
    class T,
    class Context>
requires HasValueFrom<T, Context>
Value
ValueFrom(
    T&& t,
    Context const& ctx);
» more...

Convert an object of type T to dom::Value.

template<
    class Context,
    HasValueFrom<Context> T>
void
ValueFrom(
    T&& t,
    Context const& ctx,
    Value& v);
» more...

Return Value

dom::Value out parameter.

Template Parameters

Name Description
T The type of the object to convert.
Context The type of context passed to the conversion function.

Parameters

Name Description
t The object to convert.
v dom::Value out parameter.
ctx Context passed to the conversion function.

See Also

dom::ValueFromTag, tag_invoke: A general pattern for supporting customisable functions

dom::ValueFromTag tag_invoke: A general pattern for supporting customisable functions

Convert an object of type T to dom::Value.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
template<class T>
requires HasStandaloneValueFrom<T>
Value
ValueFrom(T&& t);

Description

This function attempts to convert an object of type T to dom::Value using

Conversion of other types is done by calling an overload of tag_invoke found by argument-dependent lookup. Its signature should be similar to:

void tag_invoke( ValueFromTag, dom::Value&, T );

Exception Safety

Strong guarantee.

Return Value

dom::Value out parameter.

Template Parameters

Name Description
T The type of the object to convert.

Parameters

Name Description
t The object to convert.

See Also

dom::ValueFromTag, tag_invoke: A general pattern for supporting customisable functions

Convert an object of type T to dom::Value.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
template<class T>
requires HasStandaloneValueFrom<T>
void
ValueFrom(
    T&& t,
    Value& v);

Description

This function attempts to convert an object of type T to dom::Value using

Conversion of other types is done by calling an overload of tag_invoke found by argument-dependent lookup. Its signature should be similar to:

void tag_invoke( ValueFromTag, dom::Value&, T );

Exception Safety

Strong guarantee.

Template Parameters

Name Description
T The type of the object to convert.

Parameters

Name Description
t The object to convert.
v dom::Value out parameter.

See Also

dom::ValueFromTag tag_invoke: A general pattern for supporting customisable functions

Convert an object of type T to dom::Value with a context

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
template<
    class T,
    class Context>
requires HasValueFrom<T, Context>
Value
ValueFrom(
    T&& t,
    Context const& ctx);

Description

This function attempts to convert an object of type T to dom::Value using

Conversion of other types is done by calling an overload of tag_invoke found by argument-dependent lookup. Its signature should be similar to:

void tag_invoke( ValueFromTag, dom::Value&, T );

Exception Safety

Strong guarantee.

Return Value

dom::Value out parameter.

Template Parameters

Name Description
T The type of the object to convert.

Parameters

Name Description
t The object to convert.
ctx Context passed to the conversion function.

See Also

dom::ValueFromTag, tag_invoke: A general pattern for supporting customisable functions

Convert an object of type T to dom::Value.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
template<
    class Context,
    HasValueFrom<Context> T>
void
ValueFrom(
    T&& t,
    Context const& ctx,
    Value& v);

Description

This function attempts to convert an object of type T to dom::Value using

Conversion of user-provided types is done by calling an overload of tag_invoke found by argument-dependent lookup. Its signature should be similar to:

void tag_invoke( ValueFromTag, dom::Value&, T, Context const& );

or

void tag_invoke( ValueFromTag, dom::Value&, T );

The overloads are checked for existence in that order and the first that matches will be selected.

The ctx argument can be used either as a tag type to provide conversions for third-party types, or to pass extra data to the conversion function.

Exception Safety

Strong guarantee.

Template Parameters

Name Description
T The type of the object to convert.
Context The type of context passed to the conversion function.

Parameters

Name Description
t The object to convert.
ctx Context passed to the conversion function.
v dom::Value out parameter.

See Also

dom::ValueFromTag tag_invoke: A general pattern for supporting customisable functions

Create a Function from a fixed-arity invocable.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<class F>
Function
makeInvocable(F&& f);

Return Value

Function that forwards arguments to f.

Parameters

Name Description
f Callable to wrap.

Create a Function that receives the argument Array directly.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<class F>
requires std::invocable<F, Array const&>
Function
makeVariadicInvocable(F&& f);

Return Value

Function wrapper for the callable.

Parameters

Name Description
f Callable invoked with the argument array.

Return a new array using a custom implementation.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
template<
    class T,
    class... Args>
requires std::derived_from<T, ArrayImpl>
Array
newArray(Args&&... args);

Description

Return a new array using a custom implementation.

Return Value

A new array using the specified implementation.

Template Parameters

Name Description
T The type of the custom implementation. This must be derived from ArrayImpl.
Args The types of the arguments.

Parameters

Name Description
args Arguments forwarded to the constructor of T.

Return a diagnostic string.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<
    class T,
    class... Args>
requires std::derived_from<T, FunctionImpl>
Function
newFunction(Args&&... args);

Description

Return a new function using a custom implementation.

Return Value

a diagnostic string.

Parameters

Name Description
args The arguments to the function.

Return a new object using a custom implementation.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
template<
    class T,
    class... Args>
requires std::derived_from<T, ObjectImpl>
Object
newObject(Args&&... args);

Return Value

A new object using the specified implementation.

Template Parameters

Name Description
T The type of the custom implementation. This must be derived from ObjectImpl.
Args The types of the arguments.

Parameters

Name Description
args Arguments forwarded to the constructor of T.

Return the first dom::Value that is not truthy, or the last one.

Synopses

Declared in <mrdocs/Dom/Value.hpp>
auto
operator&&(
    S const& lhs,
    Value const& rhs) noexcept;
» more...
auto
operator&&(
    Value const& lhs,
    S const& rhs) noexcept;
» more...

Return the first dom::Value that is not truthy, or the last one.

dom::Value
operator&&(
    Value const& lhs,
    Value const& rhs);
» more...

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
auto
operator&&(
    S const& lhs,
    Value const& rhs) noexcept;

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
auto
operator&&(
    Value const& lhs,
    S const& rhs) noexcept;

Return the first dom::Value that is not truthy, or the last one.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
dom::Value
operator&&(
    Value const& lhs,
    Value const& rhs);

Description

This function is equivalent to the JavaScript && operator.

Return Value

the first dom::Value that is not truthy, or the last one.

Parameters

Name Description
lhs The left operand
rhs The right operand

Addition operators

Synopses

Declared in <mrdocs/Dom/Array.hpp>
iterator
operator+(
    difference_type n,
    iterator it) noexcept;
» more...

Concatenate two arrays.

Array
operator+(
    Array const& lhs,
    Array const& rhs);
» more...
auto
operator+(
    Array const& lhs,
    S const& rhs) noexcept;
» more...
auto
operator+(
    S const& lhs,
    Array const& rhs) noexcept;
» more...
auto
operator+(
    S const& lhs,
    String const& rhs) noexcept;
» more...
auto
operator+(
    S const& lhs,
    Value const& rhs) noexcept;
» more...
auto
operator+(
    String const& lhs,
    S const& rhs) noexcept;
» more...

Concatenate two strings.

auto
operator+(
    String const& lhs,
    String const& rhs) noexcept;
» more...
auto
operator+(
    Value const& lhs,
    S const& rhs) noexcept;
» more...

Add or concatenate two values.

dom::Value
operator+(
    Value const& lhs,
    Value const& rhs);
» more...

Return Value

The concatenated string.

Parameters

Name Description
lhs The left-hand side string.
rhs The right-hand side string.

Concatenate two arrays.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
Array
operator+(
    Array const& lhs,
    Array const& rhs);

Return Value

An array of values

Parameters

Name Description
lhs The left operand
rhs The right operand

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
auto
operator+(
    Array const& lhs,
    S const& rhs) noexcept;

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
auto
operator+(
    S const& lhs,
    Array const& rhs) noexcept;

Synopsis

Declared in <mrdocs/Dom/String.hpp>
auto
operator+(
    S const& lhs,
    String const& rhs) noexcept;

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
auto
operator+(
    S const& lhs,
    Value const& rhs) noexcept;

Synopsis

Declared in <mrdocs/Dom/String.hpp>
auto
operator+(
    String const& lhs,
    S const& rhs) noexcept;

Concatenate two strings.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
auto
operator+(
    String const& lhs,
    String const& rhs) noexcept;

Return Value

The concatenated string.

Parameters

Name Description
lhs The left-hand side string.
rhs The right-hand side string.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
auto
operator+(
    Value const& lhs,
    S const& rhs) noexcept;

Add or concatenate two values.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
dom::Value
operator+(
    Value const& lhs,
    Value const& rhs);

Return Value

A variant container for any kind of Dom value.

Parameters

Name Description
lhs The left operand
rhs The right operand

Return the first dom::Value that is truthy, or the last one.

Synopses

Declared in <mrdocs/Dom/Value.hpp>
auto
operator||(
    S const& lhs,
    Value const& rhs) noexcept;
» more...
auto
operator||(
    Value const& lhs,
    S const& rhs) noexcept;
» more...

Return the first dom::Value that is truthy, or the last one.

dom::Value
operator||(
    Value const& lhs,
    Value const& rhs);
» more...

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
auto
operator||(
    S const& lhs,
    Value const& rhs) noexcept;

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
auto
operator||(
    Value const& lhs,
    S const& rhs) noexcept;

Return the first dom::Value that is truthy, or the last one.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
dom::Value
operator||(
    Value const& lhs,
    Value const& rhs);

Description

This function is equivalent to the JavaScript || operator.

Return Value

the first dom::Value that is truthy, or the last one.

Parameters

Name Description
lhs The left operand
rhs The right operand

Return a non-empty string, or a null.

Synopses

Declared in <mrdocs/Dom/Value.hpp>

Return a non-empty string, or a null.

Value
stringOrNull(std::string_view s);
» more...

Return a non-empty string, or a null.

Value
stringOrNull(Optional<std::string> s);
» more...

Return a non-empty string, or a null.

Value
stringOrNull(std::string const& s);
» more...

Parameters

Name Description
s The string to check.

Return a non-empty string, or a null.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Value
stringOrNull(std::string_view s);

Return Value

a non-empty string, or a null.

Parameters

Name Description
s The string to check.

Return a non-empty string, or a null.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Value
stringOrNull(Optional<std::string> s);

Return Value

a non-empty string, or a null.

Parameters

Name Description
s The string to check.

Return a non-empty string, or a null.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
Value
stringOrNull(std::string const& s);

Return Value

a non-empty string, or a null.

Parameters

Name Description
s The string to check.

swap overloads

Synopses

Declared in <mrdocs/Dom/Array.hpp>

Swap two arrays.

void
swap(
    Array& lhs,
    Array& rhs) noexcept;
» more...

Swap two objects.

void
swap(
    Function& lhs,
    Function& rhs) noexcept;
» more...

Swap two objects.

void
swap(
    Object& lhs,
    Object& rhs) noexcept;
» more...

Swap two strings.

constexpr
void
swap(
    String& lhs,
    String& rhs) noexcept;
» more...

Swap two values.

void
swap(
    Value& v0,
    Value& v1) noexcept;
» more...

Parameters

Name Description
lhs The first object.
rhs The second object.

Swap two arrays.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
void
swap(
    Array& lhs,
    Array& rhs) noexcept;

Parameters

Name Description
lhs An array of values
rhs An array of values

Swap two objects.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
void
swap(
    Function& lhs,
    Function& rhs) noexcept;

Parameters

Name Description
lhs The first object.
rhs The second object.

Swap two objects.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
void
swap(
    Object& lhs,
    Object& rhs) noexcept;

Parameters

Name Description
lhs A container of key and value pairs.
rhs A container of key and value pairs.

Swap two strings.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
constexpr
void
swap(
    String& lhs,
    String& rhs) noexcept;

Parameters

Name Description
lhs The first string.
rhs The second string.

Swap two values.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
void
swap(
    Value& v0,
    Value& v1) noexcept;

Parameters

Name Description
v0 A variant container for any kind of Dom value.
v1 A variant container for any kind of Dom value.

toString overloads

Synopses

Declared in <mrdocs/Dom/Array.hpp>

Return a diagnostic string.

std::string
toString(Array const& arr);
» more...

Return a diagnostic string.

std::string
toString(Object const& object);
» more...

Return value as a string.

std::string
toString(Value const& value);
» more...

Return a diagnostic string.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
std::string
toString(Array const& arr);

Return Value

a diagnostic string.

Parameters

Name Description
arr An array of values

Return a diagnostic string.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
std::string
toString(Object const& object);

Return Value

a diagnostic string.

Parameters

Name Description
object A container of key and value pairs.

Return value as a string.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
std::string
toString(Value const& value);

Return Value

value as a string.

Parameters

Name Description
value A variant container for any kind of Dom value.

Equality operators

Synopses

Declared in <mrdocs/Dom/Array.hpp>

Return the result of comparing two strings.

bool
operator==(
    String const& lhs,
    String const& rhs) noexcept;
» more...

Return the result of comparing two strings.

bool
operator==(
    String const& lhs,
    StringLike const& rhs) noexcept;
» more...

Compare two values for equality.

bool
operator==(
    Value const& lhs,
    Value const& rhs) noexcept;
» more...

Compare two objects for equality.

bool
operator==(
    Object const& a,
    Object const& b) noexcept;
» more...

Compare two arrays for equality.

bool
operator==(
    Array const& lhs,
    Array const& rhs) noexcept;
» more...

Return the result of comparing two strings.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
bool
operator==(
    String const& lhs,
    String const& rhs) noexcept;

Return Value

the result of comparing two strings.

Parameters

Name Description
lhs The left operand
rhs The right operand

Return the result of comparing two strings.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
bool
operator==(
    String const& lhs,
    StringLike const& rhs) noexcept;

Return Value

the result of comparing two strings.

Parameters

Name Description
lhs The left operand
rhs The right operand

Compare two values for equality.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
bool
operator==(
    Value const& lhs,
    Value const& rhs) noexcept;

Description

This operator uses strict equality, meaning that the types must match exactly, and for objects and arrays the children must match exactly.

The == operator behaves differently for objects compared to primitive data types like numbers and strings. When comparing objects using ==, it checks for reference equality, not structural equality.

This means that two objects are considered equal with === only if they reference the exact same object in memory.

NOTE

In JavaScript, this is equivalent to the === operator, which does not perform type conversions.

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
lhs The left operand
rhs The right operand

Compare two objects for equality.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
bool
operator==(
    Object const& a,
    Object const& b) noexcept;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
a The left operand
b The right operand

Compare two arrays for equality.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
bool
operator==(
    Array const& lhs,
    Array const& rhs) noexcept;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
lhs The left operand
rhs The right operand

Return the result of comparing two strings.

Synopses

Declared in <mrdocs/Dom/String.hpp>

Return the result of comparing two strings.

bool
operator!=(
    String const& lhs,
    String const& rhs) noexcept;
» more...

Return the result of comparing two strings.

bool
operator!=(
    String const& lhs,
    StringLike const& rhs) noexcept;
» more...

Return the result of comparing two strings.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
bool
operator!=(
    String const& lhs,
    String const& rhs) noexcept;

Return Value

the result of comparing two strings.

Parameters

Name Description
lhs The left operand
rhs The right operand

Return the result of comparing two strings.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
bool
operator!=(
    String const& lhs,
    StringLike const& rhs) noexcept;

Return Value

the result of comparing two strings.

Parameters

Name Description
lhs The left operand
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Dom/Array.hpp>

Return the result of comparing two strings.

auto
operator<=>(
    String const& lhs,
    String const& rhs) noexcept;
» more...

Return the result of comparing two strings.

auto
operator<=>(
    String const& lhs,
    StringLike const& rhs) noexcept;
» more...

Three-way comparison operator

auto
operator<=>(
    Value const& lhs,
    S const& rhs) noexcept;
» more...

Three-way comparison operator

auto
operator<=>(
    S const& lhs,
    Value const& rhs) noexcept;
» more...

Compare two values for inequality.

std::strong_ordering
operator<=>(
    Value const& lhs,
    Value const& rhs) noexcept;
» more...

Compare two objects for precedence.

std::strong_ordering
operator<=>(
    Object const& a,
    Object const& b) noexcept;
» more...

Compare two arrays for precedence.

std::strong_ordering
operator<=>(
    Array const& lhs,
    Array const& rhs) noexcept;
» more...

Return the result of comparing two strings.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
auto
operator<=>(
    String const& lhs,
    String const& rhs) noexcept;

Return Value

the result of comparing two strings.

Parameters

Name Description
lhs The left operand
rhs The right operand

Return the result of comparing two strings.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
auto
operator<=>(
    String const& lhs,
    StringLike const& rhs) noexcept;

Return Value

the result of comparing two strings.

Parameters

Name Description
lhs The left operand
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
auto
operator<=>(
    Value const& lhs,
    S const& rhs) noexcept;

Return Value

The relative order of the objects

Parameters

Name Description
lhs The left operand
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
auto
operator<=>(
    S const& lhs,
    Value const& rhs) noexcept;

Return Value

The relative order of the objects

Parameters

Name Description
lhs The left operand
rhs The right operand

Compare two values for inequality.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
std::strong_ordering
operator<=>(
    Value const& lhs,
    Value const& rhs) noexcept;

Return Value

The relative order of the objects

Parameters

Name Description
lhs The left operand
rhs The right operand

Compare two objects for precedence.

Synopsis

Declared in <mrdocs/Dom/Object.hpp>
std::strong_ordering
operator<=>(
    Object const& a,
    Object const& b) noexcept;

Return Value

The relative order of the objects

Parameters

Name Description
a The left operand
b The right operand

Compare two arrays for precedence.

Synopsis

Declared in <mrdocs/Dom/Array.hpp>
std::strong_ordering
operator<=>(
    Array const& lhs,
    Array const& rhs) noexcept;

Return Value

The relative order of the objects

Parameters

Name Description
lhs The left operand
rhs The right operand

Determine if T can be converted to dom::Value.

Synopsis

Declared in <mrdocs/Dom/LazyObject.hpp>
template<
    class T,
    class Context>
concept HasLazyObjectMap = HasLazyObjectMapWithContext<T, Context> ||
    HasLazyObjectMapWithoutContext<T>;

Description

If T can be converted to dom::Value via a call to dom::ValueFrom, the static data member value is defined as true. Otherwise, value is defined as false.

Concept to determine if a type can be mapped to a dom::LazyObjectImpl with a user-provided conversion.

Synopsis

Declared in <mrdocs/Dom/LazyObject.hpp>
template<
    class T,
    class Context>
concept HasLazyObjectMapWithContext = requires(
    detail::ArchetypalIO& io,
    T const& t,
    Context const& ctx)
{
    { tag_invoke(LazyObjectMapTag{}, io, t, ctx) } -> std::same_as<void>;
};

Description

This concept determines if the user-provided conversion is defined as:

template <class IO> void tag_invoke( LazyObjectMapTag, IO&, T, Context const& );

Concept to determine if a type can be mapped to a dom::LazyObjectImpl with a user-provided conversion.

Synopsis

Declared in <mrdocs/Dom/LazyObject.hpp>
template<class T>
concept HasLazyObjectMapWithoutContext = requires(
    detail::ArchetypalIO& io,
    T const& t)
{
    { tag_invoke(LazyObjectMapTag{}, io, t) } -> std::same_as<void>;
};

Description

This concept determines if the user-provided conversion is defined as:

template <class IO> void tag_invoke( LazyObjectMapTag, IO&, T& );

This customization can be defined by any type that needs to be converted to/from a lazy dom::Object. For example:

template <class IO> void tag_invoke( LazyObjectMapTag, IO& io, MyStruct const& s) { io.map("name", s.name); io.map("size", s.size); io.map("age", s.age); }

Determine if T can be converted to dom::Value without a context.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
template<class T>
concept HasStandaloneValueFrom = HasValueFromWithoutContext<T> ||
    std::constructible_from<Value, T>;

Description

This concept determines if there is a user-provided conversion to dom::Value that does not require a context or if dom::Value has a constructor that can be used to convert T to a dom::Value.

Determine if T can be converted to dom::Value.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
template<
    class T,
    class Context>
concept HasValueFrom = HasValueFromWithContext<T, Context> ||
    HasValueFromWithoutContext<T> ||
    std::constructible_from<Value, T>;

Description

If T can be converted to dom::Value via a call to dom::ValueFrom, the static data member value is defined as true. Otherwise, value is defined as false.

See Also

dom::ValueFrom

Concept to determine if a type can be converted to a dom::Value with a user-provided conversion.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
template<
    class T,
    class Context>
concept HasValueFromWithContext = requires(
    Value& v,
    T const& t,
    Context const& ctx)
{
    tag_invoke(ValueFromTag{}, v, t, ctx);
};

Description

This concept determines if the user-provided conversion is defined as:

void tag_invoke( ValueFromTag, dom::Value&, T, Context const& );

Concept to determine if a type can be converted to a dom::Value with a user-provided conversion.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
template<class T>
concept HasValueFromWithoutContext = requires(
    Value& v,
    T const& t)
{
    tag_invoke(ValueFromTag{}, v, t);
};

Description

This concept determines if the user-provided conversion is defined as:

void tag_invoke( ValueFromTag, dom::Value&, T );

Satisfied if StringTy is convertible to String but not a String.

Synopsis

Declared in <mrdocs/Dom/String.hpp>
template<class StringTy>
concept StringLikeTy = ! std::is_same_v<StringTy, String> &&
    std::convertible_to<StringTy, std::string_view>;

Concept selecting callables convertible to dom::Value.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<class F>
concept function_traits_convertible_to_value = has_function_traits<F> &&
    has_function_traits_for_default_function_impl<F>;

Concept requiring all arguments be convertible to dom::Value.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<typename F>
concept has_function_args_for_default_function_impl = (std::tuple_size_v<typename function_traits<F>::args_type> == 0 ||
        []<std::size_t... I>(std::index_sequence<I...>) {
        return
            (std::convertible_to<
                std::tuple_element_t<
                    I, typename function_traits<F>::args_type>,
                Value> && ...);
        }(std::make_index_sequence<std::tuple_size_v<typename function_traits<F>::args_type>>()));

Concept true when function_traits is defined for F.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<typename F>
concept has_function_traits = requires {
    typename function_traits<F>::return_type;
    typename function_traits<F>::args_type;
};

Concept combining argument and return constraints for default wrapper.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<typename F>
concept has_function_traits_for_default_function_impl = has_invoke_result_for_default_function_impl<F> &&
    has_function_args_for_default_function_impl<F>;

Concept true when F returns Expected<dom::Value> or Expected<void>.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<typename F>
concept has_invoke_expected_result_convertible_to_dom_value = detail::isExpected<typename function_traits<F>::return_type> &&
    (std::convertible_to<typename function_traits<F>::return_type::value_type, Value> ||
     std::same_as<typename function_traits<F>::return_type::value_type, void>);

Concept true when F returns a dom::Value or void.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<typename F>
concept has_invoke_result_convertible_to_dom_value = std::convertible_to<typename function_traits<F>::return_type, Value> ||
    std::same_as<typename function_traits<F>::return_type, void>;

Concept enabling default function wrapper for supported return types.

Synopsis

Declared in <mrdocs/Dom/Function.hpp>
template<typename F>
concept has_invoke_result_for_default_function_impl = has_invoke_result_convertible_to_dom_value<F> ||
    has_invoke_expected_result_convertible_to_dom_value<F>;

Filesystem helpers (join, temp, canonicalize) used throughout MrDocs.

Description

The files namespace centralizes cross-platform path manipulation so CLI, generators, and tests can share the same normalization and staging logic.

Enums

NameDescription
FileType The type of a file.

Functions

NameDescription
appendPath appendPath overloads
createDirectory Create a directory.
exists Determine if a path exists
getFileName Return the filename part of the path.
getFileText Return the contents of a file as a string.
getFileType Return the file type or an error
getParentDir Return the parent directory.
getSourceFilename Return the relevant suffix of a source file path.
isAbsolute Return true if pathName is absolute.
isDirectory Determine if a path is a directory.
isDirsy Return true if pathName ends in a separator.
isLexicalDirectory Determine lexically if a path is a directory.
isPosixStyle Check if the path is posix style.
makeAbsolute Return an absolute path from a possibly relative path.
makeDirsy Append a trailing native separator if not already present.
makePosixStyle Convert all backward slashes to forward slashes.
normalizeDir Return a normalized directory.
normalizePath Return a normalized path.
requireAbsolute Return an error if pathName is not absolute.
requireDirectory Return an error if the path is not a directory.
startsWith Checks if the given path starts with the specified prefix.
withExtension Return the filename with a new or different extension.

The type of a file.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
enum class FileType : int;

Members

NameDescription
not_found The file does not exist
regular The path represents a regular file
directory The file is a directory
other The file is something else

Non-Member Functions

Name Description
getFileTypeReturn the file type or an error

appendPath overloads

Synopses

Declared in <mrdocs/Support/Path.hpp>

Append a component to a base path using the native separator.

std::string
appendPath(
    std::string_view basePath,
    std::string_view name);
» more...

Append two components to a base path using the native separator.

std::string
appendPath(
    std::string_view basePath,
    std::string_view name1,
    std::string_view name2);
» more...

Append three components to a base path using the native separator.

std::string
appendPath(
    std::string_view basePath,
    std::string_view name1,
    std::string_view name2,
    std::string_view name3);
» more...

Append four components to a base path using the native separator.

std::string
appendPath(
    std::string_view basePath,
    std::string_view name1,
    std::string_view name2,
    std::string_view name3,
    std::string_view name4);
» more...

Return Value

Combined path string.

Parameters

Name Description
basePath Base path.
name Component to append.
name1 First component to append.
name2 Second component to append.
name3 Third component to append.
name4 Fourth component to append.

Append a component to a base path using the native separator.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
std::string
appendPath(
    std::string_view basePath,
    std::string_view name);

Return Value

Combined path string.

Parameters

Name Description
basePath Base path.
name Component to append.

Append two components to a base path using the native separator.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
std::string
appendPath(
    std::string_view basePath,
    std::string_view name1,
    std::string_view name2);

Return Value

Combined path string.

Parameters

Name Description
basePath Base path.
name1 First component to append.
name2 Second component to append.

Append three components to a base path using the native separator.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
std::string
appendPath(
    std::string_view basePath,
    std::string_view name1,
    std::string_view name2,
    std::string_view name3);

Return Value

Combined path string.

Parameters

Name Description
basePath Base path.
name1 First component to append.
name2 Second component to append.
name3 Third component to append.

Append four components to a base path using the native separator.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
std::string
appendPath(
    std::string_view basePath,
    std::string_view name1,
    std::string_view name2,
    std::string_view name3,
    std::string_view name4);

Return Value

Combined path string.

Parameters

Name Description
basePath Base path.
name1 First component to append.
name2 Second component to append.
name3 Third component to append.
name4 Fourth component to append.

Create a directory.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
Expected<void>
createDirectory(std::string_view pathName);

Description

Any missing parent directories will also be created.

Return Value

A container holding an error or a value.

Parameters

Name Description
pathName The absolute or relative path to create.

Determine if a path exists

Synopsis

Declared in <mrdocs/Support/Path.hpp>
bool
exists(std::string_view pathName);

Return Value

true if the path exists, false otherwise.

Parameters

Name Description
pathName The absolute or relative path

Return the filename part of the path.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
std::string_view
getFileName(std::string_view pathName);

Return Value

The filename part of the path, or the empty string if there is none.

Parameters

Name Description
pathName The absolute or relative path to the directory or file.

Return the contents of a file as a string.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
Expected<std::string>
getFileText(std::string_view pathName);

Return Value

The contents of the file, or an error if any occurred.

Parameters

Name Description
pathName The absolute or relative path to the file.

Return the file type or an error

Synopsis

Declared in <mrdocs/Support/Path.hpp>
Expected<FileType>
getFileType(std::string_view pathName);

Return Value

the file type or an error

Parameters

Name Description
pathName The absolute or relative path to the file.

Return the parent directory.

Synopses

Declared in <mrdocs/Support/Path.hpp>

Return the parent directory.

std::string
getParentDir(std::string_view pathName);
» more...

Return the parent directory.

std::string
getParentDir(
    std::string_view pathName,
    unsigned int levels);
» more...

Return Value

The parent directory, or the empty string if there is none.

Parameters

Name Description
pathName The absolute or relative path to the directory or file.
levels The number of levels to go up. If this is zero, the original path is returned. If this is greater than the number of levels in the path, the empty string is returned.

Return the parent directory.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
std::string
getParentDir(std::string_view pathName);

Description

If the parent directory is defined, the returned path will always have a trailing separator.

Return Value

The parent directory, or the empty string if there is none.

Parameters

Name Description
pathName The absolute or relative path to the directory or file.

Return the parent directory.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
std::string
getParentDir(
    std::string_view pathName,
    unsigned int levels);

Description

If the parent directory is defined, the returned path will always have a trailing separator.

Return Value

The parent directory, or the empty string if there is none.

Parameters

Name Description
pathName The absolute or relative path to the directory or file.
levels The number of levels to go up. If this is zero, the original path is returned. If this is greater than the number of levels in the path, the empty string is returned.

Return the relevant suffix of a source file path.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
std::string_view
getSourceFilename(std::string_view pathName);

Return Value

The suffix, including the leading dot, or the empty string if there is no suffix.

Parameters

Name Description
pathName The absolute or relative path to the file.

Return true if pathName is absolute.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
bool
isAbsolute(std::string_view pathName) noexcept;

Return Value

true if the path is absolute, false otherwise.

Parameters

Name Description
pathName The absolute or relative path to the directory or file.

Determine if a path is a directory.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
bool
isDirectory(std::string_view pathName);

Return Value

true if the path exists and is a directory, false otherwise.

Parameters

Name Description
pathName The absolute or relative path

Return true if pathName ends in a separator.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
bool
isDirsy(std::string_view pathName) noexcept;

Return Value

true if the path ends in a separator, false otherwise.

Parameters

Name Description
pathName The absolute or relative path to the directory or file.

Determine lexically if a path is a directory.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
bool
isLexicalDirectory(std::string_view pathName);

Description

This function determines if a path is a directory.

If the path does not exist, the function determines lexically if the path represents a directory. In this case, the function returns true if the last path segment contains a period, otherwise false.

Return Value

true if the path exists and is a directory, or if the path does not exist and the last path segment does not contain a period. false otherwise.

Parameters

Name Description
pathName The absolute or relative path

Check if the path is posix style.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
bool
isPosixStyle(std::string_view pathName);

Return Value

true if the path uses only forward slashes as path separators, false otherwise.

Parameters

Name Description
pathName The absolute or relative path to the directory or file.

Return an absolute path from a possibly relative path.

Synopses

Declared in <mrdocs/Support/Path.hpp>

Return an absolute path from a possibly relative path.

Expected<std::string>
makeAbsolute(std::string_view pathName);
» more...

Return an absolute path from a possibly relative path.

std::string
makeAbsolute(
    std::string_view pathName,
    std::string_view workingDir);
» more...

Return Value

Parameters

Name Description
pathName The absolute or relative path to the directory or file.
workingDir The working directory to resolve relative paths against.

Return an absolute path from a possibly relative path.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
Expected<std::string>
makeAbsolute(std::string_view pathName);

Description

Relative paths are resolved against the current working directory of the process.

Return Value

The absolute path, or an error if any occurred.

Parameters

Name Description
pathName The absolute or relative path to the directory or file.

Return an absolute path from a possibly relative path.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
std::string
makeAbsolute(
    std::string_view pathName,
    std::string_view workingDir);

Return Value

The absolute path, or an error if any occurred.

Parameters

Name Description
pathName The absolute or relative path to the directory or file.
workingDir The working directory to resolve relative paths against.

Append a trailing native separator if not already present.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
std::string
makeDirsy(std::string_view pathName);

Return Value

A copy of the path with a trailing separator if not already present.

Parameters

Name Description
pathName The absolute or relative path to the directory or file.

Convert all backward slashes to forward slashes.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
std::string
makePosixStyle(std::string_view pathName);

Return Value

A copy of the path with all backslashes replaced with forward slashes.

Parameters

Name Description
pathName The absolute or relative path to the directory or file.

Return a normalized directory.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
std::string
normalizeDir(std::string_view pathName);

Description

This function returns a new directory path based on applying the changes defined by normalizePath and makeDirsy.

Return Value

The normalized path.

Parameters

Name Description
pathName The relative or absolute path.

Return a normalized path.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
std::string
normalizePath(std::string_view pathName);

Description

This function returns a new path based on applying the following changes to the passed path:

Return Value

The normalized path.

Parameters

Name Description
pathName The relative or absolute path.

Return an error if pathName is not absolute.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
Expected<void>
requireAbsolute(std::string_view pathName);

Return Value

An error if the path is not absolute.

Parameters

Name Description
pathName The absolute or relative path to the directory or file.

Return an error if the path is not a directory.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
Expected<void>
requireDirectory(std::string_view pathName);

Return Value

An error if the path does not exist or is not a directory.

Parameters

Name Description
pathName The absolute or relative path

Checks if the given path starts with the specified prefix.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
bool
startsWith(
    std::string_view pathName,
    std::string_view prefix);

Description

This function compares the beginning of the pathName with the prefix. It returns true if pathName starts with prefix. The comparison is case-sensitive.

Unlike a direct string comparison, this function also accepts differences in the slashes used to separate paths. Therefore, it returns true even when the slashes used in pathName and prefix are not the same. The function accepts both forward slashes ("/") and backslashes ("").

Return Value

A boolean value. Returns true if pathName starts with prefix, false otherwise.

Parameters

Name Description
pathName A string view representing the path to be checked.
prefix A string view representing the prefix to be checked against the path.

Return the filename with a new or different extension.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
std::string
withExtension(
    std::string_view fileName,
    std::string_view ext);

Return Value

the filename with a new or different extension.

Parameters

Name Description
fileName The absolute or relative path to the directory or file.
ext The extension to use, without a leading dot. If this is empty and the path contains an extension, then the extension is removed.

Handlebars helper registry for templates.

Description

Everything under helpers mirrors the runtime helper registry shipped with our bundled Handlebars engine so templates can call the same helpers in both Node-based dev mode and the embedded C++ rendering pipeline.

Functions

NameDescription
and_fn "and" helper function
detag_fn "detag" helper function
eq_fn "eq" helper function
increment_fn "increment" helper function
ne_fn "ne" helper function
not_fn "not" helper function
or_fn "or" helper function
registerAntoraHelpers Register all the Antora helpers into a Handlebars instance
registerBuiltinHelpers Register all the built-in helpers into a Handlebars instance
registerConstructorHelpers Register contructor helpers into a Handlebars instance
registerContainerHelpers Register helpers to manipulate composite data types
registerLogicalHelpers Register logical helpers into a Handlebars instance
registerMathHelpers Register math helpers into a Handlebars instance
registerStringHelpers Register string helpers into a Handlebars instance
registerTypeHelpers Register type helpers into a Handlebars instance
relativize_fn "relativize" helper function
select_fn "select" helper function
year_fn "year" helper function

"and" helper function

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
bool
and_fn(dom::Array const& args);

Description

The "and" helper returns true if all of the values are truthy.

Return Value

True if all of the values are truthy, false otherwise.

Parameters

Name Description
args The values to test

"detag" helper function

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
dom::Value
detag_fn(dom::Value html);

Description

The "detag" helper applies the regex expression "<[]+>" to the input to remove all HTML tags.

Return Value

A variant container for any kind of Dom value.

Parameters

Name Description
html A variant container for any kind of Dom value.

"eq" helper function

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
bool
eq_fn(dom::Array const& args);

Description

The "eq" helper returns true if all of the values are equal.

Return Value

True if all of the values are equal, false otherwise.

Parameters

Name Description
args The values to compare

"increment" helper function

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
dom::Value
increment_fn(dom::Value const& value);

Description

The "increment" helper adds 1 to the value if it's an integer and converts booleans to true. Other values are returned as-is.

Return Value

A variant container for any kind of Dom value.

Parameters

Name Description
value A variant container for any kind of Dom value.

"ne" helper function

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
bool
ne_fn(dom::Array const& args);

Description

The "ne" helper returns true if any of the values are not equal.

Return Value

True if any of the values are not equal, false otherwise.

Parameters

Name Description
args The values to compare

"not" helper function

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
bool
not_fn(dom::Array const& arg);

Description

The "not" helper returns true if not all of the values are truthy.

Return Value

True if not all of the values are truthy, false otherwise.

Parameters

Name Description
arg An array of values

"or" helper function

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
dom::Value
or_fn(dom::Array const& args);

Description

The "or" helper returns true if any of the values are truthy.

Return Value

A variant container for any kind of Dom value.

Parameters

Name Description
args An array of values

Register all the Antora helpers into a Handlebars instance

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
void
registerAntoraHelpers(Handlebars& hbs);

Description

This function registers all the helpers that are part of the default Antora UI.

Individual Antora helpers can also be registered with the public *_fn functions in this namespace.

Since the Antora helpers are not mandatory and include many functions not applicable to all applications, this allows the user to register only some of the Antora helpers.

Parameters

Name Description
hbs The Handlebars instance to register the helpers into

See Also

https://gitlab.com/antora/antora-ui-default/-/tree/master/src/helpers

Register all the built-in helpers into a Handlebars instance

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
void
registerBuiltinHelpers(Handlebars& hbs);

Description

Individual built-in helpers can also be registered with the public *_fn functions in this namespace.

This allows the user to override only some of the built-in helpers. In particular, this is important for mandatory helpers, such as blockHelperMissing and helperMissing.

Parameters

Name Description
hbs The Handlebars instance to register the helpers into

See Also

https://github.com/handlebars-lang/handlebars.js/tree/master/lib/handlebars/helpers

https://handlebarsjs.com/guide/builtin-helpers.html

Register contructor helpers into a Handlebars instance

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
void
registerConstructorHelpers(Handlebars& hbs);

Description

This function registers a number of common helpers that allows the user to create objects of specific types directly from literals in the template.

Parameters

Name Description
hbs The Handlebars instance to register the helpers into

Register helpers to manipulate composite data types

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
void
registerContainerHelpers(Handlebars& hbs);

Description

This function registers a number of common helpers that operate on Objects and Arrays. Object and Array helpers are particularly useful because most applications will need to manipulate Objects and Arrays to extract information from them, such as object keys or specific Array items known ahead of time.

The helper names are inspired by the default functions provided in multiple programming languages for dictionaries, objects, and arrays, such as Python and JavaScript, for their default types.

The individual helpers are defined as an implementation detail and cannot be registered individually.

Parameters

Name Description
hbs The Handlebars instance to register the helpers into

Register logical helpers into a Handlebars instance

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
void
registerLogicalHelpers(Handlebars& hbs);

Description

This function registers a number of common helpers that perform logical operations.

Parameters

Name Description
hbs The Handlebars instance to register the helpers into

Register math helpers into a Handlebars instance

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
void
registerMathHelpers(Handlebars& hbs);

Description

This function registers a number of common helpers that perform mathemathical operations.

Parameters

Name Description
hbs The Handlebars instance to register the helpers into

Register string helpers into a Handlebars instance

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
void
registerStringHelpers(Handlebars& hbs);

Description

This function registers a number of common helpers that operate on strings. String helpers are particularly useful because most applications will need to manipulate strings for presentation purposes.

All helpers can be used as either block helpers or inline helpers. When used as a block helper, the block content is used as the first argument to the helper function. When used as an inline helper, the first argument is the value of the helper.

The helper names are inspired by the default string functions provided in multiple programming languages, such as Python and JavaScript, for their default string types.

The individual helpers are defined as an implementation detail and cannot be registered individually.

Parameters

Name Description
hbs The Handlebars instance to register the helpers into

Register type helpers into a Handlebars instance

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
void
registerTypeHelpers(Handlebars& hbs);

Description

This function registers a number of common helpers that operate on types, such as identity, type checking, and type conversion.

Parameters

Name Description
hbs The Handlebars instance to register the helpers into

"relativize" helper function

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
dom::Value
relativize_fn(
    dom::Value to,
    dom::Value from,
    dom::Value context);

Description

The "relativize" helper makes the first path relative to the second path.

Return Value

A variant container for any kind of Dom value.

Parameters

Name Description
to A variant container for any kind of Dom value.
from A variant container for any kind of Dom value.
context A variant container for any kind of Dom value.

"select" helper function

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
dom::Value
select_fn(
    dom::Value const& condition,
    dom::Value const& result_true,
    dom::Value const& result_false);

Description

The "select" helper returns the second argument if the first argument is truthy, and the third argument otherwise.

Return Value

A variant container for any kind of Dom value.

Parameters

Name Description
condition A variant container for any kind of Dom value.
result_true A variant container for any kind of Dom value.
result_false A variant container for any kind of Dom value.

"year" helper function

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
int
year_fn();

Description

The "year" helper returns the current year as an integer.

Return Value

The current year as an integer.

JavaScript interop helpers for the embedded runtime.

Description

These functions abstract over the embedded JavaScript engine so that scripts and helpers can be bound, invoked, and marshalled without leaking engine-specific types into the rest of the codebase.

## Implementation Notes (for Python/Lua integrations)

The current implementation uses JerryScript with the following design choices:

### Context Isolation Each Context owns an independent JerryScript interpreter with its own 512KB heap. This allows multiple threads to execute JavaScript in parallel by giving each thread its own Context. The JERRY_EXTERNAL_CONTEXT build flag enables this multi-context support.

### Scope and Value Lifetime JerryScript uses heap-based reference counting (not a stack like Lua/Duktape). To provide deterministic cleanup similar to stack-based engines:

- Scope tracks values created within it and releases one reference to each when the scope ends. Values that were copied elsewhere survive; values that remained local are freed. - Value holds its own reference via jerry_value_copy/jerry_value_free. Values can safely outlive their creating Scope if copied.

### Integer Limitations JerryScript only guarantees 32-bit integer precision. Values outside the int32 range (approximately +/-2 billion) are converted to strings when passed to JavaScript to avoid wraparound bugs. When reading values back, integers that fit in int64 are returned as integers; others remain as doubles.

### DOM to JS Conversion Strategy - Objects: Use lazy Proxy wrappers to avoid infinite recursion from circular references (e.g., Handlebars symbol contexts that reference parent symbols). Properties are converted on-demand when accessed. - Arrays: Converted eagerly (snapshot semantics) because they rarely contain circular references. This means JS mutations don't affect the original C++ array and vice versa. - Functions: Wrapped bidirectionally so JS can call C++ functions and C++ can invoke JS functions through dom::Function.

### Thread Safety Each Context has its own mutex serializing operations on that context. Different Contexts can execute in parallel on different threads. Values hold a shared_ptr to their Context, keeping it alive and using the mutex for all JerryScript operations.

### Port Functions JerryScript requires "port functions" for platform-specific operations. We use the default jerry-port library (JERRY_PORT=ON) for most functions (logging, time, fatal errors, etc.), but provide custom implementations of the context management functions: - jerry_port_context_alloc: Allocates context + heap memory - jerry_port_context_free: Frees context memory - jerry_port_context_get: Returns current thread's active context

The default jerry-port context functions use a static global pointer, limiting all threads to a single shared context. When building with JERRY_EXTERNAL_CONTEXT=ON, these functions are excluded from jerry-port (see third-party/patches/jerryscript/CMakeLists.txt), and mrdocs provides TLS-based implementations that allow each thread to have its own active context, enabling parallel JavaScript execution.

Types

NameDescription
Array Lightweight handle to a JavaScript array.
Boolean Boolean wrapper for JavaScript values.
Context An isolated JavaScript interpreter instance.
Object Object wrapper for JavaScript values.
Scope A JavaScript scope for value lifetime management.
String String wrapper for JavaScript values.
Value An ECMAScript value.

Enums

NameDescription
Type Types of values.

Functions

NameDescription
operator&& Return the first Value that is not truthy, or the last one.
operator|| Return the first Value that is truthy, or the last one.
registerHelper Register a JavaScript helper function
swap Swap two values.
toString Return value as a string.
operator== Compare two values for equality.
operator!= Inequality operators
operator<=> Compare two values for inequality.

Lightweight handle to a JavaScript array.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
class Array;

Boolean wrapper for JavaScript values.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
class Boolean;

An isolated JavaScript interpreter instance.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
class Context;

Description

Each Context owns an independent JerryScript interpreter with its own 512KB heap. Multiple Contexts can exist simultaneously, allowing parallel JavaScript execution across threads (each thread should use its own Context).

To execute scripts or create values, construct a Scope from the Context. The Scope activates the Context on the current thread and provides methods for script evaluation and value creation.

Contexts can be copied (via copy constructor); copies share the same underlying interpreter and heap. This is useful for passing context references without transferring ownership.

Types

NameDescription
Impl Shared runtime data for a JavaScript context.

Member Functions

NameDescription
Context [constructor]Constructors
~Context [destructor]Destructor.
operator= [deleted]Copy assignment (deleted).

Friends

|===
Name Description
Scope A JavaScript scope for value lifetime management.
Value An ECMAScript value.

See Also

Scope

Shared runtime data for a JavaScript context.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
struct Impl;

Constructors

Synopses

Declared in <mrdocs/Support/JavaScript.hpp>

Constructor.

Context();
» more...

Copy constructor.

Context(Context const& other) noexcept;
» more...

Constructor.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Context();

Description

Creates a new JavaScript interpreter with its own 512KB heap. The interpreter is initialized but inactive until a Scope is created.

Copy constructor.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Context(Context const& other) noexcept;

Description

Creates a new Context that shares the same underlying interpreter. Both Contexts reference the same heap and global object. This is useful for passing Context references without transferring ownership.

NOTE

Operations on the shared interpreter are serialized by a mutex, so only one thread can execute at a time per interpreter.

Parameters

Name Description
other The object to copy construct from

Destructor.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
~Context();

Description

Releases this reference to the interpreter. The underlying JerryScript context is destroyed when the last Context (or Value) referencing it is destroyed.

Copy assignment (deleted).

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Context&
operator=(Context const& other) = delete;

Description

Copy assignment is deleted to prevent accidental interpreter sharing. Use the copy constructor explicitly if sharing is intended.

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Object wrapper for JavaScript values.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
class Object;

A JavaScript scope for value lifetime management.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
class Scope;

Description

Scope serves two purposes:

1. Value batch tracking: Tracks JavaScript values created within the scope and releases one reference to each when the scope ends. Values that were copied elsewhere (e.g., returned from functions, stored in containers) survive because they hold their own references. Values that remained local to the scope are freed.

2. Thread safety: Each Scope operation briefly locks the Context's mutex and activates the context (sets TLS). This allows multiple threads to share a Context while serializing access to the interpreter. Values obtained from a Scope can be used from other threads; they will acquire the lock as needed.

This provides deterministic cleanup similar to stack-based engines (Lua, Duktape) while working with JerryScript's reference-counted heap.

NOTE

Multiple Scopes can exist for the same Context (even in different threads), but operations are serialized by the Context's mutex.

Member Functions

NameDescription
Scope [constructor]Constructor.
~Scope [destructor]Destructor.
compile_function Compile a script and push results to stack.
compile_script Compile a script and push results to stack.
eval Compile and run a expression.
getGlobal Return a global object if it exists.
getGlobalObject Return the global object.
pushArray Push a new array to the stack
pushBoolean Push a boolean to the stack
pushDouble Push a double to the stack
pushInteger Push an integer to the stack
pushObject Push a new object to the stack
pushString Push a string to the stack
script Compile and run a script.
setGlobal Set a global object.

Constructor.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Scope(Context const& ctx) noexcept;

Description

Records the context for this scope. The context's mutex is NOT held for the lifetime of the Scope; instead, each operation locks briefly.

Parameters

Name Description
ctx The context to use.

Destructor.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
~Scope();

Description

Releases one reference to each value created within this scope. Values whose reference count drops to zero are freed; values that were copied elsewhere survive.

Compile a script and push results to stack.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Expected<Value>
compile_function(std::string_view jsCode);

Description

Coerces provided source into a callable function. First parenthesizes the source to force expression parsing; if that fails, executes the script and returns the first declared function name. Ambiguous sources may run side effects twice (expression attempt + fallback) matching existing behavior.

Return Value

A function object that can be called. The function object has the number of arguments defined in the code. If the code does not define a function, an error is returned.

Parameters

Name Description
jsCode The JavaScript code to compile.

Compile a script and push results to stack.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Expected<Value>
compile_script(std::string_view jsCode);

Description

Wraps arbitrary script text in an IIFE that calls eval when invoked, returning the last expression result. Function declarations are rejected to avoid silent re-declarations. Side effects in the script run at invocation time.

Return Value

A function object that can be called. The function object has zero arguments.

Parameters

Name Description
jsCode The JavaScript code to compile.

Compile and run a expression.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Expected<Value>
eval(std::string_view jsCode);

Description

This function compiles and executes the specified JavaScript code. The script can be used to execute commands or define global variables in the parent context.

It evaluates the ECMAScript source code and converts any internal errors to Error.

Return Value

A container holding an error or a value.

Parameters

Name Description
jsCode The JavaScript code to execute.

Return a global object if it exists.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Expected<Value>
getGlobal(std::string_view name);

Description

This function returns a Value that represents a global variable in the parent context.

If the variable does not exist, an error is returned.

Return Value

a global object if it exists.

Parameters

Name Description
name The name of the global variable.

Return the global object.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value
getGlobalObject();

Description

This function returns a Value that represents the global object in the parent context.

The global object is the root of the ECMAScript object hierarchy and is the value returned by the global this expression.

If the global object does not exist, an error is returned.

Return Value

the global object.

Push a new array to the stack

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value
pushArray();

Return Value

An ECMAScript value.

Push a boolean to the stack

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value
pushBoolean(bool value);

Return Value

A Value representing the boolean.

Parameters

Name Description
value The boolean value to push.

Push a double to the stack

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value
pushDouble(double value);

Return Value

A Value representing the double.

Parameters

Name Description
value The double value to push.

Push an integer to the stack

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value
pushInteger(int64_t value);

Return Value

A Value representing the integer.

Parameters

Name Description
value The integer value to push.

Push a new object to the stack

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value
pushObject();

Return Value

An ECMAScript value.

Push a string to the stack

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value
pushString(std::string_view value);

Return Value

A Value representing the string.

Parameters

Name Description
value The string value to push. The string is copied to the internal heap.

Compile and run a script.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Expected<void>
script(std::string_view jsCode);

Description

This function compiles and executes the specified JavaScript code. The script can be used to execute commands or define global variables in the parent context.

ES module import/export is not enabled; scripts must be self-contained or rely on globals.

It evaluates the ECMAScript source code and converts any internal errors to Error.

Return Value

A container holding an error or a value.

Parameters

Name Description
jsCode The JavaScript code to execute.

Set a global object.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
void
setGlobal(
    std::string_view name,
    dom::Value const& value);

Parameters

Name Description
name The name of the global variable.
value The value to set.

String wrapper for JavaScript values.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
class String;

An ECMAScript value.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
class Value;

Description

This class represents a value in the JavaScript interpreter.

A value is a variable that is defined in a Scope. It can be a primitive type or an object.

A Value not associated with a Scope is undefined.

The user is responsible for ensuring that the lifetime of a Value does not exceed the lifetime of the Scope that created it.

A value can be converted to a DOM value using the getDom function.

Generic JavaScript value wrapper.

An ECMAScript value.

This class represents a value in the JavaScript interpreter.

A value is a variable that is defined in a Scope. It can be a primitive type or an object.

A Value not associated with a Scope is undefined.

The user is responsible for ensuring that the lifetime of a Value does not exceed the lifetime of the Scope that created it.

A value can be converted to a DOM value using the getDom function.

Member Functions

NameDescription
Value [constructor]Constructor
~Value [destructor]Destructor
operator= Assignment operators
apply apply overloads
call Invoke a function.
empty Return if an Array or Object is empty.
erase Remove a property from an object if it exists.
exists Return true if a key exists.
get get overloads
getArray Return the underlying array.
getBool Return the underlying boolean value.
getDom Return the value as a dom::Value
getDouble Return the underlying double value.
getFunction Return the underlying array.
getInteger Return the underlying integer value.
getObject Return the underlying object.
getString Return the underlying string
isArray Check if the value is an array.
isBoolean Check if the value is a boolean.
isDouble Check if the value is a floating point number.
isFunction Check if the value is a function.
isInteger Check if the value is an integer number.
isNull Check if the value is null.
isNumber Check if the value is a number.
isObject Check if the value is an object.
isString Check if the value is a string.
isTruthy Determine if a value is truthy
isUndefined Check if the value is undefined.
lookup Lookup a sequence of keys.
operator() Invoke a function.
operator[] Subscript operators
set Set or replace the value for a given key.
size Return if an Array or Object is empty.
swap Swap two values.
type Return the type of the value.
operator std::string Return the string.
operator bool Determine if a value is truthy

Protected Member Functions

NameDescription
Value [constructor]Wrap an existing engine value without transferring ownership.

Protected Data Members

NameDescription
impl_ Shared lifetime owner for the underlying JavaScript runtime.
val_ Opaque engine value handle stored as an integer (engine-specific inside the implementation).

Friends

|===
Name Description
toString Return value as a string.
operator&&
operator&&
operator&& Return the first Value that is not truthy, or the last one.
operator||
operator||
operator|| Return the first Value that is truthy, or the last one.
operator<=> Compare two values for inequality.
operator!=
operator!=
operator!= Inequality operator
operator==
operator==
operator== Compare two values for equality.
swap Swap two values.
Scope A JavaScript scope for value lifetime management.

See Also

Scope

Type

Constructor

Synopses

Declared in <mrdocs/Support/JavaScript.hpp>

Constructor

Value() noexcept;
» more...

Constructor

Value(Value const& other);
» more...

Constructor

Value(Value&& other) noexcept;
» more...

Constructor

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value() noexcept;

Description

Construct a value that is not associated with a Scope.

The value is undefined.

Constructor

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value(Value const& other);

Description

Duplicates the underlying engine handle held by value and shares the same runtime state.

Parameters

Name Description
other The object to copy construct from

Constructor

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value(Value&& other) noexcept;

Description

The function associates the existing value with this object.

Parameters

Name Description
other The object to move construct from

Destructor

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
~Value();

Description

Releases the underlying engine handle; lifetime is tied to the shared Context::Impl, not to a stack frame.

Assignment operators

Synopses

Declared in <mrdocs/Support/JavaScript.hpp>

Copy assignment.

Value&
operator=(Value const& other);
» more...

Move assignment.

Value&
operator=(Value&& other) noexcept;
» more...

Copy assignment.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value&
operator=(Value const& other);

Description

Duplicates the underlying engine handle held by value and shares the same runtime state.

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Move assignment.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value&
operator=(Value&& other) noexcept;

Description

The function associates the existing value with this object.

Return Value

Reference to the current object

Parameters

Name Description
other The object to move assign from

apply overloads

Synopses

Declared in <mrdocs/Support/JavaScript.hpp>

Invoke a function with an initializer_list of arguments.

Expected<Value>
apply(std::initializer_list<dom::Value> args) const;
» more...

Invoke a function with a span of arguments.

Expected<Value>
apply(std::span<dom::Value const> args) const;
» more...

Return Value

The return value of the function.

Parameters

Name Description
args Arguments to pass to the JavaScript function.

Invoke a function with an initializer_list of arguments.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Expected<Value>
apply(std::initializer_list<dom::Value> args) const;

Return Value

The return value of the function.

Parameters

Name Description
args Arguments to pass to the JavaScript function.

Invoke a function with a span of arguments.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Expected<Value>
apply(std::span<dom::Value const> args) const;

Return Value

The return value of the function.

Parameters

Name Description
args Arguments to pass to the JavaScript function.

Invoke a function.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
template<std::convertible_to<dom::Value>... Args>
Expected<Value>
call(Args&&... args) const;

Return Value

The return value of the method.

Parameters

Name Description
args Zero or more arguments to pass to the method.

Return if an Array or Object is empty.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
bool
empty() const;

Return Value

if an Array or Object is empty.

Remove a property from an object if it exists.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
void
erase(std::string_view key) const;

Parameters

Name Description
key Property name to erase from the current object.

Return true if a key exists.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
bool
exists(std::string_view key) const;

Return Value

true if the key exists, false otherwise.

Parameters

Name Description
key The key to check for.

get overloads

Synopses

Declared in <mrdocs/Support/JavaScript.hpp>

Return the element at a given index.

Value
get(std::size_t i) const;
» more...

Return the element for a given key.

Value
get(std::string_view key) const;
» more...

Return the element at a given index or key.

Value
get(dom::Value const& i) const;
» more...

Return the element for a given key.

template<std::convertible_to<std::string_view> S>
Value
get(S const& key) const;
» more...

Return Value

Parameters

Name Description
i The index of the element to return.
key The key to look up.

Return the element at a given index.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value
get(std::size_t i) const;

Return Value

The element at the given index, or a Value of type Kind::Undefined if the index is out of range.

Parameters

Name Description
i The index of the element to return.

Return the element for a given key.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value
get(std::string_view key) const;

Description

If the Value is not an object, or the key is not found, a Value of type Kind::Undefined is returned.

Return Value

The element for the given key, or a Value of type Kind::Undefined if the key is not found.

Parameters

Name Description
key The key to look up.

Return the element at a given index or key.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value
get(dom::Value const& i) const;

Return Value

the element at a given index or key.

Parameters

Name Description
i A variant container for any kind of Dom value.

Return the element for a given key.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
template<std::convertible_to<std::string_view> S>
Value
get(S const& key) const;

Description

If the Value is not an object, or the key is not found, a Value of type Kind::Undefined is returned.

Return Value

The element for the given key, or a Value of type Kind::Undefined if the key is not found.

Parameters

Name Description
key The key to look up.

Return the underlying array.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
dom::Array
getArray() const noexcept;

Description

NOTE

Behaviour is undefined if !isArray()

Return Value

the underlying array.

Return the underlying boolean value.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
bool
getBool() const noexcept;

Description

NOTE

Behaviour is undefined if !isBoolean()

Return Value

the underlying boolean value.

Return the value as a dom::Value

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
dom::Value
getDom() const;

Description

This function returns the value as a dom::Value.

If the value is a primitive type, it is converted to a DOM primitive.

If the value is an object, a type with reference semantics to access the underlying DOM object is returned.

Return Value

the value as a dom::Value

Return the underlying double value.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
double
getDouble() const noexcept;

Description

NOTE

Behaviour is undefined if !isNumber()

Return Value

the underlying double value.

Return the underlying array.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
dom::Function
getFunction() const noexcept;

Description

NOTE

Behaviour is undefined if !isFunction()

Return Value

the underlying array.

Return the underlying integer value.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
int64_t
getInteger() const noexcept;

Description

NOTE

Behaviour is undefined if !isNumber()

Return Value

the underlying integer value.

Return the underlying object.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
dom::Object
getObject() const noexcept;

Description

NOTE

Behaviour is undefined if !isObject()

Return Value

the underlying object.

Return the underlying string

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
std::string
getString() const;

Description

This function returns the value as a string.

This function performs no coercions. If the value is not a string, it is not converted to a string.

JerryScript allocates a new buffer for string extraction, so the returned value is an owning std::string rather than a view.

NOTE

Behaviour is undefined if !isString()

Return Value

the underlying string

Check if the value is an array.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
bool
isArray() const noexcept;

Return Value

true if the value is an array, false otherwise

Check if the value is a boolean.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
bool
isBoolean() const noexcept;

Return Value

true if the value is a boolean, false otherwise

Check if the value is a floating point number.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
bool
isDouble() const noexcept;

Return Value

true if the value is a number but not an integer, false otherwise

Check if the value is a function.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
bool
isFunction() const noexcept;

Return Value

true if the value is a function, false otherwise

Check if the value is an integer number.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
bool
isInteger() const noexcept;

Description

All numbers are internally represented by IEEE doubles, which are capable of representing all integers up to 53 bits accurately.

This function returns true if the value is a number with no precision loss when representing an integer.

When isNumber() is true, the function behaves as if evaluating the condition d == static_cast<double>(static_cast<int>(d)) where d is the result of toDouble().

Return Value

true if the value is a number with no fractional part, false otherwise

Check if the value is null.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
bool
isNull() const noexcept;

Return Value

true if the value is null, false otherwise

Check if the value is a number.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
bool
isNumber() const noexcept;

Description

In ECMA, the number type is an IEEE double, including +/- Infinity and NaN values.

Zero sign is also preserved.

An IEEE double can represent all integers up to 53 bits accurately.

The user should not rely on NaNs preserving their exact non-normalized form.

Return Value

true if the value is a number, false otherwise

Check if the value is an object.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
bool
isObject() const noexcept;

Description

Check if the value is an object but not an array or function.

While in ECMA anything with properties is an object, this function returns false for arrays and functions.

Properties are key-value pairs with a string key and an arbitrary value, including undefined.

Return Value

true if the value is an object, false otherwise

Check if the value is a string.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
bool
isString() const noexcept;

Return Value

true if the value is a string, false otherwise

Determine if a value is truthy

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
bool
isTruthy() const noexcept;

Description

A value is truthy if it is a boolean and is true, a number and not zero, or an non-empty string, array or object.

Return Value

true if the value is truthy, false otherwise

Check if the value is undefined.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
bool
isUndefined() const noexcept;

Return Value

true if the value is undefined, false otherwise

Lookup a sequence of keys.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value
lookup(std::string_view keys) const;

Description

This function is equivalent to calling get multiple times, once for each key in the sequence of dot-separated keys.

Return Value

The value at the end of the sequence, or a Value of type Kind::Undefined if any key is not found.

Parameters

Name Description
keys A sequence of keys separated by dots.

Invoke a function.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
template<class... Args>
Value
operator()(Args&&... args) const;

Return Value

The return value of the method.

Parameters

Name Description
args Zero or more arguments to pass to the method.

Subscript operators

Synopses

Declared in <mrdocs/Support/JavaScript.hpp>

Return the element for an array index.

Value
operator[](std::size_t index) const;
» more...

Return the element for a property name.

Value
operator[](std::string_view key) const;
» more...

Return Value

Parameters

Name Description
index Zero-based array index to fetch when the value is an array.
key Property name to fetch from the current object.

Return the element for an array index.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value
operator[](std::size_t index) const;

Return Value

The element for the given index, or undefined if out of bounds / not an array.

Parameters

Name Description
index Zero-based array index to fetch when the value is an array.

Return the element for a property name.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value
operator[](std::string_view key) const;

Return Value

The element for the given key, or undefined if missing / not an object.

Parameters

Name Description
key Property name to fetch from the current object.

Set or replace the value for a given key.

Synopses

Declared in <mrdocs/Support/JavaScript.hpp>

Set or replace the value for a given key.

void
set(
    std::string_view key,
    Value const& value) const;
» more...

Set or replace the value for a given key.

void
set(
    std::string_view key,
    dom::Value const& value) const;
» more...

Parameters

Name Description
key The key to set.
value The value to set.

Set or replace the value for a given key.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
void
set(
    std::string_view key,
    Value const& value) const;

Parameters

Name Description
key The key to set.
value The value to set.

Set or replace the value for a given key.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
void
set(
    std::string_view key,
    dom::Value const& value) const;

Parameters

Name Description
key The key to set.
value The value to set.

Return if an Array or Object is empty.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
std::size_t
size() const;

Return Value

if an Array or Object is empty.

Swap two values.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
void
swap(Value& other) noexcept;

Parameters

Name Description
other An ECMAScript value.

Return the type of the value.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Type
type() const noexcept;

Description

This function returns the JavaScript type of the value.

The type can represent a primitive type (such as boolean, number, and string) or an object.

When the type is an object, the return type also classifies the object as an array or function.

An array is an object with the internal ECMAScript class Array or a Proxy wrapping an Array.

A function is an object with the internal ECMAScript class Function.

Return Value

the type of the value.

Return the string.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
explicit
operator std::string() const noexcept;

Return Value

the string.

Determine if a value is truthy

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
explicit
operator bool() const noexcept;

Description

A value is truthy if it is a boolean and is true, a number and not zero, or an non-empty string, array or object.

Return Value

true if the value is truthy, false otherwise

Wrap an existing engine value without transferring ownership.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value(
    uint32_t val,
    std::shared_ptr<Context::Impl> impl) noexcept;

Parameters

Name Description
val JerryScript value handle that will be acquired.
impl Shared runtime state that keeps the context alive.

Shared lifetime owner for the underlying JavaScript runtime.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
std::shared_ptr<Context::Impl> impl_;

Opaque engine value handle stored as an integer (engine-specific inside the implementation).

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
uint32_t val_;

Types of values.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
enum class Type : int;

Members

NameDescription
undefined The value is undefined
null The value is null
boolean The value is a boolean
number The value is a number
string The value is a string
object The value is an object
function The value is a function
array The value is an array

Return the first Value that is not truthy, or the last one.

Synopses

Declared in <mrdocs/Support/JavaScript.hpp>
auto
operator&&(
    S const& lhs,
    Value const& rhs) noexcept;
» more...
auto
operator&&(
    Value const& lhs,
    S const& rhs) noexcept;
» more...

Return the first Value that is not truthy, or the last one.

Value
operator&&(
    Value const& lhs,
    Value const& rhs);
» more...

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
auto
operator&&(
    S const& lhs,
    Value const& rhs) noexcept;

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
auto
operator&&(
    Value const& lhs,
    S const& rhs) noexcept;

Return the first Value that is not truthy, or the last one.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value
operator&&(
    Value const& lhs,
    Value const& rhs);

Description

This function is equivalent to the JavaScript && operator.

Return Value

the first Value that is not truthy, or the last one.

Parameters

Name Description
lhs The left operand
rhs The right operand

Return the first Value that is truthy, or the last one.

Synopses

Declared in <mrdocs/Support/JavaScript.hpp>
auto
operator||(
    S const& lhs,
    Value const& rhs) noexcept;
» more...
auto
operator||(
    Value const& lhs,
    S const& rhs) noexcept;
» more...

Return the first Value that is truthy, or the last one.

Value
operator||(
    Value const& lhs,
    Value const& rhs);
» more...

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
auto
operator||(
    S const& lhs,
    Value const& rhs) noexcept;

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
auto
operator||(
    Value const& lhs,
    S const& rhs) noexcept;

Return the first Value that is truthy, or the last one.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
Value
operator||(
    Value const& lhs,
    Value const& rhs);

Description

This function is equivalent to the JavaScript || operator.

Return Value

the first Value that is truthy, or the last one.

Parameters

Name Description
lhs The left operand
rhs The right operand

Register a JavaScript helper function

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
[[nodiscard]]
Expected<void, Error>
registerHelper(
    mrdocs::Handlebars& hbs,
    std::string_view name,
    Context& ctx,
    std::string_view script);

Description

This function registers a JavaScript function as a helper function that can be called from Handlebars templates.

The helper source is resolved in the following order:

1. Parenthesized eval - wraps the script in parentheses and evaluates. Handles function declarations without side effects. Example: "function add(a, b) { return a + b; }"

2. Direct eval - evaluates the script as-is. Handles IIFEs and expressions that return functions. Example: "(function(){ return function(x){ return x*2; }; })()"

3. Global lookup - looks up the helper name on the global object. Handles scripts that define globals before returning. Example: "var helper = function(x){ return x; }; helper;"

The resolved function is stored on the shared MrDocsHelpers global object and registered with Handlebars. When invoked, positional arguments are passed to the JavaScript function (the Handlebars options object is stripped to avoid expensive recursive conversion of symbol contexts).

Return Value

Success, or an error if the script could not be resolved to a function

Parameters

Name Description
hbs The Handlebars instance to register the helper into
name The name of the helper function
ctx The JavaScript context to use
script The JavaScript code that defines the helper function

Swap two values.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
void
swap(
    Value& v0,
    Value& v1) noexcept;

Parameters

Name Description
v0 An ECMAScript value.
v1 An ECMAScript value.

Return value as a string.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
std::string
toString(Value const& value);

Description

This function coerces any value to a string.

Return Value

value as a string.

Parameters

Name Description
value An ECMAScript value.

Compare two values for equality.

Synopses

Declared in <mrdocs/Support/JavaScript.hpp>
auto
operator==(
    Value const& lhs,
    S const& rhs) noexcept;
» more...
auto
operator==(
    S const& lhs,
    Value const& rhs) noexcept;
» more...

Compare two values for equality.

bool
operator==(
    Value const& lhs,
    Value const& rhs) noexcept;
» more...

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
auto
operator==(
    Value const& lhs,
    S const& rhs) noexcept;

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
auto
operator==(
    S const& lhs,
    Value const& rhs) noexcept;

Compare two values for equality.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
bool
operator==(
    Value const& lhs,
    Value const& rhs) noexcept;

Description

This operator uses strict equality, meaning that the types must match exactly, and for objects and arrays the children must match exactly.

The == operator behaves differently for objects compared to primitive data types like numbers and strings. When comparing objects using ==, it checks for reference equality, not structural equality.

This means that two objects are considered equal with === only if they reference the exact same object in memory.

NOTE

In JavaScript, this is equivalent to the === operator, which does not perform type conversions.

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
lhs The left operand
rhs The right operand

Inequality operators

Synopses

Declared in <mrdocs/Support/JavaScript.hpp>
auto
operator!=(
    Value const& lhs,
    S const& rhs) noexcept;
» more...
auto
operator!=(
    S const& lhs,
    Value const& rhs) noexcept;
» more...

Inequality operator

bool
operator!=(
    Value const& lhs,
    Value const& rhs) noexcept;
» more...

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
auto
operator!=(
    Value const& lhs,
    S const& rhs) noexcept;

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
auto
operator!=(
    S const& lhs,
    Value const& rhs) noexcept;

Inequality operator

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
bool
operator!=(
    Value const& lhs,
    Value const& rhs) noexcept;

Return Value

true if the objects are not equal, false otherwise

Parameters

Name Description
lhs The left operand
rhs The right operand

Compare two values for inequality.

Synopsis

Declared in <mrdocs/Support/JavaScript.hpp>
std::strong_ordering
operator<=>(
    Value const& lhs,
    Value const& rhs) noexcept;

Return Value

The relative order of the objects

Parameters

Name Description
lhs The left operand
rhs The right operand

Lua interop helpers for the optional scripting/backend integration.

Description

This namespace contains glue for pushing/popping values, registering functions, and safely executing snippets so embedders can enable Lua without duplicating binding code.

Types

NameDescription
Access Internal tag granting access to lua internals.
Context A reference to an instance of a Lua interpreter.
Function A Lua function.
Param A lazy container to push values to the Lua stack.
Scope Stack scope guard for Lua calls.
String A Lua string.
Table A Lua table.
Value A Lua value.
zstring A null-terminated string.
FunctionPtr Pointer to a Lua-callable function returning Value.

Enums

NameDescription
Type Types of values.

Pointer to a Lua-callable function returning Value.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
using FunctionPtr = Value(*)(std::vector<Value>);

Internal tag granting access to lua internals.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
struct Access;

A reference to an instance of a Lua interpreter.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
class Context;

Member Functions

NameDescription
Context [constructor]Constructor.
~Context [destructor]Destructor.
operator= [deleted]Copy assignment.

Friends

|===
Name Description
Scope Stack scope guard for Lua calls.
Access Internal tag granting access to lua internals.

Constructor.

Synopses

Declared in <mrdocs/Support/Lua.hpp>

Constructor.

Context();
» more...

Constructor.

Context(Context const& other) noexcept;
» more...

Constructor.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Context();

Constructor.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Context(Context const& other) noexcept;

Parameters

Name Description
other The object to copy construct from

Destructor.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
~Context();

Copy assignment.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Context&
operator=(Context const& other) = delete;

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

A Lua function.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
class Function
    : public Value

Base Classes

Name Description
ValueA Lua value.

Member Functions

NameDescription
Function [constructor]Construct a function wrapper from an existing value.
call Invoke the value as a function.
displayString Return a string representation.
isBoolean Return true if the value is a boolean.
isFunction Return true if the value is a function.
isNil Return true if the value is nil.
isNumber Return true if the value is numeric.
isString Return true if the value is a string.
isTable Return true if the value is a table.
operator() Invoke the value as a function.
type Return the Lua type of this value.

Protected Data Members

NameDescription
index_ Stack index where the value is stored.
scope_ Scope that owns the stack slot for this value.

Friends

|===
Name Description
Access Internal tag granting access to lua internals.

Construct a function wrapper from an existing value.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Function(Value value);

Parameters

Name Description
value The object to construct from

A lazy container to push values to the Lua stack.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
class Param;

Member Functions

NameDescription
Param [constructor] [deleted]Constructors
~Param [destructor]Destroy the stored value without throwing.
operator= [deleted]Deleted copy assignment to avoid double pops.

Data Members

NameDescription
arr_ [variant member]Stored array when kind_ == domArray.
b_ [variant member]Stored boolean value when kind_ == boolean.
i_ [variant member]Stored integer value when kind_ == integer.
index_ [variant member]Stack index when kind_ == value.
obj_ [variant member]Stored object when kind_ == domObject.
s_ [variant member]Stored string view when kind_ == string.

Friends

|===
Name Description
Access Internal tag granting access to lua internals.

Constructors

Synopses

Declared in <mrdocs/Support/Lua.hpp>

Deleted copy constructor to avoid double pops.

Param(Param const& other) = delete;
» more...

Construct from a DOM array.

Param(dom::Array arr) noexcept;
» more...

Construct from a DOM object.

Param(dom::Object obj) noexcept;
» more...

Construct an integer parameter.

Param(int64_t value) noexcept;
» more...

Construct a nil parameter.

Param(std::nullptr_t value) noexcept;
» more...

Construct a string parameter (non-owning).

Param(std::string_view s) noexcept;
» more...

Construct from a Lua Value already on the stack.

Param(Value const& value) noexcept;
» more...

Construct from a generic DOM value.

Param(dom::Value const& value) noexcept;
» more...

Construct a string parameter from C-string.

Param(char const* s) noexcept;
» more...

Construct an integral parameter from an enum.

template<class Enum>
requires std::is_enum_v<Enum>
Param(Enum v) noexcept;
» more...

Construct a boolean parameter from a bool-like type.

template<class Boolean>
requires std::is_same_v<Boolean, bool>
Param(Boolean const& b) noexcept;
» more...

Construct a string parameter from a convertible string type.

template<class String>
requires std::is_convertible_v<
        String, std::string_view>
Param(String const& s);
» more...

Deleted copy constructor to avoid double pops.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Param(Param const& other) = delete;

Parameters

Name Description
other The object to copy construct from

Construct from a DOM array.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Param(dom::Array arr) noexcept;

Parameters

Name Description
arr The object to construct from

Construct from a DOM object.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Param(dom::Object obj) noexcept;

Parameters

Name Description
obj The object to construct from

Construct an integer parameter.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Param(int64_t value) noexcept;

Parameters

Name Description
value The object to construct from

Construct a nil parameter.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Param(std::nullptr_t value) noexcept;

Parameters

Name Description
value The object to construct from

Construct a string parameter (non-owning).

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Param(std::string_view s) noexcept;

Parameters

Name Description
s The object to construct from

Construct from a Lua Value already on the stack.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Param(Value const& value) noexcept;

Parameters

Name Description
value The object to copy construct from

Construct from a generic DOM value.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Param(dom::Value const& value) noexcept;

Parameters

Name Description
value The object to copy construct from

Construct a string parameter from C-string.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Param(char const* s) noexcept;

Parameters

Name Description
s The value to construct from

Construct an integral parameter from an enum.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
template<class Enum>
requires std::is_enum_v<Enum>
Param(Enum v) noexcept;

Parameters

Name Description
v The object to construct from

Construct a boolean parameter from a bool-like type.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
template<class Boolean>
requires std::is_same_v<Boolean, bool>
Param(Boolean const& b) noexcept;

Parameters

Name Description
b The object to copy construct from

Construct a string parameter from a convertible string type.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
template<class String>
requires std::is_convertible_v<
        String, std::string_view>
Param(String const& s);

Parameters

Name Description
s The object to copy construct from

Destroy the stored value without throwing.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
~Param();

Deleted copy assignment to avoid double pops.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Param&
operator=(Param const& other) = delete;

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Stored array when kind_ == domArray.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
dom::Array arr_;

Stored boolean value when kind_ == boolean.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
bool b_;

Stored integer value when kind_ == integer.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
int i_;

Stack index when kind_ == value.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
int index_;

Stored object when kind_ == domObject.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
dom::Object obj_;

Stored string view when kind_ == string.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
std::string_view s_;

Stack scope guard for Lua calls.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
class Scope;

Description

Helper that balances the Lua stack for a Context scope.

Member Functions

NameDescription
Scope [constructor]Create a scope that manages Lua stack references.
~Scope [destructor]Pop any pending stack references on destruction.
getGlobal Return a value from the global table if it exists.
getGlobalTable Return the global table.
loadChunk Load a Lua chunk
loadChunkFromFile Run a Lua chunk.

Friends

|===
Name Description
Access Internal tag granting access to lua internals.

Create a scope that manages Lua stack references.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Scope(Context const& ctx) noexcept;

Parameters

Name Description
ctx Lua context to guard.

Pop any pending stack references on destruction.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
~Scope();

Return a value from the global table if it exists.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Expected<Value>
getGlobal(
    std::string_view key,
    std::source_location loc = source_location::current());

Return Value

The value if it exists, or an error.

Parameters

Name Description
key The key to get.
loc The source location of the call site.

Return the global table.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Table
getGlobalTable();

Return Value

the global table.

Load a Lua chunk

Synopses

Declared in <mrdocs/Support/Lua.hpp>

Load a Lua chunk

Expected<Function>
loadChunk(
    std::string_view luaChunk,
    std::source_location loc = source_location::current());
» more...

Load a Lua chunk

Expected<Function>
loadChunk(
    std::string_view luaChunk,
    zstring chunkName,
    std::source_location loc = source_location::current());
» more...

Return Value

The function if successful, or an error.

Parameters

Name Description
luaChunk The Lua chunk to load.
loc The source location of the call site.
chunkName The name of the chunk (used in error messages).

Load a Lua chunk

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Expected<Function>
loadChunk(
    std::string_view luaChunk,
    std::source_location loc = source_location::current());

Return Value

The function if successful, or an error.

Parameters

Name Description
luaChunk The Lua chunk to load.
loc The source location of the call site.

Load a Lua chunk

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Expected<Function>
loadChunk(
    std::string_view luaChunk,
    zstring chunkName,
    std::source_location loc = source_location::current());

Return Value

The function if successful, or an error.

Parameters

Name Description
luaChunk The Lua chunk to load.
chunkName The name of the chunk (used in error messages).
loc The source location of the call site.

Run a Lua chunk.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Expected<Function>
loadChunkFromFile(
    std::string_view fileName,
    std::source_location loc = source_location::current());

Return Value

The function if successful, or an error.

Parameters

Name Description
fileName The name of the file to load.
loc The source location of the call site.

A Lua string.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
class String
    : public Value

Base Classes

Name Description
ValueA Lua value.

Member Functions

NameDescription
String [constructor]Constructors
call Invoke the value as a function.
displayString Return a string representation.
get Retrieve the underlying string view.
isBoolean Return true if the value is a boolean.
isFunction Return true if the value is a function.
isNil Return true if the value is nil.
isNumber Return true if the value is numeric.
isString Return true if the value is a string.
isTable Return true if the value is a table.
operator() Invoke the value as a function.
operator* Dereference to the underlying string view.
type Return the Lua type of this value.
operator std::string_view Implicit conversion to string view.

Protected Data Members

NameDescription
index_ Stack index where the value is stored.
scope_ Scope that owns the stack slot for this value.

Friends

|===
Name Description
Access Internal tag granting access to lua internals.

Constructors

Synopses

Declared in <mrdocs/Support/Lua.hpp>

Wrap an existing Lua value as a string.

String(Value value);
» more...

Create a new Lua string from the given view.

explicit
String(std::string_view s);
» more...

Wrap an existing Lua value as a string.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
String(Value value);

Parameters

Name Description
value The object to construct from

Create a new Lua string from the given view.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
explicit
String(std::string_view s);

Parameters

Name Description
s The object to construct from

Retrieve the underlying string view.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
std::string_view
get() const noexcept;

Return Value

View of the Lua string contents.

Dereference to the underlying string view.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
std::string_view
operator*() const noexcept;

Return Value

View of the Lua string contents.

Implicit conversion to string view.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
operator std::string_view() const noexcept;

Return Value

The object converted to string_view

A Lua table.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
class Table
    : public Value

Base Classes

Name Description
ValueA Lua value.

Member Functions

NameDescription
Table [constructor]Constructors
call Invoke the value as a function.
displayString Return a string representation.
get Retrieve a table entry by key; returns nil if missing.
isBoolean Return true if the value is a boolean.
isFunction Return true if the value is a function.
isNil Return true if the value is nil.
isNumber Return true if the value is numeric.
isString Return true if the value is a string.
isTable Return true if the value is a table.
operator() Invoke the value as a function.
set Create or replace the value with a key.
type Return the Lua type of this value.

Protected Data Members

NameDescription
index_ Stack index where the value is stored.
scope_ Scope that owns the stack slot for this value.

Friends

|===
Name Description
Access Internal tag granting access to lua internals.

Constructors

Synopses

Declared in <mrdocs/Support/Lua.hpp>

Wrap an existing Lua value as a table.

Table(Value value);
» more...

Create an empty table in the given scope.

explicit
Table(Scope& scope);
» more...

Construct a table by copying fields from a DOM object.

Table(
    Scope& scope,
    dom::Object const& obj);
» more...

Wrap an existing Lua value as a table.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Table(Value value);

Parameters

Name Description
value The object to construct from

Create an empty table in the given scope.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
explicit
Table(Scope& scope);

Parameters

Name Description
scope The object to copy construct from

Construct a table by copying fields from a DOM object.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Table(
    Scope& scope,
    dom::Object const& obj);

Parameters

Name Description
scope The object to copy construct from
obj A container of key and value pairs.

Retrieve a table entry by key; returns nil if missing.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Value
get(std::string_view key) const;

Return Value

Value stored at key or nil if absent.

Parameters

Name Description
key Table key to look up.

Create or replace the value with a key.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
void
set(
    std::string_view key,
    Param value) const;

Parameters

Name Description
key The key to set.
value The value to set.

A Lua value.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
class Value;

Member Functions

NameDescription
Value [constructor]Constructor.
~Value [destructor]Destructor.
call Invoke the value as a function.
displayString Return a string representation.
isBoolean Return true if the value is a boolean.
isFunction Return true if the value is a function.
isNil Return true if the value is nil.
isNumber Return true if the value is numeric.
isString Return true if the value is a string.
isTable Return true if the value is a table.
operator() Invoke the value as a function.
type Return the Lua type of this value.

Protected Member Functions

NameDescription
Value [constructor]Create a value referring to a stack slot within a scope.

Protected Data Members

NameDescription
index_ Stack index where the value is stored.
scope_ Scope that owns the stack slot for this value.

Friends

|===
Name Description
Access Internal tag granting access to lua internals.

Derived Classes

Name Description
Function A Lua function.
String A Lua string.
Table A Lua table.

Constructor.

Synopses

Declared in <mrdocs/Support/Lua.hpp>

Constructor.

Value() noexcept;
» more...

Constructor.

Value(Value const& other);
» more...

Constructor.

Value(Value&& other) noexcept;
» more...

Parameters

Name Description
other The value to copy.

Constructor.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Value() noexcept;

Description

Default constructed values have no scope or assigned stack index and are equivalent to the value Nil.

Constructor.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Value(Value const& other);

Description

The new value will be assigned a new stack index which has the same underlying value as other.

Parameters

Name Description
other The value to copy.

Constructor.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Value(Value&& other) noexcept;

Description

The newly constructed object will acquire the same stack index, while the moved-from object will become as if default-constructed.

Parameters

Name Description
other The object to move construct from

Destructor.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
~Value();

Description

The Lua value will eventually be removed from the stack.

Invoke the value as a function.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
template<class... Args>
Expected<Value>
call(Args&&... args);

Description

If the invocation fails the return value will contain the corresponding error.

Return Value

The return value of the function.

Parameters

Name Description
args Zero or more values to pass to the function.

Return a string representation.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
std::string
displayString() const;

Description

This function is used for diagnostics.

Return Value

a string representation.

Return true if the value is a boolean.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
bool
isBoolean() const noexcept;

Return Value

true if the value is a boolean.

Return true if the value is a function.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
bool
isFunction() const noexcept;

Return Value

true if the value is a function.

Return true if the value is nil.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
bool
isNil() const noexcept;

Return Value

true if the value is nil.

Return true if the value is numeric.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
bool
isNumber() const noexcept;

Return Value

true if the value is numeric.

Return true if the value is a string.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
bool
isString() const noexcept;

Return Value

true if the value is a string.

Return true if the value is a table.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
bool
isTable() const noexcept;

Return Value

true if the value is a table.

Invoke the value as a function.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
template<class... Args>
Value
operator()(Args&&... args);

Return Value

Another instance of the object

Parameters

Name Description
args Zero or more values to pass to the function.

Return the Lua type of this value.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Type
type() const noexcept;

Return Value

the Lua type of this value.

Create a value referring to a stack slot within a scope.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Value(
    int position,
    Scope& scope) noexcept;

Parameters

Name Description
position The value to construct from
scope Stack scope guard for Lua calls.

Stack index where the value is stored.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
int index_;

Scope that owns the stack slot for this value.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
Scope* scope_;

A null-terminated string.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
class zstring;

Member Functions

NameDescription
zstring [constructor]Constructors
c_str Return the underlying C-string pointer.

Constructors

Synopses

Declared in <mrdocs/Support/Lua.hpp>

Construct from string_view (stores an owned copy).

zstring(std::string_view s);
» more...

Construct from std::string without copying.

zstring(std::string const& s);
» more...

Construct from a C-string pointer.

zstring(char const* s) noexcept;
» more...

Parameters

Name Description
s String view to copy.

Construct from string_view (stores an owned copy).

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
zstring(std::string_view s);

Parameters

Name Description
s String view to copy.

Construct from std::string without copying.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
zstring(std::string const& s);

Parameters

Name Description
s Source string.

Construct from a C-string pointer.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
zstring(char const* s) noexcept;

Parameters

Name Description
s Null-terminated string.

Return the underlying C-string pointer.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
char const*
c_str() const noexcept;

Return Value

the underlying C-string pointer.

Types of values.

Synopsis

Declared in <mrdocs/Support/Lua.hpp>
enum class Type : int;

Members

NameDescription
nil The value is nil
boolean The value is a boolean
number The value is a number
string The value is a string
table The value is a table
function The value is a function

Reporting utilities (messages, statistics, sinks).

Description

The report namespace owns severity enums, message structs, and output sinks so tooling and libraries emit diagnostics in a uniform, testable format regardless of UI.

Types

NameDescription
Located Parameter type that adds a source location to a value.
Results Provides statistics on the number of reported messages.

Enums

NameDescription
Level Severity levels attached to reported messags.

Functions

NameDescription
debug Emit a debug-level diagnostic for troubleshooting.
error Emit an error that indicates failure but allows continuation.
fatal Emit a fatal error and mark the report as the highest severity.
getMinimumLevel Get the minimum threshold level for reporting.
info Emit an informational message for users.
log Format a message to the console.
print Report a message to the console.
setMinimumLevel Set the minimum threshold level for reporting.
setSourceLocationWarnings If true, source location information will be printed with warnings, errors, and fatal messages.
trace Emit a trace-level diagnostic (verbose, off by default).
warn Emit a warning that does not stop execution.

Variables

NameDescription
results Holds current statistics on reported messages.

Parameter type that adds a source location to a value.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
template<class T>
struct Located;

Member Functions

NameDescription
Located [constructor]Construct a Located wrapper.

Data Members

NameDescription
value Wrapped value.
where Source location of the value.

Non-Member Functions

Name Description
debugEmit a debug-level diagnostic for troubleshooting.
errorEmit an error that indicates failure but allows continuation.
fatalEmit a fatal error and mark the report as the highest severity.
infoEmit an informational message for users.
traceEmit a trace-level diagnostic (verbose, off by default).
warnEmit a warning that does not stop execution.

Construct a Located wrapper.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
template<class Arg>
requires std::is_constructible_v<T, Arg>
Located(
    Arg&& arg,
    std::source_location const& loc = source_location::current());

Parameters

Name Description
arg Value to wrap.
loc Source location to associate (defaults to current).

Wrapped value.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
T value;

Source location of the value.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
std::source_location where;

Provides statistics on the number of reported messages.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
struct Results;

Data Members

NameDescription
debugCount Number of debug-level messages.
errorCount Number of error-level messages.
fatalCount Number of fatal-level messages.
infoCount Number of info-level messages.
traceCount Number of trace-level messages.
warnCount Number of warning-level messages.

Number of debug-level messages.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
std::size_t debugCount;

Number of error-level messages.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
std::size_t errorCount;

Number of fatal-level messages.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
std::size_t fatalCount;

Number of info-level messages.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
std::size_t infoCount;

Number of trace-level messages.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
std::size_t traceCount;

Number of warning-level messages.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
std::size_t warnCount;

Severity levels attached to reported messags.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
enum class Level : int;

Members

NameDescription
trace Programming trace messages
debug Debug messages
info Informational messages
warn Warning messages
error Error messages
fatal Fatal error messages

Non-Member Functions

Name Description
getMinimumLevelGet the minimum threshold level for reporting.
logFormat a message to the console.
printReport a message to the console.
setMinimumLevelSet the minimum threshold level for reporting.

Emit a debug-level diagnostic for troubleshooting.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
template<class... Args>
void
debug(
    Located<std::string_view> format,
    Args&&... args);

Parameters

Name Description
format fmt-style format string.
args Arguments substituted into the format string.

Emit an error that indicates failure but allows continuation.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
template<class... Args>
void
error(
    Located<std::string_view> format,
    Args&&... args);

Parameters

Name Description
format fmt-style format string.
args Arguments substituted into the format string.

Emit a fatal error and mark the report as the highest severity.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
template<class... Args>
void
fatal(
    Located<std::string_view> format,
    Args&&... args);

Parameters

Name Description
format fmt-style format string.
args Arguments substituted into the format string.

Get the minimum threshold level for reporting.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
Level
getMinimumLevel() noexcept;

Return Value

Current minimum Level that will be emitted.

Emit an informational message for users.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
template<class... Args>
void
info(
    Located<std::string_view> format,
    Args&&... args);

Parameters

Name Description
format fmt-style format string.
args Arguments substituted into the format string.

Format a message to the console.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
template<class... Args>
void
log(
    Level level,
    Located<std::string_view> fs,
    Args&&... args);

Parameters

Name Description
level 0 to 4 The severity of the report. 0 is debug and 4 is fatal.
fs The format string.
args Optional additional arguments used to format a message to print. A trailing newline will be added to the message automatically.

Report a message to the console.

Synopses

Declared in <mrdocs/Support/Report.hpp>

Report a message to the console.

void
print(std::string const& text);
» more...

Report a message to the console.

void
print(
    Level level,
    std::string const& text,
    std::source_location const* loc = nullptr,
    Error const* e = nullptr);
» more...

Parameters

Name Description
text The message to print. A trailing newline will be added to the message automatically.
level 0 to 4 The severity of the report. 0 is debug and 4 is fatal.
loc The source location of the report. If this value is null, no location is printed.

Report a message to the console.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
void
print(std::string const& text);

Parameters

Name Description
text The message to print. A trailing newline will be added to the message automatically.

Report a message to the console.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
void
print(
    Level level,
    std::string const& text,
    std::source_location const* loc = nullptr,
    Error const* e = nullptr);

Parameters

Name Description
level 0 to 4 The severity of the report. 0 is debug and 4 is fatal.
text The message to print. A trailing newline will be added to the message automatically.
loc The source location of the report. If this value is null, no location is printed.
e Holds the description of an error, or success.

Set the minimum threshold level for reporting.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
void
setMinimumLevel(Level level) noexcept;

Description

Messages below this level will not be printed. A value of 5 will suppress all messages. Note that messages will still be counted towards result totals even if they are not displayed.

Parameters

Name Description
level Severity levels attached to reported messags.

If true, source location information will be printed with warnings, errors, and fatal messages.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
void
setSourceLocationWarnings(bool b) noexcept;

Parameters

Name Description
b true to enable source location information, false to disable it. The default value is true.

Emit a trace-level diagnostic (verbose, off by default).

Synopsis

Declared in <mrdocs/Support/Report.hpp>
template<class... Args>
void
trace(
    Located<std::string_view> format,
    Args&&... args);

Parameters

Name Description
format fmt-style format string.
args Arguments substituted into the format string.

Emit a warning that does not stop execution.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
template<class... Args>
void
warn(
    Located<std::string_view> format,
    Args&&... args);

Parameters

Name Description
format fmt-style format string.
args Arguments substituted into the format string.

Holds current statistics on reported messages.

Synopsis

Declared in <mrdocs/Support/Report.hpp>
extern
Results results;

unordered_map keyed by std::string with transparent hashing.

Synopsis

Declared in <mrdocs/ADT/UnorderedStringMap.hpp>
template<class T>
using UnorderedStringMap = std::unordered_map<std::string, T, StringHash, std::equal_to>;

unordered_multimap keyed by std::string with transparent hashing.

Synopsis

Declared in <mrdocs/ADT/UnorderedStringMap.hpp>
template<class T>
using UnorderedStringMultiMap = std::unordered_multimap<std::string, T, StringHash, std::equal_to>;

Alias for add_const_from<From, To>::type.

Synopsis

Declared in <mrdocs/Support/TypeTraits.hpp>
template<
    typename From,
    typename To>
using add_const_from_t = add_const_from<From, To>::type;

Template Parameters

Name Description
From Source type providing const qualifier.
To Destination type to adjust.

Alias for add_cv_from<From, To>::type.

Synopsis

Declared in <mrdocs/Support/TypeTraits.hpp>
template<
    typename From,
    typename To>
using add_cv_from_t = add_cv_from<From, To>::type;

Template Parameters

Name Description
From Source type providing cv qualifiers.
To Destination type to adjust.

Alias for add_cvref_from<From, To>::type.

Synopsis

Declared in <mrdocs/Support/TypeTraits.hpp>
template<
    typename From,
    typename To>
using add_cvref_from_t = add_cvref_from<From, To>::type;

Template Parameters

Name Description
From Source type providing cv-ref qualifiers.
To Destination type to adjust.

Alias for add_lvalue_reference_from<From, To>::type.

Synopsis

Declared in <mrdocs/Support/TypeTraits.hpp>
template<
    typename From,
    typename To>
using add_lvalue_reference_from_t = add_lvalue_reference_from<From, To>::type;

Template Parameters

Name Description
From Source type providing reference qualifier.
To Destination type to adjust.

Alias for add_reference_from<From, To>::type.

Synopsis

Declared in <mrdocs/Support/TypeTraits.hpp>
template<
    typename From,
    typename To>
using add_reference_from_t = add_reference_from<From, To>::type;

Template Parameters

Name Description
From Source type providing reference qualifier.
To Destination type to adjust.

Alias for add_rvalue_reference_from<From, To>::type.

Synopsis

Declared in <mrdocs/Support/TypeTraits.hpp>
template<
    typename From,
    typename To>
using add_rvalue_reference_from_t = add_rvalue_reference_from<From, To>::type;

Template Parameters

Name Description
From Source type providing reference qualifier.
To Destination type to adjust.

Alias for add_volatile_from<From, To>::type.

Synopsis

Declared in <mrdocs/Support/TypeTraits.hpp>
template<
    typename From,
    typename To>
using add_volatile_from_t = add_volatile_from<From, To>::type;

Template Parameters

Name Description
From Source type providing volatile qualifier.
To Destination type to adjust.

Alias for make_dependent<T, U>::type.

Synopsis

Declared in <mrdocs/Support/TypeTraits.hpp>
template<
    typename T,
    typename U>
using make_dependent_t = T;

Template Parameters

Name Description
T Type to make dependent.
U Dependent parameter.

Polymorphic visitor for files discovered during traversal.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
struct AnyFileVisitor;

Member Functions

NameDescription
~AnyFileVisitor [destructor] [virtual]Virtual destructor.
visitFile [virtual]Visit a single file path.

Virtual destructor.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
virtual
~AnyFileVisitor() = 0;

Visit a single file path.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
virtual
Expected<void>
visitFile(std::string_view fileName) = 0;

Return Value

Success or error from visitor.

Parameters

Name Description
fileName Path to the file being visited.

C++ array type (bounded or unbounded).

Synopsis

Declared in <mrdocs/Metadata/Type/ArrayType.hpp>
struct ArrayType final
    : TypeCommonBase<TypeKind::Array>

Base Classes

Name Description
TypeCommonBase<TypeKind::Array>CRTP base that ties a concrete type to a fixed TypeKind.

Member Functions

NameDescription
operator<=> Compare arrays by element type and bound.

Static Member Functions

Name
isArray
isAuto
isDecltype
isFunction
isLValueReference
isMemberPointer
isNamed
isPointer
isRValueReference

Data Members

NameDescription
Bounds Optional bound; empty means unknown or dependent.
ElementType Element type held by the array.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
innerTypeReturn the inner type.
innerTypeReturn the inner type.
innerTypePtrReturn the inner type.
innerTypePtrReturn the inner type.
toStringRender a type to a human-readable string.

Compare arrays by element type and bound.

Synopses

Declared in <mrdocs/Metadata/Type/ArrayType.hpp>

Compare arrays by element type and bound.

std::strong_ordering
operator<=>(ArrayType const& rhs) const;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(TypeCommonBase<mrdocs::TypeKind::Array> const& rhs) const = default;
» more...

Compare arrays by element type and bound.

Synopsis

Declared in <mrdocs/Metadata/Type/ArrayType.hpp>
std::strong_ordering
operator<=>(ArrayType const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
auto
operator<=>(TypeCommonBase<mrdocs::TypeKind::Array> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isArray() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isAuto() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isDecltype() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isLValueReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isMemberPointer() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isNamed() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isPointer() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isRValueReference() noexcept;

Optional bound; empty means unknown or dependent.

Synopsis

Declared in <mrdocs/Metadata/Type/ArrayType.hpp>
ConstantExprInfo<uint64_t> Bounds;

Element type held by the array.

Synopsis

Declared in <mrdocs/Metadata/Type/ArrayType.hpp>
Polymorphic<Type> ElementType = Polymorphic<Type>(AutoType{});

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr static
TypeKind kind_id;

A non-owning, read-only view over a contiguous array of T.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
template<class T>
class ArrayView;

Description

Similar to std::string_view but for arbitrary element type T.

Types

NameDescription
const_iterator Iterator over elements.
const_pointer Pointer to constant element.
const_reference Reference to constant element.
const_reverse_iterator Const reverse iterator over the view.
difference_type Signed iterator difference type.
iterator Iterator over elements.
pointer Pointer to constant element.
reference Reference to constant element.
reverse_iterator Reverse iterator over the view.
size_type Unsigned size type.
value_type Element type referenced by the view.

Member Functions

NameDescription
ArrayView [constructor]Constructors
at Access the element at the specified index with bounds checking.
back Return a reference to the last element.
begin Return an iterator to the first element.
cbegin Return a const iterator to the first element.
cend Return a const iterator one past the last element.
data Return a pointer to the underlying data.
drop_back Return a view with the last n elements removed.
drop_front Return a view with the first n elements removed.
empty Return true if the view contains no elements.
end Return an iterator one past the last element.
front Return a reference to the first element.
length Return the number of elements in the view.
operator[] Access the element at the specified index without bounds checking.
rbegin Return a reverse iterator to the last element.
remove_prefix Remove n elements from the front of the view.
remove_suffix Remove n elements from the back of the view.
rend Return a reverse iterator one before the first element.
size Return the number of elements in the view.
slice Return a subview starting at pos with up to count elements.
take_back Return a view containing the last n elements.
take_front Return a view containing the first n elements.

Static Data Members

NameDescription
npos Sentinel used by slicing helpers to indicate “until the end”.

Friends

|===
Name Description
operator<=> Three-way comparison operator
operator== Equality operator

Non-Member Functions

Name Description
make_array_viewCreate an ArrayView from a C-style array.
make_array_viewCreate an ArrayView from a pointer and count.

Iterator over elements.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
using const_iterator = T const*;

Pointer to constant element.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
using const_pointer = T const*;

Reference to constant element.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
using const_reference = T const&;

Const reverse iterator over the view.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
using const_reverse_iterator = std::reverse_iterator<const_iterator>;

Signed iterator difference type.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
using difference_type = std::ptrdiff_t;

Iterator over elements.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
using iterator = T const*;

Pointer to constant element.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
using pointer = T const*;

Reference to constant element.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
using reference = T const&;

Reverse iterator over the view.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
using reverse_iterator = std::reverse_iterator<const_iterator>;

Unsigned size type.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
using size_type = std::size_t;

Element type referenced by the view.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
using value_type = T;

Constructors

Synopses

Declared in <mrdocs/ADT/ArrayView.hpp>

Construct an empty view.

constexpr
ArrayView() noexcept = default;
» more...

Construct a view from a C-style array.

template<size_type N>
constexpr
ArrayView(T const(& arr)[]) noexcept;
» more...

Construct a view from a pointer and element count.

constexpr
ArrayView(
    T const* data,
    size_type count) noexcept;
» more...

Construct a view from a contiguous iterator range of known size.

template<class It>
requires (std::contiguous_iterator<It> &&
             std::same_as<std::remove_cv_t<std::remove_reference_t<std::iter_value_t<It>>>, T>)
constexpr
ArrayView(
    It first,
    size_type count) noexcept;
» more...

Parameters

Name Description
arr The array to view.
data Pointer to the first element.
count Number of elements in the range.
first Iterator to the first element.

Construct an empty view.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
ArrayView() noexcept = default;

Construct a view from a C-style array.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
template<size_type N>
constexpr
ArrayView(T const(& arr)[]) noexcept;

Parameters

Name Description
arr The array to view.

Construct a view from a pointer and element count.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
ArrayView(
    T const* data,
    size_type count) noexcept;

Parameters

Name Description
data Pointer to the first element.
count Number of elements in the range.

Construct a view from a contiguous iterator range of known size.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
template<class It>
requires (std::contiguous_iterator<It> &&
             std::same_as<std::remove_cv_t<std::remove_reference_t<std::iter_value_t<It>>>, T>)
constexpr
ArrayView(
    It first,
    size_type count) noexcept;

Parameters

Name Description
first Iterator to the first element.
count Number of elements starting at first.

Access the element at the specified index with bounds checking.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
const_reference
at(size_type i) const;

Return Value

Reference to the element.

Parameters

Name Description
i Zero-based index.

Return a reference to the last element.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
const_reference
back() const;

Return Value

a reference to the last element.

Return an iterator to the first element.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
const_iterator
begin() const noexcept;

Return Value

Iterator to the start of the view.

Return a const iterator to the first element.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
const_iterator
cbegin() const noexcept;

Return Value

Const iterator to the start of the view.

Return a const iterator one past the last element.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
const_iterator
cend() const noexcept;

Return Value

Const iterator to the end sentinel.

Return a pointer to the underlying data.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
const_pointer
data() const noexcept;

Return Value

Pointer to the first element, or nullptr when empty.

Return a view with the last n elements removed.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
ArrayView
drop_back(size_type n) const noexcept;

Return Value

Subview excluding the dropped elements.

Parameters

Name Description
n Number of elements to drop from the back.

Return a view with the first n elements removed.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
ArrayView
drop_front(size_type n) const noexcept;

Return Value

Subview starting after the dropped elements.

Parameters

Name Description
n Number of elements to drop from the front.

Return true if the view contains no elements.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
[[nodiscard]]
constexpr
bool
empty() const noexcept;

Return Value

true when size is zero, otherwise false.

Return an iterator one past the last element.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
const_iterator
end() const noexcept;

Return Value

Iterator to the end sentinel.

Return a reference to the first element.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
const_reference
front() const;

Return Value

a reference to the first element.

Return the number of elements in the view.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
size_type
length() const noexcept;

Return Value

Element count.

Access the element at the specified index without bounds checking.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
const_reference
operator[](size_type i) const noexcept;

Return Value

Reference to the element.

Parameters

Name Description
i Zero-based index.

Return a reverse iterator to the last element.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
const_reverse_iterator
rbegin() const noexcept;

Return Value

Reverse iterator to the last element.

Remove n elements from the front of the view.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
void
remove_prefix(size_type n) noexcept;

Parameters

Name Description
n Number of elements to drop.

Remove n elements from the back of the view.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
void
remove_suffix(size_type n) noexcept;

Parameters

Name Description
n Number of elements to drop.

Return a reverse iterator one before the first element.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
const_reverse_iterator
rend() const noexcept;

Return Value

Reverse iterator denoting the rend sentinel.

Return the number of elements in the view.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
size_type
size() const noexcept;

Return Value

Element count.

Return a subview starting at pos with up to count elements.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
ArrayView
slice(
    size_type pos,
    size_type count = npos) const noexcept;

Return Value

Subview representing the requested slice.

Parameters

Name Description
pos Starting index within the current view.
count Maximum number of elements to include; use npos for the remainder.

Return a view containing the last n elements.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
ArrayView
take_back(size_type n) const noexcept;

Return Value

Subview of the last n elements (clamped to size).

Parameters

Name Description
n Desired suffix length.

Return a view containing the first n elements.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
ArrayView
take_front(size_type n) const noexcept;

Return Value

Subview of the first n elements (clamped to size).

Parameters

Name Description
n Desired prefix length.

Sentinel used by slicing helpers to indicate “until the end”.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
inline constexpr static
size_type npos = static_cast<size_type>(-1);

Represents auto or decltype(auto) placeholder type.

Synopsis

Declared in <mrdocs/Metadata/Type/AutoType.hpp>
struct AutoType final
    : TypeCommonBase<TypeKind::Auto>

Base Classes

Name Description
TypeCommonBase<TypeKind::Auto>CRTP base that ties a concrete type to a fixed TypeKind.

Member Functions

NameDescription
operator<=> Compare auto placeholders by keyword and constraint.

Static Member Functions

Name
isArray
isAuto
isDecltype
isFunction
isLValueReference
isMemberPointer
isNamed
isPointer
isRValueReference

Data Members

NameDescription
Constraint Constraint on the auto type, if any.
Keyword Which placeholder keyword appears (auto or decltype(auto)).

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
innerTypeReturn the inner type.
innerTypeReturn the inner type.
innerTypePtrReturn the inner type.
innerTypePtrReturn the inner type.
toStringRender a type to a human-readable string.

Compare auto placeholders by keyword and constraint.

Synopses

Declared in <mrdocs/Metadata/Type/AutoType.hpp>

Compare auto placeholders by keyword and constraint.

std::strong_ordering
operator<=>(AutoType const& rhs) const;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(TypeCommonBase<mrdocs::TypeKind::Auto> const& rhs) const = default;
» more...

Compare auto placeholders by keyword and constraint.

Synopsis

Declared in <mrdocs/Metadata/Type/AutoType.hpp>
std::strong_ordering
operator<=>(AutoType const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
auto
operator<=>(TypeCommonBase<mrdocs::TypeKind::Auto> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isArray() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isAuto() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isDecltype() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isLValueReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isMemberPointer() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isNamed() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isPointer() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isRValueReference() noexcept;

Constraint on the auto type, if any.

Synopsis

Declared in <mrdocs/Metadata/Type/AutoType.hpp>
Optional<Polymorphic<Name>> Constraint = std::nullopt;

Which placeholder keyword appears (auto or decltype(auto)).

Synopsis

Declared in <mrdocs/Metadata/Type/AutoType.hpp>
AutoKind Keyword = AutoKind::Auto;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr static
TypeKind kind_id;

Base class for accessing an empty Expected.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class E>
class BadExpectedAccess
    : public BadExpectedAccess<void>

Description

Exception thrown when reading the error of an Expected with a value.

Base Classes

Name Description
BadExpectedAccess<void>Exception thrown when reading the value of an empty Expected.

Member Functions

NameDescription
BadExpectedAccess [constructor]Construct with the unexpected error value.
operator=
error error overloads
what [virtual]Return a diagnostic string.

Protected Member Functions

NameDescription
operator= Assignment operators

Construct with the unexpected error value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
explicit
BadExpectedAccess(E e);

Parameters

Name Description
e The object to construct from

error overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Access the contained error by lvalue reference.

[[nodiscard]]
E&
error() & noexcept;
» more...

Access the contained error by const lvalue reference.

[[nodiscard]]
E const&
error() const & noexcept;
» more...

Access the contained error by rvalue reference.

[[nodiscard]]
E&&
error() && noexcept;
» more...

Access the contained error by const rvalue reference.

[[nodiscard]]
E const&&
error() const && noexcept;
» more...

Return Value

Access the contained error by lvalue reference.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
E&
error() & noexcept;

Return Value

Reference to the stored unexpected value.

Access the contained error by const lvalue reference.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
E const&
error() const & noexcept;

Return Value

Const reference to the stored unexpected value.

Access the contained error by rvalue reference.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
E&&
error() && noexcept;

Return Value

Rvalue reference to the stored unexpected value.

Access the contained error by const rvalue reference.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
E const&&
error() const && noexcept;

Return Value

Const rvalue reference to the stored unexpected value.

Exception thrown when reading the value of an empty Expected.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<>
class BadExpectedAccess<void>
    : public std::exception

Base Classes

Name Description
std::exception

Member Functions

NameDescription
operator=
what [virtual]Return a diagnostic string.

Protected Member Functions

NameDescription
BadExpectedAccess [constructor]Constructors
~BadExpectedAccess [destructor] [virtual]Virtual destructor.
operator= Assignment operators

Derived Classes

Name Description
BadExpectedAccess Base class for accessing an empty Expected.

Synopsis

Declared in <__exception/exception.h>
[[__visibility__, __exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
exception&
operator=(exception const& value) noexcept = default;

Return a diagnostic string.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
virtual
char const*
what() const noexcept override;

Return Value

a diagnostic string.

Constructors

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Default constructor.

constexpr
BadExpectedAccess() noexcept = default;
» more...

Copy constructor.

constexpr
BadExpectedAccess(BadExpectedAccess<void> const& other) = default;
» more...

Move constructor.

constexpr
BadExpectedAccess(BadExpectedAccess<void>&& other) = default;
» more...

Default constructor.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
BadExpectedAccess() noexcept = default;

Copy constructor.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
BadExpectedAccess(BadExpectedAccess<void> const& other) = default;

Parameters

Name Description
other The object to copy construct from

Move constructor.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
BadExpectedAccess(BadExpectedAccess<void>&& other) = default;

Parameters

Name Description
other The object to move construct from

Virtual destructor.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
virtual
~BadExpectedAccess() override = default;

Assignment operators

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Copy assignment.

constexpr
BadExpectedAccess<void>&
operator=(BadExpectedAccess<void> const& other) = default;
» more...

Move assignment.

constexpr
BadExpectedAccess<void>&
operator=(BadExpectedAccess<void>&& other) = default;
» more...

Copy assignment.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
BadExpectedAccess<void>&
operator=(BadExpectedAccess<void> const& other) = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Move assignment.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
BadExpectedAccess<void>&
operator=(BadExpectedAccess<void>&& other) = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to move assign from

Metadata for a direct base.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordBase.hpp>
struct BaseInfo;

Member Functions

NameDescription
BaseInfo [constructor] [deleted]Constructors

Data Members

NameDescription
Access The access specifier for the base.
IsVirtual Whether the base is virtual.
Type The base type.

Constructors

Synopses

Declared in <mrdocs/Metadata/Symbol/RecordBase.hpp>

Bases must be explicitly described.

BaseInfo() = delete;
» more...

Create a base description.

BaseInfo(
    Polymorphic<Type>&& type,
    AccessKind const access,
    bool const is_virtual);
» more...

Parameters

Name Description
type The base type.
access Declared access specifier.
is_virtual Whether the base is virtual.

Bases must be explicitly described.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordBase.hpp>
BaseInfo() = delete;

Create a base description.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordBase.hpp>
BaseInfo(
    Polymorphic<Type>&& type,
    AccessKind const access,
    bool const is_virtual);

Parameters

Name Description
type The base type.
access Declared access specifier.
is_virtual Whether the base is virtual.

The access specifier for the base.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordBase.hpp>
AccessKind Access = AccessKind::Public;

Whether the base is virtual.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordBase.hpp>
bool IsVirtual = false;

The base type.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordBase.hpp>
Polymorphic<Type> Type;

Description

This is typically a NamedType that refers to a RecordSymbol, but it could also be a more complex type such as a decltype.

Info for concepts.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Concept.hpp>
struct ConceptSymbol final
    : SymbolCommonBase<SymbolKind::Concept>

Base Classes

Name Description
SymbolCommonBase<SymbolKind::Concept>Base class for providing variant discriminator functions.

Member Functions

NameDescription
ConceptSymbol [constructor]Construct a concept symbol with its ID.
operator<=> Compare concept symbols by base info, template, and constraint.

Static Member Functions

Name
isConcept
isEnum
isEnumConstant
isFunction
isGuide
isNamespace
isNamespaceAlias
isOverloads
isRecord
isTypedef
isUsing
isVariable

Data Members

NameDescription
Constraint The concepts constraint-expression
Template The concepts template parameters

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
canMergeCheck whether two symbols may be merged.
getPrimaryLocationDetermine a location to use when none is explicitly chosen.
mergeMerges two Symbol objects.
mergeMerge another ConceptSymbol into this one.

Construct a concept symbol with its ID.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Concept.hpp>
explicit
ConceptSymbol(SymbolID const& ID) noexcept;

Parameters

Name Description
ID The object to copy construct from

Compare concept symbols by base info, template, and constraint.

Synopses

Declared in <mrdocs/Metadata/Symbol/Concept.hpp>

Compare concept symbols by base info, template, and constraint.

std::strong_ordering
operator<=>(ConceptSymbol const& other) const;
» more...

Three-way comparison operator

auto
operator<=>(SymbolCommonBase<mrdocs::SymbolKind::Concept> const& rhs) const = default;
» more...

Compare concept symbols by base info, template, and constraint.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Concept.hpp>
std::strong_ordering
operator<=>(ConceptSymbol const& other) const;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
auto
operator<=>(SymbolCommonBase<mrdocs::SymbolKind::Concept> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isConcept() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnum() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnumConstant() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isGuide() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespace() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespaceAlias() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isOverloads() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isRecord() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isTypedef() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isUsing() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isVariable() noexcept;

The concepts constraint-expression

Synopsis

Declared in <mrdocs/Metadata/Symbol/Concept.hpp>
ExprInfo Constraint;

The concepts template parameters

Synopsis

Declared in <mrdocs/Metadata/Symbol/Concept.hpp>
Optional<TemplateInfo> Template;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
constexpr static
SymbolKind kind_id;

Configuration used to generate the Corpus and Docs

Synopsis

Declared in <mrdocs/Config.hpp>
class Config;

Description

This contains all the public settings applied from the command line and the YML file (if any).

This class stores the original and public config options as they are passed to MrDocs, in their original data types, such as strings and bools.

This class is an abstract interface whose private concrete implementation typically includes these parsed configuration values in a more convenient form for use by MrDocs.

Meanwhile, this class is provided publicly to plugins.

The configuration is always connected to the directory of the mrdocs.yml file from which absolute paths are calculated from relative paths.

Types

NameDescription
Settings Settings values used to generate the Corpus and Docs

Member Functions

NameDescription
~Config [destructor] [virtual]Destructor.
object [virtual]Return a DOM object representing the configuration keys.
operator-> Return the settings used to generate the Corpus and Docs.
settings [virtual]Return the settings used to generate the Corpus and Docs.
threadPool [virtual]Return a pool of threads for executing work.

Protected Member Functions

NameDescription
Config [constructor]Construct an empty configuration interface. Implementations populate settings in derived classes.

Settings values used to generate the Corpus and Docs

Synopsis

Declared in <mrdocs/Config.hpp>
struct Settings
    : PublicSettings

Base Classes

Name Description
PublicSettings

Types

NameDescription
OptionProperties Option validation traits

Enums

NameDescription
BaseMemberInheritance Enum for "base-member-inheritance" options
Generator Enum for "generator" options
LogLevel Enum for "log-level" options
OptionType Option Type
SortSymbolBy Enum for "sort-symbol-by" options

Member Functions

NameDescription
configDir Full path to the config file directory
normalize Normalize the configuration values with a visitor
operator-> Provide pointer-like access to settings fields.
outputDir Full path to the output directory
visit Visit all options

Static Member Functions

NameDescription
fromString
load load overloads
load_file Loads the public configuration settings from the specified file.
toString

Data Members

NameDescription
addons Path to the Addons directory
addonsSupplemental Additional addons layered on top of the base addons
autoBrief command is required.
autoFunctionMetadata Automatically provide missing documentation for special functions and trivial metadata
autoRelates Automatically find non-member functions
baseUrl Base URL for links to source code
cmake CMake arguments when generating the compilation database from CMakeLists.txt
cmdLineInputs Configuration or compilation database files
compilationDatabase Path to the compilation database
concurrency Number of threads to use
config Mr.Docs configuration file
configYaml A string holding the complete configuration YAML.
copycss Copy local stylesheets when linking
cwdDir Full path to the current working directory
defines Additional defines passed to the compiler
embedded Output an embeddable document
exclude Input directories to exclude
excludePatterns File patterns to exclude
excludeSymbols Symbol patterns to exclude
extractAll Extract all symbols
extractAnonymousNamespaces Extraction policy for anonymous namespaces
extractEmptyNamespaces Extraction policy for empty namespaces
extractFriends Extraction policy for friend functions and classes
extractImplicitSpecializations Implicit template specializations used as base classes are extracted as dependencies
extractLocalClasses Extraction policy for records defined locally in source files
extractPrivate Extraction policy for private class members
extractPrivateBases Extraction policy for private base classes
extractPrivateVirtual Extraction policy for private virtual methods of a class
extractStatic Extraction policy for static members of a file
filePatterns File patterns to include
generator Generator used to create the documentation
globalNamespaceIndex Use the global namespace page as an index for all symbols
ignoreFailures Whether AST visitation failures should not stop the program
ignoreMapErrors Continue if files are not mapped correctly
implementationDefined Symbols rendered as "implementation-defined"
includeSymbols Symbol patterns to include
includes Include paths
inheritBaseMembers Determine how derived classes inherit base members
input Input directories to extract symbols from
legibleNames Use legible names
libcIncludes Standard Library include paths
linkcss Link stylesheets instead of embedding them
logLevel The minimum reporting level
missingIncludePrefixes Include path prefixes allowed to be missing
missingIncludeShims Shims for forgiven missing include files
mrdocsRootDir Full path to the mrdocs root directory
multipage Generate a multipage documentation
noDefaultStyles Disable the bundled default stylesheet
output Directory or file for generating output
overloads Detect and group function overloads
recursive Recursively include files from "input" paths
report The minimum reporting level
seeBelow Exposition only symbols rendered as "see-below".
sfinae Detect and reduce SFINAE expressions
showEnumConstants Show enum constant pages in the documentation
showNamespaces Show namespace pages in the documentation
sortMembers Sort the members of a record
sortMembersAssignment1St Sort assignment operators first
sortMembersBy Determine how members of a record are sorted
sortMembersConversionLast Sort conversion operators last
sortMembersCtors1St Sort constructors first
sortMembersDtors1St Sort destructors first
sortMembersRelationalLast Sort relational operators last
sortNamespaceMembersBy Determine how members of a namespace are sorted
sourceRoot Path to the root directory of the source code
stdlibIncludes C++ Standard Library include paths
stylesdir Directory for linked stylesheets
stylesheets Ordered list of stylesheets to apply to HTML output
systemIncludes System include paths
tagfile Path for the tagfile
useSystemLibc Use the system C standard library
useSystemStdlib Use the system C++ standard library
verbose Verbose output
warnAsError Treat warnings as errors
warnBrokenRef Warn if a documentation reference is broken
warnIfDocError Warn if documentation has errors
warnIfUndocEnumVal Warn if enum values are not documented
warnIfUndocumented Warn if symbols are not documented
warnNoParamdoc Warn if parameters are not documented
warnUnnamedParam Warn if documented functions have unnamed parameters
warnings Enable warning messages

Friends

|===
Name Description
MappingTraits

Option validation traits

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
struct OptionProperties;

Enum for "base-member-inheritance" options

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
enum class BaseMemberInheritance : int;

Description

This enumeration value is valid for the inherit-base-members option

Enum for "generator" options

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
enum class Generator : int;

Description

This enumeration value is valid for the generator option

Enum for "log-level" options

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
enum class LogLevel : int;

Description

This enumeration value is valid for the log-level option

Option Type

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
enum class OptionType : int;

Enum for "sort-symbol-by" options

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
enum class SortSymbolBy : int;

Description

These enumeration values are valid for the following options:

- sort-members-by - sort-namespace-members-by

Full path to the config file directory

Synopsis

Declared in <mrdocs/Config.hpp>
std::string
configDir() const;

Description

The reference directory for most MrDocs options is the directory of the mrdocs.yml file.

It is used to calculate full paths from relative paths.

This string will always be native style and have a trailing directory separator.

Return Value

The full path to the config file directory.

Normalize the configuration values with a visitor

Synopses

Declared in <mrdocs/Config.hpp>

Normalize the configuration values with a visitor

Expected<void>
normalize(ReferenceDirectories const& dirs);
» more...

Normalize the configuration values with a visitor

template<class F>
Expected<void>
normalize(
    ReferenceDirectories const& dirs,
    F&& f);
» more...

Return Value

Expected<void> with the error if any

Parameters

Name Description
dirs The reference directories to resolve paths
f The visitor

Normalize the configuration values with a visitor

Synopsis

Declared in <mrdocs/Config.hpp>
Expected<void>
normalize(ReferenceDirectories const& dirs);

Description

This function normalizes and validates the configuration values.

Return Value

Expected<void> with the error if any

Parameters

Name Description
dirs The reference directories to resolve paths

Normalize the configuration values with a visitor

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
template<class F>
Expected<void>
normalize(
    ReferenceDirectories const& dirs,
    F&& f);

Description

This function normalizes and validates the configuration values.

Return Value

Expected<void> with the error if any

Parameters

Name Description
dirs The reference directories to resolve paths
f The visitor

Provide pointer-like access to settings fields.

Synopsis

Declared in <mrdocs/Config.hpp>
constexpr
Settings const*
operator->() const noexcept;

Return Value

Pointer to this Settings instance.

Full path to the output directory

Synopsis

Declared in <mrdocs/Config.hpp>
std::string
outputDir() const;

Description

The reference directory for MrDocs output and temporary files is the output directory.

This is either the output option (if already a directory) or the parent directory of the output option (if it is a file).

When the output option is a path that does not exist, we determine if it's a file or directory by checking if the filename contains a period.

This string will always be native style and have a trailing directory separator.

Return Value

The full path to the output directory.

Visit all options

Synopses

Declared in <mrdocs/PublicSettings.hpp>

Visit all options

template<class F>
void
visit(F&& f);
» more...

Visit all options

template<class F>
void
visit(F&& f) const;
» more...

Parameters

Name Description
f The visitor

Visit all options

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
template<class F>
void
visit(F&& f);

Parameters

Name Description
f The visitor

Visit all options

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
template<class F>
void
visit(F&& f) const;

Parameters

Name Description
f The visitor

Synopses

Declared in <mrdocs/PublicSettings.hpp>
constexpr
static
bool
fromString(
    std::string_view const str,
    BaseMemberInheritance& e);
» more...
constexpr
static
bool
fromString(
    std::string_view const str,
    Generator& e);
» more...
constexpr
static
bool
fromString(
    std::string_view const str,
    LogLevel& e);
» more...
constexpr
static
bool
fromString(
    std::string_view const str,
    SortSymbolBy& e);
» more...

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
constexpr
static
bool
fromString(
    std::string_view const str,
    BaseMemberInheritance& e);

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
constexpr
static
bool
fromString(
    std::string_view const str,
    Generator& e);

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
constexpr
static
bool
fromString(
    std::string_view const str,
    LogLevel& e);

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
constexpr
static
bool
fromString(
    std::string_view const str,
    SortSymbolBy& e);

load overloads

Synopses

Declared in <mrdocs/PublicSettings.hpp>

Load the configuration from a YAML string

static
Expected<void>
load(
    PublicSettings& s,
    std::string_view configYaml);
» more...

Loads the public configuration settings from the specified YAML file.

static
Expected<void>
load(
    Config::Settings& s,
    std::string_view configYaml,
    ReferenceDirectories const& dirs);
» more...

Return Value

Parameters

Name Description
s The PublicSettings object to load the configuration into
configYaml The YAML string with the configuration
dirs A constant reference to a PublicSettings::ReferenceDirectories object containing the reference directories.

Load the configuration from a YAML string

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
static
Expected<void>
load(
    PublicSettings& s,
    std::string_view configYaml);

Description

This function loads the values from the YAML string without normalizing or validating them.

After calling this function, call normalize to normalize and validate the options.

Return Value

Expected<void> with the error if any

Parameters

Name Description
s The PublicSettings object to load the configuration into
configYaml The YAML string with the configuration

Loads the public configuration settings from the specified YAML file.

Synopsis

Declared in <mrdocs/Config.hpp>
static
Expected<void>
load(
    Config::Settings& s,
    std::string_view configYaml,
    ReferenceDirectories const& dirs);

Description

This function takes a YAML file and a set of reference directories as input. It parses the YAML file and loads the configuration settings into a Config::Settings object. The reference directories are used to resolve any relative paths in the configuration settings.

Return Value

An Expected object containing a Config::Settings object if the YAML file was successfully parsed and the configuration settings were loaded, or an error otherwise.

Parameters

Name Description
s A reference to a Config::Settings object where the configuration settings will be loaded.
configYaml A string view representing the YAML file containing the configuration settings.
dirs A constant reference to a PublicSettings::ReferenceDirectories object containing the reference directories.

Loads the public configuration settings from the specified file.

Synopsis

Declared in <mrdocs/Config.hpp>
static
Expected<void>
load_file(
    Config::Settings& s,
    std::string_view configPath,
    ReferenceDirectories const& dirs);

Description

This function takes a file path and a set of reference directories as input. It reads the file and loads the configuration settings into a Config::Settings object. The reference directories are used to resolve any relative paths in the configuration settings.

Return Value

An Expected object containing void if the file was successfully read and the configuration settings were loaded, or an error otherwise.

Parameters

Name Description
s A reference to a Config::Settings object where the configuration settings will be loaded.
configPath A string view representing the file path of the configuration settings.
dirs A constant reference to a PublicSettings::ReferenceDirectories object containing the reference directories.

Synopses

Declared in <mrdocs/PublicSettings.hpp>
constexpr
static
std::string_view
toString(BaseMemberInheritance const e);
» more...
constexpr
static
std::string_view
toString(Generator const e);
» more...
constexpr
static
std::string_view
toString(LogLevel const e);
» more...
constexpr
static
std::string_view
toString(SortSymbolBy const e);
» more...

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
constexpr
static
std::string_view
toString(BaseMemberInheritance const e);

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
constexpr
static
std::string_view
toString(Generator const e);

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
constexpr
static
std::string_view
toString(LogLevel const e);

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
constexpr
static
std::string_view
toString(SortSymbolBy const e);

Path to the Addons directory

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::string addons;

Description

Path to the Addons directory.

The Addons directory contains the template files used by generators to create the documentation.

When a custom Addons directory is not specified, the default templates are used.

The default templates are located at the share/mrdocs/addons directory of the MrDocs installation.

Users can create custom templates by copying the default templates to a custom directory and specifying the custom directory using this option.

Additional addons layered on top of the base addons

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::vector<std::string> addonsSupplemental;

Description

Optional list of supplemental addons directories that are loaded after the base addons (built-in or replacement).

Files in later supplemental directories override files from earlier ones and from the base addons.

Use this to add or override a few templates/helpers without copying the entire addons tree.

command is required.

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool autoBrief = true;

Description

Use the first line of the comment as the brief

When set to true, Mr.Docs uses the first line (until the first dot, question mark, or exclamation mark) of the comment as the brief of the symbol.

When set to false, a explicit

Automatically provide missing documentation for special functions and trivial metadata

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool autoFunctionMetadata = true;

Description

When set to true, Mr.Docs automatically provides documentation for special functions, such as constructors, destructors, and operators.

It also provides documentation for missing documentation metadata, such as known types.

Automatically find non-member functions

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool autoRelates = true;

Description

When set to true, Mr.Docs automatically finds non-member functions that are related to the current class.

Base URL for links to source code

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::string baseUrl;

Description

Base URL for links to source code.

The base URL is used to create links to the source code in the documentation.

The base URL is combined with the path to the source file to create the link.

CMake arguments when generating the compilation database from CMakeLists.txt

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::string cmake;

Description

When the compilation-database option is a CMakeLists.txt file, these arguments are passed to the cmake command to generate the compilation_database.json.

Configuration or compilation database files

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::vector<std::string> cmdLineInputs;

Description

The inputs are configuration files or compilation database files that used to generate the documentation.

When the input ends with mrdocs.yml, it is interpreted as a configuration file, the file is read and the options are used to generate the documentation as if it was provided to the config option.

When the input ends with compilation_database.json or CMakeLists.txt, it is interpreted as a compilation database file, the file is read and the compiler flags are used to generate the documentation as if it was provided to the compilation-database option.

Path to the compilation database

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::string compilationDatabase;

Description

Path to the compilation database or a build script to generate it.

The compilation database is a JSON file that contains the compiler commands used to build the source code.

The compilation database is used to extract the compiler flags and the source files used to build the source code and extract symbols.

This option also accepts the path to a build script such as CMakeLists.txt to be used to generate the compilation database.

In this case, Mr.Docs will look for CMake in PATH or in CMAKE_ROOT and run the script to generate the compilation database file.

Number of threads to use

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
unsigned int concurrency = 0;

Description

The desired level of concurrency: 0 for hardware-suggested.

Mr.Docs configuration file

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::string config;

Description

The configuration file is a YAML file that contains the options used to generate the documentation.

The configuration file is read and the options are used to generate the documentation.

The configuration file can be used to specify the source code, the output directory, the compilation database, the generator, and the filters.

A string holding the complete configuration YAML.

Synopsis

Declared in <mrdocs/Config.hpp>
std::string configYaml;

Copy local stylesheets when linking

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool copycss = true;

Description

When linkcss is true, copy bundled and local stylesheet files into the output under stylesdir.

Remote URLs are not copied.

Set to false to skip copying.

Full path to the current working directory

Synopsis

Declared in <mrdocs/Config.hpp>
std::string cwdDir = ".";

Description

This string will always be native style and have a trailing directory separator.

Additional defines passed to the compiler

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::vector<std::string> defines;

Description

Additional defines passed to the compiler when building the source code.

These defines are added to the compilation database regardless of the strategy to generate it.

Output an embeddable document

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool embedded = false;

Description

Output an embeddable document, which excludes the header, the footer, and everything outside the body of the document.

This option is useful for producing documents that can be inserted into an external template.

Input directories to exclude

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::vector<std::string> exclude;

Description

Symbols defined in files in these directories are not extracted even if they are in the list of include directories.

When relative, the paths are relative to the directory of the mrdocs configuration file.

For instance, "include/experimental" will exclude all files in the directory <config-dir>/include/experimental.

File patterns to exclude

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::vector<PathGlobPattern> excludePatterns;

Description

File patterns to exclude.

Files that match these patterns are not extracted even if they are in the list of include directories.

The patterns are relative to the configuration file.

A single * will match all files in the directory.

Double ** will match all files in the directory and its subdirectories.

Symbol patterns to exclude

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::vector<SymbolGlobPattern> excludeSymbols;

Description

A symbol that matches one of these patterns is not extracted even if whitelisted by "include-symbols".

See the documentation for "include-symbols" for the pattern syntax.

Extract all symbols

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool extractAll = true;

Description

When set to true, MrDocs extracts all symbols from the source code, even if no documentation is provided.

MrDocs can only identify whether a symbol is ultimated documented after extracting information from all translation units.

For this reason, when this option is set to false, it's still recommendable to provide file and symbol filters so that only the desired symbols are traversed and stored by MrDocs.

Extraction policy for anonymous namespaces

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool extractAnonymousNamespaces = true;

Description

Determine whether symbols in anonymous namespaces should be extracted.

Extraction policy for empty namespaces

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool extractEmptyNamespaces = false;

Description

Determine whether empty namespaces without documentation should be extracted.

Extraction policy for friend functions and classes

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool extractFriends = true;

Description

Determine whether friend functions and classes should be extracted.

When set to true, MrDocs extracts friend functions and classes.

When set to false, friend functions and classes are not extracted.

Implicit template specializations used as base classes are extracted as dependencies

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool extractImplicitSpecializations = true;

Description

When set to true, MrDocs extracts implicit template specializations used as base classes as dependencies.

This allows MrDocs to extract metadata that can later be used to determine the members of the derived class, as specified by the inherit-base-members option.

Extraction policy for records defined locally in source files

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool extractLocalClasses = true;

Description

Determine whether records only defined locally in source files should be extracted.

Extraction policy for private class members

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool extractPrivate = false;

Description

Determine whether private class members should be extracted

Extraction policy for private base classes

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool extractPrivateBases = false;

Description

Determine whether private base classes should be extracted

Extraction policy for private virtual methods of a class

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool extractPrivateVirtual = false;

Description

Determine whether private virtual methods of a class should be extracted

Extraction policy for static members of a file

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool extractStatic = false;

Description

Determine whether static members of a file should be extracted.

This option does not refer to static members of a class.

File patterns to include

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::vector<PathGlobPattern> filePatterns;

Description

File patterns to include.

Only the files that match these patterns are extracted.

The patterns are relative to the input directories.

Generator used to create the documentation

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
Generator generator = Generator::Adoc;

Description

The generator is responsible for creating the documentation from the extracted symbols.

The generator uses the extracted symbols and the templates to create the documentation.

The generator can create different types of documentation such as HTML, XML, and AsciiDoc.

Use the global namespace page as an index for all symbols

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool globalNamespaceIndex = true;

Description

When set to true, the page for the global namespace will recursively list all symbols in the documentation, not just those in the global namespace.

This makes the global namespace page act as an index for the entire project.

Whether AST visitation failures should not stop the program

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool ignoreFailures = false;

Description

When set to true, MrDocs continues to generate the documentation even if there are AST visitation failures.

AST visitation failures occur when the source code contains constructs that are not supported by MrDocs.

Continue if files are not mapped correctly

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool ignoreMapErrors = false;

Description

When set to true, MrDocs continues to generate the documentation even if some files are not mapped correctly.

Files are not mapped correctly when the source file is not found or the compilation database does not contain the compiler flags for the source file.

Symbols rendered as "implementation-defined"

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::vector<SymbolGlobPattern> implementationDefined;

Description

Symbols that match one of these filters are tagged as "implementation-defined" in the documentation, and so do symbols in scopes tagged as "implementation-defined".

This option is used to exclude symbols from the documentation that are considered part of the private API of the project.

An "implementation-defined" symbol has no documentation page in the output.

If any other symbol refers to it, the reference is rendered as "implementation-defined".

See the documentation for "include-symbol" for the pattern syntax.

Symbol patterns to include

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::vector<SymbolGlobPattern> includeSymbols;

Description

If any patterns are defined here, only symbols that match one of these patterns are extracted.

The patterns are applied to the fully qualified name of the symbol without any leading "::".

A single "*" will match all symbols in the namespace.

Double "**" will match all symbols in the namespace and its subnamespaces.

The patterns also support "?" for any chars, "[<chars>]" for charsets, "[]" for inverted charsets, and "{<glob>,...}" for alternatives.

Include paths

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::vector<std::string> includes;

Description

Include paths.

These paths are used to add directories to the include search path.

The include search path is used to search for headers.

The headers are used to provide declarations and definitions of symbols.

The headers are part of the project and are checked for warnings and errors.

Determine how derived classes inherit base members

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
BaseMemberInheritance inheritBaseMembers = BaseMemberInheritance::CopyDependencies;

Description

Determine how derived classes inherit members of base classes.

When set to never, derived classes do not inherit members of base classes and only the relationship is stored.

When set to reference, derived classes list members of base classes but references are still linked to the base class.

When set to copy-dependencies, a reference is created by default and a copy is created when the base class is a dependency.

When set to copy-all, a copy is created for each base symbol as if it was declared in the derived class.

If the base class is a dependency, the extraction mode is copied from the new parent.

Input directories to extract symbols from

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::vector<std::string> input;

Description

Input directories to extract.

Only symbols defined in files in these directories are extracted.

The paths are relative to the mrdocs configuration file.

Use legible names

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool legibleNames = true;

Description

Use legible names for ids in the documentation.

When set to true, MrDocs uses legible names for symbols in the documentation.

These are symbols that are legible but still safe for URLs.

When the option is set to false, MrDocs uses a hash of the symbol ID.

Standard Library include paths

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::vector<std::string> libcIncludes;

Description

When use-system-libc is disabled, the C standard library headers are available in these paths.

Link stylesheets instead of embedding them

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool linkcss = false;

Description

When set to true, stylesheets are linked with <link> tags instead of being inlined.

Links use stylesdir plus the stylesheet name (e.g.

css/custom.css).

Local styles are copied unless copycss is false; remote URLs are linked as-is.

The minimum reporting level

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
LogLevel logLevel = LogLevel::Info;

Description

The reporting level determines the amount of information displayed during the generation of the documentation.

Include path prefixes allowed to be missing

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::vector<std::string> missingIncludePrefixes;

Description

Specifies path prefixes for include files that, if missing, will not cause documentation generation to fail.

Missing files with these prefixes are served as empty files from an in-memory file system, allowing processing to continue.

For example, use "llvm/" to forgive all includes from LLVM.

If any such path is specified, MrDocs will attempt to synthesize missing included types.

Only simple sets of non-conflicting inferred types can be synthesized.

For more complex types or for better control, provide a shim using the "missing-include-shims" option.

Shims for forgiven missing include files

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::map<std::string, std::string> missingIncludeShims;

Description

Specifies a map of include file paths to shim contents.

If a missing include file matches a forgiven prefix, MrDocs will use the shim content from this map as the file contents.

If no shim is provided for a forgiven file, an empty file is used by default.

Full path to the mrdocs root directory

Synopsis

Declared in <mrdocs/Config.hpp>
std::string mrdocsRootDir;

Description

This is the directory containing the mrdocs executable and the shared files.

This string will always be native style and have a trailing directory separator.

Generate a multipage documentation

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool multipage = true;

Description

Generates a multipage documentation.

The output directory must be a directory.

This option acts as a hint to the generator to create a multipage documentation.

Whether the hint is followed or not depends on the generator.

Disable the bundled default stylesheet

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool noDefaultStyles = false;

Description

When set to true, the bundled stylesheet is not applied.

Combine with an empty stylesheets list to emit no styles at all.

Directory or file for generating output

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::string output;

Description

Multipage generators expect a directory.

Single page generators expect a file or a directory where the file will be created.

If the directory does not exist, it will be created.

Detect and group function overloads

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool overloads = true;

Description

When set to true, MrDocs detects function overloads and groups them as a single symbol type.

The documentation for this new symbol comes from the union of non-ambiguous metadata from the functions.

Recursively include files from "input" paths

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool recursive = true;

Description

Recursively include files.

When set to true, Mr.Docs includes files in subdirectories of the input directories.

When set to false, Mr.Docs includes only the files in the input directories.

The minimum reporting level

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
unsigned int report = -1;

Description

The reporting level determines the amount of information displayed during the generation of the documentation.

The value -1 delegates the decision to the log-level option.

Exposition only symbols rendered as "see-below".

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::vector<SymbolGlobPattern> seeBelow;

Description

Symbols that match one of these filters are tagged as "see-below" in the documentation, and so do symbols in scopes tagged as "see-below".

This option is used to remove details about symbols that are considered part of the private API of the project but the user might need to interact with.

In the documentation page for this symbol, the symbol is exposition only: the synopsis of the implementation is rendered as "see-below" and members of scopes (such as a namespace or record) are not listed.

The rest of the documentation is rendered as usual to explain the symbol.

See the documentation for "include-symbol" for the pattern syntax.

Detect and reduce SFINAE expressions

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool sfinae = true;

Description

When set to true, MrDocs detects SFINAE expressions in the source code and extracts them as part of the documentation.

Expressions such as std::enable_if<...> are detected, removed, and documented as a requirement.

MrDocs uses an algorithm that extracts SFINAE infomation from types by identifying inspecting the primary template and specializations to detect the result type and the controlling expressions in a specialization.

Show enum constant pages in the documentation

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool showEnumConstants = false;

Description

When set to true, MrDocs creates a page for each enum constant in the documentation.

Show namespace pages in the documentation

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool showNamespaces = true;

Description

When set to true, MrDocs creates a page for each namespace in the documentation.

Sort the members of a record

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool sortMembers = true;

Description

When set to true, sort the members of a record by the criterion determined in the sort-members-by option.

When set to false, the members are included in the declaration order they are extracted.

Sort assignment operators first

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool sortMembersAssignment1St = true;

Description

When set to true, assignment operators are sorted first in the list of members of a record.

Determine how members of a record are sorted

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
SortSymbolBy sortMembersBy = SortSymbolBy::Name;

Description

If sort-members is set to true, determine how members of a record are sorted.

When set to name, members are sorted by name.

When set to location, members are sorted by their primary location in the source code, considering the short name of the path and the location in the file.

Sort conversion operators last

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool sortMembersConversionLast = true;

Description

When set to true, conversion operators are sorted last in the list of members of a record or namespace.

Sort constructors first

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool sortMembersCtors1St = true;

Description

When set to true, constructors are sorted first in the list of members of a record.

Sort destructors first

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool sortMembersDtors1St = true;

Description

When set to true, destructors are sorted first in the list of members of a record.

Sort relational operators last

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool sortMembersRelationalLast = true;

Description

When set to true, relational operators are sorted last in the list of members of a record or namespace.

Determine how members of a namespace are sorted

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
SortSymbolBy sortNamespaceMembersBy = SortSymbolBy::Name;

Description

Although members of namespaces are always sorted, determine how members of a namespace are sorted.

When set to name, members are sorted by name.

When set to location, members are sorted by their primary location in the source code, considering the short name of the path and the location in the file.

Path to the root directory of the source code

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::string sourceRoot;

Description

Path to the root directory of the source code.

This path is used as a default for input files and a base for relative paths formed from absolute paths.

This should typically be the root directory of the git project, as relative paths formed from it can be used to create links to these source files in the repository.

Templates use the base-url option to create links to the source code.

C++ Standard Library include paths

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::vector<std::string> stdlibIncludes;

Description

When use-system-stdlib is disabled, the C++ standard library headers are available in these paths.

Directory for linked stylesheets

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::string stylesdir;

Description

Directory used to build the href for linked stylesheets when linkcss is true.

Defaults to css.

The directory is created under the output root when copying local styles (e.g.

css/mrdocs-default.css).

Ordered list of stylesheets to apply to HTML output

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::vector<std::string> stylesheets;

Description

Ordered list of stylesheet names or paths.

If empty, the bundled stylesheet is used.

Entries can be local paths or remote URLs; remote URLs are only linked when linkcss is true.

Inline mode embeds local styles; link mode emits <link> tags for each entry and copies local files.

System include paths

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::vector<std::string> systemIncludes;

Description

System include paths.

These paths are used to add directories to the system include search path.

The system include search path is used to search for system headers.

The system headers are headers that are provided by the system and are not part of the project.

The system headers are used to provide the standard library headers and other system headers.

The system headers are not part of the project and are not checked for warnings and errors.

Path for the tagfile

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
std::string tagfile;

Description

Specifies the full path (filename) where the generated tagfile should be saved.

If left empty, no tagfile will be generated.

Use the system C standard library

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool useSystemLibc = false;

Description

To achieve reproducible results, MrDocs bundles the LibC headers with its definitions.

To use the C standard library available in the system instead, set this option to true.

Use the system C++ standard library

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool useSystemStdlib = false;

Description

To achieve reproducible results, MrDocs bundles the LibC++ headers.

To use the C++ standard library available in the system instead, set this option to true.

Verbose output

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool verbose = false;

Description

Verbose output.

When set to true, MrDocs outputs additional information during the generation of the documentation.

Treat warnings as errors

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool warnAsError = false;

Description

When set to true, MrDocs treats warnings as errors and stops the generation of the documentation.

Warn if a documentation reference is broken

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool warnBrokenRef = true;

Description

When set to true, MrDocs outputs a warning message if a reference in the documentation is broken.

Warn if documentation has errors

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool warnIfDocError = true;

Description

When set to true, MrDocs outputs a warning message if the documentation of a symbol has errors such as duplicate parameters and parameters that don't exist.

Warn if enum values are not documented

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool warnIfUndocEnumVal = true;

Description

When set to true, MrDocs outputs a warning message if an enum value is not documented.

Warn if symbols are not documented

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool warnIfUndocumented = true;

Description

When set to true, MrDocs outputs a warning message if a symbol that passes all filters is not documented.

Warn if parameters are not documented

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool warnNoParamdoc = true;

Description

When set to true, MrDocs outputs a warning message if a named function parameter is not documented.

Warn if documented functions have unnamed parameters

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool warnUnnamedParam = false;

Description

When set to true, MrDocs outputs a warning message if a documented function has a parameter that is not named.

Enable warning messages

Synopsis

Declared in <mrdocs/PublicSettings.hpp>
bool warnings = true;

Description

When set to true, MrDocs outputs warning messages during the generation of the documentation.

It is usually recommended to enable warnings while writing the documentation.

Destructor.

Synopsis

Declared in <mrdocs/Config.hpp>
virtual
~Config() noexcept = 0;

Return a DOM object representing the configuration keys.

Synopsis

Declared in <mrdocs/Config.hpp>
virtual
dom::Object const&
object() const = 0;

Description

The object is invalidated when the configuration is moved or destroyed.

Return Value

a DOM object representing the configuration keys.

Return the settings used to generate the Corpus and Docs.

Synopsis

Declared in <mrdocs/Config.hpp>
constexpr
Settings const*
operator->() const noexcept;

Return Value

the settings used to generate the Corpus and Docs.

Return the settings used to generate the Corpus and Docs.

Synopsis

Declared in <mrdocs/Config.hpp>
virtual
Settings const&
settings() const noexcept = 0;

Return Value

the settings used to generate the Corpus and Docs.

Return a pool of threads for executing work.

Synopsis

Declared in <mrdocs/Config.hpp>
virtual
ThreadPool&
threadPool() const noexcept = 0;

Return Value

a pool of threads for executing work.

Construct an empty configuration interface. Implementations populate settings in derived classes.

Synopsis

Declared in <mrdocs/Config.hpp>
Config() noexcept;

Represents an expression with a (possibly known) value

Synopsis

Declared in <mrdocs/Metadata/Expression.hpp>
template<typename T>
struct ConstantExprInfo
    : ExprInfo

Base Classes

Name Description
ExprInfoRepresents an expression

Types

NameDescription
type The underlying type of the expression

Member Functions

NameDescription
asExpr View this object as its base expression.
operator<=> Three-way comparison operators

Data Members

NameDescription
Value The expressions value, if it is known
Written The expression, as written

Non-Member Functions

Name Description
mergeMerge metadata from another expression.
mergeMerge metadata from another constant expression.

The underlying type of the expression

Synopsis

Declared in <mrdocs/Metadata/Expression.hpp>
using type = T;

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/Expression.hpp>

Order constant expressions by written form and value.

auto
operator<=>(ConstantExprInfo const& rhs) const = default;
» more...

Order expressions by written form.

constexpr
auto
operator<=>(ExprInfo const& rhs) const = default;
» more...

Order constant expressions by written form and value.

Synopsis

Declared in <mrdocs/Metadata/Expression.hpp>
auto
operator<=>(ConstantExprInfo const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Order expressions by written form.

Synopsis

Declared in <mrdocs/Metadata/Expression.hpp>
constexpr
auto
operator<=>(ExprInfo const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

The expressions value, if it is known

Synopsis

Declared in <mrdocs/Metadata/Expression.hpp>
Optional<type> Value;

Description

The value of an expression will be unknown if it is e.g. dependent on a template parameter

Non-type template argument.

Synopsis

Declared in <mrdocs/Metadata/TArg/ConstantTArg.hpp>
struct ConstantTArg final
    : TArgCommonBase<TArgKind::Constant>

Base Classes

Name Description
TArgCommonBase<TArgKind::Constant>CRTP base that fixes the argument kind.

Member Functions

NameDescription
operator<=> Compare constant arguments by expression.

Static Member Functions

Name
isConstant
isTemplate
isType

Data Members

NameDescription
Value Template argument expression.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
toStringConvert a template argument to a human-readable string.

Compare constant arguments by expression.

Synopsis

Declared in <mrdocs/Metadata/TArg/ConstantTArg.hpp>
constexpr
auto
operator<=>(ConstantTArg const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr
static
bool
isConstant() noexcept;

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr
static
bool
isTemplate() noexcept;

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr
static
bool
isType() noexcept;

Template argument expression.

Synopsis

Declared in <mrdocs/Metadata/TArg/ConstantTArg.hpp>
ExprInfo Value;

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr static
TArgKind kind_id;

A constant template parameter

Synopsis

Declared in <mrdocs/Metadata/TParam/ConstantTParam.hpp>
struct ConstantTParam final
    : TParamCommonBase<TParamKind::Constant>

Description

Before C++26, constant template parameters were called non-type template parameter in the standard wording. The terminology was changed by P2841R6 / PR#7587.

Base Classes

Name Description
TParamCommonBase<TParamKind::Constant>CRTP base that fixes the parameter kind.

Member Functions

NameDescription
operator<=> Compare constant parameters by type and defaults.

Static Member Functions

Name
isConstant
isTemplate
isType

Data Members

NameDescription
Type Type of the non-type template parameter

Static Data Members

Name
kind_id

Compare constant parameters by type and defaults.

Synopses

Declared in <mrdocs/Metadata/TParam/ConstantTParam.hpp>

Compare constant parameters by type and defaults.

std::strong_ordering
operator<=>(ConstantTParam const& rhs) const;
» more...

Three-way comparison operator

auto
operator<=>(TParamCommonBase<mrdocs::TParamKind::Constant> const& rhs) const = default;
» more...

Compare constant parameters by type and defaults.

Synopsis

Declared in <mrdocs/Metadata/TParam/ConstantTParam.hpp>
std::strong_ordering
operator<=>(ConstantTParam const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
auto
operator<=>(TParamCommonBase<mrdocs::TParamKind::Constant> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr
static
bool
isConstant() noexcept;

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr
static
bool
isTemplate() noexcept;

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr
static
bool
isType() noexcept;

Type of the non-type template parameter

Synopsis

Declared in <mrdocs/Metadata/TParam/ConstantTParam.hpp>
Polymorphic<Type> Type = Polymorphic<struct Type>(AutoType{});

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr static
TParamKind kind_id;

The collection of declarations in extracted form.

Synopsis

Declared in <mrdocs/Corpus.hpp>
class Corpus;

Types

NameDescription
TraverseOptions Options to traverse the members of an Symbol.
iterator The iterator type for the index of all symbols.

Member Functions

NameDescription
~Corpus [destructor] [virtual]Destructor.
begin [virtual]Return the begin iterator for the index of all symbols.
empty Whether the corpus contains any symbols.
end [virtual]Return the end iterator for the index.
exists Return true if an Symbol with the specified symbol ID exists.
find [virtual]Return the Symbol with the matching ID, or nullptr.
get Return the Symbol with the specified symbol ID.
globalNamespace Return the metadata for the global namespace.
lookup lookup overloads
qualifiedName qualifiedName overloads
traverse Visit the members of specified Symbol.
visitIDs Visit the specified Symbol IDs

Data Members

NameDescription
config The configuration used to generate this corpus.

Protected Member Functions

NameDescription
Corpus [constructor]Create a corpus using the provided configuration.

Non-Member Functions

Name Description
getParentsReturn a list of the parent symbols of the specified Symbol.

Options to traverse the members of an Symbol.

Synopsis

Declared in <mrdocs/Corpus.hpp>
struct TraverseOptions;

Data Members

NameDescription
ordered Whether to traverse in a stable order
recursive Whether to skip inherited members whose parent is not the Symbol
skipInherited Whether to skip inherited members whose parent is not the Symbol

Whether to traverse in a stable order

Synopsis

Declared in <mrdocs/Corpus.hpp>
bool ordered = false;

Whether to skip inherited members whose parent is not the Symbol

Synopsis

Declared in <mrdocs/Corpus.hpp>
bool recursive = false;

Whether to skip inherited members whose parent is not the Symbol

Synopsis

Declared in <mrdocs/Corpus.hpp>
bool skipInherited = false;

The iterator type for the index of all symbols.

Synopsis

Declared in <mrdocs/Corpus.hpp>
class iterator;

Description

The iterator is a forward iterator that iterates over all symbols in the index. It dereferences to a reference to a const Symbol.

The logic for incrementing the iterator is provided by the Corpus implementation via a function that retuns the next Symbol in the index, or nullptr if there are no more.

Types

NameDescription
const_pointer Pointer to const value.
const_reference Reference to const value.
difference_type Signed difference type.
pointer Pointer to value.
reference Reference to value.
size_type Unsigned size type.
value_type Value type yielded by the iterator.

Member Functions

NameDescription
iterator [constructor]Constructors
operator= Copy assignment.
operator* Dereference to the current symbol.
operator++ Increment operators
operator-> Pointer-like access to the current symbol.
operator== Equality comparison.
operator!= Inequality comparison.

Pointer to const value.

Synopsis

Declared in <mrdocs/Corpus.hpp>
using const_pointer = value_type const*;

Reference to const value.

Synopsis

Declared in <mrdocs/Corpus.hpp>
using const_reference = value_type const&;

Signed difference type.

Synopsis

Declared in <mrdocs/Corpus.hpp>
using difference_type = std::ptrdiff_t;

Pointer to value.

Synopsis

Declared in <mrdocs/Corpus.hpp>
using pointer = value_type*;

Reference to value.

Synopsis

Declared in <mrdocs/Corpus.hpp>
using reference = value_type&;

Unsigned size type.

Synopsis

Declared in <mrdocs/Corpus.hpp>
using size_type = std::size_t;

Value type yielded by the iterator.

Synopsis

Declared in <mrdocs/Corpus.hpp>
using value_type = Symbol const;

Constructors

Synopses

Declared in <mrdocs/Corpus.hpp>

Default constructor.

constexpr
iterator() = default;
» more...

Copy constructor.

constexpr
iterator(iterator const& other) = default;
» more...

Construct an iterator from corpus storage pointers.

iterator(
    Corpus const* corpus,
    Symbol const* val,
    Symbol const*(* next)(Corpus const*, Symbol const*));
» more...

Parameters

Name Description
corpus The parent corpus.
val The current symbol.
next Function that advances to the next symbol.

Default constructor.

Synopsis

Declared in <mrdocs/Corpus.hpp>
constexpr
iterator() = default;

Copy constructor.

Synopsis

Declared in <mrdocs/Corpus.hpp>
constexpr
iterator(iterator const& other) = default;

Parameters

Name Description
other The object to copy construct from

Construct an iterator from corpus storage pointers.

Synopsis

Declared in <mrdocs/Corpus.hpp>
iterator(
    Corpus const* corpus,
    Symbol const* val,
    Symbol const*(* next)(Corpus const*, Symbol const*));

Parameters

Name Description
corpus The parent corpus.
val The current symbol.
next Function that advances to the next symbol.

Copy assignment.

Synopsis

Declared in <mrdocs/Corpus.hpp>
constexpr
iterator&
operator=(iterator const& other) = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Dereference to the current symbol.

Synopsis

Declared in <mrdocs/Corpus.hpp>
const_reference
operator*() const noexcept;

Return Value

Reference to the current Symbol.

Increment operators

Synopses

Declared in <mrdocs/Corpus.hpp>

Pre-increment.

iterator&
operator++() noexcept;
» more...

Post-increment.

iterator
operator++(int dummy) noexcept;
» more...

Return Value

Parameters

Name Description
dummy Unused postfix increment discriminator.

Pre-increment.

Synopsis

Declared in <mrdocs/Corpus.hpp>
iterator&
operator++() noexcept;

Return Value

*this advanced to next element.

Post-increment.

Synopsis

Declared in <mrdocs/Corpus.hpp>
iterator
operator++(int dummy) noexcept;

Return Value

Iterator prior to increment.

Parameters

Name Description
dummy Unused postfix increment discriminator.

Pointer-like access to the current symbol.

Synopsis

Declared in <mrdocs/Corpus.hpp>
const_pointer
operator->() const noexcept;

Return Value

Pointer to the current Symbol.

Equality comparison.

Synopsis

Declared in <mrdocs/Corpus.hpp>
bool
operator==(iterator const& other) const noexcept;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
other The right operand

Inequality comparison.

Synopsis

Declared in <mrdocs/Corpus.hpp>
bool
operator!=(iterator const& other) const noexcept;

Return Value

true if the objects are not equal, false otherwise

Parameters

Name Description
other The right operand

Destructor.

Synopsis

Declared in <mrdocs/Corpus.hpp>
virtual
~Corpus() noexcept;

Return the begin iterator for the index of all symbols.

Synopsis

Declared in <mrdocs/Corpus.hpp>
virtual
iterator
begin() const noexcept = 0;

Return Value

the begin iterator for the index of all symbols.

Whether the corpus contains any symbols.

Synopsis

Declared in <mrdocs/Corpus.hpp>
bool
empty() const noexcept;

Return Value

true if the corpus is empty, otherwise false.

Return the end iterator for the index.

Synopsis

Declared in <mrdocs/Corpus.hpp>
virtual
iterator
end() const noexcept = 0;

Return Value

the end iterator for the index.

Return true if an Symbol with the specified symbol ID exists.

Synopsis

Declared in <mrdocs/Corpus.hpp>
bool
exists(SymbolID const& id) const noexcept;

Description

This function uses the find function to locate the Symbol with the specified symbol ID and returns true if it exists, otherwise false.

Return Value

true if an Symbol with the specified symbol ID exists.

Parameters

Name Description
id A unique identifier for a symbol.

Return the Symbol with the matching ID, or nullptr.

Synopsis

Declared in <mrdocs/Corpus.hpp>
virtual
Symbol const*
find(SymbolID const& id) const noexcept = 0;

Return Value

the Symbol with the matching ID, or nullptr.

Parameters

Name Description
id A unique identifier for a symbol.

Return the Symbol with the specified symbol ID.

Synopsis

Declared in <mrdocs/Corpus.hpp>
template<class T = Symbol>
requires std::derived_from<T, Symbol>
T const&
get(SymbolID const& id) const noexcept;

Description

This function uses the find function to locate the Symbol with the specified symbol ID. The result is converted to the specified type T and returned.

The function exists can be used to determine if an Symbol with the specified symbol ID exists. If the id does not exist, the behavior is undefined.

If the Symbol is not of type T, the behavior is undefined.

Return Value

the Symbol with the specified symbol ID.

Parameters

Name Description
id A unique identifier for a symbol.

Return the metadata for the global namespace.

Synopsis

Declared in <mrdocs/Corpus.hpp>
NamespaceSymbol const&
globalNamespace() const noexcept;

Description

This function is equivalent to calling get with the symbol ID for the global namespace.

Return Value

the metadata for the global namespace.

lookup overloads

Synopses

Declared in <mrdocs/Corpus.hpp>

Return the Symbol for the matching string in the global context.

Expected<Symbol const&>
lookup(std::string_view name) const;
» more...

Return the Symbol for the matching string in a given context.

virtual
Expected<Symbol const&>
lookup(
    SymbolID const& context,
    std::string_view name) const = 0;
» more...

Return Value

Parameters

Name Description
name The name of the symbol to look up.
context The context to look up the symbol in.

Return the Symbol for the matching string in the global context.

Synopsis

Declared in <mrdocs/Corpus.hpp>
Expected<Symbol const&>
lookup(std::string_view name) const;

Return Value

The Symbol for the symbol with the specified name in the global context, or an error if not found.

Parameters

Name Description
name The name of the symbol to look up.

Return the Symbol for the matching string in a given context.

Synopsis

Declared in <mrdocs/Corpus.hpp>
virtual
Expected<Symbol const&>
lookup(
    SymbolID const& context,
    std::string_view name) const = 0;

Return Value

The Symbol for the symbol with the specified name in the specified context, or an error if not found. If multiple symbols match, one is returned arbitrarily. Use traverse to find all matching symbols.

Parameters

Name Description
context The context to look up the symbol in.
name The name of the symbol to look up.

qualifiedName overloads

Synopses

Declared in <mrdocs/Corpus.hpp>

Return the fully qualified name of I.

std::string
qualifiedName(Symbol const& I) const;
» more...

Populate temp with the fully qualified name of I.

virtual
void
qualifiedName(
    Symbol const& I,
    std::string& temp) const = 0;
» more...

Return the qualified name of I relative to context.

std::string
qualifiedName(
    Symbol const& I,
    SymbolID const& context) const;
» more...

Populate result with a qualified name relative to context. If context contains I, the name is relative; otherwise it is computed from the global namespace.

virtual
void
qualifiedName(
    Symbol const& I,
    SymbolID const& context,
    std::string& result) const = 0;
» more...

Parameters

Name Description
I The Symbol to get the qualified name for.
temp The string to store the result in.
context The context used to qualify the name.
result Output string receiving the name.

Return the fully qualified name of I.

Synopsis

Declared in <mrdocs/Corpus.hpp>
std::string
qualifiedName(Symbol const& I) const;

Return Value

the fully qualified name of I.

Parameters

Name Description
I Base class with common properties of all symbols

Populate temp with the fully qualified name of I.

Synopsis

Declared in <mrdocs/Corpus.hpp>
virtual
void
qualifiedName(
    Symbol const& I,
    std::string& temp) const = 0;

Parameters

Name Description
I The Symbol to get the qualified name for.
temp The string to store the result in.

Return the qualified name of I relative to context.

Synopsis

Declared in <mrdocs/Corpus.hpp>
std::string
qualifiedName(
    Symbol const& I,
    SymbolID const& context) const;

Return Value

the qualified name of I relative to context.

Parameters

Name Description
I Base class with common properties of all symbols
context A unique identifier for a symbol.

Populate result with a qualified name relative to context. If context contains I, the name is relative; otherwise it is computed from the global namespace.

Synopsis

Declared in <mrdocs/Corpus.hpp>
virtual
void
qualifiedName(
    Symbol const& I,
    SymbolID const& context,
    std::string& result) const = 0;

Parameters

Name Description
I The Symbol to name.
context The context used to qualify the name.
result Output string receiving the name.

Visit the members of specified Symbol.

Synopses

Declared in <mrdocs/Corpus.hpp>

Visit the members of specified Symbol.

template<
    std::derived_from<Symbol> T,
    class F,
    class... Args>
void
traverse(
    T const& I,
    F&& f,
    Args&&... args) const;
» more...

Visit the members of specified Symbol.

template<
    std::derived_from<Symbol> T,
    class F,
    class... Args>
void
traverse(
    TraverseOptions const& opts,
    T const& I,
    F&& f,
    Args&&... args) const;
» more...

Parameters

Name Description
I The Symbol to visit.
f The function to invoke.
args The arguments to pass to the function.
opts The options to traverse.

Visit the members of specified Symbol.

Synopsis

Declared in <mrdocs/Corpus.hpp>
template<
    std::derived_from<Symbol> T,
    class F,
    class... Args>
void
traverse(
    T const& I,
    F&& f,
    Args&&... args) const;

Description

This function invokes the specified function f for each member of the specified Symbol I.

For each member of I, the function will invoke the function object fn with a type derived from Symbol as the first argument, followed by args....

The type of the first argument is determined by the SymbolKind of the Symbol object.

Parameters

Name Description
I The Symbol to visit.
f The function to invoke.
args The arguments to pass to the function.

Visit the members of specified Symbol.

Synopsis

Declared in <mrdocs/Corpus.hpp>
template<
    std::derived_from<Symbol> T,
    class F,
    class... Args>
void
traverse(
    TraverseOptions const& opts,
    T const& I,
    F&& f,
    Args&&... args) const;

Description

This function invokes the specified function f for each member of the specified Symbol I.

For each member of I, the function will invoke the function object fn with a type derived from Symbol as the first argument, followed by args....

The type of the first argument is determined by the SymbolKind of the Symbol object.

Parameters

Name Description
opts The options to traverse.
I The Symbol to visit.
f The function to invoke.
args The arguments to pass to the function.

Visit the specified Symbol IDs

Synopsis

Declared in <mrdocs/Corpus.hpp>
template<
    range_of<SymbolID> R,
    class F,
    class... Args>
void
visitIDs(
    R&& range,
    F&& f,
    Args&&... args) const;

Description

This function invokes the specified function f for each member of the specified range of Symbol IDs.

For each member of I associated with the ID in range, the function will invoke the function object fn with a type derived from Symbol as the first argument, followed by args....

The type of the first argument is determined by the SymbolKind of the Symbol object.

Parameters

Name Description
range A range of SymbolID objects.
f The function to invoke.
args The arguments to pass to the function.

The configuration used to generate this corpus.

Synopsis

Declared in <mrdocs/Corpus.hpp>
Config const& config;

Create a corpus using the provided configuration.

Synopsis

Declared in <mrdocs/Corpus.hpp>
explicit
Corpus(Config const& config_) noexcept;

Parameters

Name Description
config_ The object to copy construct from

decltype(expr) type wrapper.

Synopsis

Declared in <mrdocs/Metadata/Type/DecltypeType.hpp>
struct DecltypeType final
    : TypeCommonBase<TypeKind::Decltype>

Base Classes

Name Description
TypeCommonBase<TypeKind::Decltype>CRTP base that ties a concrete type to a fixed TypeKind.

Member Functions

NameDescription
operator<=> Compare decltype operands.

Static Member Functions

Name
isArray
isAuto
isDecltype
isFunction
isLValueReference
isMemberPointer
isNamed
isPointer
isRValueReference

Data Members

NameDescription
Operand Operand expression for decltype.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
innerTypeReturn the inner type.
innerTypeReturn the inner type.
innerTypePtrReturn the inner type.
innerTypePtrReturn the inner type.
toStringRender a type to a human-readable string.

Compare decltype operands.

Synopses

Declared in <mrdocs/Metadata/Type/DecltypeType.hpp>

Compare decltype operands.

constexpr
auto
operator<=>(DecltypeType const& rhs) const = default;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(TypeCommonBase<mrdocs::TypeKind::Decltype> const& rhs) const = default;
» more...

Compare decltype operands.

Synopsis

Declared in <mrdocs/Metadata/Type/DecltypeType.hpp>
constexpr
auto
operator<=>(DecltypeType const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
auto
operator<=>(TypeCommonBase<mrdocs::TypeKind::Decltype> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isArray() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isAuto() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isDecltype() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isLValueReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isMemberPointer() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isNamed() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isPointer() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isRValueReference() noexcept;

Operand expression for decltype.

Synopsis

Declared in <mrdocs/Metadata/Type/DecltypeType.hpp>
ExprInfo Operand;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr static
TypeKind kind_id;

A processed documentation comment attached to a declaration.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
struct DocComment;

Description

A complete documentation comment document consists of a sequence of text blocks. Blocks are the top-level structural units that might contain other blocks or inline elements. These are analogous to markdown blocks.

Inline elements (text, emphasis, links, code spans, etc.) live inside certain block types, like paragraphs or headings. Inlines can contain other inlines (e.g., emphasis contains text, link contains text), but they cannot directly contain blocks.

Some blocks contain metadata about the symbol being documented, such as parameters and return values. These blocks are parsed as usual, but are stored separately in the DocComment structure.

Each block in the document might contain:

- No other blocks (leaf blocks) - Other blocks (container blocks: e.g. lists)

When they contain no other blocks, they might be:

- Inlines only (e.g. paragraphs) - No inlines (e.g. horizontal rule)

Inline content elements contain other inlines but cannot contain blocks.

Member Functions

NameDescription
DocComment [constructor]Constructors
append Append blocks from another DocComment to this.
empty Return true if this is empty
operator== Equality compares all stored blocks.
operator!= Inequality is the negation of equality.
operator<=> Three-way comparison on the rendered block sequence.

Data Members

NameDescription
Document The list of text blocks.
brief A brief description of the symbol.
exceptions The list of exceptions.
params The list of parameters.
postconditions The list of postconditions.
preconditions The list of preconditions.
related The list of "related" references.
relates The list of "relates" references.
returns The list of return type descriptions.
sees The list of "see also" references.
tparams The list of template parameters.

Non-Member Functions

Name Description
mergeAppend blocks from other into I, preserving order.

Constructors

Synopses

Declared in <mrdocs/Metadata/DocComment.hpp>

Constructor.

DocComment() noexcept;
» more...

Constructor

explicit
DocComment(std::vector<Polymorphic<doc::Block>> blocks);
» more...

Constructor.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
DocComment() noexcept;

Constructor

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
explicit
DocComment(std::vector<Polymorphic<doc::Block>> blocks);

Parameters

Name Description
blocks The object to construct from

Append blocks from another DocComment to this.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
void
append(DocComment&& other);

Parameters

Name Description
other A processed documentation comment attached to a declaration.

Return true if this is empty

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
bool
empty() const noexcept;

Return Value

true if this is empty

Equality compares all stored blocks.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
constexpr
bool
operator==(DocComment const& rhs) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
rhs The right operand

Inequality is the negation of equality.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
bool
operator!=(DocComment const& rhs) const noexcept;

Return Value

true if the objects are not equal, false otherwise

Parameters

Name Description
rhs The right operand

Three-way comparison on the rendered block sequence.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
auto
operator<=>(DocComment const& other) const noexcept;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

The list of text blocks.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
std::vector<Polymorphic<doc::Block>> Document;

A brief description of the symbol.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
Optional<doc::BriefBlock> brief;

The list of exceptions.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
std::vector<doc::ThrowsBlock> exceptions;

The list of parameters.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
std::vector<doc::ParamBlock> params;

The list of postconditions.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
std::vector<doc::PostconditionBlock> postconditions;

The list of preconditions.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
std::vector<doc::PreconditionBlock> preconditions;

The list of "related" references.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
std::vector<doc::ReferenceInline> related;

Description

These references are the inverse of the relates command.

They are calculated automatically by MrDocs and are rendered as Non-Member Functions.

The list of "relates" references.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
std::vector<doc::ReferenceInline> relates;

Description

These references are created with the relates command.

The list of return type descriptions.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
std::vector<doc::ReturnsBlock> returns;

Description

Multiple return descriptions are allowed.

The results are concatenated in the order they appear in the source code.

The list of "see also" references.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
std::vector<doc::SeeBlock> sees;

The list of template parameters.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
std::vector<doc::TParamBlock> tparams;

Front-end factory for producing Dom nodes.

Synopsis

Declared in <mrdocs/Metadata/DomCorpus.hpp>
class DomCorpus;

Description

This class keeps a reference to the Corpus of extracted metadata, and provides a mechanism for constructing DOM nodes representing the metadata.

A Generator can subclass this object then uses it to create the Dom nodes used as input for rendering template engines.

Member Functions

NameDescription
DomCorpus [constructor]Constructor.
~DomCorpus [destructor] [virtual]Destructor.
construct [virtual]Construct a lazy Dom object representing the specified symbol.
get Return a Dom object representing the given symbol.
getCorpus Returns the Corpus associated with the Dom.
getDocComment [virtual]Return a Dom value representing the DocComment.
operator* Returns the Corpus associated with the Dom.
operator-> Returns the Corpus associated with the Dom.

Non-Member Functions

Name Description
getParentsReturn a list of the parent symbols of the specified Info.

Constructor.

Synopsis

Declared in <mrdocs/Metadata/DomCorpus.hpp>
DomCorpus(Corpus const& corpus);

Description

Ownership of the specified Corpus is not transferred; the caller is responsible for ensuring the lifetime extension of the object.

Parameters

Name Description
corpus The Corpus whose metadata to use.

Destructor.

Synopsis

Declared in <mrdocs/Metadata/DomCorpus.hpp>
virtual
~DomCorpus();

Construct a lazy Dom object representing the specified symbol.

Synopsis

Declared in <mrdocs/Metadata/DomCorpus.hpp>
virtual
dom::Object
construct(Symbol const& I) const;

Description

This function is called internally when a dom::Object representing a symbol needs to be constructed because it was not found in the cache.

Return Value

A container of key and value pairs.

Parameters

Name Description
I Base class with common properties of all symbols

Return a Dom object representing the given symbol.

Synopsis

Declared in <mrdocs/Metadata/DomCorpus.hpp>
dom::Value
get(SymbolID const& id) const;

Return Value

A value containing the symbol contents, or null if id is invalid.

Parameters

Name Description
id The id of the symbol to return.

Returns the Corpus associated with the Dom.

Synopsis

Declared in <mrdocs/Metadata/DomCorpus.hpp>
Corpus const&
getCorpus() const;

Return Value

the Corpus associated with the Dom.

Return a Dom value representing the DocComment.

Synopsis

Declared in <mrdocs/Metadata/DomCorpus.hpp>
virtual
dom::Value
getDocComment(DocComment const& jd) const;

Description

The default implementation returns null. A Generator should override this member and return a value that has suitable strings in the generator's output format.

Return Value

a Dom value representing the DocComment.

Parameters

Name Description
jd A processed documentation comment attached to a declaration.

Returns the Corpus associated with the Dom.

Synopsis

Declared in <mrdocs/Metadata/DomCorpus.hpp>
Corpus const&
operator*() const;

Return Value

the Corpus associated with the Dom.

Returns the Corpus associated with the Dom.

Synopsis

Declared in <mrdocs/Metadata/DomCorpus.hpp>
Corpus const*
operator->() const;

Return Value

the Corpus associated with the Dom.

Info for enum constants.

Synopsis

Declared in <mrdocs/Metadata/Symbol/EnumConstant.hpp>
struct EnumConstantSymbol final
    : SymbolCommonBase<SymbolKind::EnumConstant>

Base Classes

Name Description
SymbolCommonBase<SymbolKind::EnumConstant>Base class for providing variant discriminator functions.

Member Functions

NameDescription
EnumConstantSymbol [constructor]Construct an enum constant with its ID.
operator<=> Three-way comparison operator

Static Member Functions

Name
isConcept
isEnum
isEnumConstant
isFunction
isGuide
isNamespace
isNamespaceAlias
isOverloads
isRecord
isTypedef
isUsing
isVariable

Data Members

NameDescription
Initializer The initializer expression, if any

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
canMergeCheck whether two symbols may be merged.
getPrimaryLocationDetermine a location to use when none is explicitly chosen.
mergeMerges two Symbol objects.
mergeMerge another EnumConstantSymbol into this one.

Construct an enum constant with its ID.

Synopsis

Declared in <mrdocs/Metadata/Symbol/EnumConstant.hpp>
explicit
EnumConstantSymbol(SymbolID ID) noexcept;

Parameters

Name Description
ID The object to construct from

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
auto
operator<=>(SymbolCommonBase<mrdocs::SymbolKind::EnumConstant> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isConcept() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnum() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnumConstant() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isGuide() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespace() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespaceAlias() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isOverloads() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isRecord() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isTypedef() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isUsing() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isVariable() noexcept;

The initializer expression, if any

Synopsis

Declared in <mrdocs/Metadata/Symbol/EnumConstant.hpp>
ConstantExprInfo<uint64_t> Initializer;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
constexpr static
SymbolKind kind_id;

Metadata for an enumeration declaration.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Enum.hpp>
struct EnumSymbol final
    : SymbolCommonBase<SymbolKind::Enum>

Base Classes

Name Description
SymbolCommonBase<SymbolKind::Enum>Base class for providing variant discriminator functions.

Member Functions

NameDescription
EnumSymbol [constructor]Construct an enum symbol with its ID.
operator<=> Three-way comparison operator

Static Member Functions

Name
isConcept
isEnum
isEnumConstant
isFunction
isGuide
isNamespace
isNamespaceAlias
isOverloads
isRecord
isTypedef
isUsing
isVariable

Data Members

NameDescription
Constants The members of this scope.
Scoped Indicates whether this enum is scoped (e.g. enum class).
UnderlyingType The underlying type of this enum, if explicitly specified.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
allMembersReturn the list of enum constants for this symbol.
canMergeCheck whether two symbols may be merged.
getPrimaryLocationDetermine a location to use when none is explicitly chosen.
mergeMerges two Symbol objects.
mergeMerge another EnumSymbol into this one.

Construct an enum symbol with its ID.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Enum.hpp>
explicit
EnumSymbol(SymbolID ID) noexcept;

Parameters

Name Description
ID The object to construct from

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
auto
operator<=>(SymbolCommonBase<mrdocs::SymbolKind::Enum> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isConcept() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnum() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnumConstant() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isGuide() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespace() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespaceAlias() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isOverloads() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isRecord() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isTypedef() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isUsing() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isVariable() noexcept;

The members of this scope.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Enum.hpp>
std::vector<SymbolID> Constants;

Description

All members are enum constants.

Enum constants are independent symbol types that can be documented separately.

Indicates whether this enum is scoped (e.g. enum class).

Synopsis

Declared in <mrdocs/Metadata/Symbol/Enum.hpp>
bool Scoped = false;

Description

If true, the enumerators are accessed with the scope resolution operator (e.g. EnumName::Enumerator).

If false, the enumerators are accessed directly (e.g. Enumerator) in the parent context.

The underlying type of this enum, if explicitly specified.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Enum.hpp>
Optional<Polymorphic<Type>> UnderlyingType = std::nullopt;

Description

If not specified, the underlying type is an implementation-defined integral type that can represent all the enumerator values defined in the enumeration.

For enum Foo : short { ... }; this will be represent short.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
constexpr static
SymbolKind kind_id;

Holds the description of an error, or success.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
class Error final

Member Functions

NameDescription
Error [constructor]Constructor.
operator= Assignment operators
Throw Throw overloads
failed Return true if this holds an error.
location Return the source location.
message Return the error string.
reason Return the reason string.
swap Swap the contents with another error.
where Return the location string.
operator bool Return true if this holds an error.
operator== Return true if this equals rhs.

Friends

|===
Name Description
swap

Non-Member Functions

Name Description
formatErrorReturn a formatted error.

Constructor.

Synopses

Declared in <mrdocs/Support/Error.hpp>

Constructor.

constexpr
Error() noexcept = default;
» more...

Constructor.

constexpr
Error(Error const& other) = default;
» more...

Constructor.

constexpr
Error(Error&& other) noexcept = default;
» more...

Constructor.

explicit
Error(std::exception const& ex);
» more...

Constructor.

explicit
Error(
    std::string reason,
    std::source_location loc = source_location::current());
» more...

Constructor.

explicit
Error(
    std::error_code const& ec,
    std::source_location loc = source_location::current());
» more...

Constructor.

Error(
    std::vector<Error> const& errors,
    std::source_location loc = source_location::current());
» more...

Parameters

Name Description
reason A string indicating the cause of the failure. This must not be empty.
loc The source location where the error occurred.
ec The error code.
errors The list of errors to combine.

Constructor.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
constexpr
Error() noexcept = default;

Description

A default-constructed error is equivalent to success.

Constructor.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
constexpr
Error(Error const& other) = default;

Parameters

Name Description
other The object to copy construct from

Constructor.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
constexpr
Error(Error&& other) noexcept = default;

Parameters

Name Description
other The object to move construct from

Constructor.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
explicit
Error(std::exception const& ex);

Description

The constructed object will always indicate a failure, even if the message in the exception is empty.

Parameters

Name Description
ex The object to copy construct from

Constructor.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
explicit
Error(
    std::string reason,
    std::source_location loc = source_location::current());

Parameters

Name Description
reason A string indicating the cause of the failure. This must not be empty.
loc The source location where the error occurred.

Constructor.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
explicit
Error(
    std::error_code const& ec,
    std::source_location loc = source_location::current());

Parameters

Name Description
ec The error code.
loc The source location where the error occurred.

Constructor.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
Error(
    std::vector<Error> const& errors,
    std::source_location loc = source_location::current());

Description

This constructs a new error from a list of zero or more errors. If the list is empty, or if all the errors in the list indicate success, then newly constructed object will indicate success.

Parameters

Name Description
errors The list of errors to combine.
loc The source location where the error occurred.

Assignment operators

Synopses

Declared in <mrdocs/Support/Error.hpp>

Assignment.

constexpr
Error&
operator=(Error const& other) = default;
» more...

Constructor.

constexpr
Error&
operator=(Error&& other) noexcept = default;
» more...

Assignment.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
constexpr
Error&
operator=(Error const& other) = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Constructor.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
constexpr
Error&
operator=(Error&& other) noexcept = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to move assign from

Throw overloads

Synopses

Declared in <mrdocs/Support/Error.hpp>

Throw Exception(*this)

[[noreturn]]
void
Throw() const &;
» more...

Throw Exception(std::move(*this))

[[noreturn]]
void
Throw() &&;
» more...

Preconditions

Throw Exception(*this)

Synopsis

Declared in <mrdocs/Support/Error.hpp>
[[noreturn]]
void
Throw() const &;

Preconditions

Throw Exception(std::move(*this))

Synopsis

Declared in <mrdocs/Support/Error.hpp>
[[noreturn]]
void
Throw() &&;

Preconditions

Return true if this holds an error.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
constexpr
bool
failed() const noexcept;

Return Value

true if this holds an error.

Return the source location.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
constexpr
std::source_location const&
location() const noexcept;

Return Value

the source location.

Return the error string.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
constexpr
std::string const&
message() const noexcept;

Return Value

the error string.

Return the reason string.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
constexpr
std::string const&
reason() const noexcept;

Return Value

the reason string.

Swap the contents with another error.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
constexpr
void
swap(Error& rhs) noexcept;

Parameters

Name Description
rhs Holds the description of an error, or success.

Return the location string.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
constexpr
std::string const&
where() const noexcept;

Return Value

the location string.

Return true if this holds an error.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
constexpr
explicit
operator bool() const noexcept;

Return Value

true if this holds an error.

Return true if this equals rhs.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
constexpr
bool
operator==(Error const& rhs) const noexcept;

Return Value

true if this equals rhs.

Parameters

Name Description
rhs The right operand

Type of all exceptions thrown by the API.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
class Exception final
    : public std::exception

Base Classes

Name Description
std::exception

Member Functions

NameDescription
Exception [constructor]Constructor.
operator=
error Return the Error stored in the exception.
what [virtual]Return a null-terminated error string.

Constructor.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
explicit
Exception(Error err) noexcept;

Parameters

Name Description
err The object to construct from

Synopsis

Declared in <__exception/exception.h>
[[__visibility__, __exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
exception&
operator=(exception const& value) noexcept = default;

Return the Error stored in the exception.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
Error const&
error() const noexcept;

Return Value

the Error stored in the exception.

Return a null-terminated error string.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
virtual
char const*
what() const noexcept override;

Return Value

a null-terminated error string.

A set of execution agents for performing concurrent work.

Synopsis

Declared in <mrdocs/Support/ExecutorGroup.hpp>
template<class Agent>
class ExecutorGroup
    : public ExecutorGroupBase

Base Classes

Name Description
ExecutorGroupBaseBase class that owns a pool of execution agents and a shared work queue.

Types

NameDescription
arg_t Argument wrapper propagated from ThreadPool.

Member Functions

NameDescription
ExecutorGroup [constructor]Construct a new executor group bound to a thread pool.
async Submit work to be executed.
emplace Construct a new agent in the group.
wait Block until all work has completed.

Protected Types

NameDescription
AnyAgent Type-erased agent holder used by the base class.
Impl Opaque implementation shared by all ExecutorGroup instantiations.

Protected Member Functions

NameDescription
post Queue work to run on the group agents.
run Execute queued work until empty.

Protected Data Members

NameDescription
agents_ Agents owned by the group.
impl_ Opaque implementation pointer shared by all ExecutorGroup instantiations.
work_ Pending work posted to the group.

Construct a new executor group bound to a thread pool.

Synopsis

Declared in <mrdocs/Support/ExecutorGroup.hpp>
explicit
ExecutorGroup(ThreadPool& threadPool);

Parameters

Name Description
threadPool Pool that owns the worker threads.

Submit work to be executed.

Synopsis

Declared in <mrdocs/Support/ExecutorGroup.hpp>
template<
    class F,
    class... Args>
void
async(
    F&& f,
    Args&&... args);

Description

The function object must have this equivalent signature:

void( Agent&, Args... );

Parameters

Name Description
f The function to invoke.
args Zero or more arguments to forward to the function.

Construct a new agent in the group.

Synopsis

Declared in <mrdocs/Support/ExecutorGroup.hpp>
template<class... Args>
void
emplace(Args&&... args);

Description

The behavior is undefined if there is any outstanding work or busy threads.

Parameters

Name Description
args Zero or more arguments to forward to the agent constructor.

Base class that owns a pool of execution agents and a shared work queue.

Synopsis

Declared in <mrdocs/Support/ExecutorGroup.hpp>
class ExecutorGroupBase;

Types

NameDescription
arg_t Argument wrapper propagated from ThreadPool.

Member Functions

NameDescription
ExecutorGroupBase [constructor]Move-construct from another group.
~ExecutorGroupBase [destructor]Destroy the executor group, waiting for outstanding work.
wait Block until all work has completed.

Protected Types

NameDescription
AnyAgent Type-erased agent holder used by the base class.
Impl Opaque implementation shared by all ExecutorGroup instantiations.

Protected Member Functions

NameDescription
ExecutorGroupBase [constructor]Construct with a backing thread pool.
post Queue work to run on the group agents.
run Execute queued work until empty.

Protected Data Members

NameDescription
agents_ Agents owned by the group.
impl_ Opaque implementation pointer shared by all ExecutorGroup instantiations.
work_ Pending work posted to the group.

Derived Classes

Name Description
ExecutorGroup A set of execution agents for performing concurrent work.

Argument wrapper propagated from ThreadPool.

Synopsis

Declared in <mrdocs/Support/ExecutorGroup.hpp>
template<class T>
using arg_t = ThreadPool::arg_t<T>;

Move-construct from another group.

Synopsis

Declared in <mrdocs/Support/ExecutorGroup.hpp>
ExecutorGroupBase(ExecutorGroupBase&& other) noexcept;

Parameters

Name Description
other The object to move construct from

Destroy the executor group, waiting for outstanding work.

Synopsis

Declared in <mrdocs/Support/ExecutorGroup.hpp>
~ExecutorGroupBase();

Block until all work has completed.

Synopsis

Declared in <mrdocs/Support/ExecutorGroup.hpp>
[[nodiscard]]
std::vector<Error>
wait() noexcept;

Return Value

Zero or more errors which were thrown from submitted work.

Type-erased agent holder used by the base class.

Synopsis

Declared in <mrdocs/Support/ExecutorGroup.hpp>
struct AnyAgent;

Member Functions

NameDescription
~AnyAgent [destructor] [virtual]Virtual destructor to allow deleting through the base pointer.
get [virtual]Return a pointer to the stored agent object.

Virtual destructor to allow deleting through the base pointer.

Synopsis

Declared in <mrdocs/Support/ExecutorGroup.hpp>
virtual
~AnyAgent() = 0;

Return a pointer to the stored agent object.

Synopsis

Declared in <mrdocs/Support/ExecutorGroup.hpp>
virtual
void*
get() noexcept = 0;

Return Value

a pointer to the stored agent object.

Opaque implementation shared by all ExecutorGroup instantiations.

Synopsis

Declared in <mrdocs/Support/ExecutorGroup.hpp>
struct Impl;

Construct with a backing thread pool.

Synopsis

Declared in <mrdocs/Support/ExecutorGroup.hpp>
explicit
ExecutorGroupBase(ThreadPool& value);

Parameters

Name Description
value The object to copy construct from

Queue work to run on the group agents.

Synopsis

Declared in <mrdocs/Support/ExecutorGroup.hpp>
void
post(any_callable<void(void*)> work);

Parameters

Name Description
work A movable, type-erased function object.

Execute queued work until empty.

Synopsis

Declared in <mrdocs/Support/ExecutorGroup.hpp>
void
run(std::unique_lock<std::mutex> lock);

Parameters

Name Description
lock Held lock protecting the work queue.

Agents owned by the group.

Synopsis

Declared in <mrdocs/Support/ExecutorGroup.hpp>
std::vector<std::unique_ptr<AnyAgent>> agents_;

Opaque implementation pointer shared by all ExecutorGroup instantiations.

Synopsis

Declared in <mrdocs/Support/ExecutorGroup.hpp>
std::unique_ptr<Impl> impl_;

Pending work posted to the group.

Synopsis

Declared in <mrdocs/Support/ExecutorGroup.hpp>
std::deque<any_callable<void(void*)>> work_;

A container holding an error or a value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<
    class T,
    class E = Error>
class Expected;

Description

Monadic result type holding either a value T or an unexpected error E.

Types

NameDescription
error_type Type produced on failure.
rebind Rebind to an Expected with a different value type and the same error type.
unexpected_type Convenience alias for an Unexpected containing the error type.
value_type Type produced on success.

Member Functions

NameDescription
Expected [constructor]Constructors
~Expected [destructor]Destructors
operator= [deleted]Assignment operators
and_then and_then overloads
emplace emplace overloads
error Access the stored error; precondition: !has_value().
error_or error_or overloads
has_value Return true when the Expected contains a value.
operator* Dereference operators
operator-> Access value members through pointer syntax.
or_else or_else overloads
swap Swap the stored state with another Expected.
transform transform overloads
transform_error transform_error overloads
value value overloads
value_or value_or overloads
operator bool Return true when the Expected contains a value.

Data Members

NameDescription
unex_ [variant member]Storage for the unexpected error.
val_ [variant member]Storage for the engaged value.

Friends

|===
Name Description
swap Swap contents with another Expected.
operator== Equality operator
operator== Equality operator
operator== Equality operator
Expected A container holding an error or a value.

Non-Member Functions

Name Description
forEachFileCall a function for each file in a directory.
forEachFileVisit each file in a directory.
getSinglePageFullPathReturn the full path for single page output.
installGeneratorInstall a custom generator.
parseParse a string view
files::createDirectoryCreate a directory.
files::getFileTextReturn the contents of a file as a string.
files::getFileTypeReturn the file type or an error
files::makeAbsoluteReturn an absolute path from a possibly relative path.
files::requireAbsoluteReturn an error if pathName is not absolute.
files::requireDirectoryReturn an error if the path is not a directory.
js::registerHelperRegister a JavaScript helper function

Type produced on failure.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
using error_type = E;

Rebind to an Expected with a different value type and the same error type.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
using rebind = Expected<U, error_type>;

Convenience alias for an Unexpected containing the error type.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
using unexpected_type = Unexpected<E>;

Type produced on success.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
using value_type = T;

Constructors

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Construct an engaged Expected with a default-initialized value.

constexpr
Expected() noexcept(std::is_nothrow_default_constructible_v<T>)
requires std::is_default_constructible_v<T>;
» more...

Default copy constructor.

Expected(Expected const& other) = default;
» more...

Copy-construct, handling non-trivial alternatives.

constexpr
Expected(Expected const& x) noexcept(std::is_nothrow_copy_constructible_v<T> && std::is_nothrow_copy_constructible_v<E>)
requires std::is_copy_constructible_v<T> &&
        std::is_copy_constructible_v<E> &&
        (!std::is_trivially_copy_constructible_v<T> ||
         !std::is_trivially_copy_constructible_v<E>);
» more...

Construct from another Expected with potentially different types.

template<
    class U,
    class G>
requires std::is_constructible_v<T, U const&> &&
        std::is_constructible_v<E, G const&> &&
        (!constructible_from_expected<U, G>)
constexpr
explicit(explicit_conv<const U &, const G &>)
Expected(Expected<U, G> const& x) noexcept(std::is_nothrow_constructible_v<T, const U &> && std::is_nothrow_constructible_v<E, const G &>);
» more...

Default move constructor. Default move constructor.

Expected(Expected&& other) = default;
» more...

Move-construct, handling non-trivial alternatives.

constexpr
Expected(Expected&& x) noexcept(std::is_nothrow_move_constructible_v<T> && std::is_nothrow_move_constructible_v<E>)
requires std::is_move_constructible_v<T> &&
        std::is_move_constructible_v<E> &&
        (!std::is_trivially_move_constructible_v<T> ||
         !std::is_trivially_move_constructible_v<E>);
» more...

Move-construct from another Expected with potentially different types.

template<
    class U,
    class G>
requires std::is_constructible_v<T, U> &&
        std::is_constructible_v<E, G> &&
        (!constructible_from_expected<U, G>)
constexpr
explicit(explicit_conv<U, G>)
Expected(Expected<U, G>&& x) noexcept(std::is_nothrow_constructible_v<T, U> && std::is_nothrow_constructible_v<E, G>);
» more...

Construct a disengaged Expected from an unexpected error (copy).

template<class G = E>
requires std::is_constructible_v<E, G const&>
constexpr
explicit(!std::is_convertible_v<const G &, E>)
Expected(Unexpected<G> const& u) noexcept(std::is_nothrow_constructible_v<E, const G &>);
» more...

Construct an engaged Expected from a convertible value.

template<class U = T>
requires (!std::is_same_v<std::remove_cvref_t<U>, Expected>) &&
        (!std::is_same_v<std::remove_cvref_t<U>, std::in_place_t>) &&
        (!detail::isUnexpected<std::remove_cvref_t<U>>) &&
        std::is_constructible_v<T, U>
constexpr
explicit(!std::is_convertible_v<U, T>)
Expected(U&& v) noexcept(std::is_nothrow_constructible_v<T, U>);
» more...

Construct a disengaged Expected from an unexpected error (move).

template<class G = E>
requires std::is_constructible_v<E, G>
constexpr
explicit(!std::is_convertible_v<G, E>)
Expected(Unexpected<G>&& u) noexcept(std::is_nothrow_constructible_v<E, G>);
» more...

Construct an engaged Expected in-place.

template<class... Args>
requires std::is_constructible_v<T, Args...>
constexpr
explicit
Expected(
    std::in_place_t,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<T, Args...>);
» more...

Construct a disengaged Expected holding an error.

template<class... Args>
requires std::is_constructible_v<E, Args...>
constexpr
explicit
Expected(
    unexpect_t,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<E, Args...>);
» more...

Construct an engaged Expected from an initializer list.

template<
    class U,
    class... Args>
requires std::is_constructible_v<T, std::initializer_list<U>&, Args...>
constexpr
explicit
Expected(
    std::in_place_t,
    std::initializer_list<U> il,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<T, std::initializer_list<U> &, Args...>);
» more...

Construct a disengaged Expected from an initializer list.

template<
    class U,
    class... Args>
requires std::is_constructible_v<E, std::initializer_list<U>&, Args...>
constexpr
explicit
Expected(
    unexpect_t,
    std::initializer_list<U> il,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<E, std::initializer_list<U> &, Args...>);
» more...

Parameters

Name Description
args Arguments forwarded to the value constructor.
il Initializer list forwarded to the value constructor.

Construct an engaged Expected with a default-initialized value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
Expected() noexcept(std::is_nothrow_default_constructible_v<T>)
requires std::is_default_constructible_v<T>;

Default copy constructor.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
Expected(Expected const& other) = default;

Parameters

Name Description
other The object to copy construct from

Copy-construct, handling non-trivial alternatives.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
Expected(Expected const& x) noexcept(std::is_nothrow_copy_constructible_v<T> && std::is_nothrow_copy_constructible_v<E>)
requires std::is_copy_constructible_v<T> &&
        std::is_copy_constructible_v<E> &&
        (!std::is_trivially_copy_constructible_v<T> ||
         !std::is_trivially_copy_constructible_v<E>);

Description

Copy-construct from another void Expected.

Parameters

Name Description
x The object to copy construct from

Construct from another Expected with potentially different types.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<
    class U,
    class G>
requires std::is_constructible_v<T, U const&> &&
        std::is_constructible_v<E, G const&> &&
        (!constructible_from_expected<U, G>)
constexpr
explicit(explicit_conv<const U &, const G &>)
Expected(Expected<U, G> const& x) noexcept(std::is_nothrow_constructible_v<T, const U &> && std::is_nothrow_constructible_v<E, const G &>);

Parameters

Name Description
x The object to copy construct from

Default move constructor. Default move constructor.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
Expected(Expected&& other) = default;

Parameters

Name Description
other The object to move construct from

Move-construct, handling non-trivial alternatives.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
Expected(Expected&& x) noexcept(std::is_nothrow_move_constructible_v<T> && std::is_nothrow_move_constructible_v<E>)
requires std::is_move_constructible_v<T> &&
        std::is_move_constructible_v<E> &&
        (!std::is_trivially_move_constructible_v<T> ||
         !std::is_trivially_move_constructible_v<E>);

Description

Move-construct from another void Expected.

Parameters

Name Description
x The object to move construct from

Move-construct from another Expected with potentially different types.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<
    class U,
    class G>
requires std::is_constructible_v<T, U> &&
        std::is_constructible_v<E, G> &&
        (!constructible_from_expected<U, G>)
constexpr
explicit(explicit_conv<U, G>)
Expected(Expected<U, G>&& x) noexcept(std::is_nothrow_constructible_v<T, U> && std::is_nothrow_constructible_v<E, G>);

Parameters

Name Description
x The object to move construct from

Construct a disengaged Expected from an unexpected error (copy).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class G = E>
requires std::is_constructible_v<E, G const&>
constexpr
explicit(!std::is_convertible_v<const G &, E>)
Expected(Unexpected<G> const& u) noexcept(std::is_nothrow_constructible_v<E, const G &>);

Parameters

Name Description
u The object to copy construct from

Construct an engaged Expected from a convertible value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U = T>
requires (!std::is_same_v<std::remove_cvref_t<U>, Expected>) &&
        (!std::is_same_v<std::remove_cvref_t<U>, std::in_place_t>) &&
        (!detail::isUnexpected<std::remove_cvref_t<U>>) &&
        std::is_constructible_v<T, U>
constexpr
explicit(!std::is_convertible_v<U, T>)
Expected(U&& v) noexcept(std::is_nothrow_constructible_v<T, U>);

Parameters

Name Description
v The object to move construct from

Construct a disengaged Expected from an unexpected error (move).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class G = E>
requires std::is_constructible_v<E, G>
constexpr
explicit(!std::is_convertible_v<G, E>)
Expected(Unexpected<G>&& u) noexcept(std::is_nothrow_constructible_v<E, G>);

Parameters

Name Description
u The object to move construct from

Construct an engaged Expected in-place.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class... Args>
requires std::is_constructible_v<T, Args...>
constexpr
explicit
Expected(
    std::in_place_t,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<T, Args...>);

Parameters

Name Description
args Arguments forwarded to the value constructor.

Construct a disengaged Expected holding an error.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class... Args>
requires std::is_constructible_v<E, Args...>
constexpr
explicit
Expected(
    unexpect_t,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<E, Args...>);

Parameters

Name Description
args Arguments forwarded to the error constructor.

Construct an engaged Expected from an initializer list.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<
    class U,
    class... Args>
requires std::is_constructible_v<T, std::initializer_list<U>&, Args...>
constexpr
explicit
Expected(
    std::in_place_t,
    std::initializer_list<U> il,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<T, std::initializer_list<U> &, Args...>);

Parameters

Name Description
il Initializer list forwarded to the value constructor.
args Additional arguments forwarded to the value constructor.

Construct a disengaged Expected from an initializer list.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<
    class U,
    class... Args>
requires std::is_constructible_v<E, std::initializer_list<U>&, Args...>
constexpr
explicit
Expected(
    unexpect_t,
    std::initializer_list<U> il,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<E, std::initializer_list<U> &, Args...>);

Parameters

Name Description
il Initializer list forwarded to the error constructor.
args Additional arguments forwarded to the error constructor.

Destructors

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Defaulted trivial destructor when both alternatives are trivial.

constexpr
~Expected() = default;
» more...

Destroy the active alternative when a non-trivial destructor is required.

constexpr
~Expected()
requires (!std::is_trivially_destructible_v<T>)
        || (!std::is_trivially_destructible_v<E>);
» more...

Defaulted trivial destructor when both alternatives are trivial.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
~Expected() = default;

Destroy the active alternative when a non-trivial destructor is required.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
~Expected()
requires (!std::is_trivially_destructible_v<T>)
        || (!std::is_trivially_destructible_v<E>);

Assignment operators

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Copy-assign from another Expected.

Expected&
operator=(Expected const& other) = delete;
» more...

Assign from another Expected with compatible value/error types.

constexpr
Expected&
operator=(Expected const& x) noexcept(std::is_nothrow_copy_constructible_v<T> && std::is_nothrow_copy_constructible_v<E> && std::is_nothrow_copy_assignable_v<T> && std::is_nothrow_copy_assignable_v<E>)
requires std::is_copy_assignable_v<T> &&
        std::is_copy_constructible_v<T> &&
        std::is_copy_assignable_v<E> &&
        std::is_copy_constructible_v<E> &&
        (std::is_nothrow_move_constructible_v<T> ||
         std::is_nothrow_move_constructible_v<E>);
» more...

Move-assign from another Expected with compatible value/error types.

constexpr
Expected&
operator=(Expected&& x) noexcept(std::is_nothrow_move_constructible_v<T> && std::is_nothrow_move_constructible_v<E> && std::is_nothrow_move_assignable_v<T> && std::is_nothrow_move_assignable_v<E>)
requires std::is_move_assignable_v<T> &&
        std::is_move_constructible_v<T> &&
        std::is_move_assignable_v<E> &&
        std::is_move_constructible_v<E> &&
        (std::is_nothrow_move_constructible_v<T> ||
         std::is_nothrow_move_constructible_v<E>);
» more...

Assign a new unexpected error from lvalue.

template<class G>
requires std::is_constructible_v<E, G const&> &&
        std::is_assignable_v<E&, G const&> &&
        (std::is_nothrow_constructible_v<E, G const&> ||
         std::is_nothrow_move_constructible_v<T> ||
         std::is_nothrow_move_constructible_v<E>)
constexpr
Expected&
operator=(Unexpected<G> const& e);
» more...

Assign a new value, reconstructing if currently disengaged.

template<class U = T>
requires (!std::is_same_v<Expected, std::remove_cvref_t<U>>) &&
        (!detail::isUnexpected<std::remove_cvref_t<U>>) &&
        std::is_constructible_v<T, U> &&
        std::is_assignable_v<T&, U> &&
        (std::is_nothrow_constructible_v<T, U> ||
         std::is_nothrow_move_constructible_v<T> ||
         std::is_nothrow_move_constructible_v<E>)
constexpr
Expected&
operator=(U&& v);
» more...

Assign a new unexpected error from rvalue.

template<class G>
requires std::is_constructible_v<E, G> &&
        std::is_assignable_v<E&, G> &&
        (std::is_nothrow_constructible_v<E, G> ||
         std::is_nothrow_move_constructible_v<T> ||
         std::is_nothrow_move_constructible_v<E>)
constexpr
Expected&
operator=(Unexpected<G>&& e);
» more...

Copy-assign from another Expected.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
Expected&
operator=(Expected const& other) = delete;

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Assign from another Expected with compatible value/error types.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
Expected&
operator=(Expected const& x) noexcept(std::is_nothrow_copy_constructible_v<T> && std::is_nothrow_copy_constructible_v<E> && std::is_nothrow_copy_assignable_v<T> && std::is_nothrow_copy_assignable_v<E>)
requires std::is_copy_assignable_v<T> &&
        std::is_copy_constructible_v<T> &&
        std::is_copy_assignable_v<E> &&
        std::is_copy_constructible_v<E> &&
        (std::is_nothrow_move_constructible_v<T> ||
         std::is_nothrow_move_constructible_v<E>);

Return Value

Reference to the current object

Parameters

Name Description
x The object to copy assign from

Move-assign from another Expected with compatible value/error types.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
Expected&
operator=(Expected&& x) noexcept(std::is_nothrow_move_constructible_v<T> && std::is_nothrow_move_constructible_v<E> && std::is_nothrow_move_assignable_v<T> && std::is_nothrow_move_assignable_v<E>)
requires std::is_move_assignable_v<T> &&
        std::is_move_constructible_v<T> &&
        std::is_move_assignable_v<E> &&
        std::is_move_constructible_v<E> &&
        (std::is_nothrow_move_constructible_v<T> ||
         std::is_nothrow_move_constructible_v<E>);

Return Value

Reference to the current object

Parameters

Name Description
x The object to move assign from

Assign a new unexpected error from lvalue.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class G>
requires std::is_constructible_v<E, G const&> &&
        std::is_assignable_v<E&, G const&> &&
        (std::is_nothrow_constructible_v<E, G const&> ||
         std::is_nothrow_move_constructible_v<T> ||
         std::is_nothrow_move_constructible_v<E>)
constexpr
Expected&
operator=(Unexpected<G> const& e);

Return Value

Reference to the current object

Parameters

Name Description
e The object to copy assign from

Assign a new value, reconstructing if currently disengaged.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U = T>
requires (!std::is_same_v<Expected, std::remove_cvref_t<U>>) &&
        (!detail::isUnexpected<std::remove_cvref_t<U>>) &&
        std::is_constructible_v<T, U> &&
        std::is_assignable_v<T&, U> &&
        (std::is_nothrow_constructible_v<T, U> ||
         std::is_nothrow_move_constructible_v<T> ||
         std::is_nothrow_move_constructible_v<E>)
constexpr
Expected&
operator=(U&& v);

Return Value

Reference to the current object

Parameters

Name Description
v The object to move assign from

Assign a new unexpected error from rvalue.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class G>
requires std::is_constructible_v<E, G> &&
        std::is_assignable_v<E&, G> &&
        (std::is_nothrow_constructible_v<E, G> ||
         std::is_nothrow_move_constructible_v<T> ||
         std::is_nothrow_move_constructible_v<E>)
constexpr
Expected&
operator=(Unexpected<G>&& e);

Return Value

Reference to the current object

Parameters

Name Description
e The object to move assign from

and_then overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Invoke f when engaged, propagate error otherwise.

template<class Fn>
requires std::is_constructible_v<E, E&>
constexpr
auto
and_then(Fn&& f) &;
» more...

Invoke f when engaged (const lvalue), propagate error otherwise.

template<class Fn>
requires std::is_constructible_v<E, E const&>
constexpr
auto
and_then(Fn&& f) const &;
» more...

Invoke f when engaged (rvalue), propagate error otherwise.

template<class Fn>
requires std::is_constructible_v<E, E>
constexpr
auto
and_then(Fn&& f) &&;
» more...

Invoke f when engaged (const rvalue), propagate error otherwise.

template<class Fn>
requires std::is_constructible_v<E, const E>
constexpr
auto
and_then(Fn&& f) const &&;
» more...

Return Value

Result of f or this error.

Parameters

Name Description
f Continuation that returns another Expected.

Invoke f when engaged, propagate error otherwise.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<E, E&>
constexpr
auto
and_then(Fn&& f) &;

Return Value

Result of f or this error.

Parameters

Name Description
f Continuation that returns another Expected.

Invoke f when engaged (const lvalue), propagate error otherwise.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<E, E const&>
constexpr
auto
and_then(Fn&& f) const &;

Return Value

Result of f or this error.

Parameters

Name Description
f Continuation that returns another Expected.

Invoke f when engaged (rvalue), propagate error otherwise.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<E, E>
constexpr
auto
and_then(Fn&& f) &&;

Return Value

Result of f or this error.

Parameters

Name Description
f Continuation that returns another Expected.

Invoke f when engaged (const rvalue), propagate error otherwise.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<E, const E>
constexpr
auto
and_then(Fn&& f) const &&;

Return Value

Result of f or this error.

Parameters

Name Description
f Continuation that returns another Expected.

emplace overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Reconstruct the value in-place, discarding any current state.

template<class... Args>
requires std::is_nothrow_constructible_v<T, Args...>
constexpr
T&
emplace(Args&&... args) noexcept;
» more...

Reconstruct the value from an initializer list.

template<
    class U,
    class... Args>
requires std::is_nothrow_constructible_v<
            T, std::initializer_list<U>&, Args...>
constexpr
T&
emplace(
    std::initializer_list<U> il,
    Args&&... args) noexcept;
» more...

Return Value

Reference to the newly emplaced value.

Parameters

Name Description
args Arguments forwarded to the value constructor.
il Initializer list forwarded to the value constructor.

Reconstruct the value in-place, discarding any current state.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class... Args>
requires std::is_nothrow_constructible_v<T, Args...>
constexpr
T&
emplace(Args&&... args) noexcept;

Return Value

Reference to the newly emplaced value.

Parameters

Name Description
args Arguments forwarded to the value constructor.

Reconstruct the value from an initializer list.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<
    class U,
    class... Args>
requires std::is_nothrow_constructible_v<
            T, std::initializer_list<U>&, Args...>
constexpr
T&
emplace(
    std::initializer_list<U> il,
    Args&&... args) noexcept;

Return Value

Reference to the newly emplaced value.

Parameters

Name Description
il Initializer list forwarded to the value constructor.
args Additional constructor arguments.

Access the stored error; precondition: !has_value().

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Access the stored error; precondition: !has_value().

constexpr
E const&
error() const & noexcept;
» more...

Access the stored error; precondition: !has_value().

constexpr
E&
error() & noexcept;
» more...

Access the stored error; precondition: !has_value().

constexpr
E const&&
error() const && noexcept;
» more...

Access the stored error; precondition: !has_value().

constexpr
E&&
error() && noexcept;
» more...

Return Value

Access the stored error; precondition: !has_value().

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
E const&
error() const & noexcept;

Return Value

Reference to the contained error.

Access the stored error; precondition: !has_value().

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
E&
error() & noexcept;

Return Value

Reference to the contained error.

Access the stored error; precondition: !has_value().

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
E const&&
error() const && noexcept;

Return Value

Rvalue reference to the contained error.

Access the stored error; precondition: !has_value().

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
E&&
error() && noexcept;

Return Value

Rvalue reference to the contained error.

error_or overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Return the contained error or a fallback copy.

template<class G = E>
constexpr
E
error_or(G&& e) const &;
» more...

Return the contained error or a fallback move.

template<class G = E>
constexpr
E
error_or(G&& e) &&;
» more...

Return Value

Contained error or the fallback converted to E.

Parameters

Name Description
e Fallback error to use when engaged.

Return the contained error or a fallback copy.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class G = E>
constexpr
E
error_or(G&& e) const &;

Return Value

Contained error or the fallback converted to E.

Parameters

Name Description
e Fallback error to use when engaged.

Return the contained error or a fallback move.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class G = E>
constexpr
E
error_or(G&& e) &&;

Return Value

Contained error or the fallback converted to E.

Parameters

Name Description
e Fallback error to use when engaged.

Return true when the Expected contains a value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
bool
has_value() const noexcept;

Return Value

true when the Expected contains a value.

Dereference operators

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Dereference to a const lvalue value reference.

[[nodiscard]]
constexpr
T const&
operator*() const & noexcept;
» more...

Dereference to an lvalue value reference.

[[nodiscard]]
constexpr
T&
operator*() & noexcept;
» more...

Dereference to a const rvalue value reference.

[[nodiscard]]
constexpr
T const&&
operator*() const && noexcept;
» more...

Dereference to an rvalue value reference.

[[nodiscard]]
constexpr
T&&
operator*() && noexcept;
» more...

Return Value

Reference to the contained value.

Dereference to a const lvalue value reference.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
T const&
operator*() const & noexcept;

Return Value

Reference to the contained value.

Dereference to an lvalue value reference.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
T&
operator*() & noexcept;

Return Value

Reference to the contained value.

Dereference to a const rvalue value reference.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
T const&&
operator*() const && noexcept;

Return Value

Reference to the contained value.

Dereference to an rvalue value reference.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
T&&
operator*() && noexcept;

Return Value

Reference to the contained value.

Access value members through pointer syntax.

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Access value members through pointer syntax.

[[nodiscard]]
constexpr
T const*
operator->() const noexcept;
» more...

Access value members through pointer syntax.

[[nodiscard]]
constexpr
T*
operator->() noexcept;
» more...

Return Value

Pointer to the contained value.

Access value members through pointer syntax.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
T const*
operator->() const noexcept;

Return Value

Pointer to the contained value.

Access value members through pointer syntax.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
T*
operator->() noexcept;

Return Value

Pointer to the contained value.

or_else overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Invoke f when in error, otherwise return current value.

template<class Fn>
requires std::is_constructible_v<T, T&>
constexpr
auto
or_else(Fn&& f) &;
» more...

Invoke f when in error (const lvalue).

template<class Fn>
requires std::is_constructible_v<T, T const&>
constexpr
auto
or_else(Fn&& f) const &;
» more...

Invoke f when in error (rvalue).

template<class Fn>
requires std::is_constructible_v<T, T>
constexpr
auto
or_else(Fn&& f) &&;
» more...

Invoke f when in error (const rvalue).

template<class Fn>
requires std::is_constructible_v<T, const T>
constexpr
auto
or_else(Fn&& f) const &&;
» more...

Return Value

Current value or result of f.

Parameters

Name Description
f Recovery function returning an Expected.

Invoke f when in error, otherwise return current value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<T, T&>
constexpr
auto
or_else(Fn&& f) &;

Return Value

Current value or result of f.

Parameters

Name Description
f Recovery function returning an Expected.

Invoke f when in error (const lvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<T, T const&>
constexpr
auto
or_else(Fn&& f) const &;

Return Value

Current value or result of f.

Parameters

Name Description
f Recovery function returning an Expected.

Invoke f when in error (rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<T, T>
constexpr
auto
or_else(Fn&& f) &&;

Return Value

Current value or result of f.

Parameters

Name Description
f Recovery function returning an Expected.

Invoke f when in error (const rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<T, const T>
constexpr
auto
or_else(Fn&& f) const &&;

Return Value

Current value or result of f.

Parameters

Name Description
f Recovery function returning an Expected.

Swap the stored state with another Expected.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
void
swap(Expected& x) noexcept(std::is_nothrow_move_constructible_v<T> && std::is_nothrow_move_constructible_v<E> && std::is_nothrow_swappable_v<T &> && std::is_nothrow_swappable_v<E &>)
requires std::is_swappable_v<T> &&
        std::is_swappable_v<E> &&
        std::is_move_constructible_v<T> &&
        std::is_move_constructible_v<E> &&
        (std::is_nothrow_move_constructible_v<T> ||
         std::is_nothrow_move_constructible_v<E>);

Parameters

Name Description
x A container holding an error or a value.

transform overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Map the contained value, propagate error.

template<class Fn>
requires std::is_constructible_v<E, E&>
constexpr
auto
transform(Fn&& f) &;
» more...

Map the contained value (const overload), propagate error.

template<class Fn>
requires std::is_constructible_v<E, E const&>
constexpr
auto
transform(Fn&& f) const &;
» more...

Map the contained value (rvalue), propagate error.

template<class Fn>
requires std::is_constructible_v<E, E>
constexpr
auto
transform(Fn&& f) &&;
» more...

Map the contained value (const rvalue), propagate error.

template<class Fn>
requires std::is_constructible_v<E, const E>
constexpr
auto
transform(Fn&& f) const &&;
» more...

Return Value

Expected holding the mapped value or the original error.

Parameters

Name Description
f Mapping function applied to the value.

Map the contained value, propagate error.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<E, E&>
constexpr
auto
transform(Fn&& f) &;

Return Value

Expected holding the mapped value or the original error.

Parameters

Name Description
f Mapping function applied to the value.

Map the contained value (const overload), propagate error.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<E, E const&>
constexpr
auto
transform(Fn&& f) const &;

Return Value

Expected holding the mapped value or the original error.

Parameters

Name Description
f Mapping function applied to the value.

Map the contained value (rvalue), propagate error.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<E, E>
constexpr
auto
transform(Fn&& f) &&;

Return Value

Expected holding the mapped value or the original error.

Parameters

Name Description
f Mapping function applied to the value.

Map the contained value (const rvalue), propagate error.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<E, const E>
constexpr
auto
transform(Fn&& f) const &&;

Return Value

Expected holding the mapped value or the original error.

Parameters

Name Description
f Mapping function applied to the value.

transform_error overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Map the contained error, preserve value.

template<class Fn>
requires std::is_constructible_v<T, T&>
constexpr
auto
transform_error(Fn&& f) &;
» more...

Map the contained error (const lvalue), preserve value.

template<class Fn>
requires std::is_constructible_v<T, T const&>
constexpr
auto
transform_error(Fn&& f) const &;
» more...

Map the contained error (rvalue), preserve value.

template<class Fn>
requires std::is_constructible_v<T, T>
constexpr
auto
transform_error(Fn&& f) &&;
» more...

Map the contained error (const rvalue), preserve value.

template<class Fn>
requires std::is_constructible_v<T, const T>
constexpr
auto
transform_error(Fn&& f) const &&;
» more...

Return Value

Expected holding the original value or mapped error.

Parameters

Name Description
f Mapping function applied to the error.

Map the contained error, preserve value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<T, T&>
constexpr
auto
transform_error(Fn&& f) &;

Return Value

Expected holding the original value or mapped error.

Parameters

Name Description
f Mapping function applied to the error.

Map the contained error (const lvalue), preserve value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<T, T const&>
constexpr
auto
transform_error(Fn&& f) const &;

Return Value

Expected holding the original value or mapped error.

Parameters

Name Description
f Mapping function applied to the error.

Map the contained error (rvalue), preserve value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<T, T>
constexpr
auto
transform_error(Fn&& f) &&;

Return Value

Expected holding the original value or mapped error.

Parameters

Name Description
f Mapping function applied to the error.

Map the contained error (const rvalue), preserve value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<T, const T>
constexpr
auto
transform_error(Fn&& f) const &&;

Return Value

Expected holding the original value or mapped error.

Parameters

Name Description
f Mapping function applied to the error.

value overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Access the stored value or throw BadExpectedAccess.

constexpr
T const&
value() const &;
» more...

Access the stored value or throw BadExpectedAccess.

constexpr
T&
value() &;
» more...

Access the stored value or throw BadExpectedAccess (rvalue overload).

constexpr
T const&&
value() const &&;
» more...

Access the stored value or throw BadExpectedAccess (rvalue overload).

constexpr
T&&
value() &&;
» more...

Return Value

Access the stored value or throw BadExpectedAccess.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
T const&
value() const &;

Return Value

Reference to the contained value.

Access the stored value or throw BadExpectedAccess.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
T&
value() &;

Return Value

Reference to the contained value.

Access the stored value or throw BadExpectedAccess (rvalue overload).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
T const&&
value() const &&;

Return Value

Rvalue reference to the contained value.

Access the stored value or throw BadExpectedAccess (rvalue overload).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
T&&
value() &&;

Return Value

Rvalue reference to the contained value.

value_or overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Return the contained value or a fallback copy.

template<class U>
constexpr
T
value_or(U&& v) const & noexcept(std::is_nothrow_copy_constructible_v<T> && std::is_nothrow_convertible_v<U, T>);
» more...

Return the contained value or a fallback move.

template<class U>
constexpr
T
value_or(U&& v) && noexcept(std::is_nothrow_move_constructible_v<T> && std::is_nothrow_convertible_v<U, T>);
» more...

Return Value

Contained value or the fallback converted to T.

Parameters

Name Description
v Fallback value to use when disengaged.

Return the contained value or a fallback copy.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
constexpr
T
value_or(U&& v) const & noexcept(std::is_nothrow_copy_constructible_v<T> && std::is_nothrow_convertible_v<U, T>);

Return Value

Contained value or the fallback converted to T.

Parameters

Name Description
v Fallback value to use when disengaged.

Return the contained value or a fallback move.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
constexpr
T
value_or(U&& v) && noexcept(std::is_nothrow_move_constructible_v<T> && std::is_nothrow_convertible_v<U, T>);

Return Value

Contained value or the fallback converted to T.

Parameters

Name Description
v Fallback value to use when disengaged.

Return true when the Expected contains a value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
explicit
operator bool() const noexcept;

Return Value

true when the Expected contains a value.

Storage for the unexpected error.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
E unex_;

Storage for the engaged value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
T val_;

Expected specialization for void values. Holds either success (no payload) or an unexpected error E.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<
    class T,
    class E>
requires std::is_void_v<T>
class Expected<T, E>;

Types

NameDescription
error_type Error type stored when disengaged.
rebind Rebind to another value type with the same error type.
unexpected_type Alias for the unexpected wrapper.
value_type Value type for this specialization (always void).

Member Functions

NameDescription
Expected [constructor]Constructors
~Expected [destructor]Destructors
operator= [deleted]Assignment operators
and_then and_then overloads
emplace Reset to engaged state (no error).
error error overloads
error_or error_or overloads
has_value Return true when the Expected holds a value.
operator* Ensure the Expected is engaged; throws if it holds an error.
or_else or_else overloads
swap Swap states with another void Expected.
transform transform overloads
transform_error transform_error overloads
value value overloads
operator bool Return true when the Expected holds a value.

Data Members

NameDescription
unex_ [variant member]Stored unexpected error.
void_ [variant member]Placeholder for the engaged state.

Friends

|===
Name Description
swap Swap contents with another Expected.
operator== Equality operator
operator== Equality operator
Expected A container holding an error or a value.

Error type stored when disengaged.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
using error_type = E;

Rebind to another value type with the same error type.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
using rebind = Expected<U, error_type>;

Alias for the unexpected wrapper.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
using unexpected_type = Unexpected<E>;

Value type for this specialization (always void).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
using value_type = T;

Constructors

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Construct an engaged Expected<void>.

constexpr
Expected() noexcept;
» more...

Default copy constructor.

Expected(Expected const& other) = default;
» more...

Copy-construct with explicit error handling for non-trivial E.

constexpr
Expected(Expected const& x) noexcept(std::is_nothrow_copy_constructible_v<E>)
requires std::is_copy_constructible_v<E> &&
        (!std::is_trivially_copy_constructible_v<E>);
» more...

Default move constructor.

Expected(Expected&& other) = default;
» more...

Move-construct with explicit error handling for non-trivial E.

constexpr
Expected(Expected&& x) noexcept(std::is_nothrow_move_constructible_v<E>)
requires std::is_move_constructible_v<E> &&
        (!std::is_trivially_move_constructible_v<E>);
» more...

Construct an engaged Expected with in-place tag.

constexpr
explicit
Expected(std::in_place_t value) noexcept;
» more...

Construct a disengaged Expected from an unexpected error (copy).

template<class G = E>
requires std::is_constructible_v<E, G const&>
constexpr
explicit(!std::is_convertible_v<const G &, E>)
Expected(Unexpected<G> const& u) noexcept(std::is_nothrow_constructible_v<E, const G &>);
» more...

Construct a disengaged Expected from an unexpected error (move).

template<class G = E>
requires std::is_constructible_v<E, G>
constexpr
explicit(!std::is_convertible_v<G, E>)
Expected(Unexpected<G>&& u) noexcept(std::is_nothrow_constructible_v<E, G>);
» more...

Copy-construct from a compatible Expected carrying void.

template<
    class U,
    class G>
requires std::is_void_v<U> &&
        std::is_constructible_v<E, G const&> &&
        (!constructible_from_expected<U, G>)
constexpr
explicit(!std::is_convertible_v<const G &, E>)
Expected(Expected<U, G> const& x) noexcept(std::is_nothrow_constructible_v<E, const G &>);
» more...

Move-construct from a compatible Expected carrying void.

template<
    class U,
    class G>
requires std::is_void_v<U> &&
        std::is_constructible_v<E, G> &&
        (!constructible_from_expected<U, G>)
constexpr
explicit(!std::is_convertible_v<G, E>)
Expected(Expected<U, G>&& x) noexcept(std::is_nothrow_constructible_v<E, G>);
» more...

Construct a disengaged Expected from error arguments.

template<class... Args>
requires std::is_constructible_v<E, Args...>
constexpr
explicit
Expected(
    unexpect_t,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<E, Args...>);
» more...

Construct a disengaged Expected from an initializer list of errors.

template<
    class U,
    class... Args>
requires std::is_constructible_v<E, std::initializer_list<U>&, Args...>
constexpr
explicit
Expected(
    unexpect_t,
    std::initializer_list<U> il,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<E, std::initializer_list<U> &, Args...>);
» more...

Parameters

Name Description
args Arguments forwarded to the error constructor.
il Initializer list forwarded to the error constructor.

Construct an engaged Expected<void>.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
Expected() noexcept;

Default copy constructor.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
Expected(Expected const& other) = default;

Parameters

Name Description
other The object to copy construct from

Copy-construct with explicit error handling for non-trivial E.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
Expected(Expected const& x) noexcept(std::is_nothrow_copy_constructible_v<E>)
requires std::is_copy_constructible_v<E> &&
        (!std::is_trivially_copy_constructible_v<E>);

Parameters

Name Description
x The object to copy construct from

Default move constructor.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
Expected(Expected&& other) = default;

Parameters

Name Description
other The object to move construct from

Move-construct with explicit error handling for non-trivial E.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
Expected(Expected&& x) noexcept(std::is_nothrow_move_constructible_v<E>)
requires std::is_move_constructible_v<E> &&
        (!std::is_trivially_move_constructible_v<E>);

Parameters

Name Description
x The object to move construct from

Construct an engaged Expected with in-place tag.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
explicit
Expected(std::in_place_t value) noexcept;

Parameters

Name Description
value The object to construct from

Construct a disengaged Expected from an unexpected error (copy).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class G = E>
requires std::is_constructible_v<E, G const&>
constexpr
explicit(!std::is_convertible_v<const G &, E>)
Expected(Unexpected<G> const& u) noexcept(std::is_nothrow_constructible_v<E, const G &>);

Parameters

Name Description
u The object to copy construct from

Construct a disengaged Expected from an unexpected error (move).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class G = E>
requires std::is_constructible_v<E, G>
constexpr
explicit(!std::is_convertible_v<G, E>)
Expected(Unexpected<G>&& u) noexcept(std::is_nothrow_constructible_v<E, G>);

Parameters

Name Description
u The object to move construct from

Copy-construct from a compatible Expected carrying void.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<
    class U,
    class G>
requires std::is_void_v<U> &&
        std::is_constructible_v<E, G const&> &&
        (!constructible_from_expected<U, G>)
constexpr
explicit(!std::is_convertible_v<const G &, E>)
Expected(Expected<U, G> const& x) noexcept(std::is_nothrow_constructible_v<E, const G &>);

Parameters

Name Description
x The object to copy construct from

Move-construct from a compatible Expected carrying void.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<
    class U,
    class G>
requires std::is_void_v<U> &&
        std::is_constructible_v<E, G> &&
        (!constructible_from_expected<U, G>)
constexpr
explicit(!std::is_convertible_v<G, E>)
Expected(Expected<U, G>&& x) noexcept(std::is_nothrow_constructible_v<E, G>);

Parameters

Name Description
x The object to move construct from

Construct a disengaged Expected from error arguments.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class... Args>
requires std::is_constructible_v<E, Args...>
constexpr
explicit
Expected(
    unexpect_t,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<E, Args...>);

Parameters

Name Description
args Arguments forwarded to the error constructor.

Construct a disengaged Expected from an initializer list of errors.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<
    class U,
    class... Args>
requires std::is_constructible_v<E, std::initializer_list<U>&, Args...>
constexpr
explicit
Expected(
    unexpect_t,
    std::initializer_list<U> il,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<E, std::initializer_list<U> &, Args...>);

Parameters

Name Description
il Initializer list forwarded to the error constructor.
args Additional arguments forwarded to the error constructor.

Destructors

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Defaulted trivial destructor.

constexpr
~Expected() = default;
» more...

Destroy the stored error when non-trivial.

constexpr
~Expected()
requires (!std::is_trivially_destructible_v<E>);
» more...

Defaulted trivial destructor.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
~Expected() = default;

Destroy the stored error when non-trivial.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
~Expected()
requires (!std::is_trivially_destructible_v<E>);

Assignment operators

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Copy assignment disabled to keep semantics explicit.

Expected&
operator=(Expected const& other) = delete;
» more...

Copy-assign from another void Expected.

constexpr
Expected&
operator=(Expected const& x) noexcept(std::is_nothrow_copy_constructible_v<E> && std::is_nothrow_copy_assignable_v<E>)
requires std::is_copy_constructible_v<E> &&
        std::is_copy_assignable_v<E>;
» more...

Move-assign from another void Expected.

constexpr
Expected&
operator=(Expected&& x) noexcept(std::is_nothrow_move_constructible_v<E> && std::is_nothrow_move_assignable_v<E>)
requires std::is_move_constructible_v<E> &&
        std::is_move_assignable_v<E>;
» more...

Assign a new unexpected error (lvalue).

template<class G>
requires std::is_constructible_v<E, G const&> &&
        std::is_assignable_v<E&, G const&>
constexpr
Expected&
operator=(Unexpected<G> const& e);
» more...

Assign a new unexpected error (rvalue).

template<class G>
requires std::is_constructible_v<E, G> &&
        std::is_assignable_v<E&, G>
constexpr
Expected&
operator=(Unexpected<G>&& e);
» more...

Copy assignment disabled to keep semantics explicit.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
Expected&
operator=(Expected const& other) = delete;

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Copy-assign from another void Expected.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
Expected&
operator=(Expected const& x) noexcept(std::is_nothrow_copy_constructible_v<E> && std::is_nothrow_copy_assignable_v<E>)
requires std::is_copy_constructible_v<E> &&
        std::is_copy_assignable_v<E>;

Return Value

Reference to the current object

Parameters

Name Description
x The object to copy assign from

Move-assign from another void Expected.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
Expected&
operator=(Expected&& x) noexcept(std::is_nothrow_move_constructible_v<E> && std::is_nothrow_move_assignable_v<E>)
requires std::is_move_constructible_v<E> &&
        std::is_move_assignable_v<E>;

Return Value

Reference to the current object

Parameters

Name Description
x The object to move assign from

Assign a new unexpected error (lvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class G>
requires std::is_constructible_v<E, G const&> &&
        std::is_assignable_v<E&, G const&>
constexpr
Expected&
operator=(Unexpected<G> const& e);

Return Value

Reference to the current object

Parameters

Name Description
e The object to copy assign from

Assign a new unexpected error (rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class G>
requires std::is_constructible_v<E, G> &&
        std::is_assignable_v<E&, G>
constexpr
Expected&
operator=(Unexpected<G>&& e);

Return Value

Reference to the current object

Parameters

Name Description
e The object to move assign from

and_then overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Invoke f when engaged, propagate error otherwise.

template<class Fn>
requires std::is_constructible_v<E, E&>
constexpr
auto
and_then(Fn&& f) &;
» more...

Invoke f when engaged (const lvalue), propagate error otherwise.

template<class Fn>
requires std::is_constructible_v<E, E const&>
constexpr
auto
and_then(Fn&& f) const &;
» more...

Invoke f when engaged (rvalue), propagate error otherwise.

template<class Fn>
requires std::is_constructible_v<E, E>
constexpr
auto
and_then(Fn&& f) &&;
» more...

Invoke f when engaged (const rvalue), propagate error otherwise.

template<class Fn>
requires std::is_constructible_v<E, const E>
constexpr
auto
and_then(Fn&& f) const &&;
» more...

Return Value

Result of f or this error.

Parameters

Name Description
f Continuation returning another Expected.

Invoke f when engaged, propagate error otherwise.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<E, E&>
constexpr
auto
and_then(Fn&& f) &;

Return Value

Result of f or this error.

Parameters

Name Description
f Continuation returning another Expected.

Invoke f when engaged (const lvalue), propagate error otherwise.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<E, E const&>
constexpr
auto
and_then(Fn&& f) const &;

Return Value

Result of f or this error.

Parameters

Name Description
f Continuation returning another Expected.

Invoke f when engaged (rvalue), propagate error otherwise.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<E, E>
constexpr
auto
and_then(Fn&& f) &&;

Return Value

Result of f or this error.

Parameters

Name Description
f Continuation returning another Expected.

Invoke f when engaged (const rvalue), propagate error otherwise.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<E, const E>
constexpr
auto
and_then(Fn&& f) const &&;

Return Value

Result of f or this error.

Parameters

Name Description
f Continuation returning another Expected.

Reset to engaged state (no error).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
void
emplace() noexcept;

error overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Return a const reference to the contained error; precondition: disengaged.

constexpr
E const&
error() const & noexcept;
» more...

Return a reference to the contained error; precondition: disengaged.

constexpr
E&
error() & noexcept;
» more...

Return an rvalue reference to the contained error; precondition: disengaged.

constexpr
E const&&
error() const && noexcept;
» more...

Return an rvalue reference to the contained error; precondition: disengaged.

constexpr
E&&
error() && noexcept;
» more...

Return a const reference to the contained error; precondition: disengaged.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
E const&
error() const & noexcept;

Return Value

a const reference to the contained error; precondition: disengaged.

Return a reference to the contained error; precondition: disengaged.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
E&
error() & noexcept;

Return Value

a reference to the contained error; precondition: disengaged.

Return an rvalue reference to the contained error; precondition: disengaged.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
E const&&
error() const && noexcept;

Return Value

an rvalue reference to the contained error; precondition: disengaged.

Return an rvalue reference to the contained error; precondition: disengaged.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
E&&
error() && noexcept;

Return Value

an rvalue reference to the contained error; precondition: disengaged.

error_or overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Return the error or a fallback copy.

template<class G = E>
constexpr
E
error_or(G&& e) const &;
» more...

Return the error or a fallback move.

template<class G = E>
constexpr
E
error_or(G&& e) &&;
» more...

Return Value

Contained error or the fallback converted to E.

Parameters

Name Description
e Fallback to return if engaged.

Return the error or a fallback copy.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class G = E>
constexpr
E
error_or(G&& e) const &;

Return Value

Contained error or the fallback converted to E.

Parameters

Name Description
e Fallback to return if engaged.

Return the error or a fallback move.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class G = E>
constexpr
E
error_or(G&& e) &&;

Return Value

Contained error or the fallback converted to E.

Parameters

Name Description
e Fallback to return if engaged.

Return true when the Expected holds a value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
bool
has_value() const noexcept;

Return Value

true when the Expected holds a value.

Ensure the Expected is engaged; throws if it holds an error.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
void
operator*() const noexcept;

or_else overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Invoke f when in error, otherwise return current value.

template<class Fn>
constexpr
auto
or_else(Fn&& f) &;
» more...

Invoke f when in error (const lvalue), otherwise return current value.

template<class Fn>
constexpr
auto
or_else(Fn&& f) const &;
» more...

Invoke f when in error (rvalue), otherwise return current value.

template<class Fn>
constexpr
auto
or_else(Fn&& f) &&;
» more...

Invoke f when in error (const rvalue), otherwise return current value.

template<class Fn>
constexpr
auto
or_else(Fn&& f) const &&;
» more...

Return Value

Current value or result of f.

Parameters

Name Description
f Recovery function returning an Expected.

Invoke f when in error, otherwise return current value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
or_else(Fn&& f) &;

Return Value

Current value or result of f.

Parameters

Name Description
f Recovery function returning an Expected.

Invoke f when in error (const lvalue), otherwise return current value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
or_else(Fn&& f) const &;

Return Value

Current value or result of f.

Parameters

Name Description
f Recovery function returning an Expected.

Invoke f when in error (rvalue), otherwise return current value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
or_else(Fn&& f) &&;

Return Value

Current value or result of f.

Parameters

Name Description
f Recovery function returning an Expected.

Invoke f when in error (const rvalue), otherwise return current value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
or_else(Fn&& f) const &&;

Return Value

Current value or result of f.

Parameters

Name Description
f Recovery function returning an Expected.

Swap states with another void Expected.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
void
swap(Expected& x) noexcept(std::is_nothrow_swappable_v<E &> && std::is_nothrow_move_constructible_v<E>)
requires std::is_swappable_v<E> &&
        std::is_move_constructible_v<E>;

Parameters

Name Description
x Other instance to exchange with.

transform overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Transform the contained error type when engaged (lvalue).

template<class Fn>
requires std::is_constructible_v<E, E&>
constexpr
auto
transform(Fn&& f) &;
» more...

Transform the contained error type when engaged (const lvalue).

template<class Fn>
requires std::is_constructible_v<E, E const&>
constexpr
auto
transform(Fn&& f) const &;
» more...

Transform the contained error type when engaged (rvalue).

template<class Fn>
requires std::is_constructible_v<E, E>
constexpr
auto
transform(Fn&& f) &&;
» more...

Transform the contained error type when engaged (const rvalue).

template<class Fn>
requires std::is_constructible_v<E, const E>
constexpr
auto
transform(Fn&& f) const &&;
» more...

Return Value

New Expected produced from f or the existing error.

Parameters

Name Description
f Transformation to apply.

Transform the contained error type when engaged (lvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<E, E&>
constexpr
auto
transform(Fn&& f) &;

Return Value

New Expected produced from f or the existing error.

Parameters

Name Description
f Transformation to apply.

Transform the contained error type when engaged (const lvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<E, E const&>
constexpr
auto
transform(Fn&& f) const &;

Return Value

New Expected produced from f or the existing error.

Parameters

Name Description
f Transformation to apply.

Transform the contained error type when engaged (rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<E, E>
constexpr
auto
transform(Fn&& f) &&;

Return Value

New Expected produced from f or the existing error.

Parameters

Name Description
f Transformation to apply.

Transform the contained error type when engaged (const rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
requires std::is_constructible_v<E, const E>
constexpr
auto
transform(Fn&& f) const &&;

Return Value

New Expected produced from f or the existing error.

Parameters

Name Description
f Transformation to apply.

transform_error overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Transform the stored error value when disengaged.

template<class Fn>
constexpr
auto
transform_error(Fn&& f) &;
» more...

Transform the stored error value when disengaged (const lvalue).

template<class Fn>
constexpr
auto
transform_error(Fn&& f) const &;
» more...

Transform the stored error value when disengaged (rvalue).

template<class Fn>
constexpr
auto
transform_error(Fn&& f) &&;
» more...

Transform the stored error value when disengaged (const rvalue).

template<class Fn>
constexpr
auto
transform_error(Fn&& f) const &&;
» more...

Return Value

Expected containing the transformed error or the current value.

Parameters

Name Description
f Transformation to apply.

Transform the stored error value when disengaged.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
transform_error(Fn&& f) &;

Return Value

Expected containing the transformed error or the current value.

Parameters

Name Description
f Transformation to apply.

Transform the stored error value when disengaged (const lvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
transform_error(Fn&& f) const &;

Return Value

Expected containing the transformed error or the current value.

Parameters

Name Description
f Transformation to apply.

Transform the stored error value when disengaged (rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
transform_error(Fn&& f) &&;

Return Value

Expected containing the transformed error or the current value.

Parameters

Name Description
f Transformation to apply.

Transform the stored error value when disengaged (const rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
transform_error(Fn&& f) const &&;

Return Value

Expected containing the transformed error or the current value.

Parameters

Name Description
f Transformation to apply.

value overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Ensure the Expected is engaged; throws BadExpectedAccess if not.

constexpr
void
value() const &;
» more...

Ensure the Expected is engaged; throws BadExpectedAccess if not (rvalue overload).

constexpr
void
value() &&;
» more...

Ensure the Expected is engaged; throws BadExpectedAccess if not.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
void
value() const &;

Ensure the Expected is engaged; throws BadExpectedAccess if not (rvalue overload).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
void
value() &&;

Return true when the Expected holds a value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
explicit
operator bool() const noexcept;

Return Value

true when the Expected holds a value.

Stored unexpected error.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
E unex_;

Placeholder for the engaged state.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
engaged_state void_;

Expected specialization for lvalue references. Holds either a bound reference to T or an unexpected error E.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<
    class T,
    class E>
class Expected<T&, E>;

Types

NameDescription
error_type Error type carried when disengaged.
rebind Rebind the reference to another value type while keeping E.
unexpected_type Convenience alias for the unexpected wrapper.
value_type Referenced value type.

Member Functions

NameDescription
Expected [constructor]Constructors
~Expected [destructor]Destroy the held error when disengaged.
operator= Assignment operators
and_then and_then overloads
emplace emplace overloads
error error overloads
error_or error_or overloads
has_value Check whether the Expected currently contains a reference.
operator* Dereference operators
operator-> Access the bound reference pointer; undefined if disengaged.
or_else or_else overloads
swap Swap state with another reference Expected.
transform transform overloads
transform_error transform_error overloads
value value overloads
value_or value_or overloads
operator bool Return true when a reference is bound.

Data Members

NameDescription
p_ [variant member]Pointer to the referenced value when engaged.
unex_ [variant member]Stored unexpected error when disengaged.

Friends

|===
Name Description
operator== Equality operator
operator== Equality operator
operator== Equality operator
swap

Error type carried when disengaged.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
using error_type = E;

Rebind the reference to another value type while keeping E.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
using rebind = Expected<U, error_type>;

Convenience alias for the unexpected wrapper.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
using unexpected_type = Unexpected<E>;

Referenced value type.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
using value_type = T&;

Constructors

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Construct a disengaged Expected with no bound reference.

constexpr
Expected() noexcept;
» more...

Copy-construct from another reference Expected.

constexpr
Expected(Expected const& other) = default;
» more...

Move-construct from another reference Expected.

constexpr
Expected(Expected&& other) = default;
» more...

Bind to an lvalue result, marking the expected engaged.

template<class U>
requires (!std::is_same_v<std::remove_cvref_t<U>, Expected>
             && !std::is_same_v<std::remove_cvref_t<U>, std::in_place_t>
             && !detail::isUnexpected<std::remove_cvref_t<U>> && ok_bind_v<U&>)
constexpr
explicit(!std::is_convertible_v<U &, R>)
Expected(U& u) noexcept(std::is_nothrow_constructible_v<R, U &>);
» more...

Bind to the result stored inside another Expected value.

template<class U>
requires detail::ok_bind_ref_v<R, U&>
constexpr
explicit(!std::is_convertible_v<U &, R>)
Expected(Expected<U, E>& other) noexcept(std::is_nothrow_constructible_v<R, U &> && std::is_nothrow_copy_constructible_v<E>);
» more...

Copy-construct from another reference Expected.

template<class U>
requires detail::ok_bind_ref_v<R, U&>
constexpr
explicit(!std::is_convertible_v<U &, R>)
Expected(Expected<U&, E> const& other) noexcept(std::is_nothrow_constructible_v<R, U &> && std::is_nothrow_copy_constructible_v<E>);
» more...

Construct from an unexpected error (copy).

template<class G = E>
requires std::is_constructible_v<E, G const&>
constexpr
explicit(!std::is_convertible_v<const G &, E>)
Expected(Unexpected<G> const& u) noexcept(std::is_nothrow_constructible_v<E, const G &>);
» more...

Deleted: binding a reference Expected from a temporary would dangle.

template<class U>
requires (!std::is_same_v<std::remove_cvref_t<U>, Expected>
             && !std::is_same_v<std::remove_cvref_t<U>, std::in_place_t>
             && !detail::isUnexpected<std::remove_cvref_t<U>>
             && !ok_bind_v<U &&>)
constexpr
Expected(U&& u) = delete;
» more...

Deleted: rebinding from a temporary Expected<U, E> would dangle.

template<class U>
constexpr
Expected(Expected<U, E>&& value) = delete;
» more...

Move-construct from another reference Expected.

template<class U>
requires detail::ok_bind_ref_v<R, U&>
constexpr
explicit(!std::is_convertible_v<U &, R>)
Expected(Expected<U&, E>&& other) noexcept(std::is_nothrow_constructible_v<R, U &> && std::is_nothrow_move_constructible_v<E>);
» more...

Construct from an unexpected error (move).

template<class G = E>
requires std::is_constructible_v<E, G>
constexpr
explicit(!std::is_convertible_v<G, E>)
Expected(Unexpected<G>&& u) noexcept(std::is_nothrow_constructible_v<E, G>);
» more...

Invoke a factory to obtain the bound reference in-place.

template<class Fn>
constexpr
explicit
Expected(
    /* implementation-defined */ tag,
    Fn&& fn);
» more...

Bind in-place to an existing lvalue.

template<class U>
requires ok_bind_v<U&>
constexpr
explicit
Expected(
    std::in_place_t tag,
    U& u) noexcept;
» more...

Construct an unexpected state by invoking a factory.

template<class Fn>
constexpr
explicit
Expected(
    /* implementation-defined */ tag,
    Fn&& fn);
» more...

Construct a disengaged Expected from error arguments.

template<class... Args>
requires std::is_constructible_v<E, Args...>
constexpr
explicit
Expected(
    unexpect_t tag,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<E, Args...>);
» more...

Construct a disengaged Expected from an initializer list.

template<
    class U,
    class... Args>
requires std::is_constructible_v<E, std::initializer_list<U>&, Args...>
constexpr
explicit
Expected(
    unexpect_t tag,
    std::initializer_list<U> il,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<E, std::initializer_list<U> &, Args...>);
» more...

Parameters

Name Description
other Source instance providing the lvalue.
u Unexpected wrapper to copy.
fn Callable that returns a bindable lvalue.
tag Tag selecting in-place construction.
args Arguments forwarded to the error constructor.
il Initializer list forwarded to the error constructor.

Construct a disengaged Expected with no bound reference.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
Expected() noexcept;

Copy-construct from another reference Expected.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
Expected(Expected const& other) = default;

Parameters

Name Description
other The object to copy construct from

Move-construct from another reference Expected.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
Expected(Expected&& other) = default;

Parameters

Name Description
other The object to move construct from

Bind to an lvalue result, marking the expected engaged.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
requires (!std::is_same_v<std::remove_cvref_t<U>, Expected>
             && !std::is_same_v<std::remove_cvref_t<U>, std::in_place_t>
             && !detail::isUnexpected<std::remove_cvref_t<U>> && ok_bind_v<U&>)
constexpr
explicit(!std::is_convertible_v<U &, R>)
Expected(U& u) noexcept(std::is_nothrow_constructible_v<R, U &>);

Parameters

Name Description
u The object to copy construct from

Bind to the result stored inside another Expected value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
requires detail::ok_bind_ref_v<R, U&>
constexpr
explicit(!std::is_convertible_v<U &, R>)
Expected(Expected<U, E>& other) noexcept(std::is_nothrow_constructible_v<R, U &> && std::is_nothrow_copy_constructible_v<E>);

Parameters

Name Description
other Source instance providing the lvalue.

Copy-construct from another reference Expected.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
requires detail::ok_bind_ref_v<R, U&>
constexpr
explicit(!std::is_convertible_v<U &, R>)
Expected(Expected<U&, E> const& other) noexcept(std::is_nothrow_constructible_v<R, U &> && std::is_nothrow_copy_constructible_v<E>);

Parameters

Name Description
other Source instance to bind to.

Construct from an unexpected error (copy).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class G = E>
requires std::is_constructible_v<E, G const&>
constexpr
explicit(!std::is_convertible_v<const G &, E>)
Expected(Unexpected<G> const& u) noexcept(std::is_nothrow_constructible_v<E, const G &>);

Parameters

Name Description
u Unexpected wrapper to copy.

Deleted: binding a reference Expected from a temporary would dangle.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
requires (!std::is_same_v<std::remove_cvref_t<U>, Expected>
             && !std::is_same_v<std::remove_cvref_t<U>, std::in_place_t>
             && !detail::isUnexpected<std::remove_cvref_t<U>>
             && !ok_bind_v<U &&>)
constexpr
Expected(U&& u) = delete;

Parameters

Name Description
u Temporary value (deleted).

Deleted: rebinding from a temporary Expected<U, E> would dangle.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
constexpr
Expected(Expected<U, E>&& value) = delete;

Parameters

Name Description
value The object to move construct from

Move-construct from another reference Expected.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
requires detail::ok_bind_ref_v<R, U&>
constexpr
explicit(!std::is_convertible_v<U &, R>)
Expected(Expected<U&, E>&& other) noexcept(std::is_nothrow_constructible_v<R, U &> && std::is_nothrow_move_constructible_v<E>);

Parameters

Name Description
other Source instance to bind to.

Construct from an unexpected error (move).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class G = E>
requires std::is_constructible_v<E, G>
constexpr
explicit(!std::is_convertible_v<G, E>)
Expected(Unexpected<G>&& u) noexcept(std::is_nothrow_constructible_v<E, G>);

Parameters

Name Description
u Unexpected wrapper to move from.

Invoke a factory to obtain the bound reference in-place.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
explicit
Expected(
    /* implementation-defined */ tag,
    Fn&& fn);

Parameters

Name Description
fn Callable that returns a bindable lvalue.
tag The object to construct from

Bind in-place to an existing lvalue.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
requires ok_bind_v<U&>
constexpr
explicit
Expected(
    std::in_place_t tag,
    U& u) noexcept;

Parameters

Name Description
tag Tag selecting in-place construction.
u Lvalue to bind this Expected to.

Construct an unexpected state by invoking a factory.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
explicit
Expected(
    /* implementation-defined */ tag,
    Fn&& fn);

Parameters

Name Description
fn Callable that produces an error value.
tag The object to construct from

Construct a disengaged Expected from error arguments.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class... Args>
requires std::is_constructible_v<E, Args...>
constexpr
explicit
Expected(
    unexpect_t tag,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<E, Args...>);

Parameters

Name Description
tag Tag selecting unexpected construction.
args Arguments forwarded to the error constructor.

Construct a disengaged Expected from an initializer list.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<
    class U,
    class... Args>
requires std::is_constructible_v<E, std::initializer_list<U>&, Args...>
constexpr
explicit
Expected(
    unexpect_t tag,
    std::initializer_list<U> il,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<E, std::initializer_list<U> &, Args...>);

Parameters

Name Description
tag Tag selecting unexpected construction.
il Initializer list forwarded to the error constructor.
args Additional arguments forwarded to the error constructor.

Destroy the held error when disengaged.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
~Expected();

Assignment operators

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Copy-assign, rebinding or copying the error.

constexpr
Expected&
operator=(Expected const& other) = default;
» more...

Move-assign, rebinding or moving the error.

constexpr
Expected&
operator=(Expected&& other) = default;
» more...

Assign a new binding from an lvalue.

template<class U>
requires ok_bind_v<U&>
constexpr
Expected&
operator=(U& u) noexcept(std::is_nothrow_constructible_v<R, U &>);
» more...

Bind to the value contained in another Expected instance.

template<class U>
requires detail::ok_bind_ref_v<R, U&>
constexpr
Expected&
operator=(Expected<U, E>& other);
» more...

Assign from another reference Expected (copy).

template<class U>
requires detail::ok_bind_ref_v<R, U&>
constexpr
Expected&
operator=(Expected<U&, E> const& other);
» more...

Replace the stored state with an unexpected error (copy).

template<class G>
requires std::is_constructible_v<E, G const&>
             && std::is_assignable_v<E&, G const&>
constexpr
Expected&
operator=(Unexpected<G> const& e);
» more...

Deleted: rebinding from a temporary would dangle.

template<class U>
requires (!ok_bind_v<U &&>)
constexpr
Expected&
operator=(U&& u) = delete;
» more...

Deleted: cannot bind to a temporary Expected holding a value.

template<class U>
constexpr
Expected&
operator=(Expected<U, E>&& value) = delete;
» more...

Assign from another reference Expected (move).

template<class U>
requires detail::ok_bind_ref_v<R, U&>
constexpr
Expected&
operator=(Expected<U&, E>&& other);
» more...

Replace the stored state with an unexpected error (move).

template<class G>
requires std::is_constructible_v<E, G> && std::is_assignable_v<E&, G>
constexpr
Expected&
operator=(Unexpected<G>&& e);
» more...

Parameters

Name Description
other Source lvalue Expected to bind to.
e Unexpected wrapper to copy from.
u Temporary value (deleted).

Copy-assign, rebinding or copying the error.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
Expected&
operator=(Expected const& other) = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Move-assign, rebinding or moving the error.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
Expected&
operator=(Expected&& other) = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to move assign from

Assign a new binding from an lvalue.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
requires ok_bind_v<U&>
constexpr
Expected&
operator=(U& u) noexcept(std::is_nothrow_constructible_v<R, U &>);

Return Value

Reference to the current object

Parameters

Name Description
u The object to copy assign from

Bind to the value contained in another Expected instance.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
requires detail::ok_bind_ref_v<R, U&>
constexpr
Expected&
operator=(Expected<U, E>& other);

Return Value

Reference to the current object

Parameters

Name Description
other Source lvalue Expected to bind to.

Assign from another reference Expected (copy).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
requires detail::ok_bind_ref_v<R, U&>
constexpr
Expected&
operator=(Expected<U&, E> const& other);

Return Value

Reference to the current object

Parameters

Name Description
other Source instance to bind to or copy error from.

Replace the stored state with an unexpected error (copy).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class G>
requires std::is_constructible_v<E, G const&>
             && std::is_assignable_v<E&, G const&>
constexpr
Expected&
operator=(Unexpected<G> const& e);

Return Value

Reference to the current object

Parameters

Name Description
e Unexpected wrapper to copy from.

Deleted: rebinding from a temporary would dangle.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
requires (!ok_bind_v<U &&>)
constexpr
Expected&
operator=(U&& u) = delete;

Return Value

Reference to the current object

Parameters

Name Description
u Temporary value (deleted).

Deleted: cannot bind to a temporary Expected holding a value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
constexpr
Expected&
operator=(Expected<U, E>&& value) = delete;

Return Value

Reference to the current object

Parameters

Name Description
value The object to move assign from

Assign from another reference Expected (move).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
requires detail::ok_bind_ref_v<R, U&>
constexpr
Expected&
operator=(Expected<U&, E>&& other);

Return Value

Reference to the current object

Parameters

Name Description
other Source instance to bind to or move error from.

Replace the stored state with an unexpected error (move).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class G>
requires std::is_constructible_v<E, G> && std::is_assignable_v<E&, G>
constexpr
Expected&
operator=(Unexpected<G>&& e);

Return Value

Reference to the current object

Parameters

Name Description
e Unexpected wrapper to move from.

and_then overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Invoke f with the bound reference when engaged.

template<class Fn>
constexpr
auto
and_then(Fn&& f) &;
» more...

Invoke f with the bound reference when engaged (const lvalue).

template<class Fn>
constexpr
auto
and_then(Fn&& f) const &;
» more...

Invoke f with the bound reference when engaged (rvalue).

template<class Fn>
constexpr
auto
and_then(Fn&& f) &&;
» more...

Invoke f with the bound reference when engaged (const rvalue).

template<class Fn>
constexpr
auto
and_then(Fn&& f) const &&;
» more...

Return Value

Result of f or current error.

Parameters

Name Description
f Continuation producing another Expected.

Invoke f with the bound reference when engaged.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
and_then(Fn&& f) &;

Return Value

Result of f or current error.

Parameters

Name Description
f Continuation producing another Expected.

Invoke f with the bound reference when engaged (const lvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
and_then(Fn&& f) const &;

Return Value

Result of f or current error.

Parameters

Name Description
f Continuation producing another Expected.

Invoke f with the bound reference when engaged (rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
and_then(Fn&& f) &&;

Return Value

Result of f or current error.

Parameters

Name Description
f Continuation producing another Expected.

Invoke f with the bound reference when engaged (const rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
and_then(Fn&& f) const &&;

Return Value

Result of f or current error.

Parameters

Name Description
f Continuation producing another Expected.

emplace overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Rebind to a new lvalue, returning the stored reference.

template<class U>
requires ok_bind_v<U&>
constexpr
T&
emplace(U& u) noexcept;
» more...

Deleted: cannot bind reference Expected to a temporary.

template<class U>
requires (!ok_bind_v<U &&>)
constexpr
T&
emplace(U&& u) = delete;
» more...

Return Value

Bound reference.

Parameters

Name Description
u Reference to bind to.

Rebind to a new lvalue, returning the stored reference.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
requires ok_bind_v<U&>
constexpr
T&
emplace(U& u) noexcept;

Return Value

Bound reference.

Parameters

Name Description
u Reference to bind to.

Deleted: cannot bind reference Expected to a temporary.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
requires (!ok_bind_v<U &&>)
constexpr
T&
emplace(U&& u) = delete;

error overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Access the stored error; requires disengaged state.

[[nodiscard]]
constexpr
E&
error() & noexcept;
» more...

Access the stored error (const lvalue).

[[nodiscard]]
constexpr
E const&
error() const & noexcept;
» more...

Access the stored error (rvalue).

[[nodiscard]]
constexpr
E&&
error() && noexcept;
» more...

Access the stored error (const rvalue).

[[nodiscard]]
constexpr
E const&&
error() const && noexcept;
» more...

Return Value

Access the stored error; requires disengaged state.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
E&
error() & noexcept;

Return Value

Reference to the stored error.

Access the stored error (const lvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
E const&
error() const & noexcept;

Return Value

Reference to the stored error.

Access the stored error (rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
E&&
error() && noexcept;

Return Value

Rvalue reference to the stored error.

Access the stored error (const rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
E const&&
error() const && noexcept;

Return Value

Rvalue reference to the stored error.

error_or overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Return the stored error or the provided fallback (copy).

template<class G = E>
constexpr
E
error_or(G&& g) const &;
» more...

Return the stored error or the provided fallback (move).

template<class G = E>
constexpr
E
error_or(G&& g) &&;
» more...

Return Value

Error value.

Parameters

Name Description
g Fallback error to return when engaged.

Return the stored error or the provided fallback (copy).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class G = E>
constexpr
E
error_or(G&& g) const &;

Return Value

Error value.

Parameters

Name Description
g Fallback error to return when engaged.

Return the stored error or the provided fallback (move).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class G = E>
constexpr
E
error_or(G&& g) &&;

Return Value

Error value.

Parameters

Name Description
g Fallback error to move when engaged.

Check whether the Expected currently contains a reference.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
bool
has_value() const noexcept;

Return Value

true if a reference is bound.

Dereference operators

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Dereference the bound reference.

[[nodiscard]]
constexpr
T&
operator*() & noexcept;
» more...

Dereference the bound reference (const).

[[nodiscard]]
constexpr
T const&
operator*() const & noexcept;
» more...

Dereference the bound reference, preserving value category.

[[nodiscard]]
constexpr
T&&
operator*() && noexcept;
» more...

Dereference the bound reference, preserving value category (const rvalue).

[[nodiscard]]
constexpr
T const&&
operator*() const && noexcept;
» more...

Return Value

Reference to the bound value.

Dereference the bound reference.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
T&
operator*() & noexcept;

Return Value

Reference to the bound value.

Dereference the bound reference (const).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
T const&
operator*() const & noexcept;

Return Value

Reference to the bound value.

Dereference the bound reference, preserving value category.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
T&&
operator*() && noexcept;

Return Value

Reference to the bound value.

Dereference the bound reference, preserving value category (const rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
T const&&
operator*() const && noexcept;

Return Value

Reference to the bound value.

Access the bound reference pointer; undefined if disengaged.

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Access the bound reference pointer; undefined if disengaged.

[[nodiscard]]
constexpr
T*
operator->() noexcept;
» more...

Access the bound reference pointer; undefined if disengaged.

[[nodiscard]]
constexpr
T const*
operator->() const noexcept;
» more...

Return Value

Pointer to the bound value.

Access the bound reference pointer; undefined if disengaged.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
T*
operator->() noexcept;

Return Value

Pointer to the bound value.

Access the bound reference pointer; undefined if disengaged.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
T const*
operator->() const noexcept;

Return Value

Pointer to the bound value.

or_else overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Recover with f if disengaged, otherwise return this value.

template<class Fn>
constexpr
Expected
or_else(Fn&& f) &;
» more...

Recover with f if disengaged (const lvalue).

template<class Fn>
constexpr
Expected
or_else(Fn&& f) const &;
» more...

Recover with f if disengaged (rvalue).

template<class Fn>
constexpr
Expected
or_else(Fn&& f) &&;
» more...

Recover with f if disengaged (const rvalue).

template<class Fn>
constexpr
Expected
or_else(Fn&& f) const &&;
» more...

Parameters

Name Description
f Recovery function returning an Expected.

Recover with f if disengaged, otherwise return this value.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
Expected
or_else(Fn&& f) &;

Return Value

Expected specialization for lvalue references. Holds either a bound reference to T or an unexpected error E.

Parameters

Name Description
f Recovery function returning an Expected.

Recover with f if disengaged (const lvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
Expected
or_else(Fn&& f) const &;

Return Value

Expected specialization for lvalue references. Holds either a bound reference to T or an unexpected error E.

Parameters

Name Description
f Recovery function returning an Expected.

Recover with f if disengaged (rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
Expected
or_else(Fn&& f) &&;

Return Value

Expected specialization for lvalue references. Holds either a bound reference to T or an unexpected error E.

Parameters

Name Description
f Recovery function returning an Expected.

Recover with f if disengaged (const rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
Expected
or_else(Fn&& f) const &&;

Return Value

Expected specialization for lvalue references. Holds either a bound reference to T or an unexpected error E.

Parameters

Name Description
f Recovery function returning an Expected.

Swap state with another reference Expected.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
void
swap(Expected& x) noexcept(std::is_nothrow_move_constructible_v<E> && std::is_nothrow_swappable_v<E &>)
requires std::is_swappable_v<E>;

Parameters

Name Description
x Other instance to exchange with.

transform overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Transform the bound value when engaged.

template<class Fn>
constexpr
auto
transform(Fn&& f) &;
» more...

Transform the bound value when engaged (const lvalue).

template<class Fn>
constexpr
auto
transform(Fn&& f) const &;
» more...

Transform the bound value when engaged (rvalue).

template<class Fn>
constexpr
auto
transform(Fn&& f) &&;
» more...

Transform the bound value when engaged (const rvalue).

template<class Fn>
constexpr
auto
transform(Fn&& f) const &&;
» more...

Return Value

Expected containing transformed value or current error.

Parameters

Name Description
f Transformation applied to the bound reference.

Transform the bound value when engaged.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
transform(Fn&& f) &;

Return Value

Expected containing transformed value or current error.

Parameters

Name Description
f Transformation applied to the bound reference.

Transform the bound value when engaged (const lvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
transform(Fn&& f) const &;

Return Value

Expected containing transformed value or current error.

Parameters

Name Description
f Transformation applied to the bound reference.

Transform the bound value when engaged (rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
transform(Fn&& f) &&;

Return Value

Expected containing transformed value or current error.

Parameters

Name Description
f Transformation applied to the bound reference.

Transform the bound value when engaged (const rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
transform(Fn&& f) const &&;

Return Value

Expected containing transformed value or current error.

Parameters

Name Description
f Transformation applied to the bound reference.

transform_error overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Transform the stored error when disengaged.

template<class Fn>
constexpr
auto
transform_error(Fn&& f) &;
» more...

Transform the stored error when disengaged (const lvalue).

template<class Fn>
constexpr
auto
transform_error(Fn&& f) const &;
» more...

Transform the stored error when disengaged (rvalue).

template<class Fn>
constexpr
auto
transform_error(Fn&& f) &&;
» more...

Transform the stored error when disengaged (const rvalue).

template<class Fn>
constexpr
auto
transform_error(Fn&& f) const &&;
» more...

Return Value

Expected with transformed error or current value.

Parameters

Name Description
f Transformation applied to the error.

Transform the stored error when disengaged.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
transform_error(Fn&& f) &;

Return Value

Expected with transformed error or current value.

Parameters

Name Description
f Transformation applied to the error.

Transform the stored error when disengaged (const lvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
transform_error(Fn&& f) const &;

Return Value

Expected with transformed error or current value.

Parameters

Name Description
f Transformation applied to the error.

Transform the stored error when disengaged (rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
transform_error(Fn&& f) &&;

Return Value

Expected with transformed error or current value.

Parameters

Name Description
f Transformation applied to the error.

Transform the stored error when disengaged (const rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Fn>
constexpr
auto
transform_error(Fn&& f) const &&;

Return Value

Expected with transformed error or current value.

Parameters

Name Description
f Transformation applied to the error.

value overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Return the bound reference or throw on disengaged state.

constexpr
T&
value() &;
» more...

Return the bound reference or throw on disengaged state (const lvalue).

constexpr
T const&
value() const &;
» more...

Return the bound reference or throw on disengaged state (rvalue).

constexpr
T&&
value() &&;
» more...

Return the bound reference or throw on disengaged state (const rvalue).

constexpr
T const&&
value() const &&;
» more...

Return the bound reference or throw on disengaged state.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
T&
value() &;

Return Value

the bound reference or throw on disengaged state.

Return the bound reference or throw on disengaged state (const lvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
T const&
value() const &;

Return Value

the bound reference or throw on disengaged state (const lvalue).

Return the bound reference or throw on disengaged state (rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
T&&
value() &&;

Return Value

the bound reference or throw on disengaged state (rvalue).

Return the bound reference or throw on disengaged state (const rvalue).

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
T const&&
value() const &&;

Return Value

the bound reference or throw on disengaged state (const rvalue).

value_or overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Return the bound value or a fallback copy when disengaged.

template<class U>
constexpr
std::remove_reference_t<T>
value_or(U&& u) const &;
» more...

Return the bound value or a fallback move when disengaged.

template<class U>
constexpr
std::remove_reference_t<T>
value_or(U&& u) &&;
» more...

Return Value

Parameters

Name Description
u Fallback value to return if no reference is bound.

Return the bound value or a fallback copy when disengaged.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
constexpr
std::remove_reference_t<T>
value_or(U&& u) const &;

Return Value

Bound value or fallback copy.

Parameters

Name Description
u Fallback value to return if no reference is bound.

Return the bound value or a fallback move when disengaged.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class U>
constexpr
std::remove_reference_t<T>
value_or(U&& u) &&;

Return Value

Bound value or fallback.

Parameters

Name Description
u Fallback value to move if no reference is bound.

Return true when a reference is bound.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
explicit
operator bool() const noexcept;

Return Value

true when a reference is bound.

Pointer to the referenced value when engaged.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
T* p_;

Stored unexpected error when disengaged.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
E unex_;

Stores only the operand of the explicit-specifier or noexcept-specifier as a string. The complete expression is not preserved at this time. This is a temporary design and may be improved in the future.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/ExplicitInfo.hpp>
struct ExplicitInfo;

Member Functions

NameDescription
operator<=> Compare explicit-specifier info.

Data Members

NameDescription
Implicit Whether an explicit-specifier was user-written.
Kind The evaluated exception specification.
Operand The operand of the explicit-specifier, if any.

Non-Member Functions

Name Description
toStringConvert ExplicitInfo to a string.

Compare explicit-specifier info.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/ExplicitInfo.hpp>
constexpr
auto
operator<=>(ExplicitInfo const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Whether an explicit-specifier was user-written.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/ExplicitInfo.hpp>
bool Implicit = true;

The evaluated exception specification.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/ExplicitInfo.hpp>
ExplicitKind Kind = ExplicitKind::False;

The operand of the explicit-specifier, if any.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/ExplicitInfo.hpp>
std::string Operand;

Represents an expression

Synopsis

Declared in <mrdocs/Metadata/Expression.hpp>
struct ExprInfo;

Member Functions

NameDescription
asExpr View this object as its base expression.
operator<=> Order expressions by written form.

Data Members

NameDescription
Written The expression, as written

Non-Member Functions

Name Description
mergeMerge metadata from another expression.

Derived Classes

Name Description
ConstantExprInfo Represents an expression with a (possibly known) value

View this object as its base expression.

Synopses

Declared in <mrdocs/Metadata/Expression.hpp>

View this object as its base expression.

ExprInfo&
asExpr() noexcept;
» more...

View this object as its base expression.

ExprInfo const&
asExpr() const noexcept;
» more...

View this object as its base expression.

Synopsis

Declared in <mrdocs/Metadata/Expression.hpp>
ExprInfo&
asExpr() noexcept;

Return Value

Represents an expression

View this object as its base expression.

Synopsis

Declared in <mrdocs/Metadata/Expression.hpp>
ExprInfo const&
asExpr() const noexcept;

Return Value

Represents an expression

Order expressions by written form.

Synopsis

Declared in <mrdocs/Metadata/Expression.hpp>
constexpr
auto
operator<=>(ExprInfo const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

The expression, as written

Synopsis

Declared in <mrdocs/Metadata/Expression.hpp>
std::string Written;

A format string with source location.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
template<class... Args>
struct FormatString;

Member Functions

NameDescription
FormatString [constructor]Capture a format string and its originating location.

Data Members

NameDescription
fs Format string view.
loc Originating source location for diagnostics.

Non-Member Functions

Name Description
formatErrorReturn a formatted error.

Capture a format string and its originating location.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
template<class T>
FormatString(
    T const& fs_,
    std::source_location loc_ = source_location::current());

Parameters

Name Description
fs_ The format string to copy.
loc_ Source location where formatting is requested.

Format string view.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
std::string_view fs;

Originating source location for diagnostics.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
std::source_location loc;

Info for friend declarations.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Friend.hpp>
struct FriendInfo final

Description

- Friendship is not transitive - Friendship is not inherited - Access specifiers do not affect the meaning of friend declarations

The friends of a record are stored directly in the record's metadata.

If the friend declaration is documented, the documentation is stored in the befriended symbol's metadata rather than in the relationship.

Data Members

NameDescription
Type Befriended type.
id Befriended symbol.

Non-Member Functions

Name Description
mergeMerge another FriendInfo into this one.

Befriended type.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Friend.hpp>
Optional<Polymorphic<Type>> Type = std::nullopt;

Description

This member is nullable and only used when befriending a type.

Befriended symbol.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Friend.hpp>
SymbolID id = = SymbolID::invalid;

Metadata for a function or method.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
struct FunctionSymbol final
    : SymbolCommonBase<SymbolKind::Function>

Base Classes

Name Description
SymbolCommonBase<SymbolKind::Function>Base class for providing variant discriminator functions.

Member Functions

NameDescription
FunctionSymbol [constructor]Construct a function symbol with its ID.
operator<=> Compare functions by signature, qualifiers, and metadata.

Static Member Functions

Name
isConcept
isEnum
isEnumConstant
isFunction
isGuide
isNamespace
isNamespaceAlias
isOverloads
isRecord
isTypedef
isUsing
isVariable

Data Members

NameDescription
Attributes Collected attributes attached to the declaration.
Class The class of function this is
Constexpr constexpr/consteval specifier.
Explicit explicit-specifier information.
HasOverrideAttr True when annotated with override.
HasTrailingReturn True when using a trailing return type.
IsConst True when qualified const.
IsDefaulted True when this declaration is implicitly defaulted.
IsDeleted True when this declaration is deleted.
IsDeletedAsWritten True when deleted as written (vs deduced).
IsExplicitObjectMemberFunction True when explicit object parameter syntax is used.
IsExplicitlyDefaulted True when explicitly defaulted with = default.
IsFinal True when final-qualified.
IsNoReturn True when marked [[noreturn]]or equivalent.
IsNodiscard True when declared [[nodiscard]].
IsPure True when the function is pure virtual.
IsRecordMethod True when this is a non-static member function.
IsVariadic True when the function is variadic.
IsVirtual True when declared virtual (after overrides).
IsVirtualAsWritten True when explicitly written virtual.
IsVolatile True when qualified volatile.
Noexcept Exception specification for the function.
OverloadedOperator Overloaded operator kind, if any.
Params List of parameters.
RefQualifier Reference qualifier on the member function, if any.
Requires Constrained requires-clause if present.
ReturnType Info about the return type of this function.
StorageClass Storage class specifier.
Template When present, this function is a template or specialization.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
canMergeCheck whether two symbols may be merged.
getPrimaryLocationDetermine a location to use when none is explicitly chosen.
mergeMerges two Symbol objects.
mergeMerge metadata from another function symbol.
overridesDetermine if one function would override the other

Construct a function symbol with its ID.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
explicit
FunctionSymbol(SymbolID const& ID) noexcept;

Parameters

Name Description
ID The object to copy construct from

Compare functions by signature, qualifiers, and metadata.

Synopses

Declared in <mrdocs/Metadata/Symbol/Function.hpp>

Compare functions by signature, qualifiers, and metadata.

std::strong_ordering
operator<=>(FunctionSymbol const& other) const;
» more...

Three-way comparison operator

auto
operator<=>(SymbolCommonBase<mrdocs::SymbolKind::Function> const& rhs) const = default;
» more...

Compare functions by signature, qualifiers, and metadata.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
std::strong_ordering
operator<=>(FunctionSymbol const& other) const;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
auto
operator<=>(SymbolCommonBase<mrdocs::SymbolKind::Function> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isConcept() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnum() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnumConstant() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isGuide() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespace() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespaceAlias() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isOverloads() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isRecord() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isTypedef() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isUsing() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isVariable() noexcept;

Collected attributes attached to the declaration.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
std::vector<std::string> Attributes;

The class of function this is

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
FunctionClass Class = FunctionClass::Normal;

constexpr/consteval specifier.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
ConstexprKind Constexpr = ConstexprKind::None;

explicit-specifier information.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
ExplicitInfo Explicit;

True when annotated with override.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
bool HasOverrideAttr = false;

True when using a trailing return type.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
bool HasTrailingReturn = false;

True when qualified const.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
bool IsConst = false;

True when this declaration is implicitly defaulted.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
bool IsDefaulted = false;

True when this declaration is deleted.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
bool IsDeleted = false;

True when deleted as written (vs deduced).

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
bool IsDeletedAsWritten = false;

True when explicit object parameter syntax is used.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
bool IsExplicitObjectMemberFunction = false;

True when explicitly defaulted with = default.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
bool IsExplicitlyDefaulted = false;

True when final-qualified.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
bool IsFinal = false;

True when marked [[noreturn]]or equivalent.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
bool IsNoReturn = false;

True when declared [[nodiscard]].

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
bool IsNodiscard = false;

True when the function is pure virtual.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
bool IsPure = false;

True when this is a non-static member function.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
bool IsRecordMethod = false;

True when the function is variadic.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
bool IsVariadic = false;

True when declared virtual (after overrides).

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
bool IsVirtual = false;

True when explicitly written virtual.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
bool IsVirtualAsWritten = false;

True when qualified volatile.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
bool IsVolatile = false;

Exception specification for the function.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
NoexceptInfo Noexcept;

Overloaded operator kind, if any.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
OperatorKind OverloadedOperator = OperatorKind::None;

List of parameters.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
std::vector<Param> Params;

Reference qualifier on the member function, if any.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
ReferenceKind RefQualifier = ReferenceKind::None;

Constrained requires-clause if present.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
ExprInfo Requires;

Info about the return type of this function.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
Polymorphic<Type> ReturnType = Polymorphic<Type>(AutoType{});

Description

If the function has a deduced return type, this contains auto to indicate that.

By default, we also use auto in the member to indicate an unknown return type.

Storage class specifier.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
StorageClassKind StorageClass = StorageClassKind::None;

When present, this function is a template or specialization.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
Optional<TemplateInfo> Template;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
constexpr static
SymbolKind kind_id;

Function type with parameters, qualifiers, and noexcept info.

Synopsis

Declared in <mrdocs/Metadata/Type/FunctionType.hpp>
struct FunctionType final
    : TypeCommonBase<TypeKind::Function>

Base Classes

Name Description
TypeCommonBase<TypeKind::Function>CRTP base that ties a concrete type to a fixed TypeKind.

Member Functions

NameDescription
operator<=> Compare function types by return, params, and qualifiers.

Static Member Functions

Name
isArray
isAuto
isDecltype
isFunction
isLValueReference
isMemberPointer
isNamed
isPointer
isRValueReference

Data Members

NameDescription
ExceptionSpec Exception specification information.
IsVariadic True when this function type is variadic.
ParamTypes Parameter types in declaration order.
RefQualifier Reference qualifier (if present).
ReturnType Return type, defaults to auto when unknown.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
innerTypeReturn the inner type.
innerTypeReturn the inner type.
innerTypePtrReturn the inner type.
innerTypePtrReturn the inner type.
toStringRender a type to a human-readable string.

Compare function types by return, params, and qualifiers.

Synopses

Declared in <mrdocs/Metadata/Type/FunctionType.hpp>

Compare function types by return, params, and qualifiers.

std::strong_ordering
operator<=>(FunctionType const& rhs) const;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(TypeCommonBase<mrdocs::TypeKind::Function> const& rhs) const = default;
» more...

Compare function types by return, params, and qualifiers.

Synopsis

Declared in <mrdocs/Metadata/Type/FunctionType.hpp>
std::strong_ordering
operator<=>(FunctionType const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
auto
operator<=>(TypeCommonBase<mrdocs::TypeKind::Function> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isArray() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isAuto() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isDecltype() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isLValueReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isMemberPointer() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isNamed() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isPointer() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isRValueReference() noexcept;

Exception specification information.

Synopsis

Declared in <mrdocs/Metadata/Type/FunctionType.hpp>
NoexceptInfo ExceptionSpec;

True when this function type is variadic.

Synopsis

Declared in <mrdocs/Metadata/Type/FunctionType.hpp>
bool IsVariadic = false;

Parameter types in declaration order.

Synopsis

Declared in <mrdocs/Metadata/Type/FunctionType.hpp>
std::vector<Polymorphic<Type>> ParamTypes;

Reference qualifier (if present).

Synopsis

Declared in <mrdocs/Metadata/Type/FunctionType.hpp>
ReferenceKind RefQualifier = ReferenceKind::None;

Return type, defaults to auto when unknown.

Synopsis

Declared in <mrdocs/Metadata/Type/FunctionType.hpp>
Polymorphic<Type> ReturnType = Polymorphic<Type>(AutoType{});

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr static
TypeKind kind_id;

Base class for documentation generators.

Synopsis

Declared in <mrdocs/Generator.hpp>
class Generator;

Member Functions

NameDescription
~Generator [destructor] [virtual]Destructor.
build Build reference documentation for the corpus.
buildOne buildOne overloads
buildOneString Build the reference as a single page to a string.
displayName [virtual]Return the display name of the generator.
fileExtension [virtual]Return the extension or tag of the generator.
id [virtual]Return the symbolic name of the generator.

Non-Member Functions

Name Description
findGeneratorFind a generator by its id.

Destructor.

Synopsis

Declared in <mrdocs/Generator.hpp>
virtual
~Generator() noexcept;

Build reference documentation for the corpus.

Synopses

Declared in <mrdocs/Generator.hpp>

Build reference documentation for the corpus.

Expected<void>
build(Corpus const& corpus) const;
» more...

Build reference documentation for the corpus.

virtual
Expected<void>
build(
    std::string_view outputPath,
    Corpus const& corpus) const;
» more...

Return Value

The error, if any occurred.

Parameters

Name Description
corpus The symbols to emit. The generator may modify the contents of the object before returning.
outputPath A directory or filename.

Build reference documentation for the corpus.

Synopsis

Declared in <mrdocs/Generator.hpp>
Expected<void>
build(Corpus const& corpus) const;

Description

This function invokes the generator to emit the documentation using the corpus configuration options to determine the output location.

Return Value

The error, if any occurred.

Parameters

Name Description
corpus The symbols to emit. The generator may modify the contents of the object before returning.

Build reference documentation for the corpus.

Synopsis

Declared in <mrdocs/Generator.hpp>
virtual
Expected<void>
build(
    std::string_view outputPath,
    Corpus const& corpus) const;

Description

This function invokes the generator to emit the documentation using outputPath as a parameter indicating where the output should go. This can be a directory or a filename depending on the generator and how it is configured.

The default implentation assumes the output is single-page and emits the file reference.ext using buildOne to generate the content.

The typical implementation will have behavior similar to the default implementation if the output is single-page, or will iterate over the symbols in the corpus to generate multiple files if the output is multi-page.

Return Value

The error, if any occurred.

Parameters

Name Description
outputPath A directory or filename.
corpus The symbols to emit. The generator may modify the contents of the object before returning.

buildOne overloads

Synopses

Declared in <mrdocs/Generator.hpp>

Build the reference as a single page to a file.

Expected<void>
buildOne(
    std::string_view fileName,
    Corpus const& corpus) const;
» more...

Build reference documentation for the corpus.

virtual
Expected<void>
buildOne(
    std::ostream& os,
    Corpus const& corpus) const = 0;
» more...

Return Value

The error, if any occurred.

Parameters

Name Description
fileName The file to write. If the file already exists, it will be overwritten.
corpus The metadata to emit.
os The stream to write to.

Build the reference as a single page to a file.

Synopsis

Declared in <mrdocs/Generator.hpp>
Expected<void>
buildOne(
    std::string_view fileName,
    Corpus const& corpus) const;

Thread Safety

Return Value

The error, if any occurred.

Parameters

Name Description
fileName The file to write. If the file already exists, it will be overwritten.
corpus The metadata to emit.

Build reference documentation for the corpus.

Synopsis

Declared in <mrdocs/Generator.hpp>
virtual
Expected<void>
buildOne(
    std::ostream& os,
    Corpus const& corpus) const = 0;

Description

This function invokes the generator to emit the full documentation to an output stream, as a single entity.

Thread Safety

Return Value

The error, if any occurred.

Parameters

Name Description
os The stream to write to.
corpus The metadata to emit.

Build the reference as a single page to a string.

Synopsis

Declared in <mrdocs/Generator.hpp>
Expected<void>
buildOneString(
    std::string& dest,
    Corpus const& corpus) const;

Return Value

The error, if any occurred.

Parameters

Name Description
dest The string to hold the result. For the duration of the call, this must not be accessed by any other threads.
corpus The metadata to emit.

Return the display name of the generator.

Synopsis

Declared in <mrdocs/Generator.hpp>
virtual
std::string_view
displayName() const noexcept = 0;

Return Value

the display name of the generator.

Return the extension or tag of the generator.

Synopsis

Declared in <mrdocs/Generator.hpp>
virtual
std::string_view
fileExtension() const noexcept = 0;

Description

This should be in all lower case. Examples of tags are:

The returned string should not include a leading period.

Return Value

the extension or tag of the generator.

Return the symbolic name of the generator.

Synopsis

Declared in <mrdocs/Generator.hpp>
virtual
std::string_view
id() const noexcept = 0;

Description

This is a short, unique string which identifies the generator in command line options and in configuration files.

Return Value

the symbolic name of the generator.

A glob pattern matcher

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
class GlobPattern;

Description

Nested brace expansions "{<glob>,"{<glob>,...}",...}" are not supported.

Member Functions

NameDescription
GlobPattern [constructor]Constructors
~GlobPattern [destructor]Destructor
operator= Assignment operators
isLiteral Checks if the glob pattern is a literal string.
match Matches the given string against the glob pattern.
matchPatternPrefix Matches the start of a given string against the glob pattern.
pattern Returns the glob pattern.

Static Member Functions

NameDescription
create create overloads

Constructors

Synopses

Declared in <mrdocs/Support/Glob.hpp>

Construct an empty GlobPattern.

GlobPattern();
» more...

Copy constructor

GlobPattern(GlobPattern const& other);
» more...

Move constructor

GlobPattern(GlobPattern&& other) noexcept;
» more...

Construct an empty GlobPattern.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
GlobPattern();

Description

An empty GlobPattern will never match any string.

Copy constructor

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
GlobPattern(GlobPattern const& other);

Parameters

Name Description
other The object to copy construct from

Move constructor

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
GlobPattern(GlobPattern&& other) noexcept;

Parameters

Name Description
other The object to move construct from

Destructor

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
~GlobPattern();

Assignment operators

Synopses

Declared in <mrdocs/Support/Glob.hpp>

Copy assignment

GlobPattern&
operator=(GlobPattern const& other);
» more...

Move assignment

GlobPattern&
operator=(GlobPattern&& other) noexcept;
» more...

Copy assignment

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
GlobPattern&
operator=(GlobPattern const& other);

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Move assignment

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
GlobPattern&
operator=(GlobPattern&& other) noexcept;

Return Value

Reference to the current object

Parameters

Name Description
other The object to move assign from

Checks if the glob pattern is a literal string.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
bool
isLiteral() const;

Description

This function determines if the glob pattern does not contain any special characters. In other words, it matches a single string.

Return Value

true if the glob pattern is a literal string, false otherwise.

Matches the given string against the glob pattern.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
bool
match(
    std::string_view str,
    char delimiter) const;

Return Value

true if the string matches the pattern, false otherwise.

Parameters

Name Description
str The string to match against the pattern.
delimiter The character that * does not match.

Matches the start of a given string against the glob pattern.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
bool
matchPatternPrefix(
    std::string_view prefix,
    char delimiter) const;

Description

This function determines if the given string with the specified prefix can potentially match the glob pattern.

If the string matches the start of the pattern without failure, even if there are characters left in the string or the pattern, the function returns true.

Return Value

true if the string prefix matches the pattern, false otherwise.

Parameters

Name Description
prefix The string to match against the pattern.
delimiter The character that * does not match.

Returns the glob pattern.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
std::string_view
pattern() const;

Return Value

The glob pattern as a string view.

create overloads

Synopses

Declared in <mrdocs/Support/Glob.hpp>

Create a glob pattern without limiting subpattern count.

static
Expected<GlobPattern>
create(std::string_view pattern);
» more...

Constructs a GlobPattern with the given pattern.

static
Expected<GlobPattern>
create(
    std::string_view pattern,
    Optional<std::size_t> maxSubGlobs);
» more...

Return Value

Parameters

Name Description
pattern Glob expression to compile.
maxSubGlobs The maximum number of subpatterns allowed. If the pattern contains more subpatterns than this value, an error is returned. If not specified, there is no limit.

Create a glob pattern without limiting subpattern count.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
static
Expected<GlobPattern>
create(std::string_view pattern);

Return Value

Compiled pattern or an error.

Parameters

Name Description
pattern Glob expression to compile.

Constructs a GlobPattern with the given pattern.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
static
Expected<GlobPattern>
create(
    std::string_view pattern,
    Optional<std::size_t> maxSubGlobs);

Return Value

The constructed GlobPattern, or an error if the pattern is invalid.

Parameters

Name Description
pattern The glob pattern to use for matching.
maxSubGlobs The maximum number of subpatterns allowed. If the pattern contains more subpatterns than this value, an error is returned. If not specified, there is no limit.

Info for deduction guides.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Guide.hpp>
struct GuideSymbol final
    : SymbolCommonBase<SymbolKind::Guide>

Base Classes

Name Description
SymbolCommonBase<SymbolKind::Guide>Base class for providing variant discriminator functions.

Member Functions

NameDescription
GuideSymbol [constructor]Construct a deduction guide symbol with its ID.
operator<=> Compare guides by params/deduced/template/explicit.

Static Member Functions

Name
isConcept
isEnum
isEnumConstant
isFunction
isGuide
isNamespace
isNamespaceAlias
isOverloads
isRecord
isTypedef
isUsing
isVariable

Data Members

NameDescription
Deduced The pattern for the deduced specialization.
Explicit The explicit-specifier, if any.
Params The parameters of the deduction guide.
Template Template head, if any.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
canMergeCheck whether two symbols may be merged.
getPrimaryLocationDetermine a location to use when none is explicitly chosen.
mergeMerge another GuideSymbol into this one.
mergeMerges two Symbol objects.

Construct a deduction guide symbol with its ID.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Guide.hpp>
explicit
GuideSymbol(SymbolID ID) noexcept;

Parameters

Name Description
ID The object to construct from

Compare guides by params/deduced/template/explicit.

Synopses

Declared in <mrdocs/Metadata/Symbol/Guide.hpp>

Compare guides by params/deduced/template/explicit.

std::strong_ordering
operator<=>(GuideSymbol const& other) const;
» more...

Three-way comparison operator

auto
operator<=>(SymbolCommonBase<mrdocs::SymbolKind::Guide> const& rhs) const = default;
» more...

Compare guides by params/deduced/template/explicit.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Guide.hpp>
std::strong_ordering
operator<=>(GuideSymbol const& other) const;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
auto
operator<=>(SymbolCommonBase<mrdocs::SymbolKind::Guide> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isConcept() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnum() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnumConstant() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isGuide() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespace() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespaceAlias() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isOverloads() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isRecord() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isTypedef() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isUsing() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isVariable() noexcept;

The pattern for the deduced specialization.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Guide.hpp>
Polymorphic<Type> Deduced = Polymorphic<Type>(AutoType{});

Description

This is always a SpecializationType.

The explicit-specifier, if any.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Guide.hpp>
ExplicitInfo Explicit;

The parameters of the deduction guide.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Guide.hpp>
std::vector<Param> Params;

Template head, if any.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Guide.hpp>
Optional<TemplateInfo> Template;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
constexpr static
SymbolKind kind_id;

A handlebars environment

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
class Handlebars;

Description

This class implements a handlebars template environment.

It is analogous to the complete state held by the handlebars.js module, including registered helpers and partials.

In the general case, handlebars.js provides a global Handlebars environment where helpers and partials are registered:

{.js} let template = Handlebars.compile("{{foo}}"); let result = template({foo: "bar"});

but also provides a way to create a new isolated environment with its own helpers and partials:

{.js} let OtherHandlebars = Handlebars.create(); let template = OtherHandlebars.compile("{{foo}}"); let result = template({foo: "bar"});

In this implementation, however, there's no global environment. A new environment needs to be created explicitly be instantiating this class:

{.cpp} Handlebars env; dom::Object context; context["foo"] = "bar"; std::string result = env.render("{{ foo }}", context); assert(result == "bar");

A handlebars template can be rendered using the context data provided as a dom::Value, which is usually a dom::Object at the first level when calling render.

In the most general case, the result can returned as a string or rendered directly to a buffer or stream. The render function provides an overload that allows the caller to provide an output stream where the template will be rendered directly without allocating a string:

{.cpp} Handlebars env; dom::Object context; context["foo"] = "bar"; env.render_to(std::cout, "{{ foo }}", context); // prints "bar" to stdout {.cpp} Handlebars env; dom::Object context; context["foo"] = "bar"; std::string result; env.render_to(result, "{{ foo }}", context); assert(result == "bar");

Design considerations:

The following notes include some design considerations for the current implementation of this class. These are intended to describe the current state of the class rather than to provide the final specification of the class behavior.

Compiled templates:

Unlike handlebars.js, this implementation renders the template directly to the output stream, without requiring an intermediary object to store a representation of the compiled template (Handlebars.precompile) or an intermediary callable object required to ultimately render the template (Handlebars.precompile).

The rationale is that there is not much benefit in pre-compiling templates in C++, since both iterating the input string and a pre-compiled template would have very similar costs even in optimal implementations of the compiled template.

The most significant benefit of pre-compiling templates in C++ would be the faster identification of the ends of blocks, which would allow the engine iterate the block only once. For this reason, compiled templates will still be considered in a future version of this sub-library.

Also note that compiled templates cannot avoid exceptions, because a compiled template can still invoke a helper that throws exceptions and evaluate dynamic expressions that cannot be identified during the first pass.

Incremental rendering and compilation:

Although this is not supported by handlebars.js, it's common for C++ template engines to support incremental rendering, where the template is compiled or rendered in chunks as it is parsed. This implementation does not yet support this feature.

This is useful for streaming templates, where the template is rendered to a stream as it is parsed, without requiring the entire template to be parsed and compiled before rendering starts.

There are two types of incremental rendering and compilation supported by this implementation:

- Incremental rendering of a partial template input to a stream - Incremental rendering into an output buffer of fixed size

In each of these cases, the template is rendered in chunks until the end of the partial template is reached or the output buffer is full.

In a scenario with compiled templates, the complexity of incremental rendering needs to be implemented for both compilation and rendering.

The main difficulty to implement incremental rendering for handlebars.js is that helpers can be invoked from anywhere in the template, and most content is actually rendered by helpers. This means that helpers would need to be able to interoperate with whatever mechanism is designed to support suspension in this recursive-coroutine-like interface.

Error propagation:

The main logic to render a template is implemented in the render function, does not throws by itself. How identifying the next tag in a template string, the algorithms uses a loose implementation where unclosed tags are rendered as-is instead of throwing errors.

However, helpers are allowed to throw exceptions to propagate errors, so the render function is not noexcept.

For this reason, exceptions thrown by helpers are in fact exceptional conditions that should be handled by the caller. In general, exceptions can be avoided completely by not throwing exceptions from helpers.

Types

NameDescription
Tag Internal representation of a parsed Handlebars tag.

Member Functions

NameDescription
Handlebars [constructor]Construct a handlebars environment
registerHelper Register a helper accessible by any template in the environment.
registerLogger Register a logger
registerPartial Register a partial
render Render a handlebars template
render_to Render a handlebars template
try_render Render a handlebars template
try_render_to Render a handlebars template
unregisterHelper Unregister a helper
unregisterPartial Unregister a partial

Non-Member Functions

Name Description
helpers::registerAntoraHelpersRegister all the Antora helpers into a Handlebars instance
helpers::registerBuiltinHelpersRegister all the built-in helpers into a Handlebars instance
helpers::registerConstructorHelpersRegister contructor helpers into a Handlebars instance
helpers::registerContainerHelpersRegister helpers to manipulate composite data types
helpers::registerLogicalHelpersRegister logical helpers into a Handlebars instance
helpers::registerMathHelpersRegister math helpers into a Handlebars instance
helpers::registerStringHelpersRegister string helpers into a Handlebars instance
helpers::registerTypeHelpersRegister type helpers into a Handlebars instance
js::registerHelperRegister a JavaScript helper function

See Also

https://handlebarsjs.com/

Internal representation of a parsed Handlebars tag.

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
struct Tag;

Construct a handlebars environment

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
Handlebars();

Description

This constructor creates a new handlebars environment with the built-in helpers and default logger.

Each environment has its own helpers and partials. Multiple environments are only necessary for use cases that demand distinct helpers or partials.

See Also

helpers::registerBuiltinHelpers

Register a helper accessible by any template in the environment.

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
void
registerHelper(
    std::string_view name,
    dom::Function const& helper);

Description

The helper type is a type erased function of type dom::Function, which receives the resolved template arguments as parameters as a dom::Value for each parameter.

The helper function also receives an object populated with variables that are accessible in the current context as its N+1-th parameter. This object contains information about the current context and is useful for helpers that want to change the current context or render internal blocks.

As all instances of dom::Function, the helper should also return a dom::Value. If the function semantics does not require a return value, the function should return a dom::Value of type dom::Kind::Undefined.

When the helper is used in an subexpression, the dom::Value return value is used as the intermediary result. When the helper is used in a block or a final expression, the dom::Value return value will be formatted to the output.

Parameters

Name Description
name The name of the helper in the handlebars template
helper The helper function

See Also

https://handlebarsjs.com/guide/expressions.html

https://handlebarsjs.com/guide/block-helpers.html

https://handlebarsjs.com/guide/builtin-helpers.html

Register a logger

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
void
registerLogger(dom::Function fn);

Description

This function registers a logger with the handlebars environment. A logger is a function that is called from the built-in "log" helper function.

The logger can also be called from any helper through the HandlebarsCallback parameter.

The logger function is called with a dom::Value indicating the current level and a dom::Array containing values to be logged.

Parameters

Name Description
fn The logger function

Register a partial

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
void
registerPartial(
    std::string_view name,
    std::string_view text);

Description

This function registers a partial with the handlebars environment.

A partial is a template that can be referenced from another template. The partial is rendered in the context of the template that references it.

For instance, a partial can be used to render a header or footer that is common to several pages. It can also be used to render a list of items that is used in several places.

The following example template uses the partial item to render a list of items:

{.handlebars} <ul> {{#each items}} {{> item}} {{/each}} </ul>

Parameters

Name Description
name The name of the partial
text The content of the partial

See Also

https://handlebarsjs.com/guide/partials.html

Render a handlebars template

Synopses

Declared in <mrdocs/Support/Handlebars.hpp>
std::string
render(std::string_view templateText) const;
» more...
std::string
render(
    std::string_view templateText,
    dom::Value const& context) const;
» more...

Render a handlebars template

std::string
render(
    std::string_view templateText,
    dom::Value const& context,
    HandlebarsOptions const& options) const;
» more...

Return Value

The rendered text

Parameters

Name Description
templateText The handlebars template text
context The data to render
options The options to use

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
std::string
render(std::string_view templateText) const;

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
std::string
render(
    std::string_view templateText,
    dom::Value const& context) const;

Render a handlebars template

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
std::string
render(
    std::string_view templateText,
    dom::Value const& context,
    HandlebarsOptions const& options) const;

Description

This function renders the specified handlebars template and returns the result as a string.

The context data to render is passed as a dom::Value, which is usually a dom::Object at the first level. When the context is not an object, it is accessed from the handlebars template with the this keyword.

Return Value

The rendered text

Parameters

Name Description
templateText The handlebars template text
context The data to render
options The options to use

Render a handlebars template

Synopses

Declared in <mrdocs/Support/Handlebars.hpp>
void
render_to(
    OutputRef& out,
    std::string_view templateText) const;
» more...
void
render_to(
    OutputRef& out,
    std::string_view templateText,
    dom::Value const& context) const;
» more...

Render a handlebars template

void
render_to(
    OutputRef& out,
    std::string_view templateText,
    dom::Value const& context,
    HandlebarsOptions const& options) const;
» more...

Return Value

The rendered text

Parameters

Name Description
out The output stream reference
templateText The handlebars template text
context The data to render
options The options to use

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
void
render_to(
    OutputRef& out,
    std::string_view templateText) const;

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
void
render_to(
    OutputRef& out,
    std::string_view templateText,
    dom::Value const& context) const;

Render a handlebars template

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
void
render_to(
    OutputRef& out,
    std::string_view templateText,
    dom::Value const& context,
    HandlebarsOptions const& options) const;

Description

This function renders the specified handlebars template and writes the result to the specified output stream.

The output stream can be any type convertible to OutputRef, which is a reference to a stream that can be written to with the << operator.

Return Value

The rendered text

Parameters

Name Description
out The output stream reference
templateText The handlebars template text
context The data to render
options The options to use

Render a handlebars template

Synopses

Declared in <mrdocs/Support/Handlebars.hpp>
Expected<std::string, HandlebarsError>
try_render(std::string_view templateText) const;
» more...
Expected<std::string, HandlebarsError>
try_render(
    std::string_view templateText,
    dom::Value const& context) const;
» more...

Render a handlebars template

Expected<std::string, HandlebarsError>
try_render(
    std::string_view templateText,
    dom::Value const& context,
    HandlebarsOptions const& options) const;
» more...

Return Value

The rendered text

Parameters

Name Description
templateText The handlebars template text
context The data to render
options The options to use

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
Expected<std::string, HandlebarsError>
try_render(std::string_view templateText) const;

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
Expected<std::string, HandlebarsError>
try_render(
    std::string_view templateText,
    dom::Value const& context) const;

Render a handlebars template

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
Expected<std::string, HandlebarsError>
try_render(
    std::string_view templateText,
    dom::Value const& context,
    HandlebarsOptions const& options) const;

Description

This function renders the specified handlebars template and writes the result to the specified output stream.

The output stream can be any type convertible to OutputRef, which is a reference to a stream that can be written to with the << operator.

Return Value

The rendered text

Parameters

Name Description
templateText The handlebars template text
context The data to render
options The options to use

Render a handlebars template

Synopses

Declared in <mrdocs/Support/Handlebars.hpp>
Expected<void, HandlebarsError>
try_render_to(
    OutputRef& out,
    std::string_view templateText) const;
» more...
Expected<void, HandlebarsError>
try_render_to(
    OutputRef& out,
    std::string_view templateText,
    dom::Value const& context) const;
» more...

Render a handlebars template

Expected<void, HandlebarsError>
try_render_to(
    OutputRef& out,
    std::string_view templateText,
    dom::Value const& context,
    HandlebarsOptions const& options) const;
» more...

Return Value

The rendered text

Parameters

Name Description
out The output stream reference
templateText The handlebars template text
context The data to render
options The options to use

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
Expected<void, HandlebarsError>
try_render_to(
    OutputRef& out,
    std::string_view templateText) const;

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
Expected<void, HandlebarsError>
try_render_to(
    OutputRef& out,
    std::string_view templateText,
    dom::Value const& context) const;

Render a handlebars template

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
Expected<void, HandlebarsError>
try_render_to(
    OutputRef& out,
    std::string_view templateText,
    dom::Value const& context,
    HandlebarsOptions const& options) const;

Description

This function renders the specified handlebars template and writes the result to the specified output stream.

The output stream can be any type convertible to OutputRef, which is a reference to a stream that can be written to with the << operator.

Return Value

The rendered text

Parameters

Name Description
out The output stream reference
templateText The handlebars template text
context The data to render
options The options to use

Unregister a helper

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
void
unregisterHelper(std::string_view name);

Description

This function unregisters a helper with the handlebars environment.

Parameters

Name Description
name The name of the helper

Unregister a partial

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
void
unregisterPartial(std::string_view name);

Description

This function unregisters a partial with the handlebars environment.

Parameters

Name Description
name The name of the partial

An error thrown or returned by Handlebars

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
struct HandlebarsError
    : std::runtime_error

Description

An error returned or thrown by Handlebars environment when an error occurs during template rendering.

The error message will be the same as the error message returned by Handlebars.js.

The object will also contain the line, column and position of the error in the template. These can be used to by the caller to provide more detailed error messages.

Base Classes

Name Description
std::runtime_error

Member Functions

NameDescription
HandlebarsError [constructor]Constructors
operator=
what [virtual]

Data Members

NameDescription
column Column of the error in the template.
line Line number in the template where the error occurred.
pos Absolute character position of the error.

Constructors

Synopses

Declared in <mrdocs/Support/Handlebars.hpp>

Construct an error with a message.

HandlebarsError(std::string_view msg);
» more...

Construct an error with location information.

HandlebarsError(
    std::string_view msg,
    std::size_t line_,
    std::size_t column_,
    std::size_t pos_);
» more...

Parameters

Name Description
msg Description of the failure.
line_ Line number where it occurred.
column_ Column number where it occurred.
pos_ Absolute character position.

Construct an error with a message.

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
HandlebarsError(std::string_view msg);

Parameters

Name Description
msg Description of the failure.

Construct an error with location information.

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
HandlebarsError(
    std::string_view msg,
    std::size_t line_,
    std::size_t column_,
    std::size_t pos_);

Parameters

Name Description
msg Description of the failure.
line_ Line number where it occurred.
column_ Column number where it occurred.
pos_ Absolute character position.

Synopsis

Declared in <stdexcept>
runtime_error&
operator=(runtime_error const& value) noexcept;

Synopsis

Declared in <stdexcept>
virtual
char const*
what() const noexcept override;

Column of the error in the template.

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
std::size_t column = static_cast<std::size_t>(-1);

Line number in the template where the error occurred.

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
std::size_t line = static_cast<std::size_t>(-1);

Absolute character position of the error.

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
std::size_t pos = static_cast<std::size_t>(-1);

Options for handlebars

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
struct HandlebarsOptions;

Description

This struct is analogous to the Handlebars.compile options.

Data Members

NameDescription
assumeObjects Removes object existence checks when traversing paths
compat Enable recursive field lookup
data Custom private data object
escapeFunction Function to escape entities
explicitPartialContext Disables implicit context for partials
ignoreStandalone Disables standalone tag removal when set to true
noEscape Escape HTML entities or entities defined by the escape function
preventIndent Disable the auto-indent feature
strict Templates will throw rather than ignore missing fields
trackIds Enable tracking of ids

See Also

https://handlebarsjs.com/api-reference/compilation.html

Removes object existence checks when traversing paths

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
bool assumeObjects = false;

Description

This is a subset of strict mode that generates optimized templates when the data inputs are known to be safe.

Enable recursive field lookup

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
bool compat = false;

Description

When enabled, fields will be looked up recursively in objects and arrays.

This mode should be used to enable complete compatibility with Mustache templates.

Custom private data object

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
dom::Value data = nullptr;

Description

This variable can be used to pass in an object to define custom private variables.

Function to escape entities

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
std::function<void(OutputRef&, std::string_view)> escapeFunction = static_cast<void(*)(OutputRef&, std::string_view)>(HTMLEscape);

Description

It's initialized with a reference to the HTMLEscape function overload that takes an OutputRef and a string_view. This function can be replaced with a custom function that escapes entities in a different way.

Disables implicit context for partials

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
bool explicitPartialContext = false;

Description

When enabled, partials that are not passed a context value will execute against an empty object.

Disables standalone tag removal when set to true

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
bool ignoreStandalone = false;

Description

By default, Handlebars removes whitespace around block and partial expressions. For instance, the partial:

{.handlebars} A

and the template:

{.handlebars} <div> {{> partial}} </div>

will render as:

{.html} <div> A</div>

because the whitespace up to the newline after the partial is removed.

A double newline is required to ensure that the whitespace is not removed. For instance, the template:

{.handlebars} <div> {{> partial}} </div>

will render as:

{.html} <div> A </div>

This can be disabled by setting this option to true.

When set, blocks and partials that are on their own line will not remove the whitespace on that line.

Escape HTML entities or entities defined by the escape function

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
bool noEscape = false;

Disable the auto-indent feature

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
bool preventIndent = false;

Description

By default, an indented partial-call causes the output of the whole partial being indented by the same amount.

For instance, the partial:

{.handlebars} A B C

and the template:

{.handlebars} <div> {{> partial}} </div>

will render as:

{.html} <div> A B C </div>

because the partial is indented by the same amount as the partial call.

This can be disabled by setting this option to true. In this case, the partial above would be rendered as:

{.html} <div> A B C </div>

Templates will throw rather than ignore missing fields

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
bool strict = false;

Description

Run in strict mode. In this mode, templates will throw rather than silently ignore missing fields.

Enable tracking of ids

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
bool trackIds = false;

Description

When enabled, the ids of the expressions are tracked and passed to the helpers.

Helpers often use this information to update the context path to the current expression, which can later be used to look up the value of the expression with ".." segments.

Represents an identifier

Synopsis

Declared in <mrdocs/Metadata/Name/IdentifierName.hpp>
struct IdentifierName final
    : Name

Description

This class is used to represent an identifier that could be in the corpus or not.

When the symbol is in the corpus, the id field will be set to the symbol ID of the symbol.

When the symbol is not in the corpus, the id field will be set to SymbolID::invalid.

Base Classes

Name Description
NameRepresents a name for a named Type

Member Functions

NameDescription
IdentifierName [constructor]Default-construct an identifier with kind Identifier.
asName asName overloads
operator== Equality compares all fields.
operator<=> Three-way comparison operators

Data Members

NameDescription
Identifier The unqualified name.
Kind The kind of name this is.
Prefix The parent name info, if any.
id The SymbolID of the named symbol, if it exists.

Non-Member Functions

Name Description
toStringConvert the name to a human-readable string.

Default-construct an identifier with kind Identifier.

Synopsis

Declared in <mrdocs/Metadata/Name/IdentifierName.hpp>
constexpr
IdentifierName() noexcept;

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/Name/NameBase.hpp>

Compare identifiers by their base name state.

auto
operator<=>(IdentifierName const& other) const;
» more...

Order names by kind, identifier, id, and prefix.

std::strong_ordering
operator<=>(Name const& other) const;
» more...

Compare identifiers by their base name state.

Synopsis

Declared in <mrdocs/Metadata/Name/IdentifierName.hpp>
auto
operator<=>(IdentifierName const& other) const;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

Order names by kind, identifier, id, and prefix.

Synopsis

Declared in <mrdocs/Metadata/Name/NameBase.hpp>
std::strong_ordering
operator<=>(Name const& other) const;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

An lvalue reference type.

Synopsis

Declared in <mrdocs/Metadata/Type/LValueReferenceType.hpp>
struct LValueReferenceType final
    : TypeCommonBase<TypeKind::LValueReference>

Base Classes

Name Description
TypeCommonBase<TypeKind::LValueReference>CRTP base that ties a concrete type to a fixed TypeKind.

Member Functions

NameDescription
operator<=> Compare references by pointee type.

Static Member Functions

Name
isArray
isAuto
isDecltype
isFunction
isLValueReference
isMemberPointer
isNamed
isPointer
isRValueReference

Data Members

NameDescription
PointeeType The referenced type.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
innerTypeReturn the inner type.
innerTypeReturn the inner type.
innerTypePtrReturn the inner type.
innerTypePtrReturn the inner type.
toStringRender a type to a human-readable string.

Compare references by pointee type.

Synopses

Declared in <mrdocs/Metadata/Type/LValueReferenceType.hpp>

Compare references by pointee type.

std::strong_ordering
operator<=>(LValueReferenceType const& rhs) const;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(TypeCommonBase<mrdocs::TypeKind::LValueReference> const& rhs) const = default;
» more...

Compare references by pointee type.

Synopsis

Declared in <mrdocs/Metadata/Type/LValueReferenceType.hpp>
std::strong_ordering
operator<=>(LValueReferenceType const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
auto
operator<=>(TypeCommonBase<mrdocs::TypeKind::LValueReference> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isArray() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isAuto() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isDecltype() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isLValueReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isMemberPointer() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isNamed() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isPointer() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isRValueReference() noexcept;

The referenced type.

Synopsis

Declared in <mrdocs/Metadata/Type/LValueReferenceType.hpp>
Polymorphic<Type> PointeeType = Polymorphic<Type>(AutoType{});

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr static
TypeKind kind_id;

Source location of a symbol or entity.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Location.hpp>
struct Location;

Member Functions

NameDescription
Location [constructor]Construct a location with optional fields.
operator<=> Compare locations by file paths and coordinates.

Data Members

NameDescription
ColumnNumber Column number within the line
Documented Whether this location has documentation.
FullPath The full file path
LineNumber Line number within the file
ShortPath The file path relative to one of the search directories
SourcePath The file path relative to the source-root directory

Non-Member Functions

Name Description
getPrimaryLocationDetermine a location to use when none is explicitly chosen.
getPrimaryLocationChoose the best location to display for a symbol.

Construct a location with optional fields.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Location.hpp>
constexpr
Location(
    std::string_view const full_path = {},
    std::string_view const short_path = {},
    std::string_view const source_path = {},
    unsigned int const line = 0,
    unsigned int const col = 0,
    bool const documented = false);

Parameters

Name Description
full_path Absolute path to the file on disk.
short_path Repository- or search-root relative path, may be empty.
source_path Path relative to the documented source root.
line Line number within the file.
col Column number within the line.
documented Whether the location already carries user documentation.

Compare locations by file paths and coordinates.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Location.hpp>
constexpr
auto
operator<=>(Location const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Column number within the line

Synopsis

Declared in <mrdocs/Metadata/Symbol/Location.hpp>
unsigned int ColumnNumber = 0;

Whether this location has documentation.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Location.hpp>
bool Documented = false;

The full file path

Synopsis

Declared in <mrdocs/Metadata/Symbol/Location.hpp>
std::string FullPath;

Line number within the file

Synopsis

Declared in <mrdocs/Metadata/Symbol/Location.hpp>
unsigned int LineNumber = 0;

The file path relative to one of the search directories

Synopsis

Declared in <mrdocs/Metadata/Symbol/Location.hpp>
std::string ShortPath;

The file path relative to the source-root directory

Synopsis

Declared in <mrdocs/Metadata/Symbol/Location.hpp>
std::string SourcePath;

Pointer-to-member type (object or function).

Synopsis

Declared in <mrdocs/Metadata/Type/MemberPointerType.hpp>
struct MemberPointerType final
    : TypeCommonBase<TypeKind::MemberPointer>

Base Classes

Name Description
TypeCommonBase<TypeKind::MemberPointer>CRTP base that ties a concrete type to a fixed TypeKind.

Member Functions

NameDescription
operator<=> Compare member pointers by parent and pointee.

Static Member Functions

Name
isArray
isAuto
isDecltype
isFunction
isLValueReference
isMemberPointer
isNamed
isPointer
isRValueReference

Data Members

NameDescription
ParentType Containing class type.
PointeeType Pointee type being referenced.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
innerTypeReturn the inner type.
innerTypeReturn the inner type.
innerTypePtrReturn the inner type.
innerTypePtrReturn the inner type.
toStringRender a type to a human-readable string.

Compare member pointers by parent and pointee.

Synopses

Declared in <mrdocs/Metadata/Type/MemberPointerType.hpp>

Compare member pointers by parent and pointee.

std::strong_ordering
operator<=>(MemberPointerType const& rhs) const;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(TypeCommonBase<mrdocs::TypeKind::MemberPointer> const& rhs) const = default;
» more...

Compare member pointers by parent and pointee.

Synopsis

Declared in <mrdocs/Metadata/Type/MemberPointerType.hpp>
std::strong_ordering
operator<=>(MemberPointerType const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
auto
operator<=>(TypeCommonBase<mrdocs::TypeKind::MemberPointer> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isArray() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isAuto() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isDecltype() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isLValueReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isMemberPointer() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isNamed() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isPointer() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isRValueReference() noexcept;

Containing class type.

Synopsis

Declared in <mrdocs/Metadata/Type/MemberPointerType.hpp>
Polymorphic<Type> ParentType = Polymorphic<Type>(AutoType{});

Pointee type being referenced.

Synopsis

Declared in <mrdocs/Metadata/Type/MemberPointerType.hpp>
Polymorphic<Type> PointeeType = Polymorphic<Type>(AutoType{});

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr static
TypeKind kind_id;

Represents a name for a named Type

Synopsis

Declared in <mrdocs/Metadata/Name/NameBase.hpp>
struct Name;

Description

When the Type is a named type, this class represents the name of the type.

It also includes the symbol ID of the named type, so that it can be referenced in the documentation.

This allows the Type to store either a Name or a SpecializationName, which contains the arguments for a template specialization without requiring the application to extract an unnecessary symbol.

Member Functions

NameDescription
~Name [destructor] [virtual]Virtual destructor for polymorphic cleanup.
asName asName overloads
operator== Equality compares all fields.
operator<=> Order names by kind, identifier, id, and prefix.

Data Members

NameDescription
Identifier The unqualified name.
Kind The kind of name this is.
Prefix The parent name info, if any.
id The SymbolID of the named symbol, if it exists.

Protected Member Functions

NameDescription
Name [constructor]Constructors

Non-Member Functions

Name Description
toStringConvert the name to a human-readable string.

Derived Classes

Name Description
IdentifierName Represents an identifier
SpecializationName Represents a (possibly qualified) symbol name with template arguments.

Virtual destructor for polymorphic cleanup.

Synopsis

Declared in <mrdocs/Metadata/Name/NameBase.hpp>
constexpr
virtual
~Name() = default;

asName overloads

Synopses

Declared in <mrdocs/Metadata/Name/NameBase.hpp>

View as a const Name reference.

constexpr
Name const&
asName() const noexcept;
» more...

View as a mutable Name reference.

constexpr
Name&
asName() noexcept;
» more...

View as a const Name reference.

Synopsis

Declared in <mrdocs/Metadata/Name/NameBase.hpp>
constexpr
Name const&
asName() const noexcept;

Return Value

Represents a name for a named Type

View as a mutable Name reference.

Synopsis

Declared in <mrdocs/Metadata/Name/NameBase.hpp>
constexpr
Name&
asName() noexcept;

Return Value

Represents a name for a named Type

Equality compares all fields.

Synopsis

Declared in <mrdocs/Metadata/Name/NameBase.hpp>
bool
operator==(Name const& other) const;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
other The right operand

Order names by kind, identifier, id, and prefix.

Synopsis

Declared in <mrdocs/Metadata/Name/NameBase.hpp>
std::strong_ordering
operator<=>(Name const& other) const;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

The unqualified name.

Synopsis

Declared in <mrdocs/Metadata/Name/NameBase.hpp>
std::string Identifier;

The kind of name this is.

Synopsis

Declared in <mrdocs/Metadata/Name/NameBase.hpp>
NameKind Kind;

The parent name info, if any.

Synopsis

Declared in <mrdocs/Metadata/Name/NameBase.hpp>
Optional<Polymorphic<Name>> Prefix = std::nullopt;

Description

This recursively includes information about the parent, such as the symbol ID and potentially template arguments, when the parent is a SpecializationName.

This is particularly useful because the parent of id could be a primary template. In this case, the Prefix will contain this primary template information and the template arguments.

The SymbolID of the named symbol, if it exists.

Synopsis

Declared in <mrdocs/Metadata/Name/NameBase.hpp>
SymbolID id = = SymbolID::invalid;

Constructors

Synopses

Declared in <mrdocs/Metadata/Name/NameBase.hpp>

Construct an identifier name.

constexpr
Name() noexcept;
» more...

Construct with an explicit name kind.

constexpr
explicit
Name(NameKind const kind) noexcept;
» more...

Construct an identifier name.

Synopsis

Declared in <mrdocs/Metadata/Name/NameBase.hpp>
constexpr
Name() noexcept;

Construct with an explicit name kind.

Synopsis

Declared in <mrdocs/Metadata/Name/NameBase.hpp>
constexpr
explicit
Name(NameKind const kind) noexcept;

Parameters

Name Description
kind The object to construct from

A type identified by name (possibly fundamental).

Synopsis

Declared in <mrdocs/Metadata/Type/NamedType.hpp>
struct NamedType final
    : TypeCommonBase<TypeKind::Named>

Base Classes

Name Description
TypeCommonBase<TypeKind::Named>CRTP base that ties a concrete type to a fixed TypeKind.

Member Functions

NameDescription
operator<=> Compare named types by name and fundamental kind.

Static Member Functions

Name
isArray
isAuto
isDecltype
isFunction
isLValueReference
isMemberPointer
isNamed
isPointer
isRValueReference

Data Members

NameDescription
FundamentalType Fundamental kind if this named type is a built-in.
Name The name of the type (identifier or specialization).

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
innerTypeReturn the inner type.
innerTypeReturn the inner type.
innerTypePtrReturn the inner type.
innerTypePtrReturn the inner type.
toStringRender a type to a human-readable string.

Compare named types by name and fundamental kind.

Synopses

Declared in <mrdocs/Metadata/Type/NamedType.hpp>

Compare named types by name and fundamental kind.

std::strong_ordering
operator<=>(NamedType const& other) const;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(TypeCommonBase<mrdocs::TypeKind::Named> const& rhs) const = default;
» more...

Compare named types by name and fundamental kind.

Synopsis

Declared in <mrdocs/Metadata/Type/NamedType.hpp>
std::strong_ordering
operator<=>(NamedType const& other) const;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
auto
operator<=>(TypeCommonBase<mrdocs::TypeKind::Named> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isArray() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isAuto() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isDecltype() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isLValueReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isMemberPointer() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isNamed() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isPointer() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isRValueReference() noexcept;

Fundamental kind if this named type is a built-in.

Synopsis

Declared in <mrdocs/Metadata/Type/NamedType.hpp>
Optional<FundamentalTypeKind> FundamentalType;

The name of the type (identifier or specialization).

Synopsis

Declared in <mrdocs/Metadata/Type/NamedType.hpp>
Polymorphic<Name> Name = Polymorphic<struct Name>(std::in_place_type<IdentifierName>);

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr static
TypeKind kind_id;

Info for namespace aliases.

Synopsis

Declared in <mrdocs/Metadata/Symbol/NamespaceAlias.hpp>
struct NamespaceAliasSymbol final
    : SymbolCommonBase<SymbolKind::NamespaceAlias>

Base Classes

Name Description
SymbolCommonBase<SymbolKind::NamespaceAlias>Base class for providing variant discriminator functions.

Member Functions

NameDescription
NamespaceAliasSymbol [constructor]Create an alias symbol bound to an ID.
operator<=> Three-way comparison operator

Static Member Functions

Name
isConcept
isEnum
isEnumConstant
isFunction
isGuide
isNamespace
isNamespaceAlias
isOverloads
isRecord
isTypedef
isUsing
isVariable

Data Members

NameDescription
AliasedSymbol The aliased symbol.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
canMergeCheck whether two symbols may be merged.
getPrimaryLocationDetermine a location to use when none is explicitly chosen.
mergeMerges two Symbol objects.
mergeMerge two alias symbols, preferring existing fields when present.

Create an alias symbol bound to an ID.

Synopsis

Declared in <mrdocs/Metadata/Symbol/NamespaceAlias.hpp>
explicit
NamespaceAliasSymbol(SymbolID const& ID) noexcept;

Parameters

Name Description
ID The object to copy construct from

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
auto
operator<=>(SymbolCommonBase<mrdocs::SymbolKind::NamespaceAlias> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isConcept() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnum() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnumConstant() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isGuide() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespace() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespaceAlias() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isOverloads() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isRecord() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isTypedef() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isUsing() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isVariable() noexcept;

The aliased symbol.

Synopsis

Declared in <mrdocs/Metadata/Symbol/NamespaceAlias.hpp>
IdentifierName AliasedSymbol;

Description

This is another namespace that might or might not be in the same project.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
constexpr static
SymbolKind kind_id;

Describes a namespace and its members.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
struct NamespaceSymbol final
    : SymbolCommonBase<SymbolKind::Namespace>

Base Classes

Name Description
SymbolCommonBase<SymbolKind::Namespace>Base class for providing variant discriminator functions.

Member Functions

NameDescription
NamespaceSymbol [constructor]Create a namespace symbol bound to an ID.
operator<=> Compare namespaces by attributes and member lists.

Static Member Functions

Name
isConcept
isEnum
isEnumConstant
isFunction
isGuide
isNamespace
isNamespaceAlias
isOverloads
isRecord
isTypedef
isUsing
isVariable

Data Members

NameDescription
IsAnonymous Whether this represents an unnamed namespace.
IsInline Whether this declaration is inline.
Members The members of this namespace.
UsingDirectives Namespaces nominated by using-directives.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
allMembersView all members of the namespace across tranches.
canMergeCheck whether two symbols may be merged.
getPrimaryLocationDetermine a location to use when none is explicitly chosen.
mergeMerges two Symbol objects.
mergeMerge two namespaces, keeping existing members stable.

Create a namespace symbol bound to an ID.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
explicit
NamespaceSymbol(SymbolID const& ID) noexcept;

Parameters

Name Description
ID The object to copy construct from

Compare namespaces by attributes and member lists.

Synopses

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>

Compare namespaces by attributes and member lists.

std::strong_ordering
operator<=>(NamespaceSymbol const& rhs) const;
» more...

Three-way comparison operator

auto
operator<=>(SymbolCommonBase<mrdocs::SymbolKind::Namespace> const& rhs) const = default;
» more...

Compare namespaces by attributes and member lists.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
std::strong_ordering
operator<=>(NamespaceSymbol const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
auto
operator<=>(SymbolCommonBase<mrdocs::SymbolKind::Namespace> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isConcept() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnum() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnumConstant() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isGuide() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespace() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespaceAlias() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isOverloads() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isRecord() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isTypedef() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isUsing() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isVariable() noexcept;

Whether this represents an unnamed namespace.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
bool IsAnonymous = false;

Whether this declaration is inline.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
bool IsInline = false;

The members of this namespace.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
NamespaceTranche Members;

Namespaces nominated by using-directives.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
std::vector<Name> UsingDirectives;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
constexpr static
SymbolKind kind_id;

Buckets the members that appear inside a namespace.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
struct NamespaceTranche;

Member Functions

NameDescription
operator<=> Compare tranches field-by-field.

Data Members

NameDescription
Concepts Concepts.
Enums Enumerations.
Functions Functions and overload sets.
Guides Deduction guides.
NamespaceAliases Namespace aliases declared here.
Namespaces Nested namespaces.
Records Record types (classes/structs).
Typedefs Typedef or using declarations.
Usings Using-declarations that introduce members.
Variables Variables.

Non-Member Functions

Name Description
allMembersJoin all tranche member lists into a single view.
mergeMerge two tranches, appending members from the right-hand side.

Compare tranches field-by-field.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
constexpr
auto
operator<=>(NamespaceTranche const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Concepts.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
std::vector<SymbolID> Concepts;

Enumerations.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
std::vector<SymbolID> Enums;

Functions and overload sets.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
std::vector<SymbolID> Functions;

Deduction guides.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
std::vector<SymbolID> Guides;

Namespace aliases declared here.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
std::vector<SymbolID> NamespaceAliases;

Nested namespaces.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
std::vector<SymbolID> Namespaces;

Record types (classes/structs).

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
std::vector<SymbolID> Records;

Typedef or using declarations.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
std::vector<SymbolID> Typedefs;

Using-declarations that introduce members.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
std::vector<SymbolID> Usings;

Variables.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
std::vector<SymbolID> Variables;

Captures a noexcept specification and its evaluated form.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/NoexceptInfo.hpp>
struct NoexceptInfo;

Member Functions

NameDescription
operator<=> Compare noexcept-specifier info.

Data Members

NameDescription
Implicit Whether a noexcept-specifier was user-written.
Kind The evaluated exception specification.
Operand The operand of the noexcept-specifier, if any.

Non-Member Functions

Name Description
toStringConvert NoexceptInfo to a string.

Compare noexcept-specifier info.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/NoexceptInfo.hpp>
constexpr
auto
operator<=>(NoexceptInfo const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Whether a noexcept-specifier was user-written.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/NoexceptInfo.hpp>
bool Implicit = true;

The evaluated exception specification.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/NoexceptInfo.hpp>
NoexceptKind Kind = NoexceptKind::False;

The operand of the noexcept-specifier, if any.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/NoexceptInfo.hpp>
std::string Operand;

A compact optional that automatically uses nullable_traits<T> when available.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<class T>
class Optional;

Description

Design - If nullable_traits<T> exists, the null state is encoded inside T (via sentinel or clearable-empty semantics). Storage is exactly one T. - Otherwise, this falls back to std::optional<T> and uses its discriminator.

This single implementation uses a conditional storage type plus if constexpr on has_nullable_traits_v<T> to select the appropriate behavior at compile time.

Types

NameDescription
value_type Value type stored by this Optional.

Member Functions

NameDescription
Optional [constructor]Constructors
operator= Assignment operators
emplace In-place construct a new value, replacing any existing one.
has_value True if engaged (contains a value).
operator* Dereference-like access.
operator-> Pointer-like access.
reset Reset to the null state. *
value Value access. Preconditions: has_value() is true.
operator bool Contextual bool.

Static Member Functions

NameDescription
is_inlined Determine if the value is inlined via nullable traits.

Non-Member Functions

Name Description
getOperatorReadableNameReturn the human-readable name of the operator
getPrimaryLocationDetermine a location to use when none is explicitly chosen.
getPrimaryLocationChoose the best location to display for a symbol.
innerTypeReturn the inner type.
innerTypeReturn the inner type.
operator!=Compares an Optional to a value for inequality. Returns true if the Optional is disengaged or its value does not equal rhs.
operator!=Compares two Optional values for inequality. Returns true if their engagement states differ or their contained values are not equal.
operator<Checks if the left Optional is less than the right Optional. Returns true if the right is engaged and either the left is disengaged or its value is less.
operator<Checks if the Optional is less than a value. Returns true if the Optional is disengaged or its value is less than rhs.
operator<=Checks if the left Optional is less than or equal to the right Optional. Returns true if the left is disengaged or the right is engaged and the left's value is less or equal.
operator<=Checks if the Optional is less than or equal to a value. Returns true if the Optional is disengaged or its value is less than or equal to rhs.
operator<=>Performs a three-way comparison between an Optional and a value. If the Optional is engaged, compares its value to v; otherwise, returns less.
operator<=>Performs a three-way comparison between two Optional values. If both are engaged, compares their contained values; otherwise, compares engagement state.
operator<=>Performs a three-way comparison between an Optional and std::nullopt. Returns std::strong_ordering::greater if engaged, std::strong_ordering::equal if disengaged.
operator<=>Compare optional polymorphic types, treating disengaged as less.
operator<=>Compare optional template infos, treating disengaged as ordered before engaged.
operator==Compares two Optional values for equality. Returns true if both are engaged and their contained values are equal, or both are disengaged.
operator==Checks if the Optional is disengaged (equal to std::nullopt). Returns true if the Optional does not contain a value.
operator==Equality helper for optional template info.
operator==Equality helper for optional polymorphic types.
operator==Compares an engaged Optional to a value for equality. Returns true if the Optional is engaged and its value equals rhs.
operator>Checks if the left Optional is greater than the right Optional. Returns true if the left is engaged and either the right is disengaged or its value is greater.
operator>Checks if the Optional is greater than a value. Returns true if the Optional is engaged and its value is greater than rhs.
operator>=Checks if the left Optional is greater than or equal to the right Optional. Returns true if the right is disengaged or the left is engaged and its value is greater or equal.
operator>=Checks if the Optional is greater than or equal to a value. Returns true if the Optional is engaged and its value is greater than or equal to rhs.
swapSwap two Optional references.
dom::stringOrNullReturn a non-empty string, or a null.

Value type stored by this Optional.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
using value_type = T;

Constructors

Synopses

Declared in <mrdocs/ADT/Optional.hpp>

Default-constructs to the “null” state.

constexpr
Optional() noexcept(default_ctor_noex_());
» more...

Copy constructor

constexpr
Optional(Optional const& other) = default;
» more...

Construct from another Optional with a convertible contained value.

template<typename U>
requires (!std::is_same_v<T, U>) && std::is_constructible_v<T, U const&>
            && ConstructFromContainedValue<U>
constexpr
explicit(!std::is_convertible_v<const U &, T>)
Optional(Optional<U> const& t) noexcept(std::is_nothrow_constructible_v<T, const U &>);
» more...

Move constructor

constexpr
Optional(Optional&& other) = default;
» more...

Construct from another Optional rvalue with a convertible value.

template<typename U>
requires (!std::is_same_v<T, U>)
            && std::is_constructible_v<T, U> && ConstructFromContainedValue<U>
constexpr
explicit(!std::is_convertible_v<U, T>)
Optional(Optional<U>&& t) noexcept(std::is_nothrow_constructible_v<T, U>);
» more...

Construct from std::nullopt

constexpr
Optional(std::nullopt_t value) noexcept(default_ctor_noex_());
» more...

Construct from std::optional lvalue with convertible value.

template<typename U>
requires std::is_constructible_v<T, U const&> &&
        ConstructFromContainedValue<U>
constexpr
explicit(!std::is_convertible_v<const U &, T>)
Optional(std::optional<U> const& t) noexcept(std::is_nothrow_constructible_v<T, const U &>);
» more...

Construct from a value.

template<typename U = std::remove_cv_t<T>>
requires (!std::is_same_v<Optional, std::remove_cvref_t<U>>)
            && (!std::is_same_v<std::in_place_t, std::remove_cvref_t<U>>)
            && std::is_constructible_v<T, U>
            && NotConstructingBoolFromOptional<U>
constexpr
explicit(!std::is_convertible_v<U, T>)
Optional(U&& u) noexcept(std::is_nothrow_constructible_v<T, U>);
» more...

Construct from std::optional rvalue with convertible value.

template<typename U>
requires std::is_constructible_v<T, U> &&
        ConstructFromContainedValue<U>
constexpr
explicit(!std::is_convertible_v<U, T>)
Optional(std::optional<U>&& t) noexcept(std::is_nothrow_constructible_v<T, U>);
» more...

In-place construct the contained value.

template<typename... Args>
requires std::is_constructible_v<T, Args...>
constexpr
explicit
Optional(
    std::in_place_t,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<T, Args...>);
» more...

In-place construct the contained value from an initializer list.

template<
    typename U,
    typename... Args>
requires std::is_constructible_v<T, std::initializer_list<U>&, Args...>
constexpr
explicit
Optional(
    std::in_place_t,
    std::initializer_list<U> il,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<T, std::initializer_list<U> &, Args...>);
» more...

Parameters

Name Description
t Source optional.
u The value to store. It must be convertible to T.
args Arguments forwarded to T's constructor.
il Initializer list forwarded to T's constructor.

Default-constructs to the “null” state.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
Optional() noexcept(default_ctor_noex_());

Copy constructor

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
Optional(Optional const& other) = default;

Parameters

Name Description
other The object to copy construct from

Construct from another Optional with a convertible contained value.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<typename U>
requires (!std::is_same_v<T, U>) && std::is_constructible_v<T, U const&>
            && ConstructFromContainedValue<U>
constexpr
explicit(!std::is_convertible_v<const U &, T>)
Optional(Optional<U> const& t) noexcept(std::is_nothrow_constructible_v<T, const U &>);

Parameters

Name Description
t Source optional.

Move constructor

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
Optional(Optional&& other) = default;

Parameters

Name Description
other The object to move construct from

Construct from another Optional rvalue with a convertible value.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<typename U>
requires (!std::is_same_v<T, U>)
            && std::is_constructible_v<T, U> && ConstructFromContainedValue<U>
constexpr
explicit(!std::is_convertible_v<U, T>)
Optional(Optional<U>&& t) noexcept(std::is_nothrow_constructible_v<T, U>);

Parameters

Name Description
t Source optional.

Construct from std::nullopt

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
Optional(std::nullopt_t value) noexcept(default_ctor_noex_());

Parameters

Name Description
value The object to construct from

Construct from std::optional lvalue with convertible value.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<typename U>
requires std::is_constructible_v<T, U const&> &&
        ConstructFromContainedValue<U>
constexpr
explicit(!std::is_convertible_v<const U &, T>)
Optional(std::optional<U> const& t) noexcept(std::is_nothrow_constructible_v<T, const U &>);

Parameters

Name Description
t Source optional.

Construct from a value.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<typename U = std::remove_cv_t<T>>
requires (!std::is_same_v<Optional, std::remove_cvref_t<U>>)
            && (!std::is_same_v<std::in_place_t, std::remove_cvref_t<U>>)
            && std::is_constructible_v<T, U>
            && NotConstructingBoolFromOptional<U>
constexpr
explicit(!std::is_convertible_v<U, T>)
Optional(U&& u) noexcept(std::is_nothrow_constructible_v<T, U>);

Parameters

Name Description
u The value to store. It must be convertible to T.

Construct from std::optional rvalue with convertible value.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<typename U>
requires std::is_constructible_v<T, U> &&
        ConstructFromContainedValue<U>
constexpr
explicit(!std::is_convertible_v<U, T>)
Optional(std::optional<U>&& t) noexcept(std::is_nothrow_constructible_v<T, U>);

Parameters

Name Description
t Source optional.

In-place construct the contained value.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<typename... Args>
requires std::is_constructible_v<T, Args...>
constexpr
explicit
Optional(
    std::in_place_t,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<T, Args...>);

Parameters

Name Description
args Arguments forwarded to T's constructor.

In-place construct the contained value from an initializer list.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename U,
    typename... Args>
requires std::is_constructible_v<T, std::initializer_list<U>&, Args...>
constexpr
explicit
Optional(
    std::in_place_t,
    std::initializer_list<U> il,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<T, std::initializer_list<U> &, Args...>);

Parameters

Name Description
il Initializer list forwarded to T's constructor.
args Additional arguments forwarded to T's constructor.

Assignment operators

Synopses

Declared in <mrdocs/ADT/Optional.hpp>

Copy assignment.

constexpr
Optional&
operator=(Optional const& other) = default;
» more...

Assign from another Optional with convertible contained value.

template<typename U>
requires (!std::is_same_v<T, U>)
            && std::is_constructible_v<T, const U&>
            && std::is_assignable_v<T&, const U&>
            && (!detail::ConvertsFromOptional<T, U>::value)
            && (!detail::AssignsFromOptional<T, U>::value)
constexpr
Optional&
operator=(Optional<U> const& u) noexcept(std::is_nothrow_constructible_v<T, const U &> && std::is_nothrow_assignable_v<T &, const U &>);
» more...

Move assignment.

constexpr
Optional&
operator=(Optional&& other) = default;
» more...

Assign from another Optional rvalue with convertible contained value.

template<typename U>
requires (!std::is_same_v<T, U>)
            && std::is_constructible_v<T, U>
            && std::is_assignable_v<T&, U>
            && (!detail::ConvertsFromOptional<T, U>::value)
            && (!detail::AssignsFromOptional<T, U>::value)
constexpr
Optional&
operator=(Optional<U>&& u) noexcept(std::is_nothrow_constructible_v<T, U> && std::is_nothrow_assignable_v<T &, U>);
» more...

Reset to disengaged state from nullptr tag.

constexpr
Optional&
operator=(std::nullptr_t value) noexcept(reset_noex_());
» more...

Assign from std::optional lvalue with convertible value.

template<typename U>
requires (!std::is_same_v<T, U>)
            && std::is_constructible_v<T, const U&>
            && std::is_assignable_v<T&, const U&>
            && (!detail::ConvertsFromOptional<T, U>::value)
            && (!detail::AssignsFromOptional<T, U>::value)
constexpr
Optional&
operator=(std::optional<U> const& u) noexcept(std::is_nothrow_constructible_v<T, const U &> && std::is_nothrow_assignable_v<T &, const U &>);
» more...

Assign from a value.

template<typename U = std::remove_cv_t<T>>
requires (!std::is_same_v<Optional, std::remove_cvref_t<U>>)
            && std::is_constructible_v<T, U> && std::is_assignable_v<T&, U>
constexpr
Optional&
operator=(U&& u) noexcept(std::is_nothrow_constructible_v<T, U> && std::is_nothrow_assignable_v<T &, U>);
» more...

Assign from std::optional rvalue with convertible value.

template<typename U>
requires (!std::is_same_v<T, U>)
            && std::is_constructible_v<T, U>
            && std::is_assignable_v<T&, U>
            && (!detail::ConvertsFromOptional<T, U>::value)
            && (!detail::AssignsFromOptional<T, U>::value)
constexpr
Optional&
operator=(std::optional<U>&& u) noexcept(std::is_nothrow_constructible_v<T, U> && std::is_nothrow_assignable_v<T &, U>);
» more...

Return Value

*this.

Parameters

Name Description
u Source optional.

Copy assignment.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
Optional&
operator=(Optional const& other) = default;

Return Value

*this.

Parameters

Name Description
other The object to copy assign from

Assign from another Optional with convertible contained value.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<typename U>
requires (!std::is_same_v<T, U>)
            && std::is_constructible_v<T, const U&>
            && std::is_assignable_v<T&, const U&>
            && (!detail::ConvertsFromOptional<T, U>::value)
            && (!detail::AssignsFromOptional<T, U>::value)
constexpr
Optional&
operator=(Optional<U> const& u) noexcept(std::is_nothrow_constructible_v<T, const U &> && std::is_nothrow_assignable_v<T &, const U &>);

Return Value

Reference to the current object

Parameters

Name Description
u Source optional.

Move assignment.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
Optional&
operator=(Optional&& other) = default;

Return Value

*this.

Parameters

Name Description
other The object to move assign from

Assign from another Optional rvalue with convertible contained value.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<typename U>
requires (!std::is_same_v<T, U>)
            && std::is_constructible_v<T, U>
            && std::is_assignable_v<T&, U>
            && (!detail::ConvertsFromOptional<T, U>::value)
            && (!detail::AssignsFromOptional<T, U>::value)
constexpr
Optional&
operator=(Optional<U>&& u) noexcept(std::is_nothrow_constructible_v<T, U> && std::is_nothrow_assignable_v<T &, U>);

Return Value

Reference to the current object

Parameters

Name Description
u Source optional.

Reset to disengaged state from nullptr tag.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
Optional&
operator=(std::nullptr_t value) noexcept(reset_noex_());

Return Value

*this.

Parameters

Name Description
value The object to assign from

Assign from std::optional lvalue with convertible value.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<typename U>
requires (!std::is_same_v<T, U>)
            && std::is_constructible_v<T, const U&>
            && std::is_assignable_v<T&, const U&>
            && (!detail::ConvertsFromOptional<T, U>::value)
            && (!detail::AssignsFromOptional<T, U>::value)
constexpr
Optional&
operator=(std::optional<U> const& u) noexcept(std::is_nothrow_constructible_v<T, const U &> && std::is_nothrow_assignable_v<T &, const U &>);

Return Value

Reference to the current object

Parameters

Name Description
u Source optional.

Assign from a value.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<typename U = std::remove_cv_t<T>>
requires (!std::is_same_v<Optional, std::remove_cvref_t<U>>)
            && std::is_constructible_v<T, U> && std::is_assignable_v<T&, U>
constexpr
Optional&
operator=(U&& u) noexcept(std::is_nothrow_constructible_v<T, U> && std::is_nothrow_assignable_v<T &, U>);

Return Value

Reference to the current object

Parameters

Name Description
u The value to store. It must be convertible to T.

Assign from std::optional rvalue with convertible value.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<typename U>
requires (!std::is_same_v<T, U>)
            && std::is_constructible_v<T, U>
            && std::is_assignable_v<T&, U>
            && (!detail::ConvertsFromOptional<T, U>::value)
            && (!detail::AssignsFromOptional<T, U>::value)
constexpr
Optional&
operator=(std::optional<U>&& u) noexcept(std::is_nothrow_constructible_v<T, U> && std::is_nothrow_assignable_v<T &, U>);

Return Value

Reference to the current object

Parameters

Name Description
u Source optional.

In-place construct a new value, replacing any existing one.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<class... Args>
requires std::is_constructible_v<T, Args...>
constexpr
value_type&
emplace(Args&&... args) noexcept(std::is_nothrow_constructible_v<T, Args...>);

Return Value

A reference to the newly constructed value.

Parameters

Name Description
args The arguments to forward to T's constructor.

True if engaged (contains a value).

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
bool
has_value() const noexcept(has_value_noex_());

Return Value

true if the optional contains a value.

Dereference-like access.

Synopses

Declared in <mrdocs/ADT/Optional.hpp>

Dereference-like access.

constexpr
value_type&
operator*() noexcept;
» more...

Dereference-like access.

constexpr
value_type const&
operator*() const noexcept;
» more...

Return Value

A reference to the contained value.

Dereference-like access.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
value_type&
operator*() noexcept;

Return Value

A reference to the contained value.

Dereference-like access.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
value_type const&
operator*() const noexcept;

Return Value

A reference to the contained value.

Pointer-like access.

Synopses

Declared in <mrdocs/ADT/Optional.hpp>

Pointer-like access.

constexpr
value_type*
operator->() noexcept;
» more...

Pointer-like access.

constexpr
value_type const*
operator->() const noexcept;
» more...

Return Value

A pointer to the contained value.

Pointer-like access.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
value_type*
operator->() noexcept;

Return Value

A pointer to the contained value.

Pointer-like access.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
value_type const*
operator->() const noexcept;

Return Value

A pointer to the contained value.

Reset to the null state. *

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
void
reset() noexcept(reset_noex_());

Value access. Preconditions: has_value() is true.

Synopses

Declared in <mrdocs/ADT/Optional.hpp>

Value access. Preconditions: has_value() is true.

constexpr
value_type&
value() & noexcept;
» more...

Value access. Preconditions: has_value() is true.

constexpr
value_type const&
value() const & noexcept;
» more...

Value access. Preconditions: has_value() is true.

constexpr
value_type&&
value() && noexcept;
» more...

Value access. Preconditions: has_value() is true.

constexpr
value_type const&&
value() const && noexcept;
» more...

Return Value

A reference to the contained value.

Value access. Preconditions: has_value() is true.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
value_type&
value() & noexcept;

Return Value

A reference to the contained value.

Value access. Preconditions: has_value() is true.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
value_type const&
value() const & noexcept;

Return Value

A reference to the contained value.

Value access. Preconditions: has_value() is true.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
value_type&&
value() && noexcept;

Return Value

A reference to the contained value.

Value access. Preconditions: has_value() is true.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
value_type const&&
value() const && noexcept;

Return Value

A reference to the contained value.

Contextual bool.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
explicit
operator bool() const noexcept(noexcept(this->has_value()));

Return Value

The object converted to bool

Determine if the value is inlined via nullable traits.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
static
bool
is_inlined() noexcept;

Description

This is a compile-time property of T. If nullable_traits<T> is not specialized, this function returns false to indicate that the optional uses std::optional<T> as storage with an extra discriminator. If nullable_traits<T> is specialized, this function returns true to suggest that the null state is encoded inside T and no extra storage is used.

Return Value

true if the optional uses nullable_traits<T> for storage.

Optional reference wrapper that never owns storage.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<class T>
class Optional<T&>;

Description

Stores a pointer to an externally owned object; the disengaged state is nullptr.

Types

NameDescription
value_type Referenced value type.

Member Functions

NameDescription
Optional [constructor]Constructors
operator= Assignment operators
emplace Bind to a new referenced value.
has_value Check whether the optional holds a reference.
operator* Dereference the referenced object.
operator-> Return pointer to the referenced object.
reset Disengage the optional.
swap Exchange the contained value with another Optional.
value value overloads
operator bool Return true when the optional holds a reference.

Static Member Functions

NameDescription
is_inlined Return true because Optional<T&> never allocates storage.

Referenced value type.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
using value_type = T;

Constructors

Synopses

Declared in <mrdocs/ADT/Optional.hpp>

Construct an empty optional reference.

constexpr
Optional() noexcept = default;
» more...

Copy constructor.

constexpr
Optional(Optional const& other) noexcept = default;
» more...

Move constructor.

constexpr
Optional(Optional&& other) noexcept = default;
» more...

Construct disengaged from std::nullopt.

constexpr
Optional(std::nullopt_t value) noexcept;
» more...

Construct from another Optional holding a related reference.

template<class U>
requires ok_bind_v<U&>
constexpr
explicit(!std::is_convertible_v<U &, T &>)
Optional(Optional<U>& rhs) noexcept(std::is_nothrow_constructible_v<T &, U &>);
» more...

Construct from std::optional lvalue.

template<class U>
requires ok_bind_v<U&>
constexpr
Optional(std::optional<U>& o) noexcept(std::is_nothrow_constructible_v<T &, U &>);
» more...

Construct from a const Optional holding a related reference.

template<class U>
requires ok_bind_v<U const&>
constexpr
explicit(!std::is_convertible_v<const U &, T &>)
Optional(Optional<U> const& rhs) noexcept(std::is_nothrow_constructible_v<T &, const U &>);
» more...

Construct from const std::optional lvalue.

template<class U>
requires ok_bind_v<U const&>
constexpr
Optional(std::optional<U> const& o) noexcept(std::is_nothrow_constructible_v<T &, const U &>);
» more...

Bind to a referenceable object.

template<class U>
requires (
        !std::is_same_v<std::remove_cvref_t<U>, Optional> &&
        !std::is_same_v<std::remove_cvref_t<U>, std::in_place_t> &&
        ok_bind_v<U>)
constexpr
explicit(!std::is_convertible_v<U, T &>)
Optional(U&& u) noexcept(std::is_nothrow_constructible_v<T &, U>);
» more...

Parameters

Name Description
rhs Optional to bind to if engaged.
o Source optional to bind if engaged.
u Object to bind to.

Construct an empty optional reference.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
Optional() noexcept = default;

Copy constructor.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
Optional(Optional const& other) noexcept = default;

Parameters

Name Description
other The object to copy construct from

Move constructor.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
Optional(Optional&& other) noexcept = default;

Parameters

Name Description
other The object to move construct from

Construct disengaged from std::nullopt.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
Optional(std::nullopt_t value) noexcept;

Parameters

Name Description
value The object to construct from

Construct from another Optional holding a related reference.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<class U>
requires ok_bind_v<U&>
constexpr
explicit(!std::is_convertible_v<U &, T &>)
Optional(Optional<U>& rhs) noexcept(std::is_nothrow_constructible_v<T &, U &>);

Parameters

Name Description
rhs Optional to bind to if engaged.

Construct from std::optional lvalue.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<class U>
requires ok_bind_v<U&>
constexpr
Optional(std::optional<U>& o) noexcept(std::is_nothrow_constructible_v<T &, U &>);

Parameters

Name Description
o Source optional to bind if engaged.

Construct from a const Optional holding a related reference.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<class U>
requires ok_bind_v<U const&>
constexpr
explicit(!std::is_convertible_v<const U &, T &>)
Optional(Optional<U> const& rhs) noexcept(std::is_nothrow_constructible_v<T &, const U &>);

Parameters

Name Description
rhs Optional to bind to if engaged.

Construct from const std::optional lvalue.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<class U>
requires ok_bind_v<U const&>
constexpr
Optional(std::optional<U> const& o) noexcept(std::is_nothrow_constructible_v<T &, const U &>);

Parameters

Name Description
o Source optional to bind if engaged.

Bind to a referenceable object.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<class U>
requires (
        !std::is_same_v<std::remove_cvref_t<U>, Optional> &&
        !std::is_same_v<std::remove_cvref_t<U>, std::in_place_t> &&
        ok_bind_v<U>)
constexpr
explicit(!std::is_convertible_v<U, T &>)
Optional(U&& u) noexcept(std::is_nothrow_constructible_v<T &, U>);

Parameters

Name Description
u Object to bind to.

Assignment operators

Synopses

Declared in <mrdocs/ADT/Optional.hpp>

Copy assignment.

constexpr
Optional&
operator=(Optional const& other) noexcept = default;
» more...

Move assignment.

constexpr
Optional&
operator=(Optional&& other) noexcept = default;
» more...

Reset from std::nullopt.

constexpr
Optional&
operator=(std::nullopt_t value) noexcept;
» more...

Assign from another Optional reference.

template<class U>
requires ok_bind_v<U&>
constexpr
Optional&
operator=(Optional<U>& rhs) noexcept(std::is_nothrow_constructible_v<T &, U &>);
» more...

Assign from a const Optional reference.

template<class U>
requires ok_bind_v<U const&>
constexpr
Optional&
operator=(Optional<U> const& rhs) noexcept(std::is_nothrow_constructible_v<T &, const U &>);
» more...

Assign from a referenceable value.

template<class U>
requires ok_bind_v<U>
constexpr
Optional&
operator=(U&& u) noexcept(std::is_nothrow_constructible_v<T &, U>);
» more...

Assign from a movable Optional reference.

template<class U>
requires ok_bind_v<U>
constexpr
Optional&
operator=(Optional<U>&& rhs) noexcept(std::is_nothrow_constructible_v<T &, U>);
» more...

Return Value

*this.

Parameters

Name Description
rhs Source optional.
u Reference to bind.

Copy assignment.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
Optional&
operator=(Optional const& other) noexcept = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Move assignment.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
Optional&
operator=(Optional&& other) noexcept = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to move assign from

Reset from std::nullopt.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
Optional&
operator=(std::nullopt_t value) noexcept;

Return Value

Reference to the current object

Parameters

Name Description
value The object to assign from

Assign from another Optional reference.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<class U>
requires ok_bind_v<U&>
constexpr
Optional&
operator=(Optional<U>& rhs) noexcept(std::is_nothrow_constructible_v<T &, U &>);

Return Value

*this.

Parameters

Name Description
rhs Source optional.

Assign from a const Optional reference.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<class U>
requires ok_bind_v<U const&>
constexpr
Optional&
operator=(Optional<U> const& rhs) noexcept(std::is_nothrow_constructible_v<T &, const U &>);

Return Value

*this.

Parameters

Name Description
rhs Source optional.

Assign from a referenceable value.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<class U>
requires ok_bind_v<U>
constexpr
Optional&
operator=(U&& u) noexcept(std::is_nothrow_constructible_v<T &, U>);

Return Value

*this.

Parameters

Name Description
u Reference to bind.

Assign from a movable Optional reference.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<class U>
requires ok_bind_v<U>
constexpr
Optional&
operator=(Optional<U>&& rhs) noexcept(std::is_nothrow_constructible_v<T &, U>);

Return Value

*this.

Parameters

Name Description
rhs Source optional.

Bind to a new referenced value.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<class U>
requires ok_bind_v<U>
constexpr
value_type&
emplace(U&& u) noexcept(std::is_nothrow_constructible_v<T &, U>);

Return Value

Reference to the bound value.

Parameters

Name Description
u Referenceable value to bind.

Check whether the optional holds a reference.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
bool
has_value() const noexcept;

Return Value

true if engaged.

Dereference the referenced object.

Synopses

Declared in <mrdocs/ADT/Optional.hpp>

Dereference the referenced object.

constexpr
value_type&
operator*() noexcept;
» more...

Dereference the referenced object.

constexpr
value_type const&
operator*() const noexcept;
» more...

Return Value

Reference to the bound value.

Dereference the referenced object.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
value_type&
operator*() noexcept;

Return Value

Reference to the bound value.

Dereference the referenced object.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
value_type const&
operator*() const noexcept;

Return Value

Reference to the bound value.

Return pointer to the referenced object.

Synopses

Declared in <mrdocs/ADT/Optional.hpp>

Return pointer to the referenced object.

constexpr
value_type*
operator->() noexcept;
» more...

Return pointer to the referenced object.

constexpr
value_type const*
operator->() const noexcept;
» more...

Return Value

Pointer to the bound value.

Return pointer to the referenced object.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
value_type*
operator->() noexcept;

Return Value

Pointer to the bound value.

Return pointer to the referenced object.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
value_type const*
operator->() const noexcept;

Return Value

Pointer to the bound value.

Disengage the optional.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
void
reset() noexcept;

Exchange the contained value with another Optional.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
void
swap(Optional& other) noexcept;

Parameters

Name Description
other Optional to swap with.

value overloads

Synopses

Declared in <mrdocs/ADT/Optional.hpp>

Access the referenced object.

constexpr
value_type&
value() & noexcept;
» more...

Access the referenced object.

constexpr
value_type const&
value() const & noexcept;
» more...

Access the referenced object (rvalue overload).

constexpr
value_type&
value() && noexcept;
» more...

Access the referenced object (const rvalue overload).

constexpr
value_type const&
value() const && noexcept;
» more...

Return Value

Access the referenced object.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
value_type&
value() & noexcept;

Return Value

Reference to the bound value.

Access the referenced object.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
value_type const&
value() const & noexcept;

Return Value

Const reference to the bound value.

Access the referenced object (rvalue overload).

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
value_type&
value() && noexcept;

Return Value

Reference to the bound value.

Access the referenced object (const rvalue overload).

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
value_type const&
value() const && noexcept;

Return Value

Const reference to the bound value.

Return true when the optional holds a reference.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
explicit
operator bool() const noexcept;

Return Value

true when the optional holds a reference.

Return true because Optional<T&> never allocates storage.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
static
bool
is_inlined() noexcept;

Return Value

true because Optional<T&> never allocates storage.

Reference to output stream used by handlebars

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
class OutputRef;

Description

This class is used to internally pass an output stream to the handlebars environment.

It allows many types to be used as output streams, including std::string, std::ostream, llvm::raw_string_ostream, and others.

Member Functions

NameDescription
OutputRef [constructor]Constructors
getIndent Return the current indentation level.
setIndent Set the indentation level applied to writes.

Friends

|===
Name Description
operator<< Write to output
operator<< Write to output
operator<< Write to output
operator<< Write to output
Handlebars A handlebars environment

Non-Member Functions

Name Description
HTMLEscapeHTML escapes the specified string

Constructors

Synopses

Declared in <mrdocs/Support/Handlebars.hpp>

Constructor for std::ostream& output

template</* implementation-defined */ Os>
requires std::is_convertible_v<Os*, std::ostream*> &&
        (!detail::StdLHROStreamable<Os>)
OutputRef(Os& os);
» more...

Constructor for llvm::raw_string_ostream output

template</* implementation-defined */ Os>
requires std::is_convertible_v<Os*, std::ostream*>
OutputRef(Os& os);
» more...

Constructor for std::string output

template</* implementation-defined */ St>
requires std::same_as<typename St::value_type, char>
OutputRef(St& st);
» more...

Parameters

Name Description
os The output stream to write to
st The string to append to

Constructor for std::ostream& output

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
template</* implementation-defined */ Os>
requires std::is_convertible_v<Os*, std::ostream*> &&
        (!detail::StdLHROStreamable<Os>)
OutputRef(Os& os);

Parameters

Name Description
os The output stream to write to

Constructor for llvm::raw_string_ostream output

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
template</* implementation-defined */ Os>
requires std::is_convertible_v<Os*, std::ostream*>
OutputRef(Os& os);

Parameters

Name Description
os The output stream to write to

Constructor for std::string output

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
template</* implementation-defined */ St>
requires std::same_as<typename St::value_type, char>
OutputRef(St& st);

Parameters

Name Description
st The string to append to

Return the current indentation level.

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
std::size_t
getIndent() const noexcept;

Return Value

the current indentation level.

Set the indentation level applied to writes.

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
void
setIndent(std::size_t indent);

Parameters

Name Description
indent Number of spaces to indent.

Combines multiple callable types into a single overloaded function object.

Synopsis

Declared in <mrdocs/ADT/Overload.hpp>
template<class... Ts>
struct Overload
    : Ts...

Description

This is the canonical "overloaded pattern" implemented as a class template. It inherits from all provided callables and brings in their operator()s, so the resulting object can be called with whichever overload matches.

Typical use-cases include visiting std::variant and building small ad-hoc pattern-matching style dispatchers.

auto f = fn::makeOverload( [](int i) { return i * 2; }, [](const std::string& s) { return s.size(); } ); auto a = f(21); // calls int overload auto b = f(std::string("hello")); // calls string overload

Base Classes

Name Description
Ts...

Member Functions

NameDescription
Overload [constructor]Constructs an Overload from the given callables.

Non-Member Functions

Name Description
makeOverloadFactory function that creates an Overload from the given callables.

Template Parameters

Name Description
Ts The callable types to combine (lambdas, function objects, etc.)

Constructs an Overload from the given callables.

Synopsis

Declared in <mrdocs/ADT/Overload.hpp>
constexpr
explicit
Overload(Ts... xs) noexcept((std::is_nothrow_move_constructible_v<Ts> && ...));

Parameters

Name Description
xs The callables to store.

Represents a set of function overloads.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Overloads.hpp>
struct OverloadsSymbol final
    : SymbolCommonBase<SymbolKind::Overloads>

Base Classes

Name Description
SymbolCommonBase<SymbolKind::Overloads>Base class for providing variant discriminator functions.

Member Functions

NameDescription
OverloadsSymbol [constructor]Constructors
operator<=> Three-way comparison operator

Static Member Functions

Name
isConcept
isEnum
isEnumConstant
isFunction
isGuide
isNamespace
isNamespaceAlias
isOverloads
isRecord
isTypedef
isUsing
isVariable

Data Members

NameDescription
Class The class of the functions.
Members The members of the overload set.
OverloadedOperator The overloaded operator, if any.
ReturnType Info about the return type of these function overloads.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
addMemberAppend a new function overload to the set.
allMembersAccess the list of overload members.
canMergeCheck whether two symbols may be merged.
getPrimaryLocationDetermine a location to use when none is explicitly chosen.
mergeMerges two Symbol objects.
mergeMerge overload sets, preserving ordering in Members.

Constructors

Synopses

Declared in <mrdocs/Metadata/Symbol/Overloads.hpp>

Create an empty overload set for the given ID.

explicit
OverloadsSymbol(SymbolID const& ID) noexcept;
» more...

Create an overload set under the given parent and name.

explicit
OverloadsSymbol(
    SymbolID const& Parent,
    std::string_view Name,
    AccessKind Access,
    bool isStatic) noexcept;
» more...

Parameters

Name Description
Parent Owning symbol ID.
Name Unqualified name shared by the overloads.
Access Access specifier when the overloads are members.
isStatic Whether the overload set refers to static functions.

Create an empty overload set for the given ID.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Overloads.hpp>
explicit
OverloadsSymbol(SymbolID const& ID) noexcept;

Parameters

Name Description
ID The object to copy construct from

Create an overload set under the given parent and name.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Overloads.hpp>
explicit
OverloadsSymbol(
    SymbolID const& Parent,
    std::string_view Name,
    AccessKind Access,
    bool isStatic) noexcept;

Parameters

Name Description
Parent Owning symbol ID.
Name Unqualified name shared by the overloads.
Access Access specifier when the overloads are members.
isStatic Whether the overload set refers to static functions.

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
auto
operator<=>(SymbolCommonBase<mrdocs::SymbolKind::Overloads> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isConcept() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnum() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnumConstant() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isGuide() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespace() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespaceAlias() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isOverloads() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isRecord() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isTypedef() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isUsing() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isVariable() noexcept;

The class of the functions.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Overloads.hpp>
FunctionClass Class = FunctionClass::Normal;

The members of the overload set.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Overloads.hpp>
std::vector<SymbolID> Members;

The overloaded operator, if any.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Overloads.hpp>
OperatorKind OverloadedOperator = OperatorKind::None;

Info about the return type of these function overloads.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Overloads.hpp>
Polymorphic<Type> ReturnType = Polymorphic<Type>(AutoType{});

Description

If all overloads have the same return type, this contains that type. Otherwise, it contains auto to indicate that the return type varies according to the parameters.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
constexpr static
SymbolKind kind_id;

Represents a single function parameter

Synopsis

Declared in <mrdocs/Metadata/Symbol/Param.hpp>
struct Param final

Member Functions

NameDescription
Param [constructor]Constructors
operator<=> Compare parameters by type, name, and default.

Data Members

NameDescription
Default The default argument for this parameter, if any
Name The parameter name.
Type The type of this parameter

Non-Member Functions

Name Description
mergeMerge two parameters, filling missing pieces from Other.

Constructors

Synopses

Declared in <mrdocs/Metadata/Symbol/Param.hpp>

Create an empty parameter with an auto type.

constexpr
Param() = default;
» more...

Construct a parameter with type, name, and default expression.

Param(
    Polymorphic<Type>&& type,
    std::string&& name,
    std::string&& def_arg);
» more...

Parameters

Name Description
type Parameter type.
name Parameter identifier.
def_arg Default argument expression, if present.

Create an empty parameter with an auto type.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Param.hpp>
constexpr
Param() = default;

Construct a parameter with type, name, and default expression.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Param.hpp>
Param(
    Polymorphic<Type>&& type,
    std::string&& name,
    std::string&& def_arg);

Parameters

Name Description
type Parameter type.
name Parameter identifier.
def_arg Default argument expression, if present.

Compare parameters by type, name, and default.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Param.hpp>
auto
operator<=>(Param const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

The default argument for this parameter, if any

Synopsis

Declared in <mrdocs/Metadata/Symbol/Param.hpp>
Optional<std::string> Default;

The parameter name.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Param.hpp>
Optional<std::string> Name;

The type of this parameter

Synopsis

Declared in <mrdocs/Metadata/Symbol/Param.hpp>
Polymorphic<Type> Type = Polymorphic<struct Type>(AutoType{});

The result of a parse operation.

Synopsis

Declared in <mrdocs/Support/Parse.hpp>
struct ParseResult;

Description

This class holds the result of a parse operation. The structure is similar to std::from_chars_result, where we have a ptr member that points to the first character not parsed, and a ec member that holds the error code.

If parsing was successful, then ec stores a default constructed Error object, which indicates success. The operator bool can also be used to check for success.

The typical format of a parsing function is:

ParseResult parseType( char const* first, char const* last, Type& value);

where more parameters can be defined as needed for parsing options.

Member Functions

NameDescription
operator bool Return true if parsing succeeded.

Data Members

NameDescription
ec Error status for the parse operation.
ptr Pointer to the first unparsed character.

Friends

|===
Name Description
operator== Equality operator

Non-Member Functions

Name Description
parseParse a string view

Return true if parsing succeeded.

Synopsis

Declared in <mrdocs/Support/Parse.hpp>
constexpr
explicit
operator bool() const noexcept;

Return Value

true when ec is not a failure.

Error status for the parse operation.

Synopsis

Declared in <mrdocs/Support/Parse.hpp>
Error ec;

Pointer to the first unparsed character.

Synopsis

Declared in <mrdocs/Support/Parse.hpp>
char const* ptr;

A glob pattern matcher for paths

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
class PathGlobPattern;

Description

A glob pattern matcher where "*" does not match path separators. The pattern "**" can be used to match any number of path separators.

Member Functions

NameDescription
PathGlobPattern [constructor]Construct an empty PathGlobPattern.
isLiteral Checks if the glob pattern is a literal string.
match Matches the given string against the glob pattern.
matchPatternPrefix Matches the start of a given string against the glob pattern.
pattern Returns the glob pattern.

Static Member Functions

NameDescription
create Constructs a PathGlobPattern with the given pattern.

Construct an empty PathGlobPattern.

Synopses

Declared in <mrdocs/Support/Glob.hpp>

Construct an empty PathGlobPattern.

constexpr
PathGlobPattern() = default;
» more...

Construct an empty PathGlobPattern.

explicit
PathGlobPattern(GlobPattern glob);
» more...

Construct an empty PathGlobPattern.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
constexpr
PathGlobPattern() = default;

Description

An empty PathGlobPattern will never match any string.

Construct an empty PathGlobPattern.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
explicit
PathGlobPattern(GlobPattern glob);

Description

An empty PathGlobPattern will never match any string.

Parameters

Name Description
glob The object to construct from

Checks if the glob pattern is a literal string.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
bool
isLiteral() const;

Description

This function determines if the glob pattern does not contain any special characters. In other words, it matches a single string.

Return Value

true if the glob pattern is a literal string, false otherwise.

Matches the given string against the glob pattern.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
bool
match(std::string_view const str) const;

Return Value

true if the string matches the pattern, false otherwise.

Parameters

Name Description
str The string to match against the pattern.

Matches the start of a given string against the glob pattern.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
bool
matchPatternPrefix(std::string_view prefix) const;

Description

This function determines if the given string with the specified prefix can potentially match the glob pattern.

If the string matches the start of the pattern without failure, even if there are characters left in the string or the pattern, the function returns true.

Return Value

true if the string prefix matches the pattern, false otherwise.

Parameters

Name Description
prefix The string to match against the pattern.

Returns the glob pattern.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
std::string_view
pattern() const;

Return Value

The glob pattern as a string view.

Constructs a PathGlobPattern with the given pattern.

Synopses

Declared in <mrdocs/Support/Glob.hpp>

Constructs a PathGlobPattern with the given pattern.

static
Expected<PathGlobPattern>
create(std::string_view const pattern);
» more...

Constructs a PathGlobPattern with the given pattern.

static
Expected<PathGlobPattern>
create(
    std::string_view const pattern,
    Optional<std::size_t> maxSubGlobs);
» more...

Parameters

Name Description
pattern The glob pattern to use for matching.
maxSubGlobs The maximum number of subpatterns allowed.

Constructs a PathGlobPattern with the given pattern.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
static
Expected<PathGlobPattern>
create(std::string_view const pattern);

Return Value

A container holding an error or a value.

Parameters

Name Description
pattern The glob pattern to use for matching.

Constructs a PathGlobPattern with the given pattern.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
static
Expected<PathGlobPattern>
create(
    std::string_view const pattern,
    Optional<std::size_t> maxSubGlobs);

Return Value

A container holding an error or a value.

Parameters

Name Description
pattern The glob pattern to use for matching.
maxSubGlobs The maximum number of subpatterns allowed.

Pointer type wrapper.

Synopsis

Declared in <mrdocs/Metadata/Type/PointerType.hpp>
struct PointerType final
    : TypeCommonBase<TypeKind::Pointer>

Base Classes

Name Description
TypeCommonBase<TypeKind::Pointer>CRTP base that ties a concrete type to a fixed TypeKind.

Member Functions

NameDescription
operator<=> Compare pointer types by pointee.

Static Member Functions

Name
isArray
isAuto
isDecltype
isFunction
isLValueReference
isMemberPointer
isNamed
isPointer
isRValueReference

Data Members

NameDescription
PointeeType The pointee type, defaults to auto when unknown.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
innerTypeReturn the inner type.
innerTypeReturn the inner type.
innerTypePtrReturn the inner type.
innerTypePtrReturn the inner type.
toStringRender a type to a human-readable string.

Compare pointer types by pointee.

Synopses

Declared in <mrdocs/Metadata/Type/PointerType.hpp>

Compare pointer types by pointee.

std::strong_ordering
operator<=>(PointerType const& rhs) const;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(TypeCommonBase<mrdocs::TypeKind::Pointer> const& rhs) const = default;
» more...

Compare pointer types by pointee.

Synopsis

Declared in <mrdocs/Metadata/Type/PointerType.hpp>
std::strong_ordering
operator<=>(PointerType const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
auto
operator<=>(TypeCommonBase<mrdocs::TypeKind::Pointer> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isArray() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isAuto() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isDecltype() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isLValueReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isMemberPointer() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isNamed() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isPointer() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isRValueReference() noexcept;

The pointee type, defaults to auto when unknown.

Synopsis

Declared in <mrdocs/Metadata/Type/PointerType.hpp>
Polymorphic<Type> PointeeType = Polymorphic<Type>(AutoType{});

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr static
TypeKind kind_id;

A polymorphic value-type.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
template<class T>
class Polymorphic;

Description

This class supports polymorphic objects with value-like semantics.

It implements a tweaked version of std::polymorphic, based on the reference implementation for P3019R14. Differences are: It implements comparison operators with a very project-specific design. Fixed allocator, not parametrizable. No initializer_list constructor.

Deep copies

To copy polymorphic objects, the class uses the copy constructor of the owned derived-type object when copying to another value. Similarly, to allow the correct destruction of derived objects, it uses the destructor of the owned derived-type object in the destructor.

Types

NameDescription
const_pointer Const pointer to the held object.
pointer Mutable pointer to the held object.
value_type Base value type.

Member Functions

NameDescription
Polymorphic [constructor]Constructors
~Polymorphic [destructor]Destructor.
operator= Assignment operators
operator* Dereference operators
operator-> Member access operators
valueless_after_move Return true if the object has been moved-from and is disengaged.

Friends

|===
Name Description
swap
nullable_traits nullable_traits<T> defines how to treat a T as “nullable” without an external engaged bit.

Non-Member Functions

Name Description
CompareDerivedCompares two polymorphic objects that have visit functions
castDynamic cast returning const reference; asserts on failure.
castDynamic cast returning reference; asserts on failure.
cast_or_nullDynamic cast pointer; returns nullptr when pp is null.
cast_or_nullDynamic cast pointer; returns nullptr when pp is null (const).
dyn_castDynamic cast returning pointer or nullptr.
dyn_castDynamic cast returning pointer or nullptr (const overload).
dyn_cast_or_nullDynamic cast if pointer is non-null and engaged, else nullptr.
dyn_cast_or_nullDynamic cast if pointer is non-null and engaged, else nullptr (const).
innerTypeReturn the inner type.
innerTypeReturn the inner type.
innermostTypeReturn the innermost type (mutable overload).
innermostTypeReturn the innermost type.
isaReturn true if the polymorphic object holds a value of type To.
isa_or_nullReturn true if pointer is non-null and referent is of type To.
operator<=>Compare polymorphic template arguments.
operator<=>Three-way comparison for polymorphic Name variants.
operator<=>Compare polymorphic template parameters.
operator<=>Three-way comparison of two polymorphic objects.
operator<=>Compare two polymorphic types for ordering.
operator==Equality helper for polymorphic types.
operator==Equality comparison of two polymorphic objects.
operator==Equality compare two polymorphic names.
operator==Equality helper for polymorphic template parameters.
doc::isEmptyDetermine if the inline is empty
doc::isEmptyDetermine if the inline is empty
doc::ltrimRemoves leading whitespace from the inline element.
doc::ltrimRemoves leading whitespace from the block.
doc::operator<=>Three-way comparison between polymorphic block wrappers.
doc::operator<=>Three-way comparison for polymorphic inline elements.
doc::operator==Equality delegates to the three-way comparison.
doc::operator==Equality delegates to the three-way comparison.
doc::rtrimRemoves trailing whitespace from the block.
doc::rtrimRemoves trailing whitespace from the inline element.
doc::trimRemoves leading and trailing whitespace from the block.
doc::trimRemoves leading and trailing whitespace from the inline element.

Const pointer to the held object.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
using const_pointer = T const*;

Mutable pointer to the held object.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
using pointer = T*;

Base value type.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
using value_type = T;

Constructors

Synopses

Declared in <mrdocs/ADT/Polymorphic.hpp>

Copy constructor.

constexpr
Polymorphic(Polymorphic const& V);
» more...

Move constructor.

constexpr
Polymorphic(Polymorphic&& V) noexcept;
» more...

Forwarding constructor from a derived U.

template<class U>
constexpr
explicit
Polymorphic(U&& u)
requires (!std::same_as<Polymorphic, std::remove_cvref_t<U>>) &&
                 std::copy_constructible<std::remove_cvref_t<U>> &&
                 std::derived_from<std::remove_cvref_t<U>, T>;
» more...

In-place constructor for a specific derived U.

template<
    class U,
    class... Ts>
constexpr
explicit
Polymorphic(
    std::in_place_type_t<U>,
    Ts&&... ts)
requires std::same_as<std::remove_cvref_t<U>, U> &&
                 std::constructible_from<U, Ts&&...> &&
                 std::copy_constructible<U> && std::derived_from<U, T>;
» more...

Parameters

Name Description
V Source object.
ts Arguments to forward to U's constructor.

Copy constructor.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
constexpr
Polymorphic(Polymorphic const& V);

Parameters

Name Description
V Source object.

Move constructor.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
constexpr
Polymorphic(Polymorphic&& V) noexcept;

Parameters

Name Description
V Source object (emptied on return).

Forwarding constructor from a derived U.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
template<class U>
constexpr
explicit
Polymorphic(U&& u)
requires (!std::same_as<Polymorphic, std::remove_cvref_t<U>>) &&
                 std::copy_constructible<std::remove_cvref_t<U>> &&
                 std::derived_from<std::remove_cvref_t<U>, T>;

Parameters

Name Description
u The object to move construct from

In-place constructor for a specific derived U.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
template<
    class U,
    class... Ts>
constexpr
explicit
Polymorphic(
    std::in_place_type_t<U>,
    Ts&&... ts)
requires std::same_as<std::remove_cvref_t<U>, U> &&
                 std::constructible_from<U, Ts&&...> &&
                 std::copy_constructible<U> && std::derived_from<U, T>;

Parameters

Name Description
ts Arguments to forward to U's constructor.

Destructor.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
constexpr
~Polymorphic();

Assignment operators

Synopses

Declared in <mrdocs/ADT/Polymorphic.hpp>

Copy assignment.

constexpr
Polymorphic&
operator=(Polymorphic const& V);
» more...

Move assignment.

constexpr
Polymorphic&
operator=(Polymorphic&& V) noexcept;
» more...

Return Value

*this.

Parameters

Name Description
V Source object.

Copy assignment.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
constexpr
Polymorphic&
operator=(Polymorphic const& V);

Return Value

*this.

Parameters

Name Description
V Source object.

Move assignment.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
constexpr
Polymorphic&
operator=(Polymorphic&& V) noexcept;

Return Value

*this.

Parameters

Name Description
V Source object (emptied on return).

Dereference operators

Synopses

Declared in <mrdocs/ADT/Polymorphic.hpp>

Dereference to the held object.

[[nodiscard]]
constexpr
T&
operator*() noexcept;
» more...

Dereference to the held object (const).

[[nodiscard]]
constexpr
T const&
operator*() const noexcept;
» more...

Return Value

Dereference to the held object.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
[[nodiscard]]
constexpr
T&
operator*() noexcept;

Return Value

Reference to the contained value.

Dereference to the held object (const).

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
[[nodiscard]]
constexpr
T const&
operator*() const noexcept;

Return Value

Const reference to the contained value.

Member access operators

Synopses

Declared in <mrdocs/ADT/Polymorphic.hpp>

Pointer-like access to the held object.

[[nodiscard]]
constexpr
pointer
operator->() noexcept;
» more...

Pointer-like access to the held object (const).

[[nodiscard]]
constexpr
const_pointer
operator->() const noexcept;
» more...

Return Value

Pointer to the contained value.

Pointer-like access to the held object.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
[[nodiscard]]
constexpr
pointer
operator->() noexcept;

Return Value

Pointer to the contained value.

Pointer-like access to the held object (const).

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
[[nodiscard]]
constexpr
const_pointer
operator->() const noexcept;

Return Value

Pointer to the contained value.

Return true if the object has been moved-from and is disengaged.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
constexpr
bool
valueless_after_move() const noexcept;

Return Value

true when empty.

An rvalue reference type.

Synopsis

Declared in <mrdocs/Metadata/Type/RValueReferenceType.hpp>
struct RValueReferenceType final
    : TypeCommonBase<TypeKind::RValueReference>

Base Classes

Name Description
TypeCommonBase<TypeKind::RValueReference>CRTP base that ties a concrete type to a fixed TypeKind.

Member Functions

NameDescription
operator<=> Compare rvalue references by pointee.

Static Member Functions

Name
isArray
isAuto
isDecltype
isFunction
isLValueReference
isMemberPointer
isNamed
isPointer
isRValueReference

Data Members

NameDescription
PointeeType The referenced type, defaults to auto when unknown.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
innerTypeReturn the inner type.
innerTypeReturn the inner type.
innerTypePtrReturn the inner type.
innerTypePtrReturn the inner type.
toStringRender a type to a human-readable string.

Compare rvalue references by pointee.

Synopses

Declared in <mrdocs/Metadata/Type/RValueReferenceType.hpp>

Compare rvalue references by pointee.

std::strong_ordering
operator<=>(RValueReferenceType const& rhs) const;
» more...

Three-way comparison operator

constexpr
auto
operator<=>(TypeCommonBase<mrdocs::TypeKind::RValueReference> const& rhs) const = default;
» more...

Compare rvalue references by pointee.

Synopsis

Declared in <mrdocs/Metadata/Type/RValueReferenceType.hpp>
std::strong_ordering
operator<=>(RValueReferenceType const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
auto
operator<=>(TypeCommonBase<mrdocs::TypeKind::RValueReference> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isArray() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isAuto() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isDecltype() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isLValueReference() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isMemberPointer() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isNamed() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isPointer() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isRValueReference() noexcept;

The referenced type, defaults to auto when unknown.

Synopsis

Declared in <mrdocs/Metadata/Type/RValueReferenceType.hpp>
Polymorphic<Type> PointeeType = Polymorphic<Type>(AutoType{});

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr static
TypeKind kind_id;

Range adapter to expose first/last flags inside range-for loops.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
template<class Container>
class RangeFor;

Types

NameDescription
iterator Iterator yielding RangeFor::value_type proxies with first/last flags.
value_type Proxy describing an element plus first/last flags.
const_pointer Pointer to const proxy.
const_reference Reference to const proxy.
difference_type Signed distance type.
pointer Pointer to proxy.
reference Reference to proxy.
size_type Unsigned size type.

Member Functions

NameDescription
RangeFor [constructor]Construct a range wrapper over a container.
begin Iterator to first element.
end Iterator past the last element.

Pointer to const proxy.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
using const_pointer = value_type const*;

Reference to const proxy.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
using const_reference = value_type const&;

Signed distance type.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
using difference_type = std::ptrdiff_t;

Pointer to proxy.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
using pointer = value_type*;

Reference to proxy.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
using reference = value_type&;

Unsigned size type.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
using size_type = std::size_t;

Iterator yielding RangeFor::value_type proxies with first/last flags.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
class iterator;

Types

NameDescription
iterator_category Iterator category forwarded from container.
pointer Pointer type (unused).
reference Reference type.
size_type Size type alias.
value_type Proxy value type.

Member Functions

NameDescription
iterator [constructor]Constructors
operator= Copy assignment.
operator* Dereference to proxy value.
operator++ Increment operators
operator-> Return proxy for current element.
operator== Equality comparison.
operator!= Inequality comparison.

Friends

|===
Name Description
value_type Proxy describing an element plus first/last flags.
RangeFor Range adapter to expose first/last flags inside range-for loops.

Iterator category forwarded from container.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
using iterator_category = std::iterator_traits<Container::iterator>::iterator_category;

Pointer type (unused).

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
using pointer = void;

Reference type.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
using reference = value_type;

Size type alias.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
using size_type = std::size_t;

Proxy value type.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
using value_type = RangeFor<Container>::value_type;

Constructors

Synopses

Declared in <mrdocs/Support/RangeFor.hpp>

Default constructor.

iterator() = default;
» more...

Copy constructor.

iterator(iterator const& other) = default;
» more...

Default constructor.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
iterator() = default;

Copy constructor.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
iterator(iterator const& other) = default;

Parameters

Name Description
other The object to copy construct from

Copy assignment.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
iterator&
operator=(iterator const& other) = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Dereference to proxy value.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
reference
operator*() const noexcept;

Return Value

Reference type.

Increment operators

Synopses

Declared in <mrdocs/Support/RangeFor.hpp>

Pre-increment.

iterator&
operator++() noexcept;
» more...

Post-increment.

iterator
operator++(int unused) noexcept;
» more...

Return Value

Parameters

Name Description
unused Dummy parameter for postfix form.

Pre-increment.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
iterator&
operator++() noexcept;

Return Value

*this advanced to next element.

Post-increment.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
iterator
operator++(int unused) noexcept;

Return Value

Iterator prior to increment.

Parameters

Name Description
unused Dummy parameter for postfix form.

Return proxy for current element.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
reference
operator->() const noexcept;

Return Value

proxy for current element.

Equality comparison.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
bool
operator==(iterator const& it) const noexcept;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
it The right operand

Inequality comparison.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
bool
operator!=(iterator const& it) const noexcept;

Return Value

true if the objects are not equal, false otherwise

Parameters

Name Description
it The right operand

Proxy describing an element plus first/last flags.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
struct value_type;

Description

Reference to current element.

Member Functions

NameDescription
operator-> Access members through pointer syntax.

Data Members

NameDescription
first True if this element is the first in the range.
last True if this element is the last in the range.
value The contained value.

Access members through pointer syntax.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
value_type const*
operator->() const noexcept;

Return Value

Pointer to this proxy.

True if this element is the first in the range.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
bool const first;

True if this element is the last in the range.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
bool const last;

The contained value.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
Container::value_type const& value;

Construct a range wrapper over a container.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
explicit
RangeFor(Container const& C) noexcept;

Parameters

Name Description
C Container to iterate.

Iterator to first element.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
iterator
begin() const noexcept;

Return Value

Iterator yielding RangeFor::value_type proxies with first/last flags.

Iterator past the last element.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
iterator
end() const noexcept;

Return Value

Iterator yielding RangeFor::value_type proxies with first/last flags.

The aggregated interface for a given struct, class, or union.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordInterface.hpp>
class RecordInterface;

Description

This class represents the public, protected, and private interfaces of a record. It is used to generate the "interface" value of the DOM for symbols that represent records or namespaces.

The interface is not part of the Corpus. It is a temporary structure generated to aggregate the symbols of a record. This structure is provided to the user via the DOM.

While the members of a Namespace are directly represented with a Tranche, the members of a Record are represented with an Interface.

Data Members

NameDescription
Private The aggregated private interfaces.
Protected The aggregated protected interfaces.
Public The aggregated public interfaces.

Non-Member Functions

Name Description
allMembersFlatten all public/protected/private members.
mergeMerge two interfaces, combining matching tranches.

The aggregated private interfaces.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordInterface.hpp>
RecordTranche Private;

Description

This tranche contains all private members of a record or namespace.

The aggregated protected interfaces.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordInterface.hpp>
RecordTranche Protected;

Description

This tranche contains all protected members of a record or namespace.

The aggregated public interfaces.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordInterface.hpp>
RecordTranche Public;

Description

This tranche contains all public members of a record or namespace.

Metadata for struct, class, or union.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Record.hpp>
struct RecordSymbol final
    : SymbolCommonBase<SymbolKind::Record>

Base Classes

Name Description
SymbolCommonBase<SymbolKind::Record>Base class for providing variant discriminator functions.

Member Functions

NameDescription
RecordSymbol [constructor]Create a record symbol bound to an ID.
operator<=> Compare records including bases, members, and flags.

Static Member Functions

Name
isConcept
isEnum
isEnumConstant
isFunction
isGuide
isNamespace
isNamespaceAlias
isOverloads
isRecord
isTypedef
isUsing
isVariable

Data Members

NameDescription
Bases List of immediate bases.
Derived List of derived classes
Friends List of friends.
Interface Lists of members.
IsFinal Whether the class is marked final.
IsFinalDestructor Whether the destructor is marked final.
IsTypeDef Whether the record originated from a typedef-style declaration.
KeyKind Kind of record this is (class, struct, or union).
Template When present, this record is a template or specialization.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
allMembersView all record members across access levels.
canMergeCheck whether two symbols may be merged.
getPrimaryLocationDetermine a location to use when none is explicitly chosen.
mergeMerges two Symbol objects.
mergeMerge metadata from another record of the same identity.

Create a record symbol bound to an ID.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Record.hpp>
explicit
RecordSymbol(SymbolID const& ID) noexcept;

Parameters

Name Description
ID The object to copy construct from

Compare records including bases, members, and flags.

Synopses

Declared in <mrdocs/Metadata/Symbol/Record.hpp>

Compare records including bases, members, and flags.

std::strong_ordering
operator<=>(RecordSymbol const& other) const;
» more...

Three-way comparison operator

auto
operator<=>(SymbolCommonBase<mrdocs::SymbolKind::Record> const& rhs) const = default;
» more...

Compare records including bases, members, and flags.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Record.hpp>
std::strong_ordering
operator<=>(RecordSymbol const& other) const;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
auto
operator<=>(SymbolCommonBase<mrdocs::SymbolKind::Record> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isConcept() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnum() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnumConstant() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isGuide() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespace() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespaceAlias() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isOverloads() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isRecord() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isTypedef() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isUsing() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isVariable() noexcept;

List of immediate bases.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Record.hpp>
std::vector<BaseInfo> Bases;

List of derived classes

Synopsis

Declared in <mrdocs/Metadata/Symbol/Record.hpp>
std::vector<SymbolID> Derived;

List of friends.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Record.hpp>
std::vector<FriendInfo> Friends;

Lists of members.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Record.hpp>
RecordInterface Interface;

Whether the class is marked final.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Record.hpp>
bool IsFinal = false;

Whether the destructor is marked final.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Record.hpp>
bool IsFinalDestructor = false;

Whether the record originated from a typedef-style declaration.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Record.hpp>
bool IsTypeDef = false;

Description

Things like anonymous structs in a typedef:

typedef struct { ... } foo_t;

are converted into records with the typedef as the Name + this flag set.

NOTE

Alias-declarations are not yet distinguished here.

Kind of record this is (class, struct, or union).

Synopsis

Declared in <mrdocs/Metadata/Symbol/Record.hpp>
RecordKeyKind KeyKind = RecordKeyKind::Struct;

When present, this record is a template or specialization.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Record.hpp>
Optional<TemplateInfo> Template;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
constexpr static
SymbolKind kind_id;

A group of members that have the same access specifier.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordTranche.hpp>
struct RecordTranche;

Description

This struct represents a collection of symbols that share the same access specifier within a record.

It includes one vector for each info type allowed in a record, and individual vectors for static functions, types, and function overloads.

Data Members

NameDescription
Concepts Member concepts.
Enums Enumerations.
Functions Member functions.
Guides Deduction guides in the class scope.
NamespaceAliases Namespace aliases declared with this access.
Records Nested records.
StaticFunctions Static member functions.
StaticVariables Static data members.
Typedefs Typedefs and using aliases.
Usings Using-declarations that pull members into the class.
Variables Data members.

Non-Member Functions

Name Description
allMembersJoin every member list into a single view.
mergeMerge two tranches with the same access level.

Member concepts.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordTranche.hpp>
std::vector<SymbolID> Concepts;

Enumerations.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordTranche.hpp>
std::vector<SymbolID> Enums;

Member functions.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordTranche.hpp>
std::vector<SymbolID> Functions;

Deduction guides in the class scope.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordTranche.hpp>
std::vector<SymbolID> Guides;

Namespace aliases declared with this access.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordTranche.hpp>
std::vector<SymbolID> NamespaceAliases;

Nested records.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordTranche.hpp>
std::vector<SymbolID> Records;

Static member functions.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordTranche.hpp>
std::vector<SymbolID> StaticFunctions;

Static data members.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordTranche.hpp>
std::vector<SymbolID> StaticVariables;

Typedefs and using aliases.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordTranche.hpp>
std::vector<SymbolID> Typedefs;

Using-declarations that pull members into the class.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordTranche.hpp>
std::vector<SymbolID> Usings;

Data members.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordTranche.hpp>
std::vector<SymbolID> Variables;

Reference directories used to resolve paths

Synopsis

Declared in <mrdocs/Config/ReferenceDirectories.hpp>
struct ReferenceDirectories;

Description

These are the main reference directories used to resolve paths in the application.

All other reference directories come directly from the configuration file.

Data Members

NameDescription
cwd Absolute path to the current working directory.
mrdocsRoot Absolute path to the MrDocs repository root.

Absolute path to the current working directory.

Synopsis

Declared in <mrdocs/Config/ReferenceDirectories.hpp>
std::string cwd;

Absolute path to the MrDocs repository root.

Synopsis

Declared in <mrdocs/Config/ReferenceDirectories.hpp>
std::string mrdocsRoot;

Execute a callable when the enclosing scope exits unless dismissed.

Synopsis

Declared in <mrdocs/Support/ScopeExit.hpp>
template<class F>
class ScopeExit;

Member Functions

NameDescription
ScopeExit [constructor]Construct with a callable to invoke on scope exit.
~ScopeExit [destructor]Invoke the stored callable if the guard was not dismissed.
dismiss Prevent the callable from running on destruction.

Construct with a callable to invoke on scope exit.

Synopsis

Declared in <mrdocs/Support/ScopeExit.hpp>
explicit
ScopeExit(F onExitScope);

Parameters

Name Description
onExitScope Callable executed unless dismissed.

Invoke the stored callable if the guard was not dismissed.

Synopsis

Declared in <mrdocs/Support/ScopeExit.hpp>
~ScopeExit();

Prevent the callable from running on destruction.

Synopsis

Declared in <mrdocs/Support/ScopeExit.hpp>
void
dismiss();

RAII helper that restores a referenced value on scope exit.

Synopsis

Declared in <mrdocs/Support/ScopeExit.hpp>
template<class T>
class ScopeExitRestore;

Member Functions

NameDescription
ScopeExitRestore [constructor]Constructors
~ScopeExitRestore [destructor]Restore the previous value unless dismissed.
dismiss Prevent restoration on destruction.

Constructors

Synopses

Declared in <mrdocs/Support/ScopeExit.hpp>

Restore ref to its previous value when the scope ends

explicit
ScopeExitRestore(T& ref);
» more...

Temporarily set ref to next and restore it when the scope ends

template<std::convertible_to<T> T2>
explicit
ScopeExitRestore(
    T& ref,
    T2 next);
» more...

Parameters

Name Description
ref The variable to modify and eventually restore.
next The temporary value assigned to ref for the scope.

Restore ref to its previous value when the scope ends

Synopsis

Declared in <mrdocs/Support/ScopeExit.hpp>
explicit
ScopeExitRestore(T& ref);

Description

Store the current value of ref and restore it when this object goes out of scope, unless dismiss() is called.

Parameters

Name Description
ref The object to copy construct from

Temporarily set ref to next and restore it when the scope ends

Synopsis

Declared in <mrdocs/Support/ScopeExit.hpp>
template<std::convertible_to<T> T2>
explicit
ScopeExitRestore(
    T& ref,
    T2 next);

Description

Store the current value of ref, set it to next, and restore the previous value when this object goes out of scope, unless dismiss() is called.

Parameters

Name Description
ref The variable to modify and eventually restore.
next The temporary value assigned to ref for the scope.

Restore the previous value unless dismissed.

Synopsis

Declared in <mrdocs/Support/ScopeExit.hpp>
~ScopeExitRestore();

Prevent restoration on destruction.

Synopsis

Declared in <mrdocs/Support/ScopeExit.hpp>
void
dismiss();

Stores source information for a declaration.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Source.hpp>
struct SourceInfo;

Member Functions

NameDescription
SourceInfo [constructor]Construct with no locations.
~SourceInfo [destructor] [virtual]Polymorphic base needs a virtual destructor.
operator<=> Compare sources by definition and declaration locations.

Data Members

NameDescription
DefLoc Location where the entity was defined
Loc Locations where the entity was declared.

Non-Member Functions

Name Description
getPrimaryLocationChoose the best location to display for a symbol.
mergeMerge, transferring ownership from the right-hand side.
mergeMerge the location sets, preferring existing def/primary.

Construct with no locations.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Source.hpp>
constexpr
SourceInfo() = default;

Polymorphic base needs a virtual destructor.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Source.hpp>
constexpr
virtual
~SourceInfo() = default;

Compare sources by definition and declaration locations.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Source.hpp>
constexpr
auto
operator<=>(SourceInfo const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Location where the entity was defined

Synopsis

Declared in <mrdocs/Metadata/Symbol/Source.hpp>
Optional<Location> DefLoc;

Description

KRYSTIAN NOTE: this is used for entities which cannot be redeclared -- regardless of whether such a declaration is actually a definition (e.g. alias-declarations and typedef declarations are never definition).

Locations where the entity was declared.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Source.hpp>
std::vector<Location> Loc;

Description

This does not include the definition.

A source location with filename prettification.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
class SourceLocation;

Member Functions

NameDescription
SourceLocation [constructor]Build a location wrapper from a source_location.
column Column number (1-based) within the file.
file_name File name associated with the location.
function_name Function name captured at the location.
line Line number (1-based) within the file.

Build a location wrapper from a source_location.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
SourceLocation(std::source_location const& loc) noexcept;

Parameters

Name Description
loc The object to copy construct from

Column number (1-based) within the file.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
uint_least32_t
column() const noexcept;

Return Value

One-based column index.

File name associated with the location.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
std::string_view
file_name() const noexcept;

Return Value

Path of the source file.

Function name captured at the location.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
std::string_view
function_name() const noexcept;

Return Value

Name of the function where the location was recorded.

Line number (1-based) within the file.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
uint_least32_t
line() const noexcept;

Return Value

One-based line index.

Represents a (possibly qualified) symbol name with template arguments.

Synopsis

Declared in <mrdocs/Metadata/Name/SpecializationName.hpp>
struct SpecializationName final
    : Name

Base Classes

Name Description
NameRepresents a name for a named Type

Member Functions

NameDescription
SpecializationName [constructor]Construct an empty specialization name.
asName asName overloads
operator== Equality compares all fields.
operator<=> Three-way comparison operators

Data Members

NameDescription
Identifier The unqualified name.
Kind The kind of name this is.
Prefix The parent name info, if any.
TemplateArgs The template arguments.
id The SymbolID of the named symbol, if it exists.
specializationID The SymbolID of the named symbol, if it exists.

Non-Member Functions

Name Description
toStringConvert the name to a human-readable string.

Construct an empty specialization name.

Synopsis

Declared in <mrdocs/Metadata/Name/SpecializationName.hpp>
constexpr
SpecializationName() noexcept;

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/Name/NameBase.hpp>

Compare specialization names by base name and template arguments.

auto
operator<=>(SpecializationName const& other) const;
» more...

Order names by kind, identifier, id, and prefix.

std::strong_ordering
operator<=>(Name const& other) const;
» more...

Compare specialization names by base name and template arguments.

Synopsis

Declared in <mrdocs/Metadata/Name/SpecializationName.hpp>
auto
operator<=>(SpecializationName const& other) const;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

Order names by kind, identifier, id, and prefix.

Synopsis

Declared in <mrdocs/Metadata/Name/NameBase.hpp>
std::strong_ordering
operator<=>(Name const& other) const;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

The template arguments.

Synopsis

Declared in <mrdocs/Metadata/Name/SpecializationName.hpp>
std::vector<Polymorphic<TArg>> TemplateArgs;

The SymbolID of the named symbol, if it exists.

Synopsis

Declared in <mrdocs/Metadata/Name/SpecializationName.hpp>
SymbolID specializationID = = SymbolID::invalid;

Range adaptor that constructs a SplitLinesView.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
struct SplitLinesAdaptor;

Member Functions

NameDescription
operator() Function call operators

Friends

|===
Name Description
operator| Pipe a contiguous character range into the adaptor.

Function call operators

Synopses

Declared in <mrdocs/Support/SplitLines.hpp>

Split a string view into lines.

constexpr
auto
operator()(std::string_view sv) const;
» more...

Split any contiguous character range into lines.

template<std::ranges::contiguous_range R>
requires std::same_as<std::remove_cv_t<std::ranges::range_value_t<R>>, char>
constexpr
auto
operator()(R&& r) const;
» more...

Return Value

Parameters

Name Description
sv Source string.
r Range of characters.

Split a string view into lines.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
constexpr
auto
operator()(std::string_view sv) const;

Return Value

View over the lines in sv.

Parameters

Name Description
sv Source string.

Split any contiguous character range into lines.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
template<std::ranges::contiguous_range R>
requires std::same_as<std::remove_cv_t<std::ranges::range_value_t<R>>, char>
constexpr
auto
operator()(R&& r) const;

Return Value

View over the lines in the range.

Parameters

Name Description
r Range of characters.

A lazy input range of std::string_view lines split on all known line breaks.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
struct SplitLinesView
    : std::ranges::view_interface<SplitLinesView>

Base Classes

Name Description
std::ranges::view_interface<SplitLinesView>

Types

NameDescription
Iterator Iterator over lines produced by SplitLinesView.

Member Functions

NameDescription
SplitLinesView [constructor]Constructors
back
begin Return an iterator to the first line.
data
empty
end Return the end sentinel for the view.
front
operator[] Subscript operators
size
operator bool Conversion operators

Data Members

NameDescription
sv_ Underlying string to split.

Iterator over lines produced by SplitLinesView.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
struct Iterator;

Types

NameDescription
difference_type Signed distance type for the iterator.
value_type Line view type exposed by the iterator.

Member Functions

NameDescription
Iterator [constructor]Constructors
findBreak Compute the next line break position.
operator* Return the current line segment.
operator++ Increment operators

Data Members

NameDescription
atEnd Flag indicating the end iterator.
cur Start of the current line.
nextBreak Index of the next break delimiter or npos.
sv Reference to the source string.

Friends

|===
Name Description
operator== Equality operator

Signed distance type for the iterator.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
using difference_type = std::ptrdiff_t;

Line view type exposed by the iterator.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
using value_type = std::string_view;

Constructors

Synopses

Declared in <mrdocs/Support/SplitLines.hpp>

Construct an end iterator.

constexpr
Iterator() = default;
» more...

Construct a begin or end iterator.

constexpr
explicit
Iterator(
    std::string_view s,
    bool begin);
» more...

Parameters

Name Description
s Source string.
begin If true, position at the first line; otherwise create end iterator.

Construct an end iterator.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
constexpr
Iterator() = default;

Construct a begin or end iterator.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
constexpr
explicit
Iterator(
    std::string_view s,
    bool begin);

Parameters

Name Description
s Source string.
begin If true, position at the first line; otherwise create end iterator.

Compute the next line break position.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
constexpr
std::size_t
findBreak(std::size_t from) const noexcept;

Return Value

Offset of the next break or npos.

Parameters

Name Description
from Index to start searching.

Return the current line segment.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
constexpr
value_type
operator*() const noexcept;

Return Value

View of the current line.

Increment operators

Synopses

Declared in <mrdocs/Support/SplitLines.hpp>

Advance to the next line.

constexpr
Iterator&
operator++() noexcept;
» more...

Advance to the next line (post-increment).

constexpr
void
operator++(int unused);
» more...

Return Value

Reference to this iterator.

Parameters

Name Description
unused Dummy parameter for postfix form.

Advance to the next line.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
constexpr
Iterator&
operator++() noexcept;

Return Value

Reference to this iterator.

Advance to the next line (post-increment).

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
constexpr
void
operator++(int unused);

Parameters

Name Description
unused Dummy parameter for postfix form.

Flag indicating the end iterator.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
bool atEnd = false;

Start of the current line.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
std::size_t cur = 0;

Index of the next break delimiter or npos.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
std::size_t nextBreak = 0;

Reference to the source string.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
std::string_view sv = {};

Constructors

Synopses

Declared in <mrdocs/Support/SplitLines.hpp>

Construct an empty view.

constexpr
SplitLinesView() = default;
» more...

Construct a view over sv.

constexpr
explicit
SplitLinesView(std::string_view sv);
» more...

Parameters

Name Description
sv String to split into lines.

Construct an empty view.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
constexpr
SplitLinesView() = default;

Construct a view over sv.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
constexpr
explicit
SplitLinesView(std::string_view sv);

Parameters

Name Description
sv String to split into lines.

Synopses

Declared in <__ranges/view_interface.h>
template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
decltype(auto)
back()
requires bidirectional_range<_D2> && common_range<_D2>;
» more...
template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
decltype(auto)
back() const
requires bidirectional_range<const _D2> && common_range<const _D2>;
» more...

Synopsis

Declared in <__ranges/view_interface.h>
template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
decltype(auto)
back()
requires bidirectional_range<_D2> && common_range<_D2>;

Synopsis

Declared in <__ranges/view_interface.h>
template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
decltype(auto)
back() const
requires bidirectional_range<const _D2> && common_range<const _D2>;

Return an iterator to the first line.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
constexpr
Iterator
begin() const noexcept;

Return Value

Iterator positioned at the first line.

Synopses

Declared in <__ranges/view_interface.h>
template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
auto
data()
requires contiguous_iterator<iterator_t<_D2>>;
» more...
template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
auto
data() const
requires range<const _D2> && contiguous_iterator<iterator_t<const _D2>>;
» more...

Synopsis

Declared in <__ranges/view_interface.h>
template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
auto
data()
requires contiguous_iterator<iterator_t<_D2>>;

Synopsis

Declared in <__ranges/view_interface.h>
template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
auto
data() const
requires range<const _D2> && contiguous_iterator<iterator_t<const _D2>>;

Synopses

Declared in <__ranges/view_interface.h>
template<class _D2 = SplitLinesView>
[[nodiscard, __exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
bool
empty()
requires sized_range<_D2> || forward_range<_D2>;
» more...
template<class _D2 = SplitLinesView>
[[nodiscard, __exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
bool
empty() const
requires sized_range<const _D2> || forward_range<const _D2>;
» more...

Synopsis

Declared in <__ranges/view_interface.h>
template<class _D2 = SplitLinesView>
[[nodiscard, __exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
bool
empty()
requires sized_range<_D2> || forward_range<_D2>;

Synopsis

Declared in <__ranges/view_interface.h>
template<class _D2 = SplitLinesView>
[[nodiscard, __exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
bool
empty() const
requires sized_range<const _D2> || forward_range<const _D2>;

Return the end sentinel for the view.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
constexpr
std::default_sentinel_t
end() const noexcept;

Return Value

Default sentinel representing the end.

Synopses

Declared in <__ranges/view_interface.h>
template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
decltype(auto)
front()
requires forward_range<_D2>;
» more...
template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
decltype(auto)
front() const
requires forward_range<const _D2>;
» more...

Synopsis

Declared in <__ranges/view_interface.h>
template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
decltype(auto)
front()
requires forward_range<_D2>;

Synopsis

Declared in <__ranges/view_interface.h>
template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
decltype(auto)
front() const
requires forward_range<const _D2>;

Subscript operators

Synopses

Declared in <__ranges/view_interface.h>
template<random_access_range _RARange = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
decltype(auto)
operator[](range_difference_t<_RARange> __index);
» more...
template<random_access_range _RARange = SplitLinesView const>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
decltype(auto)
operator[](range_difference_t<_RARange> __index) const;
» more...

Synopsis

Declared in <__ranges/view_interface.h>
template<random_access_range _RARange = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
decltype(auto)
operator[](range_difference_t<_RARange> __index);

Synopsis

Declared in <__ranges/view_interface.h>
template<random_access_range _RARange = SplitLinesView const>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
decltype(auto)
operator[](range_difference_t<_RARange> __index) const;

Synopses

Declared in <__ranges/view_interface.h>
template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
auto
size()
requires forward_range<_D2> && sized_sentinel_for<sentinel_t<_D2>, iterator_t<_D2>>;
» more...
template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
auto
size() const
requires forward_range<const _D2> && sized_sentinel_for<sentinel_t<const _D2>, iterator_t<const _D2>>;
» more...

Synopsis

Declared in <__ranges/view_interface.h>
template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
auto
size()
requires forward_range<_D2> && sized_sentinel_for<sentinel_t<_D2>, iterator_t<_D2>>;

Synopsis

Declared in <__ranges/view_interface.h>
template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
auto
size() const
requires forward_range<const _D2> && sized_sentinel_for<sentinel_t<const _D2>, iterator_t<const _D2>>;

Conversion operators

Synopses

Declared in <__ranges/view_interface.h>

Conversion to bool

template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
explicit
operator bool()
requires requires(_D2& __t) { ranges::empty(__t); };
» more...

Conversion to bool

template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
explicit
operator bool() const
requires requires(const _D2& __t) { ranges::empty(__t); };
» more...

Conversion to bool

Synopsis

Declared in <__ranges/view_interface.h>
template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
explicit
operator bool()
requires requires(_D2& __t) { ranges::empty(__t); };

Return Value

The object converted to bool

Conversion to bool

Synopsis

Declared in <__ranges/view_interface.h>
template<class _D2 = SplitLinesView>
[[__exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
explicit
operator bool() const
requires requires(const _D2& __t) { ranges::empty(__t); };

Return Value

The object converted to bool

Underlying string to split.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
std::string_view sv_;

Transparent hash functor for string-like keys.

Synopsis

Declared in <mrdocs/ADT/UnorderedStringMap.hpp>
struct StringHash;

Types

NameDescription
hash_type Underlying hash implementation.
is_transparent Marker for heterogeneous lookup.

Member Functions

NameDescription
operator() Function call operators

Underlying hash implementation.

Synopsis

Declared in <mrdocs/ADT/UnorderedStringMap.hpp>
using hash_type = std::hash<std::string_view>;

Marker for heterogeneous lookup.

Synopsis

Declared in <mrdocs/ADT/UnorderedStringMap.hpp>
using is_transparent = void;

Function call operators

Synopses

Declared in <mrdocs/ADT/UnorderedStringMap.hpp>

Hash string_view input.

std::size_t
operator()(std::string_view str) const;
» more...

Hash std::string input.

std::size_t
operator()(std::string const& str) const;
» more...

Hash C-string input.

std::size_t
operator()(char const* str) const;
» more...

Return Value

Hash string_view input.

Synopsis

Declared in <mrdocs/ADT/UnorderedStringMap.hpp>
std::size_t
operator()(std::string_view str) const;

Return Value

Hash value of the string view.

Parameters

Name Description
str The right operand

Hash std::string input.

Synopsis

Declared in <mrdocs/ADT/UnorderedStringMap.hpp>
std::size_t
operator()(std::string const& str) const;

Return Value

Hash value of the string.

Parameters

Name Description
str The right operand

Hash C-string input.

Synopsis

Declared in <mrdocs/ADT/UnorderedStringMap.hpp>
std::size_t
operator()(char const* str) const;

Return Value

Hash value of the string.

Parameters

Name Description
str The right operand

Base class with common properties of all symbols

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
struct Symbol;

Member Functions

NameDescription
~Symbol [destructor] [virtual]Polymorphic base needs a virtual destructor.
asInfo asInfo overloads
operator<=> Compare symbols by structural fields.

Data Members

NameDescription
Access Declaration access.
Extraction Determine why a symbol is extracted.
IsCopyFromInherited Whether this a copy of an inherited method, as produced when inherit-base-members is not never.
Kind Kind of declaration.
Loc The source location information.
Name The unqualified name.
Parent The parent symbol, if any.
doc The extracted documentation for this declaration.
id The unique identifier for this symbol.

Protected Member Functions

NameDescription
Symbol [constructor]Constructors

Non-Member Functions

Name Description
canMergeCheck whether two symbols may be merged.
getPrimaryLocationDetermine a location to use when none is explicitly chosen.
mergeMerges two Symbol objects.

Derived Classes

Name Description
SymbolCommonBase Base class for providing variant discriminator functions.

Polymorphic base needs a virtual destructor.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
constexpr
virtual
~Symbol() = default;

asInfo overloads

Synopses

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>

View this instance as a const Symbol reference.

constexpr
Symbol const&
asInfo() const noexcept;
» more...

View this instance as a mutable Symbol reference.

constexpr
Symbol&
asInfo() noexcept;
» more...

View this instance as a const Symbol reference.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
constexpr
Symbol const&
asInfo() const noexcept;

Return Value

Base class with common properties of all symbols

View this instance as a mutable Symbol reference.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
constexpr
Symbol&
asInfo() noexcept;

Return Value

Base class with common properties of all symbols

Compare symbols by structural fields.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
auto
operator<=>(Symbol const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Declaration access.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
AccessKind Access = AccessKind::None;

Description

Class members use:

Namespace members use AccessKind::None.

Determine why a symbol is extracted.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
ExtractionMode Extraction = ExtractionMode::Dependency;

Description

This flag distinguishes Info from its dependencies and indicates why it was extracted.

Non-dependencies can be extracted in normal mode, see-below mode, or implementation-defined mode.

A dependency is a symbol that does not meet the configured conditions for extraction, but had to be extracted due to it being used transitively by a primary Info.

Whether this a copy of an inherited method, as produced when inherit-base-members is not never.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
bool IsCopyFromInherited = false;

Kind of declaration.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
SymbolKind Kind = SymbolKind::None;

The source location information.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
SourceInfo Loc;

The unqualified name.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
std::string Name;

The parent symbol, if any.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
SymbolID Parent;

Description

This is the parent namespace or record where the symbol is defined.

The extracted documentation for this declaration.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
Optional<DocComment> doc;

The unique identifier for this symbol.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
SymbolID id;

Constructors

Synopses

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>

Default constructor for derived types.

constexpr
Symbol() = default;
» more...

Copy constructor.

constexpr
Symbol(Symbol const& Other) = default;
» more...

Move constructor.

constexpr
Symbol(Symbol&& Other) = default;
» more...

Construct a Symbol.

explicit
Symbol(
    SymbolKind const kind,
    SymbolID const& ID) noexcept;
» more...

Parameters

Name Description
kind The kind of symbol
ID The unique identifier for this symbol

Default constructor for derived types.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
constexpr
Symbol() = default;

Copy constructor.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
constexpr
Symbol(Symbol const& Other) = default;

Parameters

Name Description
Other The object to copy construct from

Move constructor.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
constexpr
Symbol(Symbol&& Other) = default;

Parameters

Name Description
Other The object to move construct from

Construct a Symbol.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
explicit
Symbol(
    SymbolKind const kind,
    SymbolID const& ID) noexcept;

Parameters

Name Description
kind The kind of symbol
ID The unique identifier for this symbol

Base class for providing variant discriminator functions.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
template<SymbolKind K>
struct SymbolCommonBase
    : Symbol

Description

This offers functions that return a boolean at compile-time, indicating if the most-derived class is a certain type.

Base Classes

Name Description
SymbolBase class with common properties of all symbols

Member Functions

NameDescription
asInfo asInfo overloads
operator<=> Three-way comparison operators

Data Members

NameDescription
Access Declaration access.
Extraction Determine why a symbol is extracted.
IsCopyFromInherited Whether this a copy of an inherited method, as produced when inherit-base-members is not never.
Kind Kind of declaration.
Loc The source location information.
Name The unqualified name.
Parent The parent symbol, if any.
doc The extracted documentation for this declaration.
id The unique identifier for this symbol.

Static Data Members

NameDescription
kind_id The variant discriminator constant of the most-derived class.

Protected Member Functions

NameDescription
SymbolCommonBase [constructor]Constructors

Non-Member Functions

Name Description
canMergeCheck whether two symbols may be merged.
getPrimaryLocationDetermine a location to use when none is explicitly chosen.
mergeMerges two Symbol objects.

Derived Classes

Name Description
ConceptSymbol Info for concepts.
EnumConstantSymbol Info for enum constants.
EnumSymbol Metadata for an enumeration declaration.
FunctionSymbol Metadata for a function or method.
GuideSymbol Info for deduction guides.
NamespaceAliasSymbol Info for namespace aliases.
NamespaceSymbol Describes a namespace and its members.
OverloadsSymbol Represents a set of function overloads.
RecordSymbol Metadata for struct, class, or union.
TypedefSymbol Info for typedef and using declarations.
UsingSymbol Info for using declarations.
VariableSymbol A variable.

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>

Compare symbols that share the same kind.

auto
operator<=>(SymbolCommonBase const& rhs) const = default;
» more...

Compare symbols by structural fields.

auto
operator<=>(Symbol const& rhs) const = default;
» more...

Compare symbols that share the same kind.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
auto
operator<=>(SymbolCommonBase const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare symbols by structural fields.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
auto
operator<=>(Symbol const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

The variant discriminator constant of the most-derived class.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
inline constexpr static
SymbolKind kind_id = K;

Description

It only distinguishes from Symbol::kind in that it is a constant.

Constructors

Synopses

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>

Default constructor.

SymbolCommonBase() = default;
» more...

Construct bound to an ID.

constexpr
explicit
SymbolCommonBase(SymbolID const& ID);
» more...

Default constructor.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
SymbolCommonBase() = default;

Construct bound to an ID.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
constexpr
explicit
SymbolCommonBase(SymbolID const& ID);

Parameters

Name Description
ID The object to copy construct from

A glob pattern matcher for C++ symbols

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
class SymbolGlobPattern;

Description

A glob pattern matcher where "*" does not match "::". The pattern "**" can be used to match any number of "::".

Member Functions

NameDescription
SymbolGlobPattern [constructor]Construct an empty SymbolGlobPattern.
isLiteral Checks if the glob pattern is a literal string.
match Matches the given string against the glob pattern.
matchPatternPrefix Matches the start of a given string against the glob pattern.
pattern Returns the glob pattern.

Static Member Functions

NameDescription
create Constructs a SymbolGlobPattern with the given pattern.

Construct an empty SymbolGlobPattern.

Synopses

Declared in <mrdocs/Support/Glob.hpp>

Construct an empty SymbolGlobPattern.

constexpr
SymbolGlobPattern() = default;
» more...

Construct an empty SymbolGlobPattern.

explicit
SymbolGlobPattern(GlobPattern glob);
» more...

Construct an empty SymbolGlobPattern.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
constexpr
SymbolGlobPattern() = default;

Description

An empty SymbolGlobPattern will never match any string.

Construct an empty SymbolGlobPattern.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
explicit
SymbolGlobPattern(GlobPattern glob);

Description

An empty SymbolGlobPattern will never match any string.

Parameters

Name Description
glob The object to construct from

Checks if the glob pattern is a literal string.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
bool
isLiteral() const;

Description

This function determines if the glob pattern does not contain any special characters. In other words, it matches a single string.

Return Value

true if the glob pattern is a literal string, false otherwise.

Matches the given string against the glob pattern.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
bool
match(std::string_view const str) const;

Return Value

true if the string matches the pattern, false otherwise.

Parameters

Name Description
str The string to match against the pattern.

Matches the start of a given string against the glob pattern.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
bool
matchPatternPrefix(std::string_view prefix) const;

Description

This function determines if the given string with the specified prefix can potentially match the glob pattern.

If the string matches the start of the pattern without failure, even if there are characters left in the string or the pattern, the function returns true.

Return Value

true if the string prefix matches the pattern, false otherwise.

Parameters

Name Description
prefix The string to match against the pattern.

Returns the glob pattern.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
std::string_view
pattern() const;

Return Value

The glob pattern as a string view.

Constructs a SymbolGlobPattern with the given pattern.

Synopses

Declared in <mrdocs/Support/Glob.hpp>

Constructs a SymbolGlobPattern with the given pattern.

static
Expected<SymbolGlobPattern>
create(std::string_view const pattern);
» more...

Constructs a SymbolGlobPattern with the given pattern.

static
Expected<SymbolGlobPattern>
create(
    std::string_view const pattern,
    Optional<std::size_t> maxSubGlobs);
» more...

Parameters

Name Description
pattern The glob pattern to use for matching.
maxSubGlobs The maximum number of subpatterns allowed.

Constructs a SymbolGlobPattern with the given pattern.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
static
Expected<SymbolGlobPattern>
create(std::string_view const pattern);

Return Value

A container holding an error or a value.

Parameters

Name Description
pattern The glob pattern to use for matching.

Constructs a SymbolGlobPattern with the given pattern.

Synopsis

Declared in <mrdocs/Support/Glob.hpp>
static
Expected<SymbolGlobPattern>
create(
    std::string_view const pattern,
    Optional<std::size_t> maxSubGlobs);

Return Value

A container holding an error or a value.

Parameters

Name Description
pattern The glob pattern to use for matching.
maxSubGlobs The maximum number of subpatterns allowed.

A unique identifier for a symbol.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
class SymbolID;

Description

This is calculated as the SHA1 digest of the USR. A USRs is a string that provides an unambiguous reference to a symbol.

Types

NameDescription
value_type Underlying byte storage.

Member Functions

NameDescription
SymbolID [constructor]Constructors
begin Return an iterator to the first byte of the SymbolID.
data Return the raw data for this SymbolID.
end Return an iterator to one past the last byte of the SymbolID.
size Return the size of the SymbolID.
operator std::string_view Return a string view of the SymbolID.
operator bool Return true if this is a valid SymbolID.
operator== Compare two SymbolIDs for equality.
operator<=> Compare two SymbolIDs with strong ordering.

Static Member Functions

NameDescription
createFromString Construct a SymbolID by hashing a string

Static Data Members

NameDescription
global Sentinel ID representing the global namespace.
invalid Sentinel ID used to represent “no symbol.”

Non-Member Functions

Name Description
getParentsReturn a list of the parent symbols of the specified Symbol.
toBase16StrConvert a SymbolID to a string

Underlying byte storage.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
using value_type = uint8_t;

Constructors

Synopses

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>

Construct a zero-initialized identifier.

constexpr
SymbolID() = default;
» more...

Construct a SymbolID from a null-terminated string.

template<std::convertible_to<value_type> Char>
constexpr
SymbolID(Char const* src);
» more...

Parameters

Name Description
src The string to construct from.

Construct a zero-initialized identifier.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
constexpr
SymbolID() = default;

Construct a SymbolID from a null-terminated string.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
template<std::convertible_to<value_type> Char>
constexpr
SymbolID(Char const* src);

Description

This function constructs a SymbolID from a string. The string must be exactly 20 characters long.

Parameters

Name Description
src The string to construct from.

Return an iterator to the first byte of the SymbolID.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
constexpr
auto
begin() const noexcept;

Return Value

an iterator to the first byte of the SymbolID.

Return the raw data for this SymbolID.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
constexpr
auto
data() const noexcept;

Return Value

the raw data for this SymbolID.

Return an iterator to one past the last byte of the SymbolID.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
constexpr
auto
end() const noexcept;

Return Value

an iterator to one past the last byte of the SymbolID.

Return the size of the SymbolID.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
constexpr
std::size_t
size() const noexcept;

Description

The size of a SymbolID is always 20.

Return Value

the size of the SymbolID.

Return a string view of the SymbolID.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
operator std::string_view() const noexcept;

Return Value

a string view of the SymbolID.

Return true if this is a valid SymbolID.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
explicit
operator bool() const noexcept;

Return Value

true if this is a valid SymbolID.

Compare two SymbolIDs for equality.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
constexpr
bool
operator==(SymbolID const& other) const noexcept = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
other The right operand

Compare two SymbolIDs with strong ordering.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
auto
operator<=>(SymbolID const& other) const noexcept;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

Construct a SymbolID by hashing a string

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
static
SymbolID
createFromString(std::string_view input);

Return Value

The SymbolID created by hashing the string.

Parameters

Name Description
input The string to hash.

Sentinel ID representing the global namespace.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
inline constexpr static
SymbolID global = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
    "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF";

Description

Symbol ID of the global namespace.

Sentinel ID used to represent “no symbol.”

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
inline constexpr static
SymbolID invalid = SymbolID();

Base class for any template argument.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
struct TArg;

Member Functions

NameDescription
~TArg [destructor] [virtual]Polymorphic base needs a virtual destructor.
asTArg asTArg overloads
operator<=> Compare arguments by stored data.

Data Members

NameDescription
IsPackExpansion Whether this template argument is a parameter expansion.
Kind The kind of template argument this is.

Protected Member Functions

NameDescription
TArg [constructor]Constructors

Non-Member Functions

Name Description
toStringConvert a template argument to a human-readable string.

Derived Classes

Name Description
TArgCommonBase CRTP base that fixes the argument kind.

Polymorphic base needs a virtual destructor.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr
virtual
~TArg() = default;

asTArg overloads

Synopses

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>

View this object as a TArg reference.

constexpr
TArg const&
asTArg() const noexcept;
» more...

View this object as a mutable TArg reference.

constexpr
TArg&
asTArg() noexcept;
» more...

View this object as a TArg reference.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr
TArg const&
asTArg() const noexcept;

Return Value

Base class for any template argument.

View this object as a mutable TArg reference.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr
TArg&
asTArg() noexcept;

Return Value

Base class for any template argument.

Compare arguments by stored data.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr
auto
operator<=>(TArg const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Whether this template argument is a parameter expansion.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
bool IsPackExpansion = false;

The kind of template argument this is.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
TArgKind Kind = TArgKind::Type;

Constructors

Synopses

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>

Defaulted base constructor.

constexpr
TArg() noexcept = default;
» more...

Construct with a specific argument kind.

constexpr
TArg(TArgKind kind) noexcept;
» more...

Defaulted base constructor.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr
TArg() noexcept = default;

Construct with a specific argument kind.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr
TArg(TArgKind kind) noexcept;

Parameters

Name Description
kind The object to construct from

CRTP base that fixes the argument kind.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
template<TArgKind K>
struct TArgCommonBase
    : TArg

Base Classes

Name Description
TArgBase class for any template argument.

Member Functions

NameDescription
asTArg asTArg overloads
operator<=> Compare arguments by stored data.

Static Member Functions

NameDescription
isConstant Test whether the kind is a non-type constant argument.
isTemplate Test whether the kind is a template argument.
isType Test whether the kind is a type argument.

Data Members

NameDescription
IsPackExpansion Whether this template argument is a parameter expansion.
Kind The kind of template argument this is.

Static Data Members

NameDescription
kind_id Static discriminator for the concrete argument.

Protected Member Functions

NameDescription
TArgCommonBase [constructor]Construct with the fixed kind.

Non-Member Functions

Name Description
toStringConvert a template argument to a human-readable string.

Derived Classes

Name Description
ConstantTArg Non-type template argument.
TemplateTArg Template template argument.
TypeTArg Type template argument.

Test whether the kind is a non-type constant argument.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr
static
bool
isConstant() noexcept;

Return Value

true if kind_id equals TypeKind::Constant.

Test whether the kind is a template argument.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr
static
bool
isTemplate() noexcept;

Return Value

true if kind_id equals TypeKind::Template.

Test whether the kind is a type argument.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr
static
bool
isType() noexcept;

Return Value

true if kind_id equals TypeKind::Type.

Static discriminator for the concrete argument.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
inline constexpr static
TArgKind kind_id = K;

Construct with the fixed kind.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr
TArgCommonBase() noexcept;

Base class for a template parameter declaration.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
struct TParam;

Member Functions

NameDescription
~TParam [destructor] [virtual]Polymorphic base needs a virtual destructor.
asTParam asTParam overloads
operator<=> Compare parameters by kind, name, pack flag, and default.

Data Members

NameDescription
Default The default template argument, if any
IsParameterPack Whether this template parameter is a parameter pack
Kind The kind of template parameter this is
Name The template parameters name, if any

Protected Member Functions

NameDescription
TParam [constructor]Constructors

Derived Classes

Name Description
TParamCommonBase CRTP base that fixes the parameter kind.

Polymorphic base needs a virtual destructor.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr
virtual
~TParam() = default;

asTParam overloads

Synopses

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>

View this object as a TParam reference.

constexpr
TParam const&
asTParam() const noexcept;
» more...

View this object as a mutable TParam reference.

constexpr
TParam&
asTParam() noexcept;
» more...

View this object as a TParam reference.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr
TParam const&
asTParam() const noexcept;

Return Value

Base class for a template parameter declaration.

View this object as a mutable TParam reference.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr
TParam&
asTParam() noexcept;

Return Value

Base class for a template parameter declaration.

Compare parameters by kind, name, pack flag, and default.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
std::strong_ordering
operator<=>(TParam const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

The default template argument, if any

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
Optional<Polymorphic<TArg>> Default = std::nullopt;

Whether this template parameter is a parameter pack

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
bool IsParameterPack = false;

The kind of template parameter this is

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
TParamKind Kind = TParamKind::Type;

The template parameters name, if any

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
std::string Name;

Constructors

Synopses

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>

Defaulted base constructor.

constexpr
TParam() noexcept = default;
» more...

Construct with a fixed parameter kind.

constexpr
TParam(TParamKind kind) noexcept;
» more...

Defaulted base constructor.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr
TParam() noexcept = default;

Construct with a fixed parameter kind.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr
TParam(TParamKind kind) noexcept;

Parameters

Name Description
kind The object to construct from

CRTP base that fixes the parameter kind.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
template<TParamKind K>
struct TParamCommonBase
    : TParam

Base Classes

Name Description
TParamBase class for a template parameter declaration.

Member Functions

NameDescription
asTParam asTParam overloads
operator<=> Three-way comparison operators

Static Member Functions

NameDescription
isConstant True if the parameter is a non-type parameter.
isTemplate True if the parameter is a template template parameter.
isType True if the parameter is a type parameter.

Data Members

NameDescription
Default The default template argument, if any
IsParameterPack Whether this template parameter is a parameter pack
Kind The kind of template parameter this is
Name The template parameters name, if any

Static Data Members

NameDescription
kind_id Static discriminator for the concrete parameter.

Protected Member Functions

NameDescription
TParamCommonBase [constructor]Construct with the fixed kind.

Derived Classes

Name Description
ConstantTParam A constant template parameter
TemplateTParam Template template parameter.
TypeTParam Type template parameter.

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>

Compare parameters by their fields.

auto
operator<=>(TParamCommonBase const& rhs) const = default;
» more...

Compare parameters by kind, name, pack flag, and default.

std::strong_ordering
operator<=>(TParam const& rhs) const;
» more...

Compare parameters by their fields.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
auto
operator<=>(TParamCommonBase const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Compare parameters by kind, name, pack flag, and default.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
std::strong_ordering
operator<=>(TParam const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

True if the parameter is a non-type parameter.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr
static
bool
isConstant() noexcept;

Return Value

true when kind_id equals TParamKind::Constant.

True if the parameter is a template template parameter.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr
static
bool
isTemplate() noexcept;

Return Value

true when kind_id equals TParamKind::Template.

True if the parameter is a type parameter.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr
static
bool
isType() noexcept;

Return Value

true when kind_id equals TParamKind::Type.

Static discriminator for the concrete parameter.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
inline constexpr static
TParamKind kind_id = K;

Construct with the fixed kind.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr
TParamCommonBase() noexcept;

A subset of possible work in a thread pool.

Synopsis

Declared in <mrdocs/Support/ThreadPool.hpp>
class TaskGroup;

Member Functions

NameDescription
TaskGroup [constructor]Constructor.
~TaskGroup [destructor]Destructor.
async Submit work to be executed.
wait Block until all work has completed.

Constructor.

Synopsis

Declared in <mrdocs/Support/ThreadPool.hpp>
explicit
TaskGroup(ThreadPool& threadPool);

Parameters

Name Description
threadPool The object to copy construct from

Destructor.

Synopsis

Declared in <mrdocs/Support/ThreadPool.hpp>
~TaskGroup();

Submit work to be executed.

Synopsis

Declared in <mrdocs/Support/ThreadPool.hpp>
template<class F>
void
async(F&& f);

Description

The signature of the submitted function object should be void(void).

Parameters

Name Description
f The function object to execute.

Block until all work has completed.

Synopsis

Declared in <mrdocs/Support/ThreadPool.hpp>
[[nodiscard]]
std::vector<Error>
wait();

Return Value

Zero or more errors which were thrown from submitted work.

Information about templates and specializations thereof.

Synopsis

Declared in <mrdocs/Metadata/Template.hpp>
struct TemplateInfo final

Member Functions

NameDescription
specializationKind Deduce which specialization category this info represents.
operator<=> Compare templates by parameters, arguments, and primary.

Data Members

NameDescription
Args Bound arguments for specializations.
Params Template parameter list.
Primary Primary template ID for partial and explicit specializations.
Requires The requires-clause for the template parameter list, if any.

Non-Member Functions

Name Description
mergeMerge partial template info, filling missing pieces.

Deduce which specialization category this info represents.

Synopsis

Declared in <mrdocs/Metadata/Template.hpp>
TemplateSpecKind
specializationKind() const noexcept;

Return Value

The kind of template or specialization.

Compare templates by parameters, arguments, and primary.

Synopsis

Declared in <mrdocs/Metadata/Template.hpp>
std::strong_ordering
operator<=>(TemplateInfo const& other) const;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

Bound arguments for specializations.

Synopsis

Declared in <mrdocs/Metadata/Template.hpp>
std::vector<Polymorphic<TArg>> Args;

Template parameter list.

Synopsis

Declared in <mrdocs/Metadata/Template.hpp>
std::vector<Polymorphic<TParam>> Params;

Primary template ID for partial and explicit specializations.

Synopsis

Declared in <mrdocs/Metadata/Template.hpp>
SymbolID Primary = = SymbolID::invalid;

The requires-clause for the template parameter list, if any.

Synopsis

Declared in <mrdocs/Metadata/Template.hpp>
ExprInfo Requires;

Template template argument.

Synopsis

Declared in <mrdocs/Metadata/TArg/TemplateTArg.hpp>
struct TemplateTArg final
    : TArgCommonBase<TArgKind::Template>

Base Classes

Name Description
TArgCommonBase<TArgKind::Template>CRTP base that fixes the argument kind.

Member Functions

NameDescription
operator<=> Compare template arguments by referenced template.

Static Member Functions

Name
isConstant
isTemplate
isType

Data Members

NameDescription
Name Name of the referenced template.
Template SymbolID of the referenced template.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
toStringConvert a template argument to a human-readable string.

Compare template arguments by referenced template.

Synopsis

Declared in <mrdocs/Metadata/TArg/TemplateTArg.hpp>
auto
operator<=>(TemplateTArg const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr
static
bool
isConstant() noexcept;

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr
static
bool
isTemplate() noexcept;

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr
static
bool
isType() noexcept;

Name of the referenced template.

Synopsis

Declared in <mrdocs/Metadata/TArg/TemplateTArg.hpp>
std::string Name;

SymbolID of the referenced template.

Synopsis

Declared in <mrdocs/Metadata/TArg/TemplateTArg.hpp>
SymbolID Template;

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr static
TArgKind kind_id;

Template template parameter.

Synopsis

Declared in <mrdocs/Metadata/TParam/TemplateTParam.hpp>
struct TemplateTParam final
    : TParamCommonBase<TParamKind::Template>

Base Classes

Name Description
TParamCommonBase<TParamKind::Template>CRTP base that fixes the parameter kind.

Member Functions

NameDescription
operator<=> Compare template parameters including inner parameter lists.

Static Member Functions

Name
isConstant
isTemplate
isType

Data Members

NameDescription
Params Template parameters for the template-template parameter

Static Data Members

Name
kind_id

Compare template parameters including inner parameter lists.

Synopses

Declared in <mrdocs/Metadata/TParam/TemplateTParam.hpp>

Compare template parameters including inner parameter lists.

std::strong_ordering
operator<=>(TemplateTParam const& other) const;
» more...

Three-way comparison operator

auto
operator<=>(TParamCommonBase<mrdocs::TParamKind::Template> const& rhs) const = default;
» more...

Compare template parameters including inner parameter lists.

Synopsis

Declared in <mrdocs/Metadata/TParam/TemplateTParam.hpp>
std::strong_ordering
operator<=>(TemplateTParam const& other) const;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
auto
operator<=>(TParamCommonBase<mrdocs::TParamKind::Template> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr
static
bool
isConstant() noexcept;

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr
static
bool
isTemplate() noexcept;

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr
static
bool
isType() noexcept;

Template parameters for the template-template parameter

Synopsis

Declared in <mrdocs/Metadata/TParam/TemplateTParam.hpp>
std::vector<Polymorphic<TParam>> Params;

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr static
TParamKind kind_id;

A pool of threads for executing work concurrently.

Synopsis

Declared in <mrdocs/Support/ThreadPool.hpp>
class ThreadPool;

Types

NameDescription
arg_ty Helper that preserves lvalue-ref and constness for references.
arg_ty<T&> Alias returning the preserved argument type.
arg_t Helper that forwards argument qualifiers.

Member Functions

NameDescription
ThreadPool [constructor]Constructor.
~ThreadPool [destructor]Destructor.
async Submit work to be executed.
forEach Invoke a function object for each element of a range.
getThreadCount Return the number of threads in the pool.
wait Block until all work has completed.

Friends

|===
Name Description
TaskGroup A subset of possible work in a thread pool.

Helper that forwards argument qualifiers.

Synopsis

Declared in <mrdocs/Support/ThreadPool.hpp>
template<class T>
using arg_t = arg_ty<T>::type;

Helper that preserves lvalue-ref and constness for references.

Synopsis

Declared in <mrdocs/Support/ThreadPool.hpp>
template<class T>
struct arg_ty;

Types

NameDescription
type Resulting adjusted type.

Resulting adjusted type.

Synopsis

Declared in <mrdocs/Support/ThreadPool.hpp>
using type = T;

Alias returning the preserved argument type.

Synopsis

Declared in <mrdocs/Support/ThreadPool.hpp>
template<class T>
struct arg_ty<T&>;

Types

NameDescription
type Resulting adjusted type.

Return Value

Argument type with reference/const qualifiers preserved.

Template Parameters

Name Description
T Original argument type.

Resulting adjusted type.

Synopsis

Declared in <mrdocs/Support/ThreadPool.hpp>
using type = std::conditional_t<std::is_const_v<T>, T, T&>;

Constructor.

Synopses

Declared in <mrdocs/Support/ThreadPool.hpp>

Constructor.

explicit
ThreadPool();
» more...

Constructor.

explicit
ThreadPool(unsigned int concurrency);
» more...

Constructor.

Synopsis

Declared in <mrdocs/Support/ThreadPool.hpp>
explicit
ThreadPool();

Description

Default constructed thread pools have concurrency equal to one and never spawn new threads. Submitted work blocks the caller until the work is complete.

Constructor.

Synopsis

Declared in <mrdocs/Support/ThreadPool.hpp>
explicit
ThreadPool(unsigned int concurrency);

Parameters

Name Description
concurrency The value to construct from

Destructor.

Synopsis

Declared in <mrdocs/Support/ThreadPool.hpp>
~ThreadPool();

Submit work to be executed.

Synopsis

Declared in <mrdocs/Support/ThreadPool.hpp>
template<class F>
void
async(F&& f);

Description

The signature of the submitted function object should be void(void).

Parameters

Name Description
f The function object to execute.

Invoke a function object for each element of a range.

Synopsis

Declared in <mrdocs/Support/ThreadPool.hpp>
template<
    class Range,
    class F>
[[nodiscard]]
std::vector<Error>
forEach(
    Range&& range,
    F const& f);

Return Value

Zero or more errors which were thrown from submitted work.

Parameters

Name Description
range The range of elements to process.
f The function object to invoke.

Return the number of threads in the pool.

Synopsis

Declared in <mrdocs/Support/ThreadPool.hpp>
unsigned int
getThreadCount() const noexcept;

Return Value

the number of threads in the pool.

Block until all work has completed.

Synopsis

Declared in <mrdocs/Support/ThreadPool.hpp>
void
wait();

A possibly qualified type.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
struct Type;

Description

This class represents a type that may have qualifiers (e.g. const, volatile).

This base class is used to store the kind of type. Derived classes are used to store the type information according to the kind.

Member Functions

NameDescription
asType asType overloads
namedSymbol Return the symbol named by this type.
operator<=> Three-way comparison by kind, qualifiers, and concrete data.

Data Members

NameDescription
Constraints The constraints associated with the type
IsConst The const qualifier
IsPackExpansion Whether this is the pattern of a pack expansion.
IsVolatile The volatile qualifier
Kind The kind of Type this is

Protected Member Functions

NameDescription
Type [constructor]Construct with a concrete type kind.
~Type [destructor] [virtual]Virtual destructor for polymorphic base.

Non-Member Functions

Name Description
innerTypeReturn the inner type.
innerTypeReturn the inner type.
innerTypePtrReturn the inner type.
innerTypePtrReturn the inner type.
toStringRender a type to a human-readable string.

Derived Classes

Name Description
TypeCommonBase CRTP base that ties a concrete type to a fixed TypeKind.

asType overloads

Synopses

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>

View as const Type.

constexpr
Type const&
asType() const noexcept;
» more...

View as mutable Type.

constexpr
Type&
asType() noexcept;
» more...

View as const Type.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
Type const&
asType() const noexcept;

Return Value

A possibly qualified type.

View as mutable Type.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
Type&
asType() noexcept;

Return Value

A possibly qualified type.

Return the symbol named by this type.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
SymbolID
namedSymbol() const noexcept;

Return Value

the symbol named by this type.

Three-way comparison by kind, qualifiers, and concrete data.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
auto
operator<=>(Type const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

The constraints associated with the type

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
std::vector<ExprInfo> Constraints;

Description

This represents the constraints associated with the type, such as SFINAE constraints.

For instance, if SFINAE detection is enabled, the expression std::enable_if_t<std::is_integral_v<T>, T> will have type T (NamedType) and constraints {std::is_integral_v<T>}.

The const qualifier

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
bool IsConst = false;

Whether this is the pattern of a pack expansion.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
bool IsPackExpansion = false;

The volatile qualifier

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
bool IsVolatile = false;

The kind of Type this is

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
TypeKind Kind;

Construct with a concrete type kind.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
Type(TypeKind kind) noexcept;

Parameters

Name Description
kind The object to construct from

Virtual destructor for polymorphic base.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
virtual
~Type() = default;

CRTP base that ties a concrete type to a fixed TypeKind.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
template<TypeKind K>
struct TypeCommonBase
    : Type

Base Classes

Name Description
TypeA possibly qualified type.

Member Functions

NameDescription
asType asType overloads
namedSymbol Return the symbol named by this type.
operator<=> Three-way comparison operators

Static Member Functions

NameDescription
isArray True when this is an array type.
isAuto True when this concrete kind is auto.
isDecltype True when this concrete kind is decltype.
isFunction True when this is a function type.
isLValueReference True when this is an lvalue reference.
isMemberPointer True when this is a member pointer.
isNamed True when this concrete kind is a named type.
isPointer True when this is a pointer type.
isRValueReference True when this is an rvalue reference.

Data Members

NameDescription
Constraints The constraints associated with the type
IsConst The const qualifier
IsPackExpansion Whether this is the pattern of a pack expansion.
IsVolatile The volatile qualifier
Kind The kind of Type this is

Static Data Members

NameDescription
kind_id Static discriminator for the concrete type.

Protected Member Functions

NameDescription
TypeCommonBase [constructor]Construct the base with the fixed kind.

Non-Member Functions

Name Description
innerTypeReturn the inner type.
innerTypeReturn the inner type.
innerTypePtrReturn the inner type.
innerTypePtrReturn the inner type.
toStringRender a type to a human-readable string.

Derived Classes

Name Description
ArrayType C++ array type (bounded or unbounded).
AutoType Represents auto or decltype(auto) placeholder type.
DecltypeType decltype(expr) type wrapper.
FunctionType Function type with parameters, qualifiers, and noexcept info.
LValueReferenceType An lvalue reference type.
MemberPointerType Pointer-to-member type (object or function).
NamedType A type identified by name (possibly fundamental).
PointerType Pointer type wrapper.
RValueReferenceType An rvalue reference type.

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>

Compare type bases by kind-specific payload.

auto
operator<=>(TypeCommonBase const& rhs) const = default;
» more...

Three-way comparison by kind, qualifiers, and concrete data.

constexpr
auto
operator<=>(Type const& rhs) const = default;
» more...

Compare type bases by kind-specific payload.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
auto
operator<=>(TypeCommonBase const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison by kind, qualifiers, and concrete data.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
auto
operator<=>(Type const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

True when this is an array type.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isArray() noexcept;

Return Value

true if kind_id is TypeKind::Array.

True when this concrete kind is auto.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isAuto() noexcept;

Return Value

true if kind_id is TypeKind::Auto.

True when this concrete kind is decltype.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isDecltype() noexcept;

Return Value

true if kind_id is TypeKind::Decltype.

True when this is a function type.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isFunction() noexcept;

Return Value

true if kind_id is TypeKind::Function.

True when this is an lvalue reference.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isLValueReference() noexcept;

Return Value

true if kind_id is TypeKind::LValueReference.

True when this is a member pointer.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isMemberPointer() noexcept;

Return Value

true if kind_id is TypeKind::MemberPointer.

True when this concrete kind is a named type.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isNamed() noexcept;

Return Value

true if kind_id is TypeKind::Named.

True when this is a pointer type.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isPointer() noexcept;

Return Value

true if kind_id is TypeKind::Pointer.

True when this is an rvalue reference.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
static
bool
isRValueReference() noexcept;

Return Value

true if kind_id is TypeKind::RValueReference.

Static discriminator for the concrete type.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
inline constexpr static
TypeKind kind_id = K;

Construct the base with the fixed kind.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
constexpr
TypeCommonBase() noexcept;

Type template argument.

Synopsis

Declared in <mrdocs/Metadata/TArg/TypeTArg.hpp>
struct TypeTArg final
    : TArgCommonBase<TArgKind::Type>

Base Classes

Name Description
TArgCommonBase<TArgKind::Type>CRTP base that fixes the argument kind.

Member Functions

NameDescription
operator<=> Compare type arguments by referenced type.

Static Member Functions

Name
isConstant
isTemplate
isType

Data Members

NameDescription
Type Template argument type.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
toStringConvert a template argument to a human-readable string.

Compare type arguments by referenced type.

Synopsis

Declared in <mrdocs/Metadata/TArg/TypeTArg.hpp>
auto
operator<=>(TypeTArg const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr
static
bool
isConstant() noexcept;

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr
static
bool
isTemplate() noexcept;

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr
static
bool
isType() noexcept;

Template argument type.

Synopsis

Declared in <mrdocs/Metadata/TArg/TypeTArg.hpp>
Polymorphic<Type> Type = Polymorphic<struct Type>(AutoType{});

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
constexpr static
TArgKind kind_id;

Type template parameter.

Synopsis

Declared in <mrdocs/Metadata/TParam/TypeTParam.hpp>
struct TypeTParam final
    : TParamCommonBase<TParamKind::Type>

Base Classes

Name Description
TParamCommonBase<TParamKind::Type>CRTP base that fixes the parameter kind.

Member Functions

NameDescription
operator<=> Compare type parameters by keyword and constraint.

Static Member Functions

Name
isConstant
isTemplate
isType

Data Members

NameDescription
Constraint The type-constraint for the parameter, if any.
KeyKind Keyword (class/typename) the parameter uses

Static Data Members

Name
kind_id

Compare type parameters by keyword and constraint.

Synopses

Declared in <mrdocs/Metadata/TParam/TypeTParam.hpp>

Compare type parameters by keyword and constraint.

std::strong_ordering
operator<=>(TypeTParam const& rhs) const;
» more...

Three-way comparison operator

auto
operator<=>(TParamCommonBase<mrdocs::TParamKind::Type> const& rhs) const = default;
» more...

Compare type parameters by keyword and constraint.

Synopsis

Declared in <mrdocs/Metadata/TParam/TypeTParam.hpp>
std::strong_ordering
operator<=>(TypeTParam const& rhs) const;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
auto
operator<=>(TParamCommonBase<mrdocs::TParamKind::Type> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr
static
bool
isConstant() noexcept;

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr
static
bool
isTemplate() noexcept;

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr
static
bool
isType() noexcept;

The type-constraint for the parameter, if any.

Synopsis

Declared in <mrdocs/Metadata/TParam/TypeTParam.hpp>
Optional<Polymorphic<Name>> Constraint = std::nullopt;

Keyword (class/typename) the parameter uses

Synopsis

Declared in <mrdocs/Metadata/TParam/TypeTParam.hpp>
TParamKeyKind KeyKind = TParamKeyKind::Class;

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
constexpr static
TParamKind kind_id;

Info for typedef and using declarations.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Typedef.hpp>
struct TypedefSymbol final
    : SymbolCommonBase<SymbolKind::Typedef>

Base Classes

Name Description
SymbolCommonBase<SymbolKind::Typedef>Base class for providing variant discriminator functions.

Member Functions

NameDescription
TypedefSymbol [constructor]Create a typedef symbol bound to an ID.
operator<=> Compare typedef symbols, including alias target and template.

Static Member Functions

Name
isConcept
isEnum
isEnumConstant
isFunction
isGuide
isNamespace
isNamespaceAlias
isOverloads
isRecord
isTypedef
isUsing
isVariable

Data Members

NameDescription
IsUsing Indicates if this is a new C++ "using"-style typedef
Template Template information when the alias is templated.
Type The aliased type.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
canMergeCheck whether two symbols may be merged.
getPrimaryLocationDetermine a location to use when none is explicitly chosen.
mergeMerges two Symbol objects.
mergeMerge typedef symbols, keeping existing info when present.

Create a typedef symbol bound to an ID.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Typedef.hpp>
explicit
TypedefSymbol(SymbolID ID) noexcept;

Parameters

Name Description
ID The object to construct from

Compare typedef symbols, including alias target and template.

Synopses

Declared in <mrdocs/Metadata/Symbol/Typedef.hpp>

Compare typedef symbols, including alias target and template.

std::strong_ordering
operator<=>(TypedefSymbol const& other) const;
» more...

Three-way comparison operator

auto
operator<=>(SymbolCommonBase<mrdocs::SymbolKind::Typedef> const& rhs) const = default;
» more...

Compare typedef symbols, including alias target and template.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Typedef.hpp>
std::strong_ordering
operator<=>(TypedefSymbol const& other) const;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
auto
operator<=>(SymbolCommonBase<mrdocs::SymbolKind::Typedef> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isConcept() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnum() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnumConstant() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isGuide() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespace() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespaceAlias() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isOverloads() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isRecord() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isTypedef() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isUsing() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isVariable() noexcept;

Indicates if this is a new C++ "using"-style typedef

Synopsis

Declared in <mrdocs/Metadata/Symbol/Typedef.hpp>
bool IsUsing = false;

Description

using MyVector = std::vector<int>

False means it's a C-style typedef:

typedef std::vector<int> MyVector;

Template information when the alias is templated.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Typedef.hpp>
Optional<TemplateInfo> Template;

The aliased type.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Typedef.hpp>
Polymorphic<Type> Type = Polymorphic<struct Type>(NamedType{});

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
constexpr static
SymbolKind kind_id;

Holds an unexpected error value for Expected.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class E>
class Unexpected;

Member Functions

NameDescription
Unexpected [constructor]Constructors
operator= Assignment operators
error error overloads
swap Swap the contained error with another instance.

Friends

|===
Name Description
swap
operator== Equality operator

Constructors

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Copy constructor.

constexpr
Unexpected(Unexpected const& other) = default;
» more...

Move constructor.

constexpr
Unexpected(Unexpected&& other) = default;
» more...

Construct from an error value convertible to E.

template<class Er = E>
requires (!std::is_same_v<std::remove_cvref_t<Er>, Unexpected>) &&
      (!std::is_same_v<std::remove_cvref_t<Er>, std::in_place_t>) &&
        std::is_constructible_v<E, Er>
constexpr
explicit
Unexpected(Er&& e) noexcept(std::is_nothrow_constructible_v<E, Er>);
» more...

In-place construct the error value with arguments.

template<class... Args>
requires std::is_constructible_v<E, Args...>
constexpr
explicit
Unexpected(
    std::in_place_t in_place,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<E, Args...>);
» more...

In-place construct the error value from an initializer list.

template<
    class U,
    class... Args>
requires std::is_constructible_v<E, std::initializer_list<U>&, Args...>
constexpr
explicit
Unexpected(
    std::in_place_t in_place,
    std::initializer_list<U> il,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<E, std::initializer_list<U> &, Args...>);
» more...

Parameters

Name Description
e Error value to store.
in_place Tag selecting in-place construction.
args Arguments forwarded to E's constructor.
il Initializer list for the error.

Copy constructor.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
Unexpected(Unexpected const& other) = default;

Parameters

Name Description
other The object to copy construct from

Move constructor.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
Unexpected(Unexpected&& other) = default;

Parameters

Name Description
other The object to move construct from

Construct from an error value convertible to E.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class Er = E>
requires (!std::is_same_v<std::remove_cvref_t<Er>, Unexpected>) &&
      (!std::is_same_v<std::remove_cvref_t<Er>, std::in_place_t>) &&
        std::is_constructible_v<E, Er>
constexpr
explicit
Unexpected(Er&& e) noexcept(std::is_nothrow_constructible_v<E, Er>);

Parameters

Name Description
e Error value to store.

In-place construct the error value with arguments.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class... Args>
requires std::is_constructible_v<E, Args...>
constexpr
explicit
Unexpected(
    std::in_place_t in_place,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<E, Args...>);

Parameters

Name Description
in_place Tag selecting in-place construction.
args Arguments forwarded to E's constructor.

In-place construct the error value from an initializer list.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<
    class U,
    class... Args>
requires std::is_constructible_v<E, std::initializer_list<U>&, Args...>
constexpr
explicit
Unexpected(
    std::in_place_t in_place,
    std::initializer_list<U> il,
    Args&&... args) noexcept(std::is_nothrow_constructible_v<E, std::initializer_list<U> &, Args...>);

Parameters

Name Description
in_place Tag selecting in-place construction.
il Initializer list for the error.
args Additional constructor arguments.

Assignment operators

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Copy assignment.

constexpr
Unexpected&
operator=(Unexpected const& other) = default;
» more...

Move assignment.

constexpr
Unexpected&
operator=(Unexpected&& other) = default;
» more...

Copy assignment.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
Unexpected&
operator=(Unexpected const& other) = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to copy assign from

Move assignment.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
Unexpected&
operator=(Unexpected&& other) = default;

Return Value

Reference to the current object

Parameters

Name Description
other The object to move assign from

error overloads

Synopses

Declared in <mrdocs/Support/Expected.hpp>

Return a const reference to the stored error.

[[nodiscard]]
constexpr
E const&
error() const & noexcept;
» more...

Return a reference to the stored error.

[[nodiscard]]
constexpr
E&
error() & noexcept;
» more...

Return a const rvalue reference to the stored error.

[[nodiscard]]
constexpr
E const&&
error() const && noexcept;
» more...

Return a rvalue reference to the stored error.

[[nodiscard]]
constexpr
E&&
error() && noexcept;
» more...

Return Value

Return a const reference to the stored error.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
E const&
error() const & noexcept;

Return Value

Const reference to E.

Return a reference to the stored error.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
E&
error() & noexcept;

Return Value

Reference to E.

Return a const rvalue reference to the stored error.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
E const&&
error() const && noexcept;

Return Value

Const rvalue reference to E.

Return a rvalue reference to the stored error.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
E&&
error() && noexcept;

Return Value

Rvalue reference to E.

Swap the contained error with another instance.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
void
swap(Unexpected& other) noexcept(std::is_nothrow_swappable_v<E>)
requires std::is_swappable_v<E>;

Parameters

Name Description
other Holds an unexpected error value for Expected.

Info for using declarations.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Using.hpp>
struct UsingSymbol final
    : SymbolCommonBase<SymbolKind::Using>

Description

For instance, the following code:

using A::f; // where f is a function in namespace A

would be represented by a UsingSymbol object.

Using-declarations can be used to introduce namespace members into other namespaces and block scopes, or to introduce base class members into derived class definitions, or to introduce enumerators into namespaces, block, and class scopes.

Base Classes

Name Description
SymbolCommonBase<SymbolKind::Using>Base class for providing variant discriminator functions.

Member Functions

NameDescription
UsingSymbol [constructor]Create a using-declaration symbol bound to an ID.
operator<=> Three-way comparison operator

Static Member Functions

Name
isConcept
isEnum
isEnumConstant
isFunction
isGuide
isNamespace
isNamespaceAlias
isOverloads
isRecord
isTypedef
isUsing
isVariable

Data Members

NameDescription
Class The using declaration.
IntroducedName The symbol being introduced.
ShadowDeclarations The shadow declarations.

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
allMembersAccess declarations introduced by this using-declaration.
canMergeCheck whether two symbols may be merged.
getPrimaryLocationDetermine a location to use when none is explicitly chosen.
mergeMerges two Symbol objects.
mergeMerge two using-declarations with the same identity.

Create a using-declaration symbol bound to an ID.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Using.hpp>
explicit
UsingSymbol(SymbolID ID) noexcept;

Parameters

Name Description
ID The object to construct from

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
auto
operator<=>(SymbolCommonBase<mrdocs::SymbolKind::Using> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isConcept() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnum() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnumConstant() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isGuide() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespace() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespaceAlias() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isOverloads() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isRecord() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isTypedef() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isUsing() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isVariable() noexcept;

The using declaration.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Using.hpp>
UsingClass Class = UsingClass::Normal;

The symbol being introduced.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Using.hpp>
Polymorphic<Name> IntroducedName = Polymorphic<struct Name>(std::in_place_type<IdentifierName>);

Description

This is the symbol that is being "used" or introduced into the current scope.

Note that this can be a qualified name, such as A::f in the example above.

The shadow declarations.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Using.hpp>
std::vector<SymbolID> ShadowDeclarations;

Description

A using declaration can refer to and introduce multiple symbols into the current context.

These multiple symbols are considered a special case of declarations: "shadow declarations".

This typically happens when there are conflicting symbol names in the scope being introduced, such as:

Overloaded functions: the base namespace contains overloaded functions. Name conflicts: the base scope contains a function and a type. Enums: a using enum declaration can refer to multiple enumerators.

Also note that more shadow declarations can be introduced later in the same scope, after the using declaration.

The shadow declarations here are only those that are shadowed at the point where the using declaration is located.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
constexpr static
SymbolKind kind_id;

A variable.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
struct VariableSymbol final
    : SymbolCommonBase<SymbolKind::Variable>

Description

This includes variables at namespace or record scope.

Base Classes

Name Description
SymbolCommonBase<SymbolKind::Variable>Base class for providing variant discriminator functions.

Member Functions

NameDescription
VariableSymbol [constructor]Create a variable symbol bound to an ID.
operator<=> Compare variables by type, flags, and initializer.

Static Member Functions

Name
isConcept
isEnum
isEnumConstant
isFunction
isGuide
isNamespace
isNamespaceAlias
isOverloads
isRecord
isTypedef
isUsing
isVariable

Data Members

NameDescription
Attributes Raw attribute spellings attached to the variable.
BitfieldWidth The width of the bitfield
HasNoUniqueAddress Whether the variable uses [[no_unique_address]].
Initializer The default member initializer, if any.
IsBitfield Whether the field is a bitfield
IsConstexpr Whether the variable is constexpr.
IsConstinit Whether the variable is constinit.
IsDeprecated Whether the variable is marked deprecated.
IsInline Whether the variable is declared inline.
IsMaybeUnused Whether the variable carries [[maybe_unused]].
IsMutable Whether the field is declared mutable
IsRecordField True if this variable is a data member of a record.
IsThreadLocal Whether the variable is thread_local.
IsVariant Whether the field is a variant member
StorageClass Storage class specifier applied to the variable.
Template The template information, if any.
Type The type of the variable

Static Data Members

Name
kind_id

Non-Member Functions

Name Description
canMergeCheck whether two symbols may be merged.
getPrimaryLocationDetermine a location to use when none is explicitly chosen.
mergeMerges two Symbol objects.
mergeMerge variable metadata, preserving existing values when set.

Create a variable symbol bound to an ID.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
explicit
VariableSymbol(SymbolID const& ID) noexcept;

Parameters

Name Description
ID The object to copy construct from

Compare variables by type, flags, and initializer.

Synopses

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>

Compare variables by type, flags, and initializer.

std::strong_ordering
operator<=>(VariableSymbol const& other) const;
» more...

Three-way comparison operator

auto
operator<=>(SymbolCommonBase<mrdocs::SymbolKind::Variable> const& rhs) const = default;
» more...

Compare variables by type, flags, and initializer.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
std::strong_ordering
operator<=>(VariableSymbol const& other) const;

Return Value

The relative order of the objects

Parameters

Name Description
other The right operand

Three-way comparison operator

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
auto
operator<=>(SymbolCommonBase<mrdocs::SymbolKind::Variable> const& rhs) const = default;

Return Value

The relative order of the objects

Parameters

Name Description
rhs The right operand

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isConcept() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnum() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isEnumConstant() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isFunction() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isGuide() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespace() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isNamespaceAlias() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isOverloads() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isRecord() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isTypedef() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isUsing() noexcept;

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolNodes.inc>
constexpr
static
bool
isVariable() noexcept;

Raw attribute spellings attached to the variable.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
std::vector<std::string> Attributes;

The width of the bitfield

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
ConstantExprInfo<uint64_t> BitfieldWidth;

Whether the variable uses [[no_unique_address]].

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
bool HasNoUniqueAddress = false;

The default member initializer, if any.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
ExprInfo Initializer;

Whether the field is a bitfield

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
bool IsBitfield = false;

Whether the variable is constexpr.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
bool IsConstexpr = false;

Whether the variable is constinit.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
bool IsConstinit = false;

Whether the variable is marked deprecated.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
bool IsDeprecated = false;

Whether the variable is declared inline.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
bool IsInline = false;

Whether the variable carries [[maybe_unused]].

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
bool IsMaybeUnused = false;

Whether the field is declared mutable

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
bool IsMutable = false;

True if this variable is a data member of a record.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
bool IsRecordField = false;

Whether the variable is thread_local.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
bool IsThreadLocal = false;

Whether the field is a variant member

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
bool IsVariant = false;

Storage class specifier applied to the variable.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
StorageClassKind StorageClass = StorageClassKind::None;

The template information, if any.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
Optional<TemplateInfo> Template;

The type of the variable

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
Polymorphic<Type> Type = Polymorphic<struct Type>(NamedType{});

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
constexpr static
SymbolKind kind_id;

A visitor for a type

Synopsis

Declared in <mrdocs/Support/Visitor.hpp>
template<
    typename Base,
    typename Fn,
    typename... Args>
class Visitor;

Description

This class is used to implement the visitor pattern. It stores a reference to an object of type Base, and a function object Fn which is called with the derived type as the first argument, followed by Args.

The visitor is constructed with the object to visit, the function object, and the arguments to pass to the function object.

The method visit is a template which accepts a derived type of Base. It calls the function object with the derived type as the first argument, followed by the arguments passed to the constructor.

Member Functions

NameDescription
Visitor [constructor]Constructor
visit Visit a derived type

Template Parameters

Name Description
Base The base type of the object
Fn The function object type
Args The argument types

Constructor

Synopsis

Declared in <mrdocs/Support/Visitor.hpp>
Visitor(
    Base&& obj,
    Fn&& fn,
    Args&&... args);

Parameters

Name Description
obj The object to visit
fn The function object to call
args The arguments to pass to the function object

Visit a derived type

Synopsis

Declared in <mrdocs/Support/Visitor.hpp>
template<std::derived_from<std::remove_cvref_t<Base>> Derived>
decltype(auto)
visit();

Description

This method calls the function object with the derived type as the first argument, followed by the arguments passed to the constructor.

Return Value

The result of calling the function object

Template Parameters

Name Description
Derived The derived type to visit

Enables recursive lambdas by passing a self-reference as the first argument.

Synopsis

Declared in <mrdocs/ADT/Overload.hpp>
template<class F>
class YCombinator;

Description

YCombinator stores a callable F and exposes operator() that forwards arguments to F, prepending a reference to *this so that F can recurse.

Overloads are provided for &, const&, &&, const&& to preserve value category.

auto fact = fn::yCombinator( []self, int n) -> long long { return n <= 1 ? 1 : n * self(n - 1); }); auto r = fact(10);

Member Functions

NameDescription
YCombinator [constructor]Constructs a YCombinator from the given callable.
operator() Function call operators

Non-Member Functions

Name Description
yCombinatorFactory that creates a YCombinator from a callable.

Template Parameters

Name Description
F The callable to wrap.

Constructs a YCombinator from the given callable.

Synopsis

Declared in <mrdocs/ADT/Overload.hpp>
constexpr
explicit
YCombinator(F f) noexcept(std::is_nothrow_move_constructible_v<F>);

Parameters

Name Description
f The callable to store.

Function call operators

Synopses

Declared in <mrdocs/ADT/Overload.hpp>

Invokes the stored callable, passing *this as the first parameter.

template<class... Args>
constexpr
decltype(auto)
operator()(Args&&... args) &;
» more...

Const lvalue overload of operator().

template<class... Args>
constexpr
decltype(auto)
operator()(Args&&... args) const &;
» more...

Rvalue overload of operator().

template<class... Args>
constexpr
decltype(auto)
operator()(Args&&... args) &&;
» more...

Const rvalue overload of operator().

template<class... Args>
constexpr
decltype(auto)
operator()(Args&&... args) const &&;
» more...

Return Value

Whatever the callable returns.

Parameters

Name Description
args The arguments to forward to the callable after the self reference.

Invokes the stored callable, passing *this as the first parameter.

Synopsis

Declared in <mrdocs/ADT/Overload.hpp>
template<class... Args>
constexpr
decltype(auto)
operator()(Args&&... args) &;

Return Value

Whatever the callable returns.

Parameters

Name Description
args The arguments to forward to the callable after the self reference.

Const lvalue overload of operator().

Synopsis

Declared in <mrdocs/ADT/Overload.hpp>
template<class... Args>
constexpr
decltype(auto)
operator()(Args&&... args) const &;

Return Value

Whatever the callable returns.

Parameters

Name Description
args The arguments to forward to the callable after the self reference.

Rvalue overload of operator().

Synopsis

Declared in <mrdocs/ADT/Overload.hpp>
template<class... Args>
constexpr
decltype(auto)
operator()(Args&&... args) &&;

Return Value

Whatever the callable returns.

Parameters

Name Description
args The arguments to forward to the callable after the self reference.

Const rvalue overload of operator().

Synopsis

Declared in <mrdocs/ADT/Overload.hpp>
template<class... Args>
constexpr
decltype(auto)
operator()(Args&&... args) const &&;

Return Value

Whatever the callable returns.

Parameters

Name Description
args The arguments to forward to the callable after the self reference.

Propagate const qualification from From to To, keeping references.

Synopsis

Declared in <mrdocs/Support/TypeTraits.hpp>
template<
    typename From,
    typename To>
struct add_const_from
    : std::conditional<std::is_const_v<std::remove_reference_t<From>>, add_reference_from_t<To, std::remove_reference_t<To> const>, To>

Base Classes

Name Description
std::conditional<std::is_const_v<std::remove_reference_t<From>>, add_reference_from_t<To, std::remove_reference_t<To> const>, To>

Derived Classes

Name Description
add_cv_from Propagate both const and volatile qualifiers from From to To.

Propagate both const and volatile qualifiers from From to To.

Synopsis

Declared in <mrdocs/Support/TypeTraits.hpp>
template<
    typename From,
    typename To>
struct add_cv_from
    : add_const_from<From, add_volatile_from_t<From, To>>

Base Classes

Name Description
add_const_from<From, add_volatile_from_t<From, To>>Propagate const qualification from From to To, keeping references.

Propagate cv-qualification and reference category from From to To.

Synopsis

Declared in <mrdocs/Support/TypeTraits.hpp>
template<
    typename From,
    typename To>
struct add_cvref_from
    : add_reference_from<From, add_cv_from_t<From, To>>

Base Classes

Name Description
add_reference_from<From, add_cv_from_t<From, To>>Propagate reference qualification from From to To.

Propagate lvalue-reference from From to To if present.

Synopsis

Declared in <mrdocs/Support/TypeTraits.hpp>
template<
    typename From,
    typename To>
struct add_lvalue_reference_from
    : std::conditional<std::is_lvalue_reference_v<From>, std::add_lvalue_reference_t<To>, To>

Base Classes

Name Description
std::conditional<std::is_lvalue_reference_v<From>, std::add_lvalue_reference_t<To>, To>

Derived Classes

Name Description
add_reference_from Propagate reference qualification from From to To.

Propagate reference qualification from From to To.

Synopsis

Declared in <mrdocs/Support/TypeTraits.hpp>
template<
    typename From,
    typename To>
struct add_reference_from
    : add_lvalue_reference_from<From, add_rvalue_reference_from_t<From, To>>

Base Classes

Name Description
add_lvalue_reference_from<From, add_rvalue_reference_from_t<From, To>>Propagate lvalue-reference from From to To if present.

Derived Classes

Name Description
add_cvref_from Propagate cv-qualification and reference category from From to To.

Propagate rvalue-reference from From to To if present.

Synopsis

Declared in <mrdocs/Support/TypeTraits.hpp>
template<
    typename From,
    typename To>
struct add_rvalue_reference_from
    : std::conditional<std::is_rvalue_reference_v<From>, std::add_rvalue_reference_t<To>, To>

Base Classes

Name Description
std::conditional<std::is_rvalue_reference_v<From>, std::add_rvalue_reference_t<To>, To>

Propagate volatile qualification from From to To, keeping references.

Synopsis

Declared in <mrdocs/Support/TypeTraits.hpp>
template<
    typename From,
    typename To>
struct add_volatile_from
    : std::conditional<std::is_volatile_v<std::remove_reference_t<From>>, add_reference_from_t<To, std::remove_reference_t<To> volatile>, To>

Base Classes

Name Description
std::conditional<std::is_volatile_v<std::remove_reference_t<From>>, add_reference_from_t<To, std::remove_reference_t<To> volatile>, To>

A movable, type-erased function object.

Synopsis

Declared in <mrdocs/Support/any_callable.hpp>
template<class>
class any_callable;

Description

Usage:

any_callable<void(void)> f;

Type-erased callable wrapper for signature R(Args...).

Synopsis

Declared in <mrdocs/Support/any_callable.hpp>
template<
    class R,
    class... Args>
class any_callable<R(Args...)>;

Member Functions

NameDescription
any_callable [constructor] [deleted]Constructors
operator() Invoke the stored callable.

Constructors

Synopses

Declared in <mrdocs/Support/any_callable.hpp>

Deleted default constructor to prevent empty call targets.

any_callable() = delete;
» more...

Construct from a callable object matching the signature.

template<class Callable>
requires std::is_invocable_r_v<R, Callable, Args...>
any_callable(Callable&& f);
» more...

Parameters

Name Description
f Callable to store; must satisfy R(Args...).

Deleted default constructor to prevent empty call targets.

Synopsis

Declared in <mrdocs/Support/any_callable.hpp>
any_callable() = delete;

Construct from a callable object matching the signature.

Synopsis

Declared in <mrdocs/Support/any_callable.hpp>
template<class Callable>
requires std::is_invocable_r_v<R, Callable, Args...>
any_callable(Callable&& f);

Parameters

Name Description
f Callable to store; must satisfy R(Args...).

Invoke the stored callable.

Synopsis

Declared in <mrdocs/Support/any_callable.hpp>
R
operator()(Args&&... args) const;

Return Value

Result of the wrapped callable.

Parameters

Name Description
args Arguments forwarded to the callable.

Dependent alias of T, useful for delaying instantiation.

Synopsis

Declared in <mrdocs/Support/TypeTraits.hpp>
template<
    typename T,
    typename U>
struct make_dependent;

Types

NameDescription
type Make a type dependent on another template parameter.

Make a type dependent on another template parameter.

Synopsis

Declared in <mrdocs/Support/TypeTraits.hpp>
using type = T;

nullable_traits<T> defines how to treat a T as “nullable” without an external engaged bit.

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
template<class T>
struct nullable_traits;

Description

This trait is the canonical place to encode nullability semantics used by any optional-like type.

It exposes the minimal operations needed by an optional: - is_null(const T&): test if a value is null. - null(): create a null value. - make_null(T&): turn an existing value into null.

Users may explicitly specialize nullable_traits for their types to define the desired semantics.

nullable_traits specialization for Location.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Location.hpp>
template<>
struct nullable_traits<Location>;

Description

Semantics - The “null” (sentinel) state is any Location whose ShortPath is empty. - Creating a null value produces a Location with all fields defaulted and ShortPath empty. - Making an existing value null clears ShortPath and resets the other fields to their defaults.

Rationale - This mirrors the old LocationEmptyPredicate, which treated an empty ShortPath as “empty/null.”

Static Member Functions

NameDescription
is_null Test if the location is null (empty ShortPath).
make_null Reset a location to the null sentinel state.
null Create a null location sentinel.

Test if the location is null (empty ShortPath).

Synopsis

Declared in <mrdocs/Metadata/Symbol/Location.hpp>
constexpr
static
bool
is_null(Location const& v) noexcept;

Return Value

True when ShortPath is empty.

Parameters

Name Description
v Source location of a symbol or entity.

Reset a location to the null sentinel state.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Location.hpp>
constexpr
static
void
make_null(Location& v) noexcept;

Parameters

Name Description
v Source location of a symbol or entity.

Create a null location sentinel.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Location.hpp>
constexpr
static
Location
null() noexcept;

Return Value

Location with every field cleared.

nullable_traits for types with a sentinel.

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
template<class T>
requires (!HasSentinel<T> && ClearableContainerLike<T>)
struct nullable_traits<T>;

Description

Delegates null handling to sentinel_traits<T>.

nullable_traits for clearable empty types.

Treats the empty state as null, creates null via default construction, and erases via clear().

Return true if v is empty.

Static Member Functions

NameDescription
is_null Return true if v matches the sentinel for T.
make_null Overwrite v with the sentinel null value.
null Return the sentinel value representing null.

Return Value

true when the container is empty.

Parameters

Name Description
v Value to test.

Return true if v matches the sentinel for T.

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
constexpr
static
bool
is_null(T const& v) noexcept(noexcept(v.empty()));

Return Value

true when v equals the sentinel.

Parameters

Name Description
v Value to test.

Overwrite v with the sentinel null value.

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
constexpr
static
void
make_null(T& v) noexcept(noexcept(v.clear()));

Description

Clear v to its null (empty) state.

Parameters

Name Description
v Value to clear.

Return the sentinel value representing null.

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
constexpr
static
T
null() noexcept(std::is_nothrow_default_constructible_v<T>);

Description

Construct a null value using the default constructor.

Return Value

nullable_traits for Polymorphic<T>.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
template<class T>
struct nullable_traits<Polymorphic<T>>;

Description

Only this friend specialization can create/reset the null state.

Static Member Functions

NameDescription
is_null Return true if the polymorphic value is disengaged.
make_null Reset the polymorphic value to null.
null Return a null polymorphic instance.

Return true if the polymorphic value is disengaged.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
constexpr
static
bool
is_null(Polymorphic<T> const& v) noexcept;

Return Value

true when v does not hold an object.

Parameters

Name Description
v Value to test.

Reset the polymorphic value to null.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
constexpr
static
void
make_null(Polymorphic<T>& v) noexcept;

Parameters

Name Description
v Value to clear.

Return a null polymorphic instance.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
constexpr
static
Polymorphic<T>
null() noexcept;

Return Value

Disengaged Polymorphic.

Defines a customization point for types that have an intrinsic sentinel value denoting “null”.

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
template<class T>
struct sentinel_traits;

Description

Users may specialize this trait for their own types to declare a sentinel-based null representation.

When enabled, nullable semantics can be implemented in terms of the sentinel without storing a separate engaged/disengaged flag.

Contract for specializations: - Provide static constexpr T sentinel() noexcept; which returns the distinguished null value. - Provide static constexpr bool is_sentinel(const T&) noexcept; which recognizes the null value.

If a type does not have a well-defined sentinel, leave the primary template in effect.

Notes - Built-in pointer types and std::nullptr_t are pre-specialized to use nullptr as the sentinel.

sentinel_traits specialization for std::nullptr_t.

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
template<>
struct sentinel_traits<std::nullptr_t>;

Static Member Functions

NameDescription
is_sentinel Return true if the value equals the sentinel.
sentinel Return the sentinel value for std::nullptr_t.

Return true if the value equals the sentinel.

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
constexpr
static
bool
is_sentinel(std::nullptr_t) noexcept;

Return Value

Always true because the sentinel is unique.

Return the sentinel value for std::nullptr_t.

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
constexpr
static
std::nullptr_t
sentinel() noexcept;

Return Value

the sentinel value for std::nullptr_t.

sentinel_traits specialization for unsigned integral types.

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
template<std::floating_point T>
requires std::is_enum_v<T> &&
         (requires { T::unknown; } ||
          requires { T::Unknown; } ||
          requires { T::UNKNOWN; } ||
          requires { T::none; } ||
          requires { T::None; } ||
          requires { T::NONE; })
struct sentinel_traits<T>;

Description

Uses the maximum representable value (~0u) as the sentinel, which corresponds to -1 when converted.

sentinel_traits specialization for floating-point types.

Uses a quiet NaN as the sentinel value. This assumes that T supports NaN and that it is distinguishable from all ordinary values.

Return the floating-point NaN sentinel.

sentinel_traits specialization for enums with a well-known "null" enumerator.

If the enum defines Unknown, UNKNOWN, None, or NONE, this trait uses that enumerator as the sentinel. This requires that such an enumerator exists and is accessible from the scope of T.

Return the enum sentinel value.

Static Member Functions

NameDescription
is_sentinel Return true if the value equals the sentinel.
sentinel Return the sentinel value (~0u).

Return true if the value equals the sentinel.

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
constexpr
static
bool
is_sentinel(T v) noexcept;

Description

Return true if v is the NaN sentinel.

Return true if v equals the sentinel value.

Return Value

Parameters

Name Description
v Value to test.

Return the sentinel value (~0u).

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
constexpr
static
T
sentinel() noexcept;

Return Value

the sentinel value (~0u).

sentinel_traits specialization for raw pointers.

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
template<class T>
struct sentinel_traits<T*>;

Description

Uses nullptr as the sentinel value.

Static Member Functions

NameDescription
is_sentinel Return true if the pointer equals the sentinel.
sentinel Return the sentinel pointer value (nullptr).

Return true if the pointer equals the sentinel.

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
constexpr
static
bool
is_sentinel(T const* p) noexcept;

Return Value

true when p is nullptr.

Parameters

Name Description
p Pointer to test.

Return the sentinel pointer value (nullptr).

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
constexpr
static
T*
sentinel() noexcept;

Return Value

the sentinel pointer value (nullptr).

Tag type used to select unexpected construction.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
struct unexpect_t;

Member Functions

NameDescription
unexpect_t [constructor]Default constructor.

Default constructor.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
explicit
unexpect_t() = default;

A scoped guard which unlocks a mutex.

Synopsis

Declared in <mrdocs/Support/unlock_guard.hpp>
class unlock_guard;

Member Functions

NameDescription
unlock_guard [constructor]Constructor.
~unlock_guard [destructor]Destructor.

Constructor.

Synopsis

Declared in <mrdocs/Support/unlock_guard.hpp>
explicit
unlock_guard(std::mutex& m);

Parameters

Name Description
m The object to copy construct from

Destructor.

Synopsis

Declared in <mrdocs/Support/unlock_guard.hpp>
~unlock_guard();

Access specifier.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/AccessKind.hpp>
enum class AccessKind : int;

Description

None is set to zero since it is the most frequently occurring access, and it is elided by the bitstream encoder because it has an all-zero bit pattern. This improves compression in the bitstream.

None is used for namespace members and friend; such declarations have no access.

Members

NameDescription
None Unspecified access
Public Public access
Protected Protected access
Private Private access

Non-Member Functions

Name Description
toStringConvert access specifier to its string form.

The kind of auto keyword used in a declaration.

Synopsis

Declared in <mrdocs/Metadata/Type/AutoKind.hpp>
enum class AutoKind : int;

Description

This is either auto or decltype(auto).

Members

NameDescription
Auto The auto keyword
DecltypeAuto The decltype(auto) keyword

Non-Member Functions

Name Description
toStringConvert an auto-kind to its spelling.

constexpr/consteval specifier kinds

Synopsis

Declared in <mrdocs/Metadata/Specifiers/ConstexprKind.hpp>
enum class ConstexprKind : int;

Description

[dcl.spec.general]p2: At most one of the constexpr, consteval, and constinit keywords shall appear in a decl-specifier-seq

Members

NameDescription
None No constexpr or consteval specifier
Constexpr The constexpr specifier
Consteval The consteval specifier only valid for functions

Non-Member Functions

Name Description
toStringConvert a constexpr/consteval specifier kind to a string.

Explicit specifier kinds

Synopsis

Declared in <mrdocs/Metadata/Specifiers/ExplicitKind.hpp>
enum class ExplicitKind : int;

Members

NameDescription
False No explicit-specifier or explicit-specifier evaluated to false
True explicit-specifier evaluates to true
Dependent Dependent explicit-specifier

Non-Member Functions

Name Description
toStringConvert an explicit kind to its string form.

Determine why a symbol is extracted

Synopsis

Declared in <mrdocs/Metadata/Symbol/ExtractionMode.hpp>
enum class ExtractionMode : int;

Description

The enum constants are ordered by specificity, with the least specific at the beginning and the most specific at the end.

Members

NameDescription
Regular We're extracting the current symbol because it passes all filters.
SeeBelow We're extracting the current symbol because it passes all filters, but we should also tag it as see-below because it passes one of the see-below filters. This symbol has its own page but it has no details and no child members.
ImplementationDefined We're extracting the current symbol because it passes all filters, but we should also tag it as implementation-defined because one of its parents matches the implementation-defined filter. This symbol has no page and other symbols that depend on it will just render /implementation-defined/.
Dependency We're extracting the current symbol even though it doesn't pass all filters because it's a direct dependency of a symbol that does pass all filters and needs information about it (e.g.: base classes outside the filters). This symbol has no page and it might even deleted from the corpus if no other symbol depends on it after we extracted the information we wanted from it in post-processing steps.

Non-Member Functions

Name Description
leastSpecificCompare ExtractionModes and returns the least specific
mostSpecificCompare ExtractionModes and returns the most specific
toStringReturn the name of the SymbolKind as a string.

Classifies where a file originates from.

Synopsis

Declared in <mrdocs/Metadata/Symbol/FileKind.hpp>
enum class FileKind : int;

Members

NameDescription
Source File in the source directory
System File in a system include directory
Other File outside the source directory

Non-Member Functions

Name Description
toStringConvert a FileKind to its string form.

Function classifications

Synopsis

Declared in <mrdocs/Metadata/Symbol/FunctionClass.hpp>
enum class FunctionClass : int;

Members

NameDescription
Normal The function is a normal function.
Constructor The function is a constructor.
Conversion The function is a conversion operator.
Destructor The function is a destructor.

Non-Member Functions

Name Description
toStringConvert a function class to string form.

Categorically describes a fundamental type.

Synopsis

Declared in <mrdocs/Metadata/Type/FundamentalTypeKind.hpp>
enum class FundamentalTypeKind : int;

Members

NameDescription
Void void
Nullptr std::nullptr_t
Bool bool
Char char
SignedChar signed char
UnsignedChar unsigned char
Char8 char8_t
Char16 char16_t
Char32 char32_t
WChar wchar_t
Short short / short int / signed short / signed short int
UnsignedShort unsigned short / unsigned short int
Int int / signed / signed int
UnsignedInt unsigned / unsigned int
Long long / long int / signed long / signed long int
UnsignedLong unsigned long / unsigned long int
LongLong long long / long long int / signed long long / signed long long int
UnsignedLongLong unsigned long long / unsigned long long int
Float float
Double double
LongDouble long double

Non-Member Functions

Name Description
makeCharApply the "char" specifier to the type
makeLongApply the "long" specifier to the type
makeShortApply the "short" specifier to the type
makeSignedApply the "signed" specifier to the type
makeUnsignedApply the "unsigned" specifier to the type
toStringConvert a FundamentalTypeKind to a string.

See Also

https://en.cppreference.com/w/cpp/language/types

Classification of list ordering.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ListKind.hpp>
enum class ListKind : int;

Members

NameDescription
Unordered A bulleted list with no inherent ordering.
Ordered A numbered list where item order matters.

Non-Member Functions

Name Description
toStringConvert a list kind enum to its string name.

Kinds of names that appear in type and symbol metadata.

Synopsis

Declared in <mrdocs/Metadata/Name/NameKind.hpp>
enum class NameKind : int;

Non-Member Functions

Name Description
toStringConvert a NameKind to its string form.

Exception specification kinds

Synopsis

Declared in <mrdocs/Metadata/Specifiers/NoexceptKind.hpp>
enum class NoexceptKind : int;

Members

NameDescription
False Potentially-throwing exception specification
True Non-throwing exception specification
Dependent Dependent exception specification

Non-Member Functions

Name Description
toStringConvert a noexcept kind to its string form.

Operator kinds

Synopsis

Declared in <mrdocs/Metadata/Specifiers/OperatorKind.hpp>
enum class OperatorKind : int;

Members

NameDescription
None No operator
New The new Operator
Delete The delete Operator
ArrayNew The new[] Operator
ArrayDelete The delete[] Operator
Plus The + Operator
Minus The - Operator
Star The * Operator
Slash The / Operator
Percent The % Operator
Caret The ^ Operator
Amp The & Operator
Pipe The | Operator
Tilde The ~ Operator
Equal The ! Operator
PlusEqual The += Operator
MinusEqual The -= Operator
StarEqual The *= Operator
SlashEqual The /= Operator
PercentEqual The %= Operator
CaretEqual The ^= Operator
AmpEqual The &= Operator
PipeEqual The |= Operator
LessLess The << Operator
GreaterGreater The >> Operator
LessLessEqual The <<= Operator
GreaterGreaterEqual The >>= Operator
Exclaim The ! Operator
EqualEqual The == Operator
ExclaimEqual The != Operator
Less The < Operator
LessEqual The <= Operator
Greater The > Operator
GreaterEqual The >= Operator
Spaceship The <=> Operator
AmpAmp The && Operator
PipePipe The || Operator
PlusPlus The ++ Operator
MinusMinus The -- Operator
Comma The , Operator
ArrowStar The ->* Operator
Arrow The -> Operator
Call The () Operator
Subscript The []Operator
Conditional The ? : Operator
Coawait The coawait Operator

Non-Member Functions

Name Description
getOperatorKindReturn the short name of an operator as a string.
getOperatorKindFromSuffixReturn the short name of an operator as a string.
getOperatorNameReturn the name of an operator as a string.
getOperatorReadableNameReturn the human-readable name of the operator
getSafeOperatorNameReturn the safe name of an operator as a string.
getShortOperatorNameReturn the short name of an operator as a string.
isBinaryOperatorDetermines whether the operator is potentially binary.
isUnaryOperatorDetermines whether the operator is potentially unary.

Type qualifiers

Synopsis

Declared in <mrdocs/Metadata/Type/QualifierKind.hpp>
enum QualifierKind;

Members

NameDescription
None No qualifiers
Const The const qualifier
Volatile The volatile qualifier

Non-Member Functions

Name Description
toStringConvert a cv/ref qualifier kind to its string form.

The kind of record: struct, class, or union.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordKeyKind.hpp>
enum class RecordKeyKind : int;

Members

NameDescription
Struct A struct.
Class A C++ class.
Union A C-style Union

Non-Member Functions

Name Description
getDefaultAccessStringReturn the default accessibility for a record key kind.
toStringConvert the key kind to its canonical string form.

Reference type kinds

Synopsis

Declared in <mrdocs/Metadata/Specifiers/ReferenceKind.hpp>
enum class ReferenceKind : int;

Members

NameDescription
None Not a reference
LValue An L-Value reference
RValue An R-Value reference

Non-Member Functions

Name Description
toStringConvert a reference kind to its string representation.

Storage class kinds

Synopsis

Declared in <mrdocs/Metadata/Specifiers/StorageClassKind.hpp>
enum class StorageClassKind : int;

Description

[dcl.stc]p1: At most one storage-class-specifier shall appear in a given decl-specifier-seq, except that thread_local may appear with static or extern.

Members

NameDescription
None No storage class specifier
Extern thread_local storage-class-specifier
Static mutable storage-class-specifier
Auto auto storage-class-specifier (removed in C++11) only valid for variables
Register register storage-class-specifier (removed in C++17) only valid for variables

Non-Member Functions

Name Description
toStringConvert a storage class kind to its string form.

Info variant discriminator

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolKind.hpp>
enum class SymbolKind : int;

Members

NameDescription
None Kind is not specified.

Non-Member Functions

Name Description
toStringReturn the name of the SymbolKind as a string.

The kind of template argument.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgKind.hpp>
enum class TArgKind : int;

Non-Member Functions

Name Description
toStringConvert a template-argument kind to a string.

The keyword a template parameter was declared with

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamKeyKind.hpp>
enum class TParamKeyKind : int;

Members

NameDescription
Class Class keyword
Typename Typename keyword

Non-Member Functions

Name Description
toStringConvert the keyword kind to its string form.

Discriminates the different template parameter categories.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamKind.hpp>
enum class TParamKind : int;

Non-Member Functions

Name Description
toStringConvert a parameter kind to a readable string.

Horizontal alignment for table columns.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableAlignmentKind.hpp>
enum class TableAlignmentKind : int;

Members

NameDescription
None No explicit alignment; renderer default applies.
Left Align content to the left edge.
Center Center the content.
Right Align content to the right edge.

Non-Member Functions

Name Description
toStringConvert an alignment enum to its string representation.

The kind of template or specialization.

Synopsis

Declared in <mrdocs/Metadata/Template.hpp>
enum class TemplateSpecKind : int;

Members

NameDescription
Primary Primary template
Explicit Full template specialization
Partial Partial template specialization

Non-Member Functions

Name Description
toStringConvert the specialization kind to a readable string.

Variants of C++ types captured in metadata.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeKind.hpp>
enum class TypeKind : int;

Non-Member Functions

Name Description
toStringConvert a TypeKind to its string representation.

The class of using declaration.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Using.hpp>
enum class UsingClass : int;

Description

This indicates whether the using declaration is a normal using, a using typename, or a using enum.

Members

NameDescription
Normal Using declaration class.
Typename Using typename declaration class.
Enum Using enum declaration class.

Compares two polymorphic objects that have visit functions

Synopses

Declared in <mrdocs/ADT/Polymorphic.hpp>

Compares two polymorphic objects that have visit functions

template<class Base>
requires (!detail::IsPolymorphic<Base>) && detail::CanVisitCompare<Base>
auto
CompareDerived(
    Base const& lhs,
    Base const& rhs);
» more...

Compares two polymorphic objects that have visit functions

template<class Base>
requires detail::CanVisitCompare<Base>
auto
CompareDerived(
    Polymorphic<Base> const& lhs,
    Polymorphic<Base> const& rhs);
» more...

Return Value

true if the two Polymorphic objects are equal, otherwise false.

Template Parameters

Name Description
Base The type of the Polymorphic.

Parameters

Name Description
lhs The first Polymorphic to compare.
rhs The second Polymorphic to compare.

Compares two polymorphic objects that have visit functions

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
template<class Base>
requires (!detail::IsPolymorphic<Base>) && detail::CanVisitCompare<Base>
auto
CompareDerived(
    Base const& lhs,
    Base const& rhs);

Description

This function compares two Polymorphic objects that have visit functions for the Base type.

The visit function is used to compare the two objects if they are of the same derived type.

If the two objects are of different derived types, the comparison is based on the type_info of the derived types.

If any of the objects is empty, the comparison is based on the emptiness of the objects.

Return Value

true if the two Polymorphic objects are equal, otherwise false.

Template Parameters

Name Description
Base The type of the Polymorphic.

Parameters

Name Description
lhs The first Polymorphic to compare.
rhs The second Polymorphic to compare.

Compares two polymorphic objects that have visit functions

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
template<class Base>
requires detail::CanVisitCompare<Base>
auto
CompareDerived(
    Polymorphic<Base> const& lhs,
    Polymorphic<Base> const& rhs);

Description

This function compares two Polymorphic objects that have visit functions for the Base type.

The visit function is used to compare the two objects if they are of the same derived type.

If the two objects are of different derived types, the comparison is based on the type_info of the derived types.

If any of the objects is empty, the comparison is based on the emptiness of the objects.

Return Value

true if the two Polymorphic objects are equal, otherwise false.

Template Parameters

Name Description
Base The type of the Polymorphic.

Parameters

Name Description
lhs The first Polymorphic to compare.
rhs The second Polymorphic to compare.

HTMLEscape overloads

Synopses

Declared in <mrdocs/Support/Handlebars.hpp>

HTML escapes the specified string.

std::string
HTMLEscape(std::string_view str);
» more...

HTML escapes the specified string

void
HTMLEscape(
    OutputRef& out,
    std::string_view str);
» more...

Return Value

The escaped string.

Parameters

Name Description
str The string to escape.
out The output stream reference where the escaped string will be written.

See Also

https://github.com/handlebars-lang/handlebars.js/blob/master/lib/handlebars/utils.js

HTML escapes the specified string.

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
std::string
HTMLEscape(std::string_view str);

Description

This function HTML escapes the specified string, making it safe for rendering as text within HTML content.

Replaces &, <, >, ", ', , =` with the HTML entity equivalent value for string values.

The output of all expressions except for triple-braced expressions are passed through this method. Helpers should also use this method when returning HTML content via a SafeString instance, to prevent possible code injection.

Helper values created by the SafeString function are left untouched by the template and are not passed through this function.

Return Value

The escaped string.

Parameters

Name Description
str The string to escape.

HTML escapes the specified string

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
void
HTMLEscape(
    OutputRef& out,
    std::string_view str);

Description

This function HTML escapes the specified string, making it safe for rendering as text within HTML content.

Replaces &, <, >, ", ', , =` with the HTML entity equivalent value for string values.

The output of all expressions except for triple-braced expressions are passed through this method. Helpers should also use this method when returning HTML content via a SafeString instance, to prevent possible code injection.

Helper values created by the SafeString function are left untouched by the template and are not passed through this function.

This function has the same behavior as the corresponding utility function in the Handlebars.js library.

Parameters

Name Description
out The output stream reference where the escaped string will be written.
str The string to escape.

See Also

https://github.com/handlebars-lang/handlebars.js/blob/master/lib/handlebars/utils.js

Append a new function overload to the set.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Overloads.hpp>
void
addMember(
    OverloadsSymbol& I,
    FunctionSymbol const& Member);

Parameters

Name Description
I Represents a set of function overloads.
Member Metadata for a function or method.

allMembers overloads

Synopses

Declared in <mrdocs/Metadata/Symbol/Enum.hpp>

Return the list of enum constants for this symbol.

auto&
allMembers(EnumSymbol const& T);
» more...

View all members of the namespace across tranches.

auto
allMembers(NamespaceSymbol const& T);
» more...

Join all tranche member lists into a single view.

auto
allMembers(NamespaceTranche const& T);
» more...

Access the list of overload members.

auto&
allMembers(OverloadsSymbol const& T);
» more...

Flatten all public/protected/private members.

auto
allMembers(RecordInterface const& T);
» more...

View all record members across access levels.

auto
allMembers(RecordSymbol const& T);
» more...

Join every member list into a single view.

auto
allMembers(RecordTranche const& T);
» more...

Access declarations introduced by this using-declaration.

auto&
allMembers(UsingSymbol const& T);
» more...

Return Value

Return the list of enum constants for this symbol.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Enum.hpp>
auto&
allMembers(EnumSymbol const& T);

Return Value

the list of enum constants for this symbol.

Parameters

Name Description
T Metadata for an enumeration declaration.

View all members of the namespace across tranches.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
auto
allMembers(NamespaceSymbol const& T);

Return Value

Lazy view across every member bucket.

Parameters

Name Description
T Describes a namespace and its members.

Join all tranche member lists into a single view.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
auto
allMembers(NamespaceTranche const& T);

Return Value

Lazy view spanning every category stored in the tranche.

Parameters

Name Description
T Buckets the members that appear inside a namespace.

Access the list of overload members.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Overloads.hpp>
auto&
allMembers(OverloadsSymbol const& T);

Return Value

Reference to the ID list backing this set.

Parameters

Name Description
T Represents a set of function overloads.

Flatten all public/protected/private members.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordInterface.hpp>
auto
allMembers(RecordInterface const& T);

Return Value

View concatenating the three access tranches.

Parameters

Name Description
T The aggregated interface for a given struct, class, or union.

View all record members across access levels.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Record.hpp>
auto
allMembers(RecordSymbol const& T);

Return Value

Lazy view traversing every tranche.

Parameters

Name Description
T Metadata for struct, class, or union.

Join every member list into a single view.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordTranche.hpp>
auto
allMembers(RecordTranche const& T);

Return Value

Lazy view spanning all member categories.

Parameters

Name Description
T A group of members that have the same access specifier.

Access declarations introduced by this using-declaration.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Using.hpp>
auto&
allMembers(UsingSymbol const& T);

Return Value

Reference to the underlying shadow list.

Parameters

Name Description
T Info for using declarations.

Handler invoked when MRDOCS_ASSERT fails.

Synopsis

Declared in <mrdocs/Support/Assert.hpp>
void
assert_failed(
    char const* msg,
    char const* file,
    uint_least32_t line);

Parameters

Name Description
msg Expression string that failed.
file Source file where the assertion triggered.
line Line within the source file.

Traverse a DocComment tree bottom-up (post-order).

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
template<
    DocCommentNodeTraversable T,
    class F>
void
bottomUpTraverse(
    T& node,
    F&& func);

Parameters

Name Description
node Root node to traverse.
func Visitor invoked after children are visited.

Check whether two symbols may be merged.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
bool
canMerge(
    Symbol const& I,
    Symbol const& Other);

Return Value

True when kinds and IDs match.

Parameters

Name Description
I Base class with common properties of all symbols
Other Base class with common properties of all symbols

cast overloads

Synopses

Declared in <mrdocs/ADT/Polymorphic.hpp>

Dynamic cast returning reference; asserts on failure.

template<
    class To,
    class From>
requires ( std::derived_from<std::remove_cvref_t<To>, std::remove_cvref_t<From>> )
[[nodiscard]]
std::remove_reference_t<To>&
cast(Polymorphic<From>& p);
» more...

Dynamic cast returning const reference; asserts on failure.

template<
    class To,
    class From>
requires ( std::derived_from<std::remove_cvref_t<To>, std::remove_cvref_t<From>> )
[[nodiscard]]
std::remove_reference_t<To> const&
cast(Polymorphic<From> const& p);
» more...

Return Value

Dynamic cast returning reference; asserts on failure.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
template<
    class To,
    class From>
requires ( std::derived_from<std::remove_cvref_t<To>, std::remove_cvref_t<From>> )
[[nodiscard]]
std::remove_reference_t<To>&
cast(Polymorphic<From>& p);

Return Value

Reference to the contained object cast to To.

Parameters

Name Description
p A polymorphic value-type.

Dynamic cast returning const reference; asserts on failure.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
template<
    class To,
    class From>
requires ( std::derived_from<std::remove_cvref_t<To>, std::remove_cvref_t<From>> )
[[nodiscard]]
std::remove_reference_t<To> const&
cast(Polymorphic<From> const& p);

Return Value

Const reference to the contained object cast to To.

Parameters

Name Description
p A polymorphic value-type.

cast_or_null overloads

Synopses

Declared in <mrdocs/ADT/Polymorphic.hpp>

Dynamic cast pointer; returns nullptr when pp is null.

template<
    class To,
    class From>
requires ( std::derived_from<std::remove_cvref_t<To>, std::remove_cvref_t<From>> )
[[nodiscard]]
std::add_pointer_t<std::remove_reference_t<To>>
cast_or_null(Polymorphic<From>* pp);
» more...

Dynamic cast pointer; returns nullptr when pp is null (const).

template<
    class To,
    class From>
requires ( std::derived_from<std::remove_cvref_t<To>, std::remove_cvref_t<From>> )
[[nodiscard]]
std::add_pointer_t<std::remove_reference_t<To> const>
cast_or_null(Polymorphic<From> const* pp);
» more...

Return Value

Pointer to To when the cast succeeds, otherwise nullptr.

Dynamic cast pointer; returns nullptr when pp is null.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
template<
    class To,
    class From>
requires ( std::derived_from<std::remove_cvref_t<To>, std::remove_cvref_t<From>> )
[[nodiscard]]
std::add_pointer_t<std::remove_reference_t<To>>
cast_or_null(Polymorphic<From>* pp);

Return Value

Pointer to To when the cast succeeds, otherwise nullptr.

Parameters

Name Description
pp A polymorphic value-type.

Dynamic cast pointer; returns nullptr when pp is null (const).

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
template<
    class To,
    class From>
requires ( std::derived_from<std::remove_cvref_t<To>, std::remove_cvref_t<From>> )
[[nodiscard]]
std::add_pointer_t<std::remove_reference_t<To> const>
cast_or_null(Polymorphic<From> const* pp);

Return Value

Pointer to To when the cast succeeds, otherwise nullptr.

Parameters

Name Description
pp A polymorphic value-type.

Return the result of comparing s0 to s1.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
std::strong_ordering
compareSymbolNames(
    std::string_view symbolName0,
    std::string_view symbolName1) noexcept;

Description

This function returns true if the string s0 is less than the string s1. The comparison is first made without regard to case, unless the strings compare equal and then they are compared with lowercase letters coming before uppercase letters.

Return Value

The result of the comparison.

Parameters

Name Description
symbolName0 The first symbol name to compare.
symbolName1 The second symbol name to compare.

Determine if a range contains a specific element.

Synopses

Declared in <mrdocs/Support/Algorithm.hpp>

Determine if a range contains a specific element.

template<
    class T,
    class U>
requires std::equality_comparable_with<T, U>
bool
contains(
    std::initializer_list<T> const& range,
    U const& el);
» more...

Determine if a range contains a specific element.

template<
    std::ranges::range Range,
    class El>
requires std::equality_comparable_with<El, std::ranges::range_value_t<Range>>
bool
contains(
    Range&& range,
    El const& el);
» more...

Return Value

True if the element is found, false otherwise.

Parameters

Name Description
range The range to search.
el The element to search for.

Determine if a range contains a specific element.

Synopsis

Declared in <mrdocs/Support/Algorithm.hpp>
template<
    class T,
    class U>
requires std::equality_comparable_with<T, U>
bool
contains(
    std::initializer_list<T> const& range,
    U const& el);

Return Value

True if the element is found, false otherwise.

Parameters

Name Description
range The range to search.
el The element to search for.

Determine if a range contains a specific element.

Synopsis

Declared in <mrdocs/Support/Algorithm.hpp>
template<
    std::ranges::range Range,
    class El>
requires std::equality_comparable_with<El, std::ranges::range_value_t<Range>>
bool
contains(
    Range&& range,
    El const& el);

Return Value

True if the element is found, false otherwise.

Parameters

Name Description
range The range to search.
el The element to search for.

Determine if a range contains any of the specified elements.

Synopses

Declared in <mrdocs/Support/Algorithm.hpp>

Determine if a range contains any of the specified elements.

template<
    std::ranges::range Range,
    std::ranges::range Els>
requires std::equality_comparable_with<std::ranges::range_value_t<Els>, std::ranges::range_value_t<Range>>
bool
contains_any(
    Range const& range,
    Els const& els);
» more...

Determine if a range contains any of the specified elements.

template<
    std::ranges::range Range,
    class El>
requires std::equality_comparable_with<El, std::ranges::range_value_t<Range>>
bool
contains_any(
    Range const& range,
    std::initializer_list<El> const& els);
» more...

Return Value

True if any of the elements are found, false otherwise.

Parameters

Name Description
range The range to search.
els The elements to search for.

Determine if a range contains any of the specified elements.

Synopsis

Declared in <mrdocs/Support/Algorithm.hpp>
template<
    std::ranges::range Range,
    std::ranges::range Els>
requires std::equality_comparable_with<std::ranges::range_value_t<Els>, std::ranges::range_value_t<Range>>
bool
contains_any(
    Range const& range,
    Els const& els);

Return Value

True if any of the elements are found, false otherwise.

Parameters

Name Description
range The range to search.
els The elements to search for.

Determine if a range contains any of the specified elements.

Synopsis

Declared in <mrdocs/Support/Algorithm.hpp>
template<
    std::ranges::range Range,
    class El>
requires std::equality_comparable_with<El, std::ranges::range_value_t<Range>>
bool
contains_any(
    Range const& range,
    std::initializer_list<El> const& els);

Return Value

True if any of the elements are found, false otherwise.

Parameters

Name Description
range The range to search.
els The elements to search for.

Determine if a range contains at least N instances of the specified element.

Synopsis

Declared in <mrdocs/Support/Algorithm.hpp>
template<
    std::ranges::range Range,
    class El>
requires std::equality_comparable_with<El, std::ranges::range_value_t<Range>>
bool
contains_n(
    Range const& range,
    El const& el,
    std::size_t n);

Return Value

True if the element is found, false otherwise.

Parameters

Name Description
range The range to search.
el The element to search for.
n The number of instances to search for.

Determine if a range contains at least N instances of any of the specified elements.

Synopses

Declared in <mrdocs/Support/Algorithm.hpp>

Determine if a range contains at least N instances of any of the specified elements.

template<
    std::ranges::range Range,
    std::ranges::range Els>
requires std::equality_comparable_with<std::ranges::range_value_t<Els>, std::ranges::range_value_t<Range>>
bool
contains_n_any(
    Range const& range,
    Els const& els,
    std::size_t n);
» more...

Determine if a range contains at least N instances of any of the specified elements.

template<
    std::ranges::range Range,
    class El>
requires std::equality_comparable_with<El, std::ranges::range_value_t<Range>>
bool
contains_n_any(
    Range const& range,
    std::initializer_list<El> const& els,
    std::size_t n);
» more...

Return Value

True if the element is found, false otherwise.

Parameters

Name Description
range The range to search.
els The elements to search for.
n The number of instances to search for.

Determine if a range contains at least N instances of any of the specified elements.

Synopsis

Declared in <mrdocs/Support/Algorithm.hpp>
template<
    std::ranges::range Range,
    std::ranges::range Els>
requires std::equality_comparable_with<std::ranges::range_value_t<Els>, std::ranges::range_value_t<Range>>
bool
contains_n_any(
    Range const& range,
    Els const& els,
    std::size_t n);

Return Value

True if the element is found, false otherwise.

Parameters

Name Description
range The range to search.
els The elements to search for.
n The number of instances to search for.

Determine if a range contains at least N instances of any of the specified elements.

Synopsis

Declared in <mrdocs/Support/Algorithm.hpp>
template<
    std::ranges::range Range,
    class El>
requires std::equality_comparable_with<El, std::ranges::range_value_t<Range>>
bool
contains_n_any(
    Range const& range,
    std::initializer_list<El> const& els,
    std::size_t n);

Return Value

True if the element is found, false otherwise.

Parameters

Name Description
range The range to search.
els The elements to search for.
n The number of instances to search for.

Count the number of SymbolKind enumerators.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolKind.hpp>
consteval
std::underlying_type_t<SymbolKind>
countSymbolKind();

Return Value

Number of SymbolKind values generated from SymbolNodes.inc.

Create child data objects.

Synopses

Declared in <mrdocs/Support/Handlebars.hpp>

Create child data objects.

dom::Object
createFrame(dom::Object const& parent);
» more...
dom::Object
createFrame(dom::Value const& parent);
» more...
dom::Object
createFrame(
    dom::Object const& child,
    dom::Object const& parent);
» more...

Return Value

The overlay object

Parameters

Name Description
parent The underlying frame object

See Also

https://mustache.github.io/mustache.5.html#Sections

Create child data objects.

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
dom::Object
createFrame(dom::Object const& parent);

Description

This function can be used by block helpers to create child data objects.

The child data object is an overlay frame object implementation that will first look for a value in the child object and if not found will look in the parent object.

Helpers that modify the data state should create a new frame object when doing so, to isolate themselves and avoid corrupting the state of any parents.

Generally, only one frame needs to be created per helper execution. For example, the each iterator creates a single frame which is reused for all child execution.

Return Value

The overlay object

Parameters

Name Description
parent The underlying frame object

See Also

https://mustache.github.io/mustache.5.html#Sections

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
dom::Object
createFrame(dom::Value const& parent);

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
dom::Object
createFrame(
    dom::Object const& child,
    dom::Object const& parent);

dyn_cast overloads

Synopses

Declared in <mrdocs/ADT/Polymorphic.hpp>

Dynamic cast returning pointer or nullptr.

template<
    class To,
    class From>
requires ( std::derived_from<std::remove_cvref_t<To>, std::remove_cvref_t<From>> )
[[nodiscard]]
std::add_pointer_t<std::remove_reference_t<To>>
dyn_cast(Polymorphic<From>& p) noexcept;
» more...

Dynamic cast returning pointer or nullptr (const overload).

template<
    class To,
    class From>
requires ( std::derived_from<std::remove_cvref_t<To>, std::remove_cvref_t<From>> )
[[nodiscard]]
std::add_pointer_t<std::remove_reference_t<To> const>
dyn_cast(Polymorphic<From> const& p) noexcept;
» more...

Return Value

Pointer to To if the dynamic cast succeeds, otherwise nullptr.

Dynamic cast returning pointer or nullptr.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
template<
    class To,
    class From>
requires ( std::derived_from<std::remove_cvref_t<To>, std::remove_cvref_t<From>> )
[[nodiscard]]
std::add_pointer_t<std::remove_reference_t<To>>
dyn_cast(Polymorphic<From>& p) noexcept;

Return Value

Pointer to To if the dynamic cast succeeds, otherwise nullptr.

Parameters

Name Description
p A polymorphic value-type.

Dynamic cast returning pointer or nullptr (const overload).

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
template<
    class To,
    class From>
requires ( std::derived_from<std::remove_cvref_t<To>, std::remove_cvref_t<From>> )
[[nodiscard]]
std::add_pointer_t<std::remove_reference_t<To> const>
dyn_cast(Polymorphic<From> const& p) noexcept;

Return Value

Pointer to To if the dynamic cast succeeds, otherwise nullptr.

Parameters

Name Description
p A polymorphic value-type.

dyn_cast_or_null overloads

Synopses

Declared in <mrdocs/ADT/Polymorphic.hpp>

Dynamic cast if pointer is non-null and engaged, else nullptr.

template<
    class To,
    class From>
requires ( std::derived_from<std::remove_cvref_t<To>, std::remove_cvref_t<From>> )
[[nodiscard]]
std::add_pointer_t<std::remove_reference_t<To>>
dyn_cast_or_null(Polymorphic<From>* pp) noexcept;
» more...

Dynamic cast if pointer is non-null and engaged, else nullptr (const).

template<
    class To,
    class From>
requires ( std::derived_from<std::remove_cvref_t<To>, std::remove_cvref_t<From>> )
[[nodiscard]]
std::add_pointer_t<std::remove_reference_t<To> const>
dyn_cast_or_null(Polymorphic<From> const* pp) noexcept;
» more...

Return Value

Pointer to To when the cast succeeds, otherwise nullptr.

Dynamic cast if pointer is non-null and engaged, else nullptr.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
template<
    class To,
    class From>
requires ( std::derived_from<std::remove_cvref_t<To>, std::remove_cvref_t<From>> )
[[nodiscard]]
std::add_pointer_t<std::remove_reference_t<To>>
dyn_cast_or_null(Polymorphic<From>* pp) noexcept;

Return Value

Pointer to To when the cast succeeds, otherwise nullptr.

Parameters

Name Description
pp A polymorphic value-type.

Dynamic cast if pointer is non-null and engaged, else nullptr (const).

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
template<
    class To,
    class From>
requires ( std::derived_from<std::remove_cvref_t<To>, std::remove_cvref_t<From>> )
[[nodiscard]]
std::add_pointer_t<std::remove_reference_t<To> const>
dyn_cast_or_null(Polymorphic<From> const* pp) noexcept;

Return Value

Pointer to To when the cast succeeds, otherwise nullptr.

Parameters

Name Description
pp A polymorphic value-type.

Determine if a string ends with one of the specified characters

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
bool
endsWithOneOf(
    std::string_view s,
    std::string_view chars) noexcept;

Return Value

if a string ends with one of the specified characters

Parameters

Name Description
s The string to check.
chars The characters to check for.

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
void
escapeExpression(
    OutputRef out,
    std::string_view str,
    HandlebarsOptions const& opt);

Find a generator by its id.

Synopsis

Declared in <mrdocs/Generator.hpp>
Generator const*
findGenerator(std::string_view id) noexcept;

Thread Safety

This function is thread-safe and may be called concurrently from multiple threads.

Return Value

A pointer to the generator, or nullptr if no generator with the given id exists.

Parameters

Name Description
id The symbolic name of the generator. The name must be an exact match, including case.

Find the last element in a range that matches an element in the specified range.

Synopsis

Declared in <mrdocs/Support/Algorithm.hpp>
template<
    std::ranges::range Range,
    std::ranges::range Els>
requires std::equality_comparable_with<std::ranges::range_value_t<Els>, std::ranges::range_value_t<Range>>
auto
find_last_of(
    Range&& range,
    Els&& els);

Return Value

An iterator to the last element found, or std::ranges::end(range) if not found.

Parameters

Name Description
range The range to search.
els The elements to search for.

forEachFile overloads

Synopses

Declared in <mrdocs/Support/Path.hpp>

Call a function for each file in a directory.

Expected<void>
forEachFile(
    std::string_view dirPath,
    bool recursive,
    AnyFileVisitor& visitor);
» more...

Visit each file in a directory.

template<class Visitor>
Expected<void>
forEachFile(
    std::string_view dirPath,
    bool recursive,
    Visitor&& visitor);
» more...

Return Value

An error if any occurred.

Parameters

Name Description
dirPath The path to the directory.
recursive If true, files in subdirectories are also visited, recursively.
visitor The visitor to invoke for each file.

Call a function for each file in a directory.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
Expected<void>
forEachFile(
    std::string_view dirPath,
    bool recursive,
    AnyFileVisitor& visitor);

Description

This will iterate all the regular files in a directory and invoke the visitor with the path.

Return Value

An error if any occurred.

Parameters

Name Description
dirPath The path to the directory.
recursive If true, files in subdirectories are also visited, recursively.
visitor The visitor to invoke for each file.

Visit each file in a directory.

Synopsis

Declared in <mrdocs/Support/Path.hpp>
template<class Visitor>
Expected<void>
forEachFile(
    std::string_view dirPath,
    bool recursive,
    Visitor&& visitor);

Return Value

An error if any occurred.

Parameters

Name Description
dirPath The path to the directory.
recursive If true, files in subdirectories are also visited, recursively.
visitor A callable object which is invoked for each file. This visitor might return void or Expected<void>.

Return a formatted error.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
template<class... Args>
Error
formatError(
    FormatString<Args...> fs,
    Args&&... args);

Return Value

a formatted error.

Parameters

Name Description
fs The format string. This must not be empty.
args Zero or more values to substitute into the format string.

Convert a string to a FundamentalTypeKind.

Synopsis

Declared in <mrdocs/Metadata/Type/FundamentalTypeKind.hpp>
bool
fromString(
    std::string_view str,
    FundamentalTypeKind& kind) noexcept;

Description

This function converts a string to a FundamentalTypeKind.

All variations of the type specifiers are supported.

However, the "long long" specifier cannot be split into two separate specifiers.

Return Value

true if the string was successfully converted

Parameters

Name Description
str The string to convert
kind [out] The resulting FundamentalTypeKind

Return the default accessibility for a record key kind.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Record.hpp>
constexpr
std::string_view
getDefaultAccessString(RecordKeyKind const& kind) noexcept;

Return Value

the default accessibility for a record key kind.

Parameters

Name Description
kind The kind of record: struct, class, or union.

Return the short name of an operator as a string.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/OperatorKind.hpp>
OperatorKind
getOperatorKind(std::string_view name) noexcept;

Return Value

The OperatorKind, or OperatorKind::None if not recognized.

Parameters

Name Description
name The operator name, e.g. operator+, operator++, operator[], etc.

Return the short name of an operator as a string.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/OperatorKind.hpp>
OperatorKind
getOperatorKindFromSuffix(std::string_view suffix) noexcept;

Return Value

The OperatorKind, or OperatorKind::None if not recognized.

Parameters

Name Description
suffix The operator suffix, e.g. +, ++, [], etc.

Return the name of an operator as a string.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/OperatorKind.hpp>
std::string_view
getOperatorName(
    OperatorKind kind,
    bool include_keyword = false) noexcept;

Return Value

the name of an operator as a string.

Parameters

Name Description
kind The kind of operator.
include_keyword Whether the name should be prefixed with the operator keyword.

Return the human-readable name of the operator

Synopsis

Declared in <mrdocs/Metadata/Specifiers/OperatorKind.hpp>
Optional<std::string_view>
getOperatorReadableName(
    OperatorKind kind,
    int nParams);

Return Value

The readable name, or nullopt if the operator is not recognized.

Parameters

Name Description
kind The kind of operator.
nParams The number of parameters the operator takes.

getParents overloads

Synopses

Declared in <mrdocs/Corpus.hpp>

Return a list of the parent symbols of the specified Symbol.

std::vector<SymbolID>
getParents(
    Corpus const& C,
    Symbol const& I);
» more...

Return a list of the parent symbols of the specified Info.

dom::Array
getParents(
    DomCorpus const& C,
    Symbol const& I);
» more...

Return a list of the parent symbols of the specified Symbol.

Synopsis

Declared in <mrdocs/Corpus.hpp>
std::vector<SymbolID>
getParents(
    Corpus const& C,
    Symbol const& I);

Return Value

a list of the parent symbols of the specified Symbol.

Parameters

Name Description
C The collection of declarations in extracted form.
I Base class with common properties of all symbols

Return a list of the parent symbols of the specified Info.

Synopsis

Declared in <mrdocs/Metadata/DomCorpus.hpp>
dom::Array
getParents(
    DomCorpus const& C,
    Symbol const& I);

Return Value

a list of the parent symbols of the specified Info.

Parameters

Name Description
C Front-end factory for producing Dom nodes.
I Base class with common properties of all symbols

getPrimaryLocation overloads

Synopses

Declared in <mrdocs/Metadata/Symbol/Source.hpp>

Determine a location to use when none is explicitly chosen.

Optional<Location>
getPrimaryLocation(Symbol const& I);
» more...

Choose the best location to display for a symbol.

Optional<Location>
getPrimaryLocation(
    SourceInfo const& I,
    bool preferDefinition);
» more...

Return Value

The preferred location if available.

Parameters

Name Description
I Source info to examine.
preferDefinition If true, favor a definition location.

Determine a location to use when none is explicitly chosen.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
Optional<Location>
getPrimaryLocation(Symbol const& I);

Return Value

a location to use when none is explicitly chosen.

Parameters

Name Description
I Base class with common properties of all symbols

Choose the best location to display for a symbol.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Source.hpp>
Optional<Location>
getPrimaryLocation(
    SourceInfo const& I,
    bool preferDefinition);

Return Value

The preferred location if available.

Parameters

Name Description
I Source info to examine.
preferDefinition If true, favor a definition location.

Return the safe name of an operator as a string.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/OperatorKind.hpp>
std::string_view
getSafeOperatorName(
    OperatorKind kind,
    bool include_keyword = false) noexcept;

Return Value

the safe name of an operator as a string.

Parameters

Name Description
kind The kind of operator.
include_keyword Whether the name should be prefixed with operator_.

Return the short name of an operator as a string.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/OperatorKind.hpp>
std::string_view
getShortOperatorName(OperatorKind kind) noexcept;

Return Value

the short name of an operator as a string.

Parameters

Name Description
kind Operator kinds

Return the full path for single page output.

Synopsis

Declared in <mrdocs/Generator.hpp>
Expected<std::string>
getSinglePageFullPath(
    std::string_view outputPath,
    std::string_view extension);

Description

This function determines the full path for a single-page output file based on the provided outputPath and file extension.

If the outputPath already exists: - If it is a directory, appends the default file name with the provided extension. - If it is a file, uses the provided outputPath directly.

If the outputPath does not exist: - If it ends with a '/', assumes it is a directory and appends the default file name. - Otherwise, it returns an error because the path is ambiguous.

Return Value

The full path or an error if the outputPath is ambiguous.

Parameters

Name Description
outputPath The specified output path, which can be a directory or file.
extension The file extension to use for single-page output.

Return the inner type.

Synopses

Declared in <mrdocs/Metadata/Type.hpp>

Return the inner type.

Optional<Polymorphic<Type>&>
innerType(Type& TI) noexcept;
» more...

Return the inner type.

Optional<Polymorphic<Type> const&>
innerType(Type const& TI) noexcept;
» more...

Return the inner type.

Synopsis

Declared in <mrdocs/Metadata/Type.hpp>
Optional<Polymorphic<Type>&>
innerType(Type& TI) noexcept;

Description

The inner type is the type that is modified by a specifier (e.g. "int" in "pointer to int").

Return Value

the inner type.

Parameters

Name Description
TI A possibly qualified type.

Return the inner type.

Synopsis

Declared in <mrdocs/Metadata/Type.hpp>
Optional<Polymorphic<Type> const&>
innerType(Type const& TI) noexcept;

Description

The inner type is the type that is modified by a specifier (e.g. "int" in "pointer to int").

Return Value

the inner type.

Parameters

Name Description
TI A possibly qualified type.

Return the inner type.

Synopses

Declared in <mrdocs/Metadata/Type.hpp>

Return the inner type.

Type*
innerTypePtr(Type& TI) noexcept;
» more...

Return the inner type.

Type const*
innerTypePtr(Type const& TI) noexcept;
» more...

Return the inner type.

Synopsis

Declared in <mrdocs/Metadata/Type.hpp>
Type*
innerTypePtr(Type& TI) noexcept;

Description

The inner type is the type that is modified by a specifier (e.g. "int" in "pointer to int").

Return Value

the inner type.

Parameters

Name Description
TI A possibly qualified type.

Return the inner type.

Synopsis

Declared in <mrdocs/Metadata/Type.hpp>
Type const*
innerTypePtr(Type const& TI) noexcept;

Description

The inner type is the type that is modified by a specifier (e.g. "int" in "pointer to int").

Return Value

the inner type.

Parameters

Name Description
TI A possibly qualified type.

innermostType overloads

Synopses

Declared in <mrdocs/Metadata/Type.hpp>

Return the innermost type (mutable overload).

Polymorphic<Type>&
innermostType(Polymorphic<Type>& TI) noexcept;
» more...

Return the innermost type.

Polymorphic<Type> const&
innermostType(Polymorphic<Type> const& TI) noexcept;
» more...

Return the innermost type (mutable overload).

Synopsis

Declared in <mrdocs/Metadata/Type.hpp>
Polymorphic<Type>&
innermostType(Polymorphic<Type>& TI) noexcept;

Return Value

the innermost type (mutable overload).

Parameters

Name Description
TI A polymorphic value-type.

Return the innermost type.

Synopsis

Declared in <mrdocs/Metadata/Type.hpp>
Polymorphic<Type> const&
innermostType(Polymorphic<Type> const& TI) noexcept;

Description

The innermost type is the type which is not modified by any specifiers (e.g. "int" in "pointer to const int").

If the type has an inner type, we recursively call this function until we reach the innermost type. If the type has no inner type, we return the current type.

Return Value

the innermost type.

Parameters

Name Description
TI A polymorphic value-type.

Install a custom generator.

Synopsis

Declared in <mrdocs/Generator.hpp>
Expected<void>
installGenerator(std::unique_ptr<Generator> G);

Description

This function registers a generator with the global generator registry, making it available for use.

Plugins can use this function to register custom generators.

Thread Safety

This function is thread-safe and may be called concurrently from multiple threads.

Return Value

An error if a generator with the same id already exists.

Parameters

Name Description
G The generator to install. Ownership is transferred to the registry.

isAlphaNumeric overloads

Synopses

Declared in <mrdocs/Support/String.hpp>

Determine if every character in a string is ASCII alphanumeric.

constexpr
bool
isAlphaNumeric(std::string_view const s) noexcept;
» more...

Determine if a character is ASCII alphanumeric.

constexpr
bool
isAlphaNumeric(char const c) noexcept;
» more...

Return Value

Parameters

Name Description
s String to inspect.
c Character to inspect.

Determine if every character in a string is ASCII alphanumeric.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
bool
isAlphaNumeric(std::string_view const s) noexcept;

Return Value

true if all characters are ASCII letters or digits.

Parameters

Name Description
s String to inspect.

Determine if a character is ASCII alphanumeric.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
bool
isAlphaNumeric(char const c) noexcept;

Return Value

true if c is an ASCII letter or digit.

Parameters

Name Description
c Character to inspect.

isAlphabetic overloads

Synopses

Declared in <mrdocs/Support/String.hpp>

Determine if every character in a string is an ASCII letter.

constexpr
bool
isAlphabetic(std::string_view const s) noexcept;
» more...

Determine if a character is an ASCII letter.

constexpr
bool
isAlphabetic(char const c) noexcept;
» more...

Return Value

Parameters

Name Description
s String to inspect.
c Character to inspect.

Determine if every character in a string is an ASCII letter.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
bool
isAlphabetic(std::string_view const s) noexcept;

Return Value

true if all characters are alphabetic.

Parameters

Name Description
s String to inspect.

Determine if a character is an ASCII letter.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
bool
isAlphabetic(char const c) noexcept;

Return Value

true if c is in the ranges 'a'-'z' or 'A'-'Z'.

Parameters

Name Description
c Character to inspect.

Determines whether the operator is potentially binary.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/OperatorKind.hpp>
bool
isBinaryOperator(OperatorKind kind) noexcept;

Return Value

whether the operator is potentially binary.

Parameters

Name Description
kind Operator kinds

isDigit overloads

Synopses

Declared in <mrdocs/Support/String.hpp>

Determine if every character in a string is an ASCII digit.

constexpr
bool
isDigit(std::string_view const s) noexcept;
» more...

Determine if a character is an ASCII digit.

constexpr
bool
isDigit(char const c) noexcept;
» more...

Return Value

Parameters

Name Description
s String to inspect.
c Character to inspect.

Determine if every character in a string is an ASCII digit.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
bool
isDigit(std::string_view const s) noexcept;

Return Value

true if all characters are digits.

Parameters

Name Description
s String to inspect.

Determine if a character is an ASCII digit.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
bool
isDigit(char const c) noexcept;

Return Value

true if c is between '0' and '9'.

Parameters

Name Description
c Character to inspect.

Determine if a value is empty

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
bool
isEmpty(dom::Value const& arg);

Description

This is used by the built-in if and with helpers to control their execution flow.

The Handlebars definition of empty is any of:

- Array with length 0 - falsy values other than 0

This is intended to match the Mustache Behaviour.

Return Value

True if the value is empty, false otherwise

Parameters

Name Description
arg The value to test

See Also

https://mustache.github.io/mustache.5.html#Sections

isLowerCase overloads

Synopses

Declared in <mrdocs/Support/String.hpp>

Determine if every character in a string is lowercase ASCII.

constexpr
bool
isLowerCase(std::string_view const s) noexcept;
» more...

Determine if a character is a lowercase ASCII letter.

constexpr
bool
isLowerCase(char const c) noexcept;
» more...

Return Value

Parameters

Name Description
s String to inspect.
c Character to inspect.

Determine if every character in a string is lowercase ASCII.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
bool
isLowerCase(std::string_view const s) noexcept;

Return Value

true if all characters are lowercase ASCII letters.

Parameters

Name Description
s String to inspect.

Determine if a character is a lowercase ASCII letter.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
bool
isLowerCase(char const c) noexcept;

Return Value

true if c is in the range 'a' to 'z'.

Parameters

Name Description
c Character to inspect.

Determines whether the operator is potentially unary.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/OperatorKind.hpp>
bool
isUnaryOperator(OperatorKind kind) noexcept;

Return Value

whether the operator is potentially unary.

Parameters

Name Description
kind Operator kinds

isUpperCase overloads

Synopses

Declared in <mrdocs/Support/String.hpp>

Determine if every character in a string is uppercase ASCII.

constexpr
bool
isUpperCase(std::string_view const s) noexcept;
» more...

Determine if a character is an uppercase ASCII letter.

constexpr
bool
isUpperCase(char const c) noexcept;
» more...

Return Value

Parameters

Name Description
s String to inspect.
c Character to inspect.

Determine if every character in a string is uppercase ASCII.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
bool
isUpperCase(std::string_view const s) noexcept;

Return Value

true if all characters are uppercase ASCII letters.

Parameters

Name Description
s String to inspect.

Determine if a character is an uppercase ASCII letter.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
bool
isUpperCase(char const c) noexcept;

Return Value

true if c is in the range 'A' to 'Z'.

Parameters

Name Description
c Character to inspect.

isWhitespace overloads

Synopses

Declared in <mrdocs/Support/String.hpp>

Determine if a string is only whitespace.

constexpr
bool
isWhitespace(std::string_view s) noexcept;
» more...

Determine if a character is whitespace.

constexpr
bool
isWhitespace(char c) noexcept;
» more...

Return Value

Parameters

Name Description
s The string to check.
c Character to inspect.

Determine if a string is only whitespace.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
bool
isWhitespace(std::string_view s) noexcept;

Return Value

true if the string is empty or contains only whitespace characters (space, tab, newline, vertical tab, form feed, carriage return). false otherwise.

Parameters

Name Description
s The string to check.

Determine if a character is whitespace.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
bool
isWhitespace(char c) noexcept;

Return Value

true if c is a horizontal or vertical whitespace character.

Parameters

Name Description
c Character to inspect.

is_null helper that uses nullable_traits<T> if available.

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
template<has_nullable_traits_v T>
bool
is_null(T const& v) noexcept(noexcept(nullable_traits<T>::is_null(v)));

Return Value

true if v is null, false otherwise.

Parameters

Name Description
v The value to test for null.

Determine if an element is equal to any of the elements in the specified range.

Synopses

Declared in <mrdocs/Support/Algorithm.hpp>

Determine if an element is equal to any of the elements in the specified range.

template<
    class El,
    std::ranges::range Range>
requires std::equality_comparable_with<std::ranges::range_value_t<Range>, El>
bool
is_one_of(
    El const& el,
    Range const& range);
» more...

Determine if an element is equal to any of the elements in the specified range.

template<
    class U,
    class T>
requires std::equality_comparable_with<U, T>
bool
is_one_of(
    U const& el,
    std::initializer_list<T> const& range);
» more...

Return Value

True if the element is found, false otherwise.

Parameters

Name Description
el The element to search for.
range The range to search.

Determine if an element is equal to any of the elements in the specified range.

Synopsis

Declared in <mrdocs/Support/Algorithm.hpp>
template<
    class El,
    std::ranges::range Range>
requires std::equality_comparable_with<std::ranges::range_value_t<Range>, El>
bool
is_one_of(
    El const& el,
    Range const& range);

Return Value

True if the element is found, false otherwise.

Parameters

Name Description
el The element to search for.
range The range to search.

Determine if an element is equal to any of the elements in the specified range.

Synopsis

Declared in <mrdocs/Support/Algorithm.hpp>
template<
    class U,
    class T>
requires std::equality_comparable_with<U, T>
bool
is_one_of(
    U const& el,
    std::initializer_list<T> const& range);

Return Value

True if the element is found, false otherwise.

Parameters

Name Description
el The element to search for.
range The range to search.

Return true if the polymorphic object holds a value of type To.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
template<
    class To,
    class From>
requires ( std::derived_from<std::remove_cvref_t<To>, std::remove_cvref_t<From>> )
[[nodiscard]]
bool
isa(Polymorphic<From> const& p) noexcept;

Return Value

true if the polymorphic object holds a value of type To.

Parameters

Name Description
p A polymorphic value-type.

Return true if pointer is non-null and referent is of type To.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
template<
    class To,
    class From>
requires ( std::derived_from<std::remove_cvref_t<To>, std::remove_cvref_t<From>> )
[[nodiscard]]
bool
isa_or_null(Polymorphic<From> const* pp) noexcept;

Return Value

true if pointer is non-null and referent is of type To.

Parameters

Name Description
pp A polymorphic value-type.

Compare ExtractionModes and returns the least specific

Synopsis

Declared in <mrdocs/Metadata/Symbol/ExtractionMode.hpp>
constexpr
ExtractionMode
leastSpecific(
    ExtractionMode const a,
    ExtractionMode const b) noexcept;

Description

This function returns the least specific of the two ExtractionModes in terms of the number of filters passed.

If the symbol passes the filter that categorizes it as a, then it also passes the filter that categorizes it as b (or vice-versa), then this function will return the final category for the symbol.

Return Value

Determine why a symbol is extracted

Parameters

Name Description
a Determine why a symbol is extracted
b Determine why a symbol is extracted

ltrim overloads

Synopses

Declared in <mrdocs/Support/String.hpp>

Return the substring without leading horizontal whitespace.

constexpr
std::string_view
ltrim(std::string_view const s) noexcept;
» more...

Return the substring without leading specified characters.

constexpr
std::string_view
ltrim(
    std::string_view const s,
    std::string_view const chars) noexcept;
» more...

Return Value

The modified string.

Parameters

Name Description
s The string to trim.
chars The characters to remove.

Return the substring without leading horizontal whitespace.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
std::string_view
ltrim(std::string_view const s) noexcept;

Return Value

The modified string.

Parameters

Name Description
s The string to trim.

Return the substring without leading specified characters.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
std::string_view
ltrim(
    std::string_view const s,
    std::string_view const chars) noexcept;

Return Value

The modified string.

Parameters

Name Description
s The string to trim.
chars The characters to remove.

Apply the "char" specifier to the type

Synopsis

Declared in <mrdocs/Metadata/Type/FundamentalTypeKind.hpp>
bool
makeChar(FundamentalTypeKind& kind) noexcept;

Description

If applying the "char" specifier to a type that might have been declared only with "signed/unsigned" or "short/long" specifiers, the function changes the type and returns true.

For instance, applying "char" to FundamentalTypeKind::Int ("int", which could be declared as "signed") results in FundamentalTypeKind::SignedChar ("signed char").

Return Value

Whether the operation was successful

Parameters

Name Description
kind [in] The type to modify

Apply the "long" specifier to the type

Synopsis

Declared in <mrdocs/Metadata/Type/FundamentalTypeKind.hpp>
bool
makeLong(FundamentalTypeKind& kind) noexcept;

Description

If applying "long" the specifier is a valid operation the function changes the type and returns true.

For instance, applying "long" to FundamentalTypeKind::Int ("int") results in FundamentalTypeKind::Long ("long int").

Return Value

Whether the operation was successful

Parameters

Name Description
kind [in] The type to modify

Factory function that creates an Overload from the given callables.

Synopsis

Declared in <mrdocs/ADT/Overload.hpp>
template<class... Ts>
[[nodiscard]]
constexpr
Overload<std::decay_t<Ts>...>
makeOverload(Ts&&... xs) noexcept((std::is_nothrow_constructible_v<std::decay_t<Ts>, Ts &&> && ...));

Description

Prefer this over constructing Overload directly when you need perfect forwarding and decayed storage.

auto visitor = fn::makeOverload( [](int) { return 1; }, [](double) { return 2; } );

Return Value

An Overload whose base classes are the decayed types of the provided callables.

Parameters

Name Description
xs The callables to combine.

Apply the "short" specifier to the type

Synopsis

Declared in <mrdocs/Metadata/Type/FundamentalTypeKind.hpp>
bool
makeShort(FundamentalTypeKind& kind) noexcept;

Description

If applying "short" the specifier is a valid operation the function changes the type and returns true.

For instance, applying "short" to FundamentalTypeKind::Int ("int") results in FundamentalTypeKind::Short ("short int").

Return Value

Whether the operation was successful

Parameters

Name Description
kind [in] The type to modify

Apply the "signed" specifier to the type

Synopsis

Declared in <mrdocs/Metadata/Type/FundamentalTypeKind.hpp>
bool
makeSigned(FundamentalTypeKind& kind) noexcept;

Description

If applying the "signed" specifier is a valid operation the function changes the type and returns true.

For instance, applying "signed" to FundamentalTypeKind::Char ("char") results in FundamentalTypeKind::SignedChar ("signed char").

It also returns true if applying the "signed" specifier is a valid operation but doesn't affect the type.

For instance, applying "signed" to FundamentalTypeKind::Int ("int") doesn't change the type but returns true, even though FundamentalTypeKind::Int could be declared as "int" or "signed" and multiple "signed" specifiers are not allowed.

Return Value

Whether the operation was successful

Parameters

Name Description
kind [in] The type to modify

Apply the "unsigned" specifier to the type

Synopsis

Declared in <mrdocs/Metadata/Type/FundamentalTypeKind.hpp>
bool
makeUnsigned(FundamentalTypeKind& kind) noexcept;

Description

If applying the "unsigned" specifier is a valid operation the function changes the type and returns true.

For instance, applying "unsigned" to FundamentalTypeKind::Char ("char") results in FundamentalTypeKind::UnsignedChar ("unsigned char") and applying "unsigned" to FundamentalTypeKind::Int ("int") results in FundamentalTypeKind::UnsignedInt ("unsigned int").

Return Value

Whether the operation was successful

Parameters

Name Description
kind [in] The type to modify

Make a visitor for a base type

Synopsis

Declared in <mrdocs/Support/Visitor.hpp>
template<
    typename BaseTy,
    typename ObjectTy,
    typename FnTy,
    typename... ArgsTy>
auto
makeVisitor(
    ObjectTy&& obj,
    FnTy&& fn,
    ArgsTy&&... args);

Description

The returned visitor is an object with a template method visit which can be called with a derived type of the object being visited.

The visitor stores the arguments args passed to this function, and its method visit calls the function fn with the derived type as the first argument, followed by args.

Return Value

The common return type of fn when called with a derived type of obj and args

Parameters

Name Description
obj The object to visit
fn The function object to call
args The arguments to pass to the function object

make_array_view overloads

Synopses

Declared in <mrdocs/ADT/ArrayView.hpp>

Create an ArrayView from a C-style array.

template<
    class T,
    std::size_t N>
constexpr
ArrayView<T>
make_array_view(T const(& arr)[]) noexcept;
» more...

Create an ArrayView from a pointer and count.

template<class T>
constexpr
ArrayView<T>
make_array_view(
    T const* data,
    std::size_t count) noexcept;
» more...

Return Value

Parameters

Name Description
arr Array to view.
data Pointer to the first element.
count Number of elements.

Create an ArrayView from a C-style array.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
template<
    class T,
    std::size_t N>
constexpr
ArrayView<T>
make_array_view(T const(& arr)[]) noexcept;

Return Value

View over the provided array.

Parameters

Name Description
arr Array to view.

Create an ArrayView from a pointer and count.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
template<class T>
constexpr
ArrayView<T>
make_array_view(
    T const* data,
    std::size_t count) noexcept;

Return Value

View over the provided range.

Parameters

Name Description
data Pointer to the first element.
count Number of elements.

make_null helper that uses nullable_traits<T> if available.

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
template<has_nullable_traits_v T>
void
make_null(T& v) noexcept(noexcept(nullable_traits<T>::make_null(v)));

Parameters

Name Description
v The value to make null.

Applies a set of callables to a std::variant using std::visit and Overload.

Synopsis

Declared in <mrdocs/ADT/Overload.hpp>
template<
    class Variant,
    class... Ts>
constexpr
decltype(auto)
match(
    Variant&& v,
    Ts&&... xs);

Description

This is a convenience wrapper around std::visit(makeOverload(...), variant). It forwards the variant and the callables and returns whatever std::visit returns.

std::variant<int, std::string> v = 42; auto r = fn::match(v, [](int i) { return i + 1; }, [](const std::string& s) { return s.size(); } );

Return Value

The result of std::visit.

Parameters

Name Description
v The variant to visit (can be lvalue or rvalue; const-qualification is preserved).
xs The callables to be combined with makeOverload and passed to std::visit.

merge overloads

Synopses

Declared in <mrdocs/Metadata/Expression.hpp>

Merge another ConceptSymbol into this one.

void
merge(
    ConceptSymbol& I,
    ConceptSymbol&& Other);
» more...

Append blocks from other into I, preserving order.

void
merge(
    DocComment& I,
    DocComment&& other);
» more...

Merge another EnumConstantSymbol into this one.

void
merge(
    EnumConstantSymbol& I,
    EnumConstantSymbol&& Other);
» more...

Merge another EnumSymbol into this one.

void
merge(
    EnumSymbol& I,
    EnumSymbol&& Other);
» more...

Merge metadata from another expression.

void
merge(
    ExprInfo& I,
    ExprInfo&& Other);
» more...

Merge another FriendInfo into this one.

void
merge(
    FriendInfo& I,
    FriendInfo&& Other);
» more...

Merge metadata from another function symbol.

void
merge(
    FunctionSymbol& I,
    FunctionSymbol&& Other);
» more...

Merge another GuideSymbol into this one.

void
merge(
    GuideSymbol& I,
    GuideSymbol&& Other);
» more...

Merge two alias symbols, preferring existing fields when present.

void
merge(
    NamespaceAliasSymbol& I,
    NamespaceAliasSymbol&& Other);
» more...

Merge two namespaces, keeping existing members stable.

void
merge(
    NamespaceSymbol& I,
    NamespaceSymbol&& Other);
» more...

Merge two tranches, appending members from the right-hand side.

void
merge(
    NamespaceTranche& I,
    NamespaceTranche&& Other);
» more...

Merge overload sets, preserving ordering in Members.

void
merge(
    OverloadsSymbol& I,
    OverloadsSymbol&& Other);
» more...

Merge two parameters, filling missing pieces from Other.

void
merge(
    Param& I,
    Param&& Other);
» more...

Merge two interfaces, combining matching tranches.

void
merge(
    RecordInterface& I,
    RecordInterface&& Other);
» more...

Merge metadata from another record of the same identity.

void
merge(
    RecordSymbol& I,
    RecordSymbol&& Other);
» more...

Merge two tranches with the same access level.

void
merge(
    RecordTranche& I,
    RecordTranche&& Other);
» more...

Merge the location sets, preferring existing def/primary.

void
merge(
    SourceInfo& I,
    SourceInfo const& Other);
» more...

Merge, transferring ownership from the right-hand side.

void
merge(
    SourceInfo& I,
    SourceInfo&& Other);
» more...

Merges two Symbol objects.

void
merge(
    Symbol& I,
    Symbol&& Other);
» more...

Merge partial template info, filling missing pieces.

void
merge(
    TemplateInfo& I,
    TemplateInfo&& Other);
» more...

Merge typedef symbols, keeping existing info when present.

void
merge(
    TypedefSymbol& I,
    TypedefSymbol&& Other);
» more...

Merge two using-declarations with the same identity.

void
merge(
    UsingSymbol& I,
    UsingSymbol&& Other);
» more...

Merge variable metadata, preserving existing values when set.

void
merge(
    VariableSymbol& I,
    VariableSymbol&& Other);
» more...

Merges two Symbol objects according to the behavior of the derived class.

template<polymorphic_storage_for<Symbol> SymbolTy>
void
merge(
    SymbolTy& I,
    SymbolTy&& Other);
» more...

Merge metadata from another constant expression.

template<class T>
static
void
merge(
    ConstantExprInfo<T>& I,
    ConstantExprInfo<T>&& Other);
» more...

Parameters

Name Description
I Destination symbol to update.
Other Source symbol providing data.

Merge another ConceptSymbol into this one.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Concept.hpp>
void
merge(
    ConceptSymbol& I,
    ConceptSymbol&& Other);

Parameters

Name Description
I Info for concepts.
Other Info for concepts.

Append blocks from other into I, preserving order.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
void
merge(
    DocComment& I,
    DocComment&& other);

Parameters

Name Description
I A processed documentation comment attached to a declaration.
other A processed documentation comment attached to a declaration.

Merge another EnumConstantSymbol into this one.

Synopsis

Declared in <mrdocs/Metadata/Symbol/EnumConstant.hpp>
void
merge(
    EnumConstantSymbol& I,
    EnumConstantSymbol&& Other);

Parameters

Name Description
I Destination symbol to update.
Other Source symbol providing data.

Merge another EnumSymbol into this one.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Enum.hpp>
void
merge(
    EnumSymbol& I,
    EnumSymbol&& Other);

Parameters

Name Description
I Destination symbol to update.
Other Source symbol providing data.

Merge metadata from another expression.

Synopsis

Declared in <mrdocs/Metadata/Expression.hpp>
void
merge(
    ExprInfo& I,
    ExprInfo&& Other);

Parameters

Name Description
I Represents an expression
Other Represents an expression

Merge another FriendInfo into this one.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Friend.hpp>
void
merge(
    FriendInfo& I,
    FriendInfo&& Other);

Parameters

Name Description
I Info for friend declarations.
Other Info for friend declarations.

Merge metadata from another function symbol.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
void
merge(
    FunctionSymbol& I,
    FunctionSymbol&& Other);

Parameters

Name Description
I Destination symbol to update.
Other Source symbol providing additional data.

Merge another GuideSymbol into this one.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Guide.hpp>
void
merge(
    GuideSymbol& I,
    GuideSymbol&& Other);

Parameters

Name Description
I Destination symbol to update.
Other Source symbol providing data.

Merge two alias symbols, preferring existing fields when present.

Synopsis

Declared in <mrdocs/Metadata/Symbol/NamespaceAlias.hpp>
void
merge(
    NamespaceAliasSymbol& I,
    NamespaceAliasSymbol&& Other);

Parameters

Name Description
I Info for namespace aliases.
Other Info for namespace aliases.

Merge two namespaces, keeping existing members stable.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
void
merge(
    NamespaceSymbol& I,
    NamespaceSymbol&& Other);

Parameters

Name Description
I Describes a namespace and its members.
Other Describes a namespace and its members.

Merge two tranches, appending members from the right-hand side.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
void
merge(
    NamespaceTranche& I,
    NamespaceTranche&& Other);

Parameters

Name Description
I Buckets the members that appear inside a namespace.
Other Buckets the members that appear inside a namespace.

Merge overload sets, preserving ordering in Members.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Overloads.hpp>
void
merge(
    OverloadsSymbol& I,
    OverloadsSymbol&& Other);

Parameters

Name Description
I Represents a set of function overloads.
Other Represents a set of function overloads.

Merge two parameters, filling missing pieces from Other.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Param.hpp>
void
merge(
    Param& I,
    Param&& Other);

Parameters

Name Description
I Represents a single function parameter
Other Represents a single function parameter

Merge two interfaces, combining matching tranches.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordInterface.hpp>
void
merge(
    RecordInterface& I,
    RecordInterface&& Other);

Parameters

Name Description
I The aggregated interface for a given struct, class, or union.
Other The aggregated interface for a given struct, class, or union.

Merge metadata from another record of the same identity.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Record.hpp>
void
merge(
    RecordSymbol& I,
    RecordSymbol&& Other);

Parameters

Name Description
I Metadata for struct, class, or union.
Other Metadata for struct, class, or union.

Merge two tranches with the same access level.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordTranche.hpp>
void
merge(
    RecordTranche& I,
    RecordTranche&& Other);

Parameters

Name Description
I A group of members that have the same access specifier.
Other A group of members that have the same access specifier.

Merge the location sets, preferring existing def/primary.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Source.hpp>
void
merge(
    SourceInfo& I,
    SourceInfo const& Other);

Parameters

Name Description
I Stores source information for a declaration.
Other Stores source information for a declaration.

Merge, transferring ownership from the right-hand side.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Source.hpp>
void
merge(
    SourceInfo& I,
    SourceInfo&& Other);

Parameters

Name Description
I Stores source information for a declaration.
Other Stores source information for a declaration.

Merges two Symbol objects.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
void
merge(
    Symbol& I,
    Symbol&& Other);

Description

This function is used to merge two Symbol objects with the same SymbolID. The function assumes that the two Symbol objects are of the same type. If they are not, the function will fail.

Parameters

Name Description
I The Symbol object to merge into.
Other The Symbol object to merge from.

Merge partial template info, filling missing pieces.

Synopsis

Declared in <mrdocs/Metadata/Template.hpp>
void
merge(
    TemplateInfo& I,
    TemplateInfo&& Other);

Parameters

Name Description
I Information about templates and specializations thereof.
Other Information about templates and specializations thereof.

Merge typedef symbols, keeping existing info when present.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Typedef.hpp>
void
merge(
    TypedefSymbol& I,
    TypedefSymbol&& Other);

Parameters

Name Description
I Info for typedef and using declarations.
Other Info for typedef and using declarations.

Merge two using-declarations with the same identity.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Using.hpp>
void
merge(
    UsingSymbol& I,
    UsingSymbol&& Other);

Parameters

Name Description
I Info for using declarations.
Other Info for using declarations.

Merge variable metadata, preserving existing values when set.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
void
merge(
    VariableSymbol& I,
    VariableSymbol&& Other);

Parameters

Name Description
I A variable.
Other A variable.

Merges two Symbol objects according to the behavior of the derived class.

Synopsis

Declared in <mrdocs/Metadata/Symbol.hpp>
template<polymorphic_storage_for<Symbol> SymbolTy>
void
merge(
    SymbolTy& I,
    SymbolTy&& Other);

Parameters

Name Description
I The Symbol object to merge into.
Other The Symbol object to merge from.

Merge metadata from another constant expression.

Synopsis

Declared in <mrdocs/Metadata/Expression.hpp>
template<class T>
static
void
merge(
    ConstantExprInfo<T>& I,
    ConstantExprInfo<T>&& Other);

Parameters

Name Description
I Represents an expression with a (possibly known) value
Other Represents an expression with a (possibly known) value

Compare ExtractionModes and returns the most specific

Synopsis

Declared in <mrdocs/Metadata/Symbol/ExtractionMode.hpp>
constexpr
ExtractionMode
mostSpecific(
    ExtractionMode const a,
    ExtractionMode const b) noexcept;

Description

This function returns the most specific of the two ExtractionModes in terms of number of filters passed.

Return Value

Determine why a symbol is extracted

Parameters

Name Description
a Determine why a symbol is extracted
b Determine why a symbol is extracted

null_of helper that constructs a null T using nullable_traits<T>.

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
template<has_nullable_traits_v T>
T
null_of() noexcept(noexcept(nullable_traits<T>::null()));

Return Value

A null T value.

Pipe a contiguous character range into the adaptor.

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
constexpr
auto
operator|(
    R&& r,
    SplitLinesAdaptor const& a);

Return Value

View over the lines in r.

Parameters

Name Description
r Range to split.
a SplitLines adaptor instance.

Determine if one function would override the other

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
bool
overrides(
    FunctionSymbol const& base,
    FunctionSymbol const& derived);

Return Value

if one function would override the other

Parameters

Name Description
base The base function
derived The derived function

Parse a string view

Synopses

Declared in <mrdocs/Support/Parse.hpp>

Parse a string view

template<HasParse T>
Expected<T>
parse(std::string_view sv);
» more...

Parse a string view

template<HasParse T>
ParseResult
parse(
    std::string_view sv,
    T& value);
» more...

Parameters

Name Description
sv The string view to parse
value The value to store the result

Parse a string view

Synopsis

Declared in <mrdocs/Support/Parse.hpp>
template<HasParse T>
Expected<T>
parse(std::string_view sv);

Description

Parse a string view sv as an object of type T. If parsing fails, the function returns an error.

This overload does not return the ParseResult object containing the pointer to the first character not parsed. Instead, the position of the error is calculated and the error message is formatted with the error position.

This function parses a string view sv into a value of type T. The function calls the parse function for the type T with the sv.data() and sv.data() + sv.size() as the first and last pointers, respectively.

If the parse function returns an error, then the function returns the error.

If the parse function returns success, but there are characters left in the string view, then the function returns an error with the message "trailing characters".

Otherwise, it returns the value.

Return Value

A container holding an error or a value.

Parameters

Name Description
sv The string view to parse

Parse a string view

Synopsis

Declared in <mrdocs/Support/Parse.hpp>
template<HasParse T>
ParseResult
parse(
    std::string_view sv,
    T& value);

Description

This function parses a string view sv into a value of type T. The function calls the parse function for the type T with the sv.data() and sv.data() + sv.size() as the first and last pointers, respectively.

If the parse function returns an error, then the function returns the error.

If the parse function returns success, but there are characters left in the string view, then the function returns an error with the message "trailing characters".

Otherwise, it returns the value.

Return Value

The result of a parse operation.

Parameters

Name Description
sv The string view to parse
value The value to store the result

Reindent code by removing the common leading spaces and adding the specified indent.

Synopsis

Declared in <mrdocs/Support/String.hpp>
std::string
reindentCode(
    std::string_view code,
    std::size_t indent = 0);

Return Value

The modified code block.

Parameters

Name Description
code The code block to unindent.
indent The number of spaces to insert in front of each line after trimming.

Return the substring without leading and trailing horizontal whitespace.

Synopsis

Declared in <mrdocs/Support/String.hpp>
void
replace(
    std::string& s,
    std::string_view from,
    std::string_view to);

Return Value

The modified string.

Parameters

Name Description
s The string to trim.
from The substring to remove.
to The substring to replace with. If this is empty, the substring is removed.

rtrim overloads

Synopses

Declared in <mrdocs/Support/String.hpp>

Return the substring without trailing horizontal whitespace.

constexpr
std::string_view
rtrim(std::string_view const s) noexcept;
» more...

Return the substring without trailing specified characters.

constexpr
std::string_view
rtrim(
    std::string_view const s,
    std::string_view const chars) noexcept;
» more...

Return Value

The modified string.

Parameters

Name Description
s The string to trim.
chars The characters to remove.

Return the substring without trailing horizontal whitespace.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
std::string_view
rtrim(std::string_view const s) noexcept;

Return Value

The modified string.

Parameters

Name Description
s The string to trim.

Return the substring without trailing specified characters.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
std::string_view
rtrim(
    std::string_view const s,
    std::string_view const chars) noexcept;

Return Value

The modified string.

Parameters

Name Description
s The string to trim.
chars The characters to remove.

safeString overloads

Synopses

Declared in <mrdocs/Dom/Value.hpp>

Create a wrapper for a safe string.

dom::Value
safeString(std::string_view str);
» more...

Mark an existing string-like value as safe to emit without escaping.

dom::Value
safeString(dom::Value const& str);
» more...

Return a DOM string ensuring special characters are escaped.

template<std::convertible_to<std::string_view> SV>
dom::Value
safeString(SV const& str);
» more...

Return Value

Parameters

Name Description
str The string to mark as safe

See Also

https://handlebarsjs.com/api-reference/utilities.html#handlebars-safestring-string

Create a wrapper for a safe string.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
dom::Value
safeString(std::string_view str);

Description

This string wrapper prevents the string from being escaped when the template is rendered.

When a helper returns a safe string, it will be marked as safe and will not be escaped when rendered. The string will be rendered as if converted to a dom::Value and rendered as-is.

When constructing the string that will be marked as safe, any external content should be properly escaped using the escapeExpression function to avoid potential security concerns.

Return Value

The safe string wrapper

Parameters

Name Description
str The string to mark as safe

See Also

https://handlebarsjs.com/api-reference/utilities.html#handlebars-safestring-string

Mark an existing string-like value as safe to emit without escaping.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
dom::Value
safeString(dom::Value const& str);

Description

This overload is useful when a helper already produced a dom::Value and only needs to flip the safe-string flag before it is rendered.

Return Value

A variant container for any kind of Dom value.

Parameters

Name Description
str A variant container for any kind of Dom value.

Return a DOM string ensuring special characters are escaped.

Synopsis

Declared in <mrdocs/Dom/Value.hpp>
template<std::convertible_to<std::string_view> SV>
dom::Value
safeString(SV const& str);

Return Value

dom::Value containing the safe string.

Parameters

Name Description
str Source string view convertible type.

Determine if a string starts with one of the specified characters

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
bool
startsWithOneOf(
    std::string_view s,
    std::string_view chars) noexcept;

Return Value

if a string starts with one of the specified characters

Parameters

Name Description
s The string to check.
chars The characters to check for.

swap overloads

Synopses

Declared in <mrdocs/ADT/Optional.hpp>
constexpr
void
swap(
    Error& lhs,
    Error& rhs) noexcept;
» more...
constexpr
void
swap(
    Expected& a,
    Expected& b) noexcept(noexcept(a.swap(b)))
requires requires { a.swap(b); };
» more...

Swap contents with another Expected.

constexpr
void
swap(
    Expected& x,
    Expected& y) noexcept(noexcept(x.swap(y)))
requires requires {x.swap(y);};
» more...
constexpr
void
swap(
    Polymorphic& lhs,
    Polymorphic& rhs) noexcept;
» more...
constexpr
void
swap(
    Unexpected& x,
    Unexpected& y) noexcept(noexcept(x.swap(y)))
requires std::is_swappable_v<E>;
» more...

Swap two Optional references.

template<class T>
constexpr
void
swap(
    Optional<T&>& a,
    Optional<T&>& b) noexcept;
» more...

Parameters

Name Description
a First optional reference.
b Second optional reference.

Synopsis

Declared in <mrdocs/Support/Error.hpp>
constexpr
void
swap(
    Error& lhs,
    Error& rhs) noexcept;

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
void
swap(
    Expected& a,
    Expected& b) noexcept(noexcept(a.swap(b)))
requires requires { a.swap(b); };

Swap contents with another Expected.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
void
swap(
    Expected& x,
    Expected& y) noexcept(noexcept(x.swap(y)))
requires requires {x.swap(y);};

Parameters

Name Description
x A container holding an error or a value.
y A container holding an error or a value.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
constexpr
void
swap(
    Polymorphic& lhs,
    Polymorphic& rhs) noexcept;

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
void
swap(
    Unexpected& x,
    Unexpected& y) noexcept(noexcept(x.swap(y)))
requires std::is_swappable_v<E>;

Swap two Optional references.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<class T>
constexpr
void
swap(
    Optional<T&>& a,
    Optional<T&>& b) noexcept;

Parameters

Name Description
a First optional reference.
b Second optional reference.

tag_invoke overloads

Synopses

Declared in <mrdocs/Metadata/Name/NameBase.hpp>

Serialize the auto kind into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    AutoKind kind);
» more...

Return the SymbolKind from a dom::Value string.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ExtractionMode kind);
» more...

Map a FileKind into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    FileKind kind);
» more...

Map an operator kind to a DOM value (its underlying integer).

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    OperatorKind kind);
» more...

Map a QualifierKind into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    QualifierKind kind);
» more...

Serialize the record key kind into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    RecordKeyKind kind);
» more...

Return the ReferenceKind as a dom::Value string.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ReferenceKind kind);
» more...

Serialize a template-argument kind into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TArgKind kind);
» more...

Serialize the keyword kind into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TParamKeyKind kind);
» more...

Map a TypeKind into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TypeKind kind);
» more...

Return the UsingClass as a dom::Value string.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    UsingClass kind);
» more...

Return the AccessKind as a dom::Value string.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    AccessKind const kind);
» more...

Return the ConstexprKind as a dom::Value string.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ConstexprKind const kind);
» more...

Return the FunctionClass from a dom::Value string.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    FunctionClass const kind);
» more...

Serialize a list kind into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ListKind const kind);
» more...

Map a NameKind into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    NameKind const kind);
» more...

Return the StorageClassKind as a dom::Value string.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    StorageClassKind const kind);
» more...

Return the SymbolKind from a dom::Value string.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    SymbolKind const kind);
» more...

Serialize an alignment enum into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TableAlignmentKind const kind);
» more...

Return the ExplicitInfo as a dom::Value string.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ExplicitInfo const& I);
» more...

Serialize a location into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Location const& loc);
» more...

Serialize source locations into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    SourceInfo const& I);
» more...

Convert SymbolID to dom::Value string in the DOM using toBase16

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    SymbolID const& id);
» more...

Convert a NoexceptInfo to a DOM value.

void
tag_invoke(
    dom::ValueFromTag tag,
    dom::Value& v,
    NoexceptInfo const& info);
» more...

Serialize a base description into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    BaseInfo const& I,
    DomCorpus const* domCorpus);
» more...

Map the ConceptSymbol to a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ConceptSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Return the DocComment as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    DocComment const& I,
    DomCorpus const* domCorpus);
» more...

Map the EnumConstantSymbol to a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    EnumConstantSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map the EnumSymbol to a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    EnumSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map the FriendInfo to a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    FriendInfo const& I,
    DomCorpus const* domCorpus);
» more...

Map the FunctionSymbol to a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    FunctionSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map the GuideSymbol to a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    GuideSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Serialize a name into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Name const& I,
    DomCorpus const* domCorpus);
» more...

Map the NamespaceAliasSymbol to a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    NamespaceAliasSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map the NamespaceSymbol to a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    NamespaceSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map the NamespaceTranche to a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    NamespaceTranche const& I,
    DomCorpus const* domCorpus);
» more...

Map the OverloadsSymbol to a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    OverloadsSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Return the Param as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Param const& p,
    DomCorpus const* domCorpus);
» more...

Map the RecordInterface to a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    RecordInterface const& I,
    DomCorpus const* domCorpus);
» more...

Map the RecordSymbol to a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    RecordSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map the RecordTranche to a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    RecordTranche const& I,
    DomCorpus const* domCorpus);
» more...

Return the Symbol as a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Symbol const& I,
    DomCorpus const* domCorpus);
» more...

Convert SymbolID to dom::Value object in the DOM using Corpus

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    SymbolID const& id,
    DomCorpus const* domCorpus);
» more...

Serialize the argument to a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TArg const& I,
    DomCorpus const* domCorpus);
» more...

Serialize a template parameter into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TParam const& I,
    DomCorpus const* domCorpus);
» more...

Serialize template info into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TemplateInfo const& I,
    DomCorpus const* domCorpus);
» more...

Serialize a Type into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Type const& I,
    DomCorpus const* domCorpus);
» more...

Map the TypedefSymbol to a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TypedefSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map the UsingSymbol to a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    UsingSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map the VariableSymbol to a dom::Value object.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    VariableSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Serialize an optional template info into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Optional<TemplateInfo> const& I,
    DomCorpus const* domCorpus);
» more...

Serialize an optional polymorphic name into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Optional<Polymorphic<Name>> const& I,
    DomCorpus const* domCorpus);
» more...

Serialize an optional polymorphic type into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Optional<Polymorphic<Type>> const& I,
    DomCorpus const* domCorpus);
» more...

Serialize a polymorphic name into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Polymorphic<Name> const& I,
    DomCorpus const* domCorpus);
» more...

Serialize a polymorphic template argument into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Polymorphic<TArg> const& I,
    DomCorpus const* domCorpus);
» more...

Serialize a polymorphic template parameter.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Polymorphic<TParam> const& I,
    DomCorpus const* domCorpus);
» more...

Serialize a polymorphic type into a DOM value.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Polymorphic<Type> const& I,
    DomCorpus const* domCorpus);
» more...

Convert SymbolID pointers to dom::Value or null.

void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    std::unique_ptr<SymbolID> const& t,
    DomCorpus const* domCorpus);
» more...

Map the DocComment to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag,
    IO& io,
    DocComment const& I,
    DomCorpus const* domCorpus);
» more...

Map a NamespaceTranche to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag,
    IO& io,
    NamespaceTranche const& I,
    DomCorpus const* domCorpus);
» more...

Map a RecordInterface to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag,
    IO& io,
    RecordInterface const& I,
    DomCorpus const*);
» more...

Map a RecordTranche to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag,
    IO& io,
    RecordTranche const& I,
    DomCorpus const* domCorpus);
» more...

Map the Symbol to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag,
    IO& io,
    Symbol const& I,
    DomCorpus const* domCorpus);
» more...

Map a ConceptSymbol to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ConceptSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map a EnumConstantSymbol to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    EnumConstantSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map a EnumSymbol to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    EnumSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map a FriendInfo to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    FriendInfo const& I,
    DomCorpus const* domCorpus);
» more...

Map a FunctionSymbol to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    FunctionSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map a GuideSymbol to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    GuideSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map a NamespaceAliasSymbol to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    NamespaceAliasSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map a NamespaceSymbol to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    NamespaceSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map a OverloadsSymbol to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    OverloadsSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map a RecordSymbol to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    RecordSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map a TypedefSymbol to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    TypedefSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map a UsingSymbol to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    UsingSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map a VariableSymbol to a dom::Object.

template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    VariableSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Map the Polymorphic Symbol to a dom::Object.

template<
    class IO,
    polymorphic_storage_for<Symbol> PolymorphicSymbol>
requires std::derived_from<PolymorphicSymbol, Symbol>
void
tag_invoke(
    dom::LazyObjectMapTag,
    IO& io,
    PolymorphicSymbol const& I,
    DomCorpus const* domCorpus);
» more...

Parameters

Name Description
v Destination value to populate.
kind File category to serialize.
I The ExplicitInfo to convert.
domCorpus The DomCorpus used to resolve references.
t The SymbolID pointer to convert. If null, the dom::Value is set to null.
io The output object.

Serialize the auto kind into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/Type/AutoKind.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    AutoKind kind);

Parameters

Name Description
v A variant container for any kind of Dom value.
kind The kind of auto keyword used in a declaration.

Return the SymbolKind from a dom::Value string.

Synopsis

Declared in <mrdocs/Metadata/Symbol/ExtractionMode.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ExtractionMode kind);

Parameters

Name Description
v A variant container for any kind of Dom value.
kind Determine why a symbol is extracted

Map a FileKind into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/Symbol/FileKind.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    FileKind kind);

Parameters

Name Description
v Destination value to populate.
kind File category to serialize.

Map an operator kind to a DOM value (its underlying integer).

Synopsis

Declared in <mrdocs/Metadata/Specifiers/OperatorKind.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    OperatorKind kind);

Parameters

Name Description
v A variant container for any kind of Dom value.
kind Operator kinds

Map a QualifierKind into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/Type/QualifierKind.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    QualifierKind kind);

Parameters

Name Description
v A variant container for any kind of Dom value.
kind Type qualifiers

Serialize the record key kind into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordKeyKind.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    RecordKeyKind kind);

Parameters

Name Description
v A variant container for any kind of Dom value.
kind The kind of record: struct, class, or union.

Return the ReferenceKind as a dom::Value string.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/ReferenceKind.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ReferenceKind kind);

Parameters

Name Description
v A variant container for any kind of Dom value.
kind Reference type kinds

Serialize a template-argument kind into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgKind.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TArgKind kind);

Parameters

Name Description
v A variant container for any kind of Dom value.
kind The kind of template argument.

Serialize the keyword kind into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamKeyKind.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TParamKeyKind kind);

Parameters

Name Description
v A variant container for any kind of Dom value.
kind The keyword a template parameter was declared with

Map a TypeKind into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeKind.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TypeKind kind);

Parameters

Name Description
v A variant container for any kind of Dom value.
kind Variants of C++ types captured in metadata.

Return the UsingClass as a dom::Value string.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Using.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    UsingClass kind);

Parameters

Name Description
v The output value.
kind The UsingClass to convert.

Return the AccessKind as a dom::Value string.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/AccessKind.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    AccessKind const kind);

Parameters

Name Description
v A variant container for any kind of Dom value.
kind Access specifier.

Return the ConstexprKind as a dom::Value string.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/ConstexprKind.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ConstexprKind const kind);

Parameters

Name Description
v A variant container for any kind of Dom value.
kind constexpr/consteval specifier kinds

Return the FunctionClass from a dom::Value string.

Synopsis

Declared in <mrdocs/Metadata/Symbol/FunctionClass.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    FunctionClass const kind);

Parameters

Name Description
v A variant container for any kind of Dom value.
kind Function classifications

Serialize a list kind into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ListKind.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ListKind const kind);

Parameters

Name Description
v Destination value.
kind List kind to serialize.

Map a NameKind into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/Name/NameKind.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    NameKind const kind);

Parameters

Name Description
v A variant container for any kind of Dom value.
kind Kinds of names that appear in type and symbol metadata.

Return the StorageClassKind as a dom::Value string.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/StorageClassKind.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    StorageClassKind const kind);

Parameters

Name Description
v A variant container for any kind of Dom value.
kind Storage class kinds

Return the SymbolKind from a dom::Value string.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolKind.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    SymbolKind const kind);

Parameters

Name Description
v A variant container for any kind of Dom value.
kind Info variant discriminator

Serialize an alignment enum into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableAlignmentKind.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TableAlignmentKind const kind);

Parameters

Name Description
v Destination value.
kind Alignment to serialize.

Return the ExplicitInfo as a dom::Value string.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/ExplicitInfo.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ExplicitInfo const& I);

Parameters

Name Description
v The output parameter to receive the dom::Value.
I The ExplicitInfo to convert.

Serialize a location into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Location.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Location const& loc);

Parameters

Name Description
v A variant container for any kind of Dom value.
loc Source location of a symbol or entity.

Serialize source locations into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Source.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    SourceInfo const& I);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Stores source information for a declaration.

Convert SymbolID to dom::Value string in the DOM using toBase16

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    SymbolID const& id);

Parameters

Name Description
v A variant container for any kind of Dom value.
id A unique identifier for a symbol.

Convert a NoexceptInfo to a DOM value.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/NoexceptInfo.hpp>
void
tag_invoke(
    dom::ValueFromTag tag,
    dom::Value& v,
    NoexceptInfo const& info);

Parameters

Name Description
tag Customization point tag.
v A variant container for any kind of Dom value.
info Captures a noexcept specification and its evaluated form.

Serialize a base description into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordBase.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    BaseInfo const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Metadata for a direct base.
domCorpus Front-end factory for producing Dom nodes.

Map the ConceptSymbol to a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Concept.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    ConceptSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Info for concepts.
domCorpus Front-end factory for producing Dom nodes.

Return the DocComment as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    DocComment const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A processed documentation comment attached to a declaration.
domCorpus Front-end factory for producing Dom nodes.

Map the EnumConstantSymbol to a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/EnumConstant.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    EnumConstantSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Info for enum constants.
domCorpus Front-end factory for producing Dom nodes.

Map the EnumSymbol to a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Enum.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    EnumSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v The output parameter to receive the dom::Value.
I The EnumSymbol to convert.
domCorpus The DomCorpus used to resolve references.

Map the FriendInfo to a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Friend.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    FriendInfo const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Info for friend declarations.
domCorpus Front-end factory for producing Dom nodes.

Map the FunctionSymbol to a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    FunctionSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v The output parameter to receive the dom::Value.
I The FunctionSymbol to convert.
domCorpus The DomCorpus used to resolve references.

Map the GuideSymbol to a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Guide.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    GuideSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Info for deduction guides.
domCorpus Front-end factory for producing Dom nodes.

Serialize a name into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/Name/NameBase.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Name const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Represents a name for a named Type
domCorpus Front-end factory for producing Dom nodes.

Map the NamespaceAliasSymbol to a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/NamespaceAlias.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    NamespaceAliasSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Info for namespace aliases.
domCorpus Front-end factory for producing Dom nodes.

Map the NamespaceSymbol to a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    NamespaceSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Describes a namespace and its members.
domCorpus Front-end factory for producing Dom nodes.

Map the NamespaceTranche to a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    NamespaceTranche const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Buckets the members that appear inside a namespace.
domCorpus Front-end factory for producing Dom nodes.

Map the OverloadsSymbol to a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Overloads.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    OverloadsSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Represents a set of function overloads.
domCorpus Front-end factory for producing Dom nodes.

Return the Param as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Param.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Param const& p,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
p Represents a single function parameter
domCorpus Front-end factory for producing Dom nodes.

Map the RecordInterface to a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordInterface.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    RecordInterface const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I The aggregated interface for a given struct, class, or union.
domCorpus Front-end factory for producing Dom nodes.

Map the RecordSymbol to a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Record.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    RecordSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Metadata for struct, class, or union.
domCorpus Front-end factory for producing Dom nodes.

Map the RecordTranche to a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordTranche.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    RecordTranche const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A group of members that have the same access specifier.
domCorpus Front-end factory for producing Dom nodes.

Return the Symbol as a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Symbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Base class with common properties of all symbols
domCorpus Front-end factory for producing Dom nodes.

Convert SymbolID to dom::Value object in the DOM using Corpus

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    SymbolID const& id,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
id A unique identifier for a symbol.
domCorpus Front-end factory for producing Dom nodes.

Serialize the argument to a DOM value.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TArg const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Base class for any template argument.
domCorpus Front-end factory for producing Dom nodes.

Serialize a template parameter into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamBase.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TParam const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Base class for a template parameter declaration.
domCorpus Front-end factory for producing Dom nodes.

Serialize template info into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/Template.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TemplateInfo const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Information about templates and specializations thereof.
domCorpus Front-end factory for producing Dom nodes.

Serialize a Type into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeBase.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Type const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A possibly qualified type.
domCorpus Front-end factory for producing Dom nodes.

Map the TypedefSymbol to a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Typedef.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    TypedefSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v The output parameter to receive the dom::Value.
I The TypedefSymbol to convert.
domCorpus The DomCorpus used to resolve references.

Map the UsingSymbol to a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Using.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    UsingSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I Info for using declarations.
domCorpus Front-end factory for producing Dom nodes.

Map the VariableSymbol to a dom::Value object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    VariableSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A variable.
domCorpus Front-end factory for producing Dom nodes.

Serialize an optional template info into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/Template.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Optional<TemplateInfo> const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A compact optional that automatically uses nullable_traits<T> when available.
domCorpus Front-end factory for producing Dom nodes.

Serialize an optional polymorphic name into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/Name.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Optional<Polymorphic<Name>> const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A compact optional that automatically uses nullable_traits<T> when available.
domCorpus Front-end factory for producing Dom nodes.

Serialize an optional polymorphic type into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/Type.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Optional<Polymorphic<Type>> const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A compact optional that automatically uses nullable_traits<T> when available.
domCorpus Front-end factory for producing Dom nodes.

Serialize a polymorphic name into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/Name.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Polymorphic<Name> const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A polymorphic value-type.
domCorpus Front-end factory for producing Dom nodes.

Serialize a polymorphic template argument into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/TArg.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Polymorphic<TArg> const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A polymorphic value-type.
domCorpus Front-end factory for producing Dom nodes.

Serialize a polymorphic template parameter.

Synopsis

Declared in <mrdocs/Metadata/TParam.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Polymorphic<TParam> const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A polymorphic value-type.
domCorpus Front-end factory for producing Dom nodes.

Serialize a polymorphic type into a DOM value.

Synopsis

Declared in <mrdocs/Metadata/Type.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    Polymorphic<Type> const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
v A variant container for any kind of Dom value.
I A polymorphic value-type.
domCorpus Front-end factory for producing Dom nodes.

Convert SymbolID pointers to dom::Value or null.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
void
tag_invoke(
    dom::ValueFromTag,
    dom::Value& v,
    std::unique_ptr<SymbolID> const& t,
    DomCorpus const* domCorpus);

Parameters

Name Description
v The output parameter to receive the dom::Value.
t The SymbolID pointer to convert. If null, the dom::Value is set to null.
domCorpus The DomCorpus to use, or nullptr. If null, the SymbolID is converted to a base16 string.

Map the DocComment to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag,
    IO& io,
    DocComment const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
io The output object.
I The DocComment to map.
domCorpus The DOM corpus, or nullptr.

Map a NamespaceTranche to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag,
    IO& io,
    NamespaceTranche const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
io The IO object to use for mapping.
I The NamespaceTranche to map.
domCorpus The DomCorpus used to create the DOM values.

Map a RecordInterface to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordInterface.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag,
    IO& io,
    RecordInterface const& I,
    DomCorpus const*);

Parameters

Name Description
io The output parameter to receive the dom::Object.
I The RecordInterface to convert.

Map a RecordTranche to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordTranche.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag,
    IO& io,
    RecordTranche const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
io The output parameter to receive the dom::Object.
I The RecordTranche to convert.
domCorpus The DomCorpus used to resolve references.

Map the Symbol to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolBase.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag,
    IO& io,
    Symbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
io The output parameter to receive the dom::Object.
I The Symbol to convert.
domCorpus The DomCorpus used to resolve references.

Map a ConceptSymbol to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Concept.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    ConceptSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag type.
io The IO object to use for mapping.
I The ConceptSymbol to map.
domCorpus The DomCorpus used to create

Map a EnumConstantSymbol to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/EnumConstant.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    EnumConstantSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag type.
io The IO object to use for mapping.
I The EnumConstantSymbol to map.
domCorpus The DomCorpus used to create

Map a EnumSymbol to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Enum.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    EnumSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag type.
io The IO object to use for mapping.
I The EnumSymbol to map.
domCorpus The DomCorpus used to create

Map a FriendInfo to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Friend.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    FriendInfo const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag type.
io The IO object to use for mapping.
I The FriendInfo to map.
domCorpus The DomCorpus used to create

Map a FunctionSymbol to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Function.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    FunctionSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag type.
io The IO object to use for mapping.
I The FunctionSymbol to map.
domCorpus The DomCorpus used to create

Map a GuideSymbol to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Guide.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    GuideSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag type.
io The IO object to use for mapping.
I The GuideSymbol to map.
domCorpus The DomCorpus used to create

Map a NamespaceAliasSymbol to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/NamespaceAlias.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    NamespaceAliasSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag type.
io The IO object to use for mapping.
I The NamespaceAliasSymbol to map.
domCorpus The DomCorpus used to create

Map a NamespaceSymbol to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Namespace.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    NamespaceSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag type.
io The IO object to use for mapping.
I The NamespaceSymbol to map.
domCorpus The DomCorpus used to create

Map a OverloadsSymbol to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Overloads.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    OverloadsSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag type.
io The IO object to use for mapping.
I The OverloadsSymbol to map.
domCorpus The DomCorpus used to create

Map a RecordSymbol to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Record.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    RecordSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag type.
io The IO object to use for mapping.
I The RecordSymbol to map.
domCorpus The DomCorpus used to create

Map a TypedefSymbol to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Typedef.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    TypedefSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag type.
io The IO object to use for mapping.
I The TypedefSymbol to map.
domCorpus The DomCorpus used to create

Map a UsingSymbol to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Using.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    UsingSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag type.
io The IO object to use for mapping.
I The UsingSymbol to map.
domCorpus The DomCorpus used to create

Map a VariableSymbol to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/Symbol/Variable.hpp>
template<class IO>
void
tag_invoke(
    dom::LazyObjectMapTag t,
    IO& io,
    VariableSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
t The tag type.
io The IO object to use for mapping.
I The VariableSymbol to map.
domCorpus The DomCorpus used to create

Map the Polymorphic Symbol to a dom::Object.

Synopsis

Declared in <mrdocs/Metadata/Symbol.hpp>
template<
    class IO,
    polymorphic_storage_for<Symbol> PolymorphicSymbol>
requires std::derived_from<PolymorphicSymbol, Symbol>
void
tag_invoke(
    dom::LazyObjectMapTag,
    IO& io,
    PolymorphicSymbol const& I,
    DomCorpus const* domCorpus);

Parameters

Name Description
io The output parameter to receive the dom::Object.
I The polymorphic Symbol to convert.
domCorpus The DomCorpus used to resolve references.

Convert a SymbolID to a string

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolID.hpp>
std::string
toBase16Str(SymbolID const& id);

Return Value

The base16 string representation of the SymbolID.

Parameters

Name Description
id The SymbolID to convert.

Convert a string to camelCase using ASCII letter rules.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
std::string
toCamelCase(std::string_view const input);

Return Value

New string converted to camelCase.

Parameters

Name Description
input Source string.

Convert a string to kebab-case using ASCII letter rules.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
std::string
toKebabCase(std::string_view const input);

Return Value

New string converted to kebab-case.

Parameters

Name Description
input Source string.

toLowerCase overloads

Synopses

Declared in <mrdocs/Support/String.hpp>

Return a lowercase copy of the string without locale.

constexpr
std::string
toLowerCase(std::string_view const s) noexcept;
» more...

Convert a character to lowercase ASCII without locale.

constexpr
char
toLowerCase(char const c) noexcept;
» more...

Return Value

Parameters

Name Description
s Input string.
c Character to convert.

Return a lowercase copy of the string without locale.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
std::string
toLowerCase(std::string_view const s) noexcept;

Return Value

Lowercase copy of s.

Parameters

Name Description
s Input string.

Convert a character to lowercase ASCII without locale.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
char
toLowerCase(char const c) noexcept;

Return Value

Lowercase version of c if it is uppercase; otherwise c.

Parameters

Name Description
c Character to convert.

Convert a string to PascalCase using ASCII letter rules.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
std::string
toPascalCase(std::string_view const input);

Return Value

New string converted to PascalCase.

Parameters

Name Description
input Source string.

Convert a string to snake_case using ASCII letter rules.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
std::string
toSnakeCase(std::string_view const input);

Return Value

New string converted to snake_case.

Parameters

Name Description
input Source string.

toString overloads

Synopses

Declared in <mrdocs/Metadata/Name/NameBase.hpp>

Convert access specifier to its string form.

dom::String
toString(AccessKind kind) noexcept;
» more...

Convert an auto-kind to its spelling.

dom::String
toString(AutoKind kind) noexcept;
» more...

Convert a constexpr/consteval specifier kind to a string.

dom::String
toString(ConstexprKind kind) noexcept;
» more...

Convert an explicit kind to its string form.

dom::String
toString(ExplicitKind kind) noexcept;
» more...

Return the name of the SymbolKind as a string.

constexpr
std::string_view
toString(ExtractionMode kind) noexcept;
» more...

Convert a FileKind to its string form.

std::string_view
toString(FileKind kind);
» more...

Convert a function class to string form.

dom::String
toString(FunctionClass kind) noexcept;
» more...

Convert a FundamentalTypeKind to a string.

std::string_view
toString(FundamentalTypeKind kind) noexcept;
» more...

Convert a list kind enum to its string name.

dom::String
toString(ListKind kind) noexcept;
» more...

Convert a NameKind to its string form.

dom::String
toString(NameKind kind) noexcept;
» more...

Convert a noexcept kind to its string form.

dom::String
toString(NoexceptKind kind) noexcept;
» more...

Convert a cv/ref qualifier kind to its string form.

dom::String
toString(QualifierKind kind) noexcept;
» more...

Convert the key kind to its canonical string form.

dom::String
toString(RecordKeyKind kind) noexcept;
» more...

Convert a reference kind to its string representation.

dom::String
toString(ReferenceKind kind) noexcept;
» more...

Convert a storage class kind to its string form.

dom::String
toString(StorageClassKind kind) noexcept;
» more...

Return the name of the SymbolKind as a string.

dom::String
toString(SymbolKind kind) noexcept;
» more...

Convert a template-argument kind to a string.

std::string_view
toString(TArgKind kind) noexcept;
» more...

Convert the keyword kind to its string form.

std::string_view
toString(TParamKeyKind kind) noexcept;
» more...

Convert a parameter kind to a readable string.

std::string_view
toString(TParamKind kind) noexcept;
» more...

Convert an alignment enum to its string representation.

dom::String
toString(TableAlignmentKind kind) noexcept;
» more...

Convert the specialization kind to a readable string.

std::string_view
toString(TemplateSpecKind kind);
» more...

Convert a TypeKind to its string representation.

dom::String
toString(TypeKind kind) noexcept;
» more...

Convert the name to a human-readable string.

std::string
toString(Name const& N);
» more...

Convert a template argument to a human-readable string.

std::string
toString(TArg const& arg) noexcept;
» more...

Render a type to a human-readable string.

std::string
toString(
    Type const& T,
    std::string_view Name = "");
» more...

Convert ExplicitInfo to a string.

dom::String
toString(
    ExplicitInfo const& info,
    bool resolved = false,
    bool implicit = false);
» more...

Convert NoexceptInfo to a string.

dom::String
toString(
    NoexceptInfo const& info,
    bool resolved = false,
    bool implicit = false);
» more...

Return Value

Parameters

Name Description
kind File category to stringify.
T Type to render.
Name Optional identifier to append.
info The explicit-specifier information.
resolved If true, the operand is not shown when the explicit-specifier is non-dependent.
implicit If true, implicit explicit-specifiers are shown.

Convert access specifier to its string form.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/AccessKind.hpp>
dom::String
toString(AccessKind kind) noexcept;

Return Value

UTF-8 string value used by the DOM.

Parameters

Name Description
kind Access specifier.

Convert an auto-kind to its spelling.

Synopsis

Declared in <mrdocs/Metadata/Type/AutoKind.hpp>
dom::String
toString(AutoKind kind) noexcept;

Return Value

String naming the keyword.

Parameters

Name Description
kind The kind of auto keyword used in a declaration.

Convert a constexpr/consteval specifier kind to a string.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/ConstexprKind.hpp>
dom::String
toString(ConstexprKind kind) noexcept;

Return Value

UTF-8 string value used by the DOM.

Parameters

Name Description
kind constexpr/consteval specifier kinds

Convert an explicit kind to its string form.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/ExplicitKind.hpp>
dom::String
toString(ExplicitKind kind) noexcept;

Return Value

UTF-8 string value used by the DOM.

Parameters

Name Description
kind Explicit specifier kinds

Return the name of the SymbolKind as a string.

Synopsis

Declared in <mrdocs/Metadata/Symbol/ExtractionMode.hpp>
constexpr
std::string_view
toString(ExtractionMode kind) noexcept;

Return Value

the name of the SymbolKind as a string.

Parameters

Name Description
kind Determine why a symbol is extracted

Convert a FileKind to its string form.

Synopsis

Declared in <mrdocs/Metadata/Symbol/FileKind.hpp>
std::string_view
toString(FileKind kind);

Return Value

String view describing the kind.

Parameters

Name Description
kind File category to stringify.

Convert a function class to string form.

Synopsis

Declared in <mrdocs/Metadata/Symbol/FunctionClass.hpp>
dom::String
toString(FunctionClass kind) noexcept;

Return Value

UTF-8 string value used by the DOM.

Parameters

Name Description
kind Function classifications

Convert a FundamentalTypeKind to a string.

Synopsis

Declared in <mrdocs/Metadata/Type/FundamentalTypeKind.hpp>
std::string_view
toString(FundamentalTypeKind kind) noexcept;

Description

This function converts a FundamentalTypeKind to the shortest canonical string representing the type.

Return Value

The string representation of the kind

Parameters

Name Description
kind Categorically describes a fundamental type.

Convert a list kind enum to its string name.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/ListKind.hpp>
dom::String
toString(ListKind kind) noexcept;

Return Value

UTF-8 string value used by the DOM.

Parameters

Name Description
kind Classification of list ordering.

Convert a NameKind to its string form.

Synopsis

Declared in <mrdocs/Metadata/Name/NameKind.hpp>
dom::String
toString(NameKind kind) noexcept;

Return Value

UTF-8 string value used by the DOM.

Parameters

Name Description
kind Kinds of names that appear in type and symbol metadata.

Convert a noexcept kind to its string form.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/NoexceptKind.hpp>
dom::String
toString(NoexceptKind kind) noexcept;

Return Value

UTF-8 string value used by the DOM.

Parameters

Name Description
kind Exception specification kinds

Convert a cv/ref qualifier kind to its string form.

Synopsis

Declared in <mrdocs/Metadata/Type/QualifierKind.hpp>
dom::String
toString(QualifierKind kind) noexcept;

Return Value

UTF-8 string value used by the DOM.

Parameters

Name Description
kind Type qualifiers

Convert the key kind to its canonical string form.

Synopsis

Declared in <mrdocs/Metadata/Symbol/RecordKeyKind.hpp>
dom::String
toString(RecordKeyKind kind) noexcept;

Return Value

UTF-8 string value used by the DOM.

Parameters

Name Description
kind The kind of record: struct, class, or union.

Convert a reference kind to its string representation.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/ReferenceKind.hpp>
dom::String
toString(ReferenceKind kind) noexcept;

Return Value

UTF-8 string value used by the DOM.

Parameters

Name Description
kind Reference type kinds

Convert a storage class kind to its string form.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/StorageClassKind.hpp>
dom::String
toString(StorageClassKind kind) noexcept;

Return Value

UTF-8 string value used by the DOM.

Parameters

Name Description
kind Storage class kinds

Return the name of the SymbolKind as a string.

Synopsis

Declared in <mrdocs/Metadata/Symbol/SymbolKind.hpp>
dom::String
toString(SymbolKind kind) noexcept;

Return Value

the name of the SymbolKind as a string.

Parameters

Name Description
kind Info variant discriminator

Convert a template-argument kind to a string.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgKind.hpp>
std::string_view
toString(TArgKind kind) noexcept;

Return Value

String view naming the argument kind.

Parameters

Name Description
kind The kind of template argument.

Convert the keyword kind to its string form.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamKeyKind.hpp>
std::string_view
toString(TParamKeyKind kind) noexcept;

Return Value

String view naming the keyword.

Parameters

Name Description
kind The keyword a template parameter was declared with

Convert a parameter kind to a readable string.

Synopsis

Declared in <mrdocs/Metadata/TParam/TParamKind.hpp>
std::string_view
toString(TParamKind kind) noexcept;

Return Value

String view naming the parameter category.

Parameters

Name Description
kind Discriminates the different template parameter categories.

Convert an alignment enum to its string representation.

Synopsis

Declared in <mrdocs/Metadata/DocComment/Block/TableAlignmentKind.hpp>
dom::String
toString(TableAlignmentKind kind) noexcept;

Return Value

UTF-8 string value used by the DOM.

Parameters

Name Description
kind Horizontal alignment for table columns.

Convert the specialization kind to a readable string.

Synopsis

Declared in <mrdocs/Metadata/Template.hpp>
std::string_view
toString(TemplateSpecKind kind);

Return Value

String view naming the specialization category.

Parameters

Name Description
kind The kind of template or specialization.

Convert a TypeKind to its string representation.

Synopsis

Declared in <mrdocs/Metadata/Type/TypeKind.hpp>
dom::String
toString(TypeKind kind) noexcept;

Return Value

UTF-8 string value used by the DOM.

Parameters

Name Description
kind Variants of C++ types captured in metadata.

Convert the name to a human-readable string.

Synopsis

Declared in <mrdocs/Metadata/Name/NameBase.hpp>
std::string
toString(Name const& N);

Return Value

The textual form of the name.

Parameters

Name Description
N Represents a name for a named Type

Convert a template argument to a human-readable string.

Synopsis

Declared in <mrdocs/Metadata/TArg/TArgBase.hpp>
std::string
toString(TArg const& arg) noexcept;

Return Value

Descriptive text for the argument.

Parameters

Name Description
arg Base class for any template argument.

Render a type to a human-readable string.

Synopsis

Declared in <mrdocs/Metadata/Type.hpp>
std::string
toString(
    Type const& T,
    std::string_view Name = "");

Return Value

Text representation of the type.

Parameters

Name Description
T Type to render.
Name Optional identifier to append.

Convert ExplicitInfo to a string.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/ExplicitInfo.hpp>
dom::String
toString(
    ExplicitInfo const& info,
    bool resolved = false,
    bool implicit = false);

Return Value

The string representation of the explicit-specifier.

Parameters

Name Description
info The explicit-specifier information.
resolved If true, the operand is not shown when the explicit-specifier is non-dependent.
implicit If true, implicit explicit-specifiers are shown.

Convert NoexceptInfo to a string.

Synopsis

Declared in <mrdocs/Metadata/Specifiers/NoexceptInfo.hpp>
dom::String
toString(
    NoexceptInfo const& info,
    bool resolved = false,
    bool implicit = false);

Return Value

The string representation of the noexcept-specifier.

Parameters

Name Description
info The noexcept-specifier information.
resolved If true, the operand is not shown when the exception specification is non-dependent.
implicit If true, implicit exception specifications are shown.

toUpperCase overloads

Synopses

Declared in <mrdocs/Support/String.hpp>

Return an uppercase copy of the string without locale.

constexpr
std::string
toUpperCase(std::string_view const s) noexcept;
» more...

Convert a character to uppercase ASCII without locale.

constexpr
char
toUpperCase(char const c) noexcept;
» more...

Return Value

Parameters

Name Description
s Input string.
c Character to convert.

Return an uppercase copy of the string without locale.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
std::string
toUpperCase(std::string_view const s) noexcept;

Return Value

Uppercase copy of s.

Parameters

Name Description
s Input string.

Convert a character to uppercase ASCII without locale.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
char
toUpperCase(char const c) noexcept;

Return Value

Uppercase version of c if it is lowercase; otherwise c.

Parameters

Name Description
c Character to convert.

Return the value as its underlying type.

Synopsis

Declared in <mrdocs/Support/TypeTraits.hpp>
template<class Enum>
requires std::is_enum_v<Enum>
constexpr
std::underlying_type_t<Enum>
to_underlying(Enum value) noexcept;

Return Value

the value as its underlying type.

Parameters

Name Description
value The enum value to convert

Traverse a DocComment tree top-down (pre-order).

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
template<
    DocCommentNodeTraversable T,
    class F>
void
topDownTraverse(
    T& node,
    F&& func);

Parameters

Name Description
node Root node to traverse.
func Visitor invoked before children are visited.

trim overloads

Synopses

Declared in <mrdocs/Support/String.hpp>

Return the substring without leading and trailing horizontal whitespace.

constexpr
std::string_view
trim(std::string_view const s) noexcept;
» more...

Return the substring without leading and trailing specified characters.

constexpr
std::string_view
trim(
    std::string_view const s,
    std::string_view const chars) noexcept;
» more...

Return Value

The modified string.

Parameters

Name Description
s The string to trim.
chars The characters to remove.

Return the substring without leading and trailing horizontal whitespace.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
std::string_view
trim(std::string_view const s) noexcept;

Return Value

The modified string.

Parameters

Name Description
s The string to trim.

Return the substring without leading and trailing specified characters.

Synopsis

Declared in <mrdocs/Support/String.hpp>
constexpr
std::string_view
trim(
    std::string_view const s,
    std::string_view const chars) noexcept;

Return Value

The modified string.

Parameters

Name Description
s The string to trim.
chars The characters to remove.

visit overloads

Synopses

Declared in <mrdocs/Metadata/TParam.hpp>

Visit a template parameter, dispatching to its concrete type.

template<
    typename TParamTy,
    typename F,
    typename... Args>
requires std::derived_from<TParamTy, TParam>
constexpr
decltype(auto)
visit(
    TParamTy& P,
    F&& f,
    Args&&... args);
» more...

Visit a Type with the provided callable.

template<
    std::derived_from<Symbol> TypeTy,
    class F,
    class... Args>
constexpr
decltype(auto)
visit(
    TypeTy& info,
    F&& fn,
    Args&&... args);
» more...

Return Value

Parameters

Name Description
P Parameter to visit.
f Callable to receive the concrete parameter.
args Additional arguments forwarded to the callable.
info The type instance to visit.
fn The callable to dispatch to the concrete type.

Visit a template parameter, dispatching to its concrete type.

Synopsis

Declared in <mrdocs/Metadata/TParam.hpp>
template<
    typename TParamTy,
    typename F,
    typename... Args>
requires std::derived_from<TParamTy, TParam>
constexpr
decltype(auto)
visit(
    TParamTy& P,
    F&& f,
    Args&&... args);

Return Value

Whatever the callable returns.

Parameters

Name Description
P Parameter to visit.
f Callable to receive the concrete parameter.
args Additional arguments forwarded to the callable.

Visit a Type with the provided callable.

Synopsis

Declared in <mrdocs/Metadata/Type.hpp>
template<
    std::derived_from<Symbol> TypeTy,
    class F,
    class... Args>
constexpr
decltype(auto)
visit(
    TypeTy& info,
    F&& fn,
    Args&&... args);

Description

Visit a template argument, dispatching on its concrete kind.

Invoke a function object with a type derived from Symbol

This function will invoke the function object fn with a type derived from Symbol as the first argument, followed by args.... The type of the first argument is determined by the SymbolKind of the Symbol object.

Return Value

Parameters

Name Description
info The type instance to visit.
fn The callable to dispatch to the concrete type.
args Additional arguments forwarded to the callable.

Visits a std::variant and calls the combined callable with the active index and the value.

Synopsis

Declared in <mrdocs/ADT/Overload.hpp>
template<
    class Variant,
    class... Ts>
constexpr
decltype(auto)
visitIndexed(
    Variant&& v,
    Ts&&... xs);

Description

Unlike match, visitIndexed passes an additional first parameter to your callable set: the runtime index of the active alternative (as a std::size_t).

This is useful when you need both the value and which alternative was selected, without relying on type-unique alternatives.

The supplied callables are combined via makeOverload and are expected to accept a signature like (std::size_t index, T value) for the relevant T.

std::variant<int, double, std::string> v = 3.14; fn::visitIndexed(v, [](std::size_t i, int x) { return i + x; }, [](std::size_t i, double d) { return d + i; }, [](std::size_t i, const std::string& s) { return s.size() + i; });

Return Value

The result of invoking the selected callable.

Parameters

Name Description
v The variant to visit.
xs The callables to be combined with makeOverload and invoked with (index, value).

Factory that creates a YCombinator from a callable.

Synopsis

Declared in <mrdocs/ADT/Overload.hpp>
template<class F>
[[nodiscard]]
constexpr
YCombinator<std::decay_t<F>>
yCombinator(F&& f) noexcept(std::is_nothrow_constructible_v<std::decay_t<F>, F &&>);

Description

Prefer this helper to avoid spelling template arguments explicitly.

auto fib = fn::yCombinator( []self, int n) -> int { return n <= 1 ? n : self(n - 1) + self(n - 2); });

Return Value

A YCombinator storing a decayed copy of the callable.

Parameters

Name Description
f The callable to wrap.

Write to output

Synopses

Declared in <mrdocs/Support/Handlebars.hpp>

Write to output

OutputRef&
operator<<(
    OutputRef& os,
    T v);
» more...

Write to output

OutputRef&
operator<<(
    OutputRef& os,
    char const* c);
» more...

Write to output

OutputRef&
operator<<(
    OutputRef& os,
    char c);
» more...

Write to output

OutputRef&
operator<<(
    OutputRef& os,
    std::string_view sv);
» more...

Return Value

A reference to this object

Parameters

Name Description
os The output stream reference
v The character to write
c The string to write
sv The string to write

Write to output

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
OutputRef&
operator<<(
    OutputRef& os,
    T v);

Return Value

A reference to this object

Parameters

Name Description
os The output stream reference
v The character to write

Write to output

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
OutputRef&
operator<<(
    OutputRef& os,
    char const* c);

Return Value

A reference to this object

Parameters

Name Description
os The output stream reference
c The string to write

Write to output

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
OutputRef&
operator<<(
    OutputRef& os,
    char c);

Return Value

A reference to this object

Parameters

Name Description
os The output stream reference
c The character to write

Write to output

Synopsis

Declared in <mrdocs/Support/Handlebars.hpp>
OutputRef&
operator<<(
    OutputRef& os,
    std::string_view sv);

Return Value

A reference to this object

Parameters

Name Description
os The output stream reference
sv The string to write

Equality operators

Synopses

Declared in <mrdocs/ADT/Optional.hpp>

Equality operator

constexpr
bool
operator==(
    Expected const& x,
    Expected<U, E2> const& y) noexcept(noexcept(bool(x.error() == y.error())));
» more...

Equality operator

constexpr
bool
operator==(
    Iterator const& it,
    std::default_sentinel_t rhs) noexcept;
» more...

Equality operator

constexpr
bool
operator==(
    ParseResult const& lhs,
    ParseResult const& rhs) = default;
» more...

Equality helper for optional template info.

bool
operator==(
    Optional<TemplateInfo> const& lhs,
    Optional<TemplateInfo> const& rhs);
» more...

Equality helper for polymorphic template parameters.

bool
operator==(
    Polymorphic<TParam> const& lhs,
    Polymorphic<TParam> const& rhs);
» more...

Equality compare two polymorphic names.

bool
operator==(
    Polymorphic<Name> const& lhs,
    Polymorphic<Name> const& rhs);
» more...

Equality helper for optional polymorphic types.

bool
operator==(
    Optional<Polymorphic<Type>> const& lhs,
    Optional<Polymorphic<Type>> const& rhs);
» more...

Equality helper for polymorphic types.

bool
operator==(
    Polymorphic<Type> const& lhs,
    Polymorphic<Type> const& rhs);
» more...

Equality operator

constexpr
bool
operator==(
    Expected const& x,
    Expected<U, E2> const& y) noexcept(noexcept(bool(*x == *y)) && noexcept(bool(x.error() == y.error())))
requires (!std::is_void_v<U>);
» more...

Equality operator

constexpr
bool
operator==(
    Expected const& x,
    U const& v) noexcept(noexcept(bool(*x == v)));
» more...

Equality operator

constexpr
bool
operator==(
    Expected const& x,
    Unexpected<E2> const& e) noexcept(noexcept(bool(x.error() == e.error())));
» more...

Equality operator

constexpr
bool
operator==(
    ArrayView a,
    ArrayView b) noexcept
requires requires (const T& x, const T& y) { { x == y } -> std::convertible_to<bool>; };
» more...

Equality operator

constexpr
bool
operator==(
    Expected const& x,
    Expected<U, E2> const& y) noexcept(noexcept(bool(*x == *y)) && noexcept(bool(x.error() == y.error())));
» more...

Equality operator

constexpr
bool
operator==(
    Expected const& x,
    U const& v) noexcept(noexcept(bool(*x == v)));
» more...

Equality operator

constexpr
bool
operator==(
    Expected const& x,
    Unexpected<E2> const& e) noexcept(noexcept(bool(x.error() == e.error())));
» more...

Equality operator

[[nodiscard]]
constexpr
bool
operator==(
    Unexpected const& x,
    Unexpected<Er> const& y);
» more...

Equality comparison of two polymorphic objects.

template<class Base>
requires detail::CanVisitCompare<Base>
bool
operator==(
    Polymorphic<Base> const& lhs,
    Polymorphic<Base> const& rhs);
» more...

Compares a value to an engaged Optional for equality. Returns true if the Optional is engaged and its value equals lhs.

template<
    typename T,
    typename U>
requires (!detail::isOptionalV<T>)
constexpr
/* implementation-defined */
operator==(
    T const& lhs,
    Optional<U> const& rhs);
» more...

Compares an engaged Optional to a value for equality. Returns true if the Optional is engaged and its value equals rhs.

template<
    typename T,
    typename U>
requires (!detail::isOptionalV<U>)
constexpr
/* implementation-defined */
operator==(
    Optional<T> const& lhs,
    U const& rhs);
» more...

Checks if the Optional is disengaged (equal to std::nullopt). Returns true if the Optional does not contain a value.

template<typename T>
[[nodiscard]]
constexpr
bool
operator==(
    Optional<T> const& lhs,
    std::nullopt_t rhs) noexcept;
» more...

Compares two Optional values for equality. Returns true if both are engaged and their contained values are equal, or both are disengaged.

template<
    typename T,
    typename U>
constexpr
/* implementation-defined */
operator==(
    Optional<T> const& lhs,
    Optional<U> const& rhs);
» more...

Return Value

Equality operator

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
bool
operator==(
    Expected const& x,
    Expected<U, E2> const& y) noexcept(noexcept(bool(x.error() == y.error())));

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
x The left operand
y The right operand

Equality operator

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
constexpr
bool
operator==(
    Iterator const& it,
    std::default_sentinel_t rhs) noexcept;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
it The left operand
rhs The right operand

Equality operator

Synopsis

Declared in <mrdocs/Support/Parse.hpp>
constexpr
bool
operator==(
    ParseResult const& lhs,
    ParseResult const& rhs) = default;

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
lhs The left operand
rhs The right operand

Equality helper for optional template info.

Synopsis

Declared in <mrdocs/Metadata/Template.hpp>
bool
operator==(
    Optional<TemplateInfo> const& lhs,
    Optional<TemplateInfo> const& rhs);

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
lhs The left operand
rhs The right operand

Equality helper for polymorphic template parameters.

Synopsis

Declared in <mrdocs/Metadata/TParam.hpp>
bool
operator==(
    Polymorphic<TParam> const& lhs,
    Polymorphic<TParam> const& rhs);

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
lhs The left operand
rhs The right operand

Equality compare two polymorphic names.

Synopsis

Declared in <mrdocs/Metadata/Name.hpp>
bool
operator==(
    Polymorphic<Name> const& lhs,
    Polymorphic<Name> const& rhs);

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
lhs The left operand
rhs The right operand

Equality helper for optional polymorphic types.

Synopsis

Declared in <mrdocs/Metadata/Type.hpp>
bool
operator==(
    Optional<Polymorphic<Type>> const& lhs,
    Optional<Polymorphic<Type>> const& rhs);

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
lhs The left operand
rhs The right operand

Equality helper for polymorphic types.

Synopsis

Declared in <mrdocs/Metadata/Type.hpp>
bool
operator==(
    Polymorphic<Type> const& lhs,
    Polymorphic<Type> const& rhs);

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
lhs The left operand
rhs The right operand

Equality operator

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
bool
operator==(
    Expected const& x,
    Expected<U, E2> const& y) noexcept(noexcept(bool(*x == *y)) && noexcept(bool(x.error() == y.error())))
requires (!std::is_void_v<U>);

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
x The left operand
y The right operand

Equality operator

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
bool
operator==(
    Expected const& x,
    U const& v) noexcept(noexcept(bool(*x == v)));

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
x The left operand
v The right operand

Equality operator

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
bool
operator==(
    Expected const& x,
    Unexpected<E2> const& e) noexcept(noexcept(bool(x.error() == e.error())));

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
x The left operand
e The right operand

Equality operator

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
bool
operator==(
    ArrayView a,
    ArrayView b) noexcept
requires requires (const T& x, const T& y) { { x == y } -> std::convertible_to<bool>; };

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
a The left operand
b The right operand

Equality operator

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
bool
operator==(
    Expected const& x,
    Expected<U, E2> const& y) noexcept(noexcept(bool(*x == *y)) && noexcept(bool(x.error() == y.error())));

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
x The left operand
y The right operand

Equality operator

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
bool
operator==(
    Expected const& x,
    U const& v) noexcept(noexcept(bool(*x == v)));

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
x The left operand
v The right operand

Equality operator

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
constexpr
bool
operator==(
    Expected const& x,
    Unexpected<E2> const& e) noexcept(noexcept(bool(x.error() == e.error())));

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
x The left operand
e The right operand

Equality operator

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
[[nodiscard]]
constexpr
bool
operator==(
    Unexpected const& x,
    Unexpected<Er> const& y);

Return Value

true if the objects are equal, false otherwise

Parameters

Name Description
x The left operand
y The right operand

Equality comparison of two polymorphic objects.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
template<class Base>
requires detail::CanVisitCompare<Base>
bool
operator==(
    Polymorphic<Base> const& lhs,
    Polymorphic<Base> const& rhs);

Return Value

true when objects compare equal.

Parameters

Name Description
lhs The left operand
rhs The right operand

Compares a value to an engaged Optional for equality. Returns true if the Optional is engaged and its value equals lhs.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    typename U>
requires (!detail::isOptionalV<T>)
constexpr
/* implementation-defined */
operator==(
    T const& lhs,
    Optional<U> const& rhs);

Return Value

true if the optional is engaged and equal to lhs; otherwise, false.

Parameters

Name Description
lhs The left operand
rhs The right operand

Compares an engaged Optional to a value for equality. Returns true if the Optional is engaged and its value equals rhs.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    typename U>
requires (!detail::isOptionalV<U>)
constexpr
/* implementation-defined */
operator==(
    Optional<T> const& lhs,
    U const& rhs);

Return Value

true if the optional is engaged and equal to rhs; otherwise, false.

Parameters

Name Description
lhs The left operand
rhs The right operand

Checks if the Optional is disengaged (equal to std::nullopt). Returns true if the Optional does not contain a value.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<typename T>
[[nodiscard]]
constexpr
bool
operator==(
    Optional<T> const& lhs,
    std::nullopt_t rhs) noexcept;

Return Value

true if the optional is disengaged; otherwise, false.

Parameters

Name Description
lhs The left operand
rhs The right operand

Compares two Optional values for equality. Returns true if both are engaged and their contained values are equal, or both are disengaged.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    typename U>
constexpr
/* implementation-defined */
operator==(
    Optional<T> const& lhs,
    Optional<U> const& rhs);

Return Value

true if both optionals are engaged and equal, or both are disengaged; otherwise, false.

Parameters

Name Description
lhs The left operand
rhs The right operand

Inequality operators

Synopses

Declared in <mrdocs/ADT/Optional.hpp>

Compares two Optional values for inequality. Returns true if their engagement states differ or their contained values are not equal.

template<
    typename T,
    typename U>
constexpr
/* implementation-defined */
operator!=(
    Optional<T> const& lhs,
    Optional<U> const& rhs);
» more...

Compares an Optional to a value for inequality. Returns true if the Optional is disengaged or its value does not equal rhs.

template<
    typename T,
    typename U>
requires (!detail::isOptionalV<U>)
constexpr
/* implementation-defined */
operator!=(
    Optional<T> const& lhs,
    U const& rhs);
» more...

Compares a value to an Optional for inequality. Returns true if the Optional is disengaged or its value does not equal lhs.

template<
    typename T,
    typename U>
requires (!detail::isOptionalV<T>)
constexpr
/* implementation-defined */
operator!=(
    T const& lhs,
    Optional<U> const& rhs);
» more...

Return Value

Compares two Optional values for inequality. Returns true if their engagement states differ or their contained values are not equal.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    typename U>
constexpr
/* implementation-defined */
operator!=(
    Optional<T> const& lhs,
    Optional<U> const& rhs);

Return Value

true if the optionals differ in engagement or value; otherwise, false.

Parameters

Name Description
lhs The left operand
rhs The right operand

Compares an Optional to a value for inequality. Returns true if the Optional is disengaged or its value does not equal rhs.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    typename U>
requires (!detail::isOptionalV<U>)
constexpr
/* implementation-defined */
operator!=(
    Optional<T> const& lhs,
    U const& rhs);

Return Value

true if the optional is disengaged or not equal to rhs; otherwise, false.

Parameters

Name Description
lhs The left operand
rhs The right operand

Compares a value to an Optional for inequality. Returns true if the Optional is disengaged or its value does not equal lhs.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    typename U>
requires (!detail::isOptionalV<T>)
constexpr
/* implementation-defined */
operator!=(
    T const& lhs,
    Optional<U> const& rhs);

Return Value

true if the optional is disengaged or not equal to lhs; otherwise, false.

Parameters

Name Description
lhs The left operand
rhs The right operand

Less-than operators

Synopses

Declared in <mrdocs/ADT/Optional.hpp>

Checks if the left Optional is less than the right Optional. Returns true if the right is engaged and either the left is disengaged or its value is less.

template<
    typename T,
    typename U>
constexpr
/* implementation-defined */
operator<(
    Optional<T> const& lhs,
    Optional<U> const& rhs);
» more...

Checks if the Optional is less than a value. Returns true if the Optional is disengaged or its value is less than rhs.

template<
    typename T,
    typename U>
requires (!detail::isOptionalV<U>)
[[nodiscard]]
constexpr
/* implementation-defined */
operator<(
    Optional<T> const& lhs,
    U const& rhs);
» more...

Checks if a value is less than an engaged Optional. Returns true if the Optional is engaged and lhs is less than its value.

template<
    typename T,
    typename U>
requires (!detail::isOptionalV<T>)
[[nodiscard]]
constexpr
/* implementation-defined */
operator<(
    T const& lhs,
    Optional<U> const& rhs);
» more...

Return Value

Checks if the left Optional is less than the right Optional. Returns true if the right is engaged and either the left is disengaged or its value is less.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    typename U>
constexpr
/* implementation-defined */
operator<(
    Optional<T> const& lhs,
    Optional<U> const& rhs);

Return Value

true if lhs is less than rhs according to the described rules; otherwise, false.

Parameters

Name Description
lhs The left operand
rhs The right operand

Checks if the Optional is less than a value. Returns true if the Optional is disengaged or its value is less than rhs.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    typename U>
requires (!detail::isOptionalV<U>)
[[nodiscard]]
constexpr
/* implementation-defined */
operator<(
    Optional<T> const& lhs,
    U const& rhs);

Return Value

true if the optional is disengaged or less than rhs; otherwise, false.

Parameters

Name Description
lhs The left operand
rhs The right operand

Checks if a value is less than an engaged Optional. Returns true if the Optional is engaged and lhs is less than its value.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    typename U>
requires (!detail::isOptionalV<T>)
[[nodiscard]]
constexpr
/* implementation-defined */
operator<(
    T const& lhs,
    Optional<U> const& rhs);

Return Value

true if the optional is engaged and lhs is less than its value; otherwise, false.

Parameters

Name Description
lhs The left operand
rhs The right operand

Less-than-or-equal operators

Synopses

Declared in <mrdocs/ADT/Optional.hpp>

Checks if the left Optional is less than or equal to the right Optional. Returns true if the left is disengaged or the right is engaged and the left's value is less or equal.

template<
    typename T,
    typename U>
constexpr
/* implementation-defined */
operator<=(
    Optional<T> const& lhs,
    Optional<U> const& rhs);
» more...

Checks if the Optional is less than or equal to a value. Returns true if the Optional is disengaged or its value is less than or equal to rhs.

template<
    typename T,
    typename U>
requires (!detail::isOptionalV<U>)
constexpr
/* implementation-defined */
operator<=(
    Optional<T> const& lhs,
    U const& rhs);
» more...

Checks if a value is less than or equal to an engaged Optional. Returns true if the Optional is engaged and lhs is less than or equal to its value.

template<
    typename T,
    typename U>
requires (!detail::isOptionalV<T>)
constexpr
/* implementation-defined */
operator<=(
    T const& lhs,
    Optional<U> const& rhs);
» more...

Return Value

Checks if the left Optional is less than or equal to the right Optional. Returns true if the left is disengaged or the right is engaged and the left's value is less or equal.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    typename U>
constexpr
/* implementation-defined */
operator<=(
    Optional<T> const& lhs,
    Optional<U> const& rhs);

Return Value

true if lhs is less than or equal to rhs according to the described rules; otherwise, false.

Parameters

Name Description
lhs The left operand
rhs The right operand

Checks if the Optional is less than or equal to a value. Returns true if the Optional is disengaged or its value is less than or equal to rhs.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    typename U>
requires (!detail::isOptionalV<U>)
constexpr
/* implementation-defined */
operator<=(
    Optional<T> const& lhs,
    U const& rhs);

Return Value

true if the optional is disengaged or less than or equal to rhs; otherwise, false.

Parameters

Name Description
lhs The left operand
rhs The right operand

Checks if a value is less than or equal to an engaged Optional. Returns true if the Optional is engaged and lhs is less than or equal to its value.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    typename U>
requires (!detail::isOptionalV<T>)
constexpr
/* implementation-defined */
operator<=(
    T const& lhs,
    Optional<U> const& rhs);

Return Value

true if the optional is engaged and lhs is less than or equal to its value; otherwise, false.

Parameters

Name Description
lhs The left operand
rhs The right operand

Greater-than operators

Synopses

Declared in <mrdocs/ADT/Optional.hpp>

Checks if the left Optional is greater than the right Optional. Returns true if the left is engaged and either the right is disengaged or its value is greater.

template<
    typename T,
    typename U>
constexpr
/* implementation-defined */
operator>(
    Optional<T> const& lhs,
    Optional<U> const& rhs);
» more...

Checks if the Optional is greater than a value. Returns true if the Optional is engaged and its value is greater than rhs.

template<
    typename T,
    typename U>
requires (!detail::isOptionalV<U>)
constexpr
/* implementation-defined */
operator>(
    Optional<T> const& lhs,
    U const& rhs);
» more...

Checks if a value is greater than an Optional. Returns true if the Optional is disengaged or lhs is greater than its value.

template<
    typename T,
    typename U>
requires (!detail::isOptionalV<T>)
constexpr
/* implementation-defined */
operator>(
    T const& lhs,
    Optional<U> const& rhs);
» more...

Return Value

Checks if the left Optional is greater than the right Optional. Returns true if the left is engaged and either the right is disengaged or its value is greater.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    typename U>
constexpr
/* implementation-defined */
operator>(
    Optional<T> const& lhs,
    Optional<U> const& rhs);

Return Value

true if lhs is greater than rhs according to the described rules; otherwise, false.

Parameters

Name Description
lhs The left operand
rhs The right operand

Checks if the Optional is greater than a value. Returns true if the Optional is engaged and its value is greater than rhs.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    typename U>
requires (!detail::isOptionalV<U>)
constexpr
/* implementation-defined */
operator>(
    Optional<T> const& lhs,
    U const& rhs);

Return Value

true if the optional is engaged and greater than rhs; otherwise, false.

Parameters

Name Description
lhs The left operand
rhs The right operand

Checks if a value is greater than an Optional. Returns true if the Optional is disengaged or lhs is greater than its value.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    typename U>
requires (!detail::isOptionalV<T>)
constexpr
/* implementation-defined */
operator>(
    T const& lhs,
    Optional<U> const& rhs);

Return Value

true if the optional is disengaged or lhs is greater than its value; otherwise, false.

Parameters

Name Description
lhs The left operand
rhs The right operand

Greater-than-or-equal operators

Synopses

Declared in <mrdocs/ADT/Optional.hpp>

Checks if the left Optional is greater than or equal to the right Optional. Returns true if the right is disengaged or the left is engaged and its value is greater or equal.

template<
    typename T,
    typename U>
constexpr
/* implementation-defined */
operator>=(
    Optional<T> const& lhs,
    Optional<U> const& rhs);
» more...

Checks if the Optional is greater than or equal to a value. Returns true if the Optional is engaged and its value is greater than or equal to rhs.

template<
    typename T,
    typename U>
requires (!detail::isOptionalV<U>)
constexpr
/* implementation-defined */
operator>=(
    Optional<T> const& lhs,
    U const& rhs);
» more...

Checks if a value is greater than or equal to an Optional. Returns true if the Optional is disengaged or lhs is greater than or equal to its value.

template<
    typename T,
    typename U>
requires (!detail::isOptionalV<T>)
constexpr
/* implementation-defined */
operator>=(
    T const& lhs,
    Optional<U> const& rhs);
» more...

Return Value

Checks if the left Optional is greater than or equal to the right Optional. Returns true if the right is disengaged or the left is engaged and its value is greater or equal.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    typename U>
constexpr
/* implementation-defined */
operator>=(
    Optional<T> const& lhs,
    Optional<U> const& rhs);

Return Value

true if lhs is greater than or equal to rhs according to the described rules; otherwise, false.

Parameters

Name Description
lhs The left operand
rhs The right operand

Checks if the Optional is greater than or equal to a value. Returns true if the Optional is engaged and its value is greater than or equal to rhs.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    typename U>
requires (!detail::isOptionalV<U>)
constexpr
/* implementation-defined */
operator>=(
    Optional<T> const& lhs,
    U const& rhs);

Return Value

true if the optional is engaged and greater than or equal to rhs; otherwise, false.

Parameters

Name Description
lhs The left operand
rhs The right operand

Checks if a value is greater than or equal to an Optional. Returns true if the Optional is disengaged or lhs is greater than or equal to its value.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    typename U>
requires (!detail::isOptionalV<T>)
constexpr
/* implementation-defined */
operator>=(
    T const& lhs,
    Optional<U> const& rhs);

Return Value

true if the optional is disengaged or lhs is greater than or equal to its value; otherwise, false.

Parameters

Name Description
lhs The left operand
rhs The right operand

Three-way comparison operators

Synopses

Declared in <mrdocs/Metadata/Name.hpp>

Three-way comparison operator

constexpr
auto
operator<=>(
    ArrayView a,
    ArrayView b) noexcept
requires requires (const T& x, const T& y) { x <=> y; };
» more...

Performs a three-way comparison between two Optional values. If both are engaged, compares their contained values; otherwise, compares engagement state.

template<
    typename T,
    std::three_way_comparable_with<T> U>
[[nodiscard]]
constexpr
std::compare_three_way_result_t<T, U>
operator<=>(
    Optional<T> const& x,
    Optional<U> const& y);
» more...

Performs a three-way comparison between an Optional and std::nullopt. Returns std::strong_ordering::greater if engaged, std::strong_ordering::equal if disengaged.

template<typename T>
[[nodiscard]]
constexpr
std::strong_ordering
operator<=>(
    Optional<T> const& x,
    std::nullopt_t rhs) noexcept;
» more...

Performs a three-way comparison between an Optional and a value. If the Optional is engaged, compares its value to v; otherwise, returns less.

template<
    typename T,
    typename U>
requires (!detail::isDerivedFromOptional<U>)
        && requires { typename std::compare_three_way_result_t<T, U>; }
        && std::three_way_comparable_with<T, U>
constexpr
std::compare_three_way_result_t<T, U>
operator<=>(
    Optional<T> const& x,
    U const& v);
» more...

Three-way comparison of two polymorphic objects.

template<class Base>
requires detail::CanVisitCompare<Base>
auto
operator<=>(
    Polymorphic<Base> const& lhs,
    Polymorphic<Base> const& rhs);
» more...

Compare two polymorphic types for ordering.

std::strong_ordering
operator<=>(
    Polymorphic<Type> const& lhs,
    Polymorphic<Type> const& rhs);
» more...

Compare optional polymorphic types, treating disengaged as less.

std::strong_ordering
operator<=>(
    Optional<Polymorphic<Type>> const& lhs,
    Optional<Polymorphic<Type>> const& rhs);
» more...

Compare polymorphic template arguments.

std::strong_ordering
operator<=>(
    Polymorphic<TArg> const& lhs,
    Polymorphic<TArg> const& rhs);
» more...

Three-way comparison for polymorphic Name variants.

std::strong_ordering
operator<=>(
    Polymorphic<Name> const& lhs,
    Polymorphic<Name> const& rhs);
» more...

Compare polymorphic template parameters.

std::strong_ordering
operator<=>(
    Polymorphic<TParam> const& lhs,
    Polymorphic<TParam> const& rhs);
» more...

Compare optional template infos, treating disengaged as ordered before engaged.

auto
operator<=>(
    Optional<TemplateInfo> const& lhs,
    Optional<TemplateInfo> const& rhs);
» more...

Return Value

Three-way comparison operator

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
constexpr
auto
operator<=>(
    ArrayView a,
    ArrayView b) noexcept
requires requires (const T& x, const T& y) { x <=> y; };

Return Value

The relative order of the objects

Parameters

Name Description
a The left operand
b The right operand

Performs a three-way comparison between two Optional values. If both are engaged, compares their contained values; otherwise, compares engagement state.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    std::three_way_comparable_with<T> U>
[[nodiscard]]
constexpr
std::compare_three_way_result_t<T, U>
operator<=>(
    Optional<T> const& x,
    Optional<U> const& y);

Return Value

The result of the three-way comparison between the optionals or their values.

Parameters

Name Description
x The left operand
y The right operand

Performs a three-way comparison between an Optional and std::nullopt. Returns std::strong_ordering::greater if engaged, std::strong_ordering::equal if disengaged.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<typename T>
[[nodiscard]]
constexpr
std::strong_ordering
operator<=>(
    Optional<T> const& x,
    std::nullopt_t rhs) noexcept;

Return Value

The result of the three-way comparison with std::nullopt.

Parameters

Name Description
x The left operand
rhs The right operand

Performs a three-way comparison between an Optional and a value. If the Optional is engaged, compares its value to v; otherwise, returns less.

Synopsis

Declared in <mrdocs/ADT/Optional.hpp>
template<
    typename T,
    typename U>
requires (!detail::isDerivedFromOptional<U>)
        && requires { typename std::compare_three_way_result_t<T, U>; }
        && std::three_way_comparable_with<T, U>
constexpr
std::compare_three_way_result_t<T, U>
operator<=>(
    Optional<T> const& x,
    U const& v);

Return Value

The result of the three-way comparison with the value.

Parameters

Name Description
x The left operand
v The right operand

Three-way comparison of two polymorphic objects.

Synopsis

Declared in <mrdocs/ADT/Polymorphic.hpp>
template<class Base>
requires detail::CanVisitCompare<Base>
auto
operator<=>(
    Polymorphic<Base> const& lhs,
    Polymorphic<Base> const& rhs);

Return Value

strong_ordering comparing held objects.

Parameters

Name Description
lhs The left operand
rhs The right operand

Compare two polymorphic types for ordering.

Synopsis

Declared in <mrdocs/Metadata/Type.hpp>
std::strong_ordering
operator<=>(
    Polymorphic<Type> const& lhs,
    Polymorphic<Type> const& rhs);

Return Value

The relative order of the objects

Parameters

Name Description
lhs The left operand
rhs The right operand

Compare optional polymorphic types, treating disengaged as less.

Synopsis

Declared in <mrdocs/Metadata/Type.hpp>
std::strong_ordering
operator<=>(
    Optional<Polymorphic<Type>> const& lhs,
    Optional<Polymorphic<Type>> const& rhs);

Return Value

The relative order of the objects

Parameters

Name Description
lhs The left operand
rhs The right operand

Compare polymorphic template arguments.

Synopsis

Declared in <mrdocs/Metadata/TArg.hpp>
std::strong_ordering
operator<=>(
    Polymorphic<TArg> const& lhs,
    Polymorphic<TArg> const& rhs);

Return Value

The relative order of the objects

Parameters

Name Description
lhs The left operand
rhs The right operand

Three-way comparison for polymorphic Name variants.

Synopsis

Declared in <mrdocs/Metadata/Name.hpp>
std::strong_ordering
operator<=>(
    Polymorphic<Name> const& lhs,
    Polymorphic<Name> const& rhs);

Return Value

The relative order of the objects

Parameters

Name Description
lhs The left operand
rhs The right operand

Compare polymorphic template parameters.

Synopsis

Declared in <mrdocs/Metadata/TParam.hpp>
std::strong_ordering
operator<=>(
    Polymorphic<TParam> const& lhs,
    Polymorphic<TParam> const& rhs);

Return Value

The relative order of the objects

Parameters

Name Description
lhs The left operand
rhs The right operand

Compare optional template infos, treating disengaged as ordered before engaged.

Synopsis

Declared in <mrdocs/Metadata/Template.hpp>
auto
operator<=>(
    Optional<TemplateInfo> const& lhs,
    Optional<TemplateInfo> const& rhs);

Return Value

The relative order of the objects

Parameters

Name Description
lhs The left operand
rhs The right operand

Split a string view into lines, recognizing all common line breaks

Synopsis

Declared in <mrdocs/Support/SplitLines.hpp>
inline constexpr SplitLinesAdaptor splitLines = {};

Description

This is a convenience function for creating a SplitLinesView.

Tag object to request unexpected construction.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
inline constexpr unexpect_t unexpect = unexpect{};

Internal concept that matches “empty-clear default-constructible” types.

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
template<class T>
concept ClearableContainerLike = requires {
        typename T::value_type;
        typename T::size_type;
        typename T::difference_type;
        typename T::reference;
        typename T::const_reference;
        typename T::iterator;
        typename T::const_iterator;
    } &&
    // size_type should be integral for normal containers
    std::is_integral_v<typename T::size_type> &&

    // ---- member begin/end with expected iterator types ----
    requires(T& t, const T& ct) {
        { t.begin() }  -> std::convertible_to<typename T::iterator>;
        { t.end() }    -> std::convertible_to<typename T::iterator>;
        { ct.begin() } -> std::convertible_to<typename T::const_iterator>;
        { ct.end() }   -> std::convertible_to<typename T::const_iterator>;
    } &&

    // ---- iterator “shape”: deref and increment ----
    requires(T& t, const T& ct) {
        { *t.begin() }  -> std::convertible_to<typename T::reference>;
        { *ct.begin() } -> std::convertible_to<typename T::const_reference>;
        { ++std::declval<typename T::iterator&>() } -> std::same_as<typename T::iterator&>;
    } &&

    // ---- size/empty/clear trio ----
    requires(T& t, const T& ct) {
        { ct.size() }  -> std::same_as<typename T::size_type>;
        { ct.empty() } -> std::convertible_to<bool>;
        { t.clear() }  -> std::same_as<void>;
    } &&

    // ---- default constructible (most std containers satisfy this) ----
    std::default_initializable<T>;

Description

This captures the common case of containers and data structures that can be default-constructed to empty, tested with .empty(), and reset with .clear().

Common cases of such containers include std::string, std::vector, std::optional, std::unique_ptr, std::shared_ptr, and many more.

Concept to check if a type represents a DocComment node.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
template<class T>
concept DocCommentNode = std::derived_from<T, doc::Block> || std::derived_from<T, doc::Inline>;

Types that can be traversed by DocComment helpers.

Synopsis

Declared in <mrdocs/Metadata/DocComment.hpp>
template<class T>
concept DocCommentNodeTraversable = DocCommentNode<T> ||
    std::same_as<DocComment, T> ||
    (detail::IsPolymorphic<T> && DocCommentNode<typename T::value_type>);

Concept to determine if there's a parse function for a type.

Synopsis

Declared in <mrdocs/Support/Parse.hpp>
template<class T>
concept HasParse = requires(
    char const* first,
    char const* last,
    T& value)
{
    { parse(first, last, value) } -> std::same_as<ParseResult>;
};

Description

This concept checks if a type T has a parse function with the signature:

ParseResult parse( char const* first, char const* last, T& value);

Concept that is satisfied when sentinel_traits<T> declares a usable sentinel.

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
template<class T>
concept HasSentinel = requires
    {
        { sentinel_traits<T>::sentinel() } -> std::same_as<T>;
        { sentinel_traits<T>::is_sentinel(std::declval<const T&>()) } -> std::convertible_to<bool>;
    };

A concept for types that have Symbol members.

Synopsis

Declared in <mrdocs/Metadata/Symbol.hpp>
template<class SymbolTy>
concept SymbolParent = requires(SymbolTy const& I)
{
    { allMembers(I) } -> range_of<SymbolID>;
};

Description

In most cases T is another Symbol type that has a Members member which is a range of SymbolID values.

Determine if a type is dereferenceable

Synopsis

Declared in <mrdocs/Support/Concepts.hpp>
template<class T>
concept dereferenceable = requires(T const& t)
{
    { static_cast<bool>(t) };
    { *t };
};

Description

This concept checks if a type can be dereferenced to a value it represents and converted to a boolean value that represents if the object is in a valid state.

Examples of such types are std::optional, std::unique_ptr, std::shared_ptr, Polymorphic, pointers, etc.

Utility concept that returns true if T has a nullable_traits specialization enabled.

Synopsis

Declared in <mrdocs/ADT/Nullable.hpp>
template<class T>
concept has_nullable_traits_v = requires
    {
        { nullable_traits<T>::is_null(std::declval<const T&>()) } -> std::convertible_to<bool>;
        { nullable_traits<T>::null() } -> std::same_as<T>;
        { nullable_traits<T>::make_null(std::declval<T&>()) } -> std::same_as<void>;
    };

Concept to check if a type is pair-like

Synopsis

Declared in <mrdocs/Support/Concepts.hpp>
template<class T>
concept pair_like = tuple_like<T> &&
    (std::tuple_size<std::remove_cvref_t<T>>::value == 2);

Description

This concept checks if a type is tuple-like and has exactly two elements.

Examples of such types are std::pair, std::array with two elements, and user-defined types that provide specializations for std::tuple_size and std::tuple_element with exactly two elements.

Concept to check if a type is representing a polymorphic storage

Synopsis

Declared in <mrdocs/Support/Concepts.hpp>
template<
    class T,
    class Base>
concept polymorphic_storage_for = requires(T const& t)
{
    { *t } -> std::convertible_to<Base const&>;
    { t.operator->() } -> std::convertible_to<Base const*>;
};

Description

This concept checks if a type is used to store derived objects of a base class.

Examples of such types are std::unique_ptr, std::shared_ptr, Polymorphic, etc.

The get() function might not always be available, but operator* and operator-> should be available and return a reference to the Base class.

Concept to check if a type is a range of T

Synopsis

Declared in <mrdocs/Support/Concepts.hpp>
template<
    class Range,
    class T>
concept range_of = std::ranges::range<Range> && std::same_as<std::ranges::range_value_t<Range>, T>;

Concept to check if a range is a range of tuple-like elements

Synopsis

Declared in <mrdocs/Support/Concepts.hpp>
template<class Range>
concept range_of_tuple_like = std::ranges::range<Range> && tuple_like<std::ranges::range_value_t<Range>>;

Description

This concept checks if a type is a range and all its elements are tuple-like.

Examples of such types are std::vector<std::tuple<...>>, std::list<std::pair<...>>, and user-defined types that provide specializations for std::tuple_size and std::tuple_element for their element type.

Like reference_converts_from_temporary_v, but for construction.

Synopsis

Declared in <mrdocs/Support/Concepts.hpp>
template<
    class To,
    class From>
concept reference_constructs_from_temporary_v = reference_converts_from_temporary_v<To, From>;

True when binding To from From would require a temporary conversion.

Synopsis

Declared in <mrdocs/Support/Concepts.hpp>
template<
    class To,
    class From>
concept reference_converts_from_temporary_v = std::is_reference_v<To>
          && ((!std::is_reference_v<From>
               && std::is_convertible_v<
                   std::remove_cvref_t<From>*,
                   std::remove_cvref_t<To>*>)
              || (std::is_lvalue_reference_v<To>
                  && std::is_const_v<std::remove_reference_t<To>>
                  && std::is_convertible_v<From, const std::remove_cvref_t<To>&&>
                  && !std::is_convertible_v<From, std::remove_cvref_t<To>&>) );

Concept to check if a type is tuple-like

Synopsis

Declared in <mrdocs/Support/Concepts.hpp>
template<class T>
concept tuple_like = detail::has_tuple_size<T>::value &&
    detail::all_tuple_elements<T>::value;

Description

This concept checks if a type has a specialization of std::tuple_size and std::tuple_element for all elements in the range [0, N), where N is the value of std::tuple_size.]

Examples of such types are std::tuple, std::pair, std::array, and user-defined types that provide specializations for std::tuple_size and std::tuple_element.

Deduce ArrayView element type from C-style array.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
template<
    class T,
    std::size_t N>
ArrayView<T>(T const(&)[]) -> ArrayView<T>;

Deduce ArrayView element type from pointer and count.

Synopsis

Declared in <mrdocs/ADT/ArrayView.hpp>
template<class T>
ArrayView<T>(
    T const*,
    std::size_t) -> ArrayView<T>;

Class template argument deduction guide for Overload.

Synopsis

Declared in <mrdocs/ADT/Overload.hpp>
template<class... Ts>
Overload<Ts...>(Ts...) -> Overload<Ts...>;

Description

Allows writing Overload{lambda1, lambda2, ...} without specifying template parameters.

Deduction guide for RangeFor.

Synopsis

Declared in <mrdocs/Support/RangeFor.hpp>
template<class Container>
RangeFor<Container>(Container const&) -> RangeFor<Container>;

Description

Deduction guide for RangeFor.

Deduction guide for ScopeExit.

Synopsis

Declared in <mrdocs/Support/ScopeExit.hpp>
template<class F>
ScopeExit<F>(F) -> ScopeExit<F>;

Deduction guide for ScopeExitRestore taking a reference.

Synopsis

Declared in <mrdocs/Support/ScopeExit.hpp>
template<class T>
ScopeExitRestore<T>(T&) -> ScopeExitRestore<T>;

Deduction guide for ScopeExitRestore taking a reference and new value.

Synopsis

Declared in <mrdocs/Support/ScopeExit.hpp>
template<
    class T,
    std::convertible_to<T> T2>
ScopeExitRestore<T>(
    T&,
    T2) -> ScopeExitRestore<T>;

Deduction guide for Unexpected, forwarding the error type.

Synopsis

Declared in <mrdocs/Support/Expected.hpp>
template<class E>
Unexpected<E>(E) -> Unexpected<E>;

Alias to std::source_location when available.

Synopsis

Declared in <mrdocs/Support/source_location.hpp>
using std::source_location;