mrdocs::describe

Compile‐time reflection over structs, enums, and their bases.

Description

A small, self‐contained reflection library inspired by Boost.Describe. Besides the MRDOCS_DESCRIBE_* macros, the public API includes a number of traits and queries we need for documenting types in Mr.Docs.

Types

Name

Description

list

A compile‐time list of descriptor types.

Type Aliases

Name

Description

describe_bases

The reflected direct base classes of T, as a list of base descriptors.

describe_enumerators

The reflected enumerators of E, as a list of enumerator descriptors.

describe_kinds

The concrete kinds registered for a polymorphic base T, as a list of kind descriptors (each exposing the derived type as its type alias).

describe_members

The reflected data members of T, as a list of member descriptors.

has_describe_bases

A trait that is true when T has reflected base classes.

has_describe_enumerators

A trait that is true when E has reflected enumerators.

has_describe_kinds

A trait that is true when polymorphic base T has its kinds registered (via MRDOCS_DESCRIBE_KINDS).

has_describe_members

A trait that is true when T has reflected members.

member_pointer_t

The member‐pointer type shared by T's reflected members.

Functions

Name

Description

describedMemberCount

The number of reflected members of T, counting inherited ones.

describedMembersAllText

Whether every reflected member of T (inherited ones included) is an undescribed string, i.e. a value convertible to std::string_view.

enum_from_string

Parse a declared enumerator name into an enumerator.

enum_to_string

Return the name of enumerator e exactly as it was declared.

for_each

Invoke f with each descriptor in a descriptor list.

for_each_member

for_each_member overloads

memberPointers

Pointers to every reflected member of T, in reflection order.

Variables

Name

Description

undefined_enumerator

The enumerator of E that stands for the undefined (empty) state.

Concepts

Name

Description

described

Satisfied when T has reflected members.

has_undefined_enumerator

Whether E designates an enumerator as its undefined (empty) state.

isSingleStringObject

Whether a described type collapses to a single string.

Created with MrDocs