8template <
class T,
class S>
13template <
class T,
class S>
18template <
class T,
class S>
22#define PARAMS_TABLE(type_, ...) \
24 struct attribute_table<type_, S> { \
26 inline static const attribute_table_t<type, S> table{__VA_ARGS__}; \
31#define PARAMS_MEMBER(name, ...) \
33 #name, { &type::name, __VA_ARGS__ } \
38template <
class T,
class S>
43template <
class T,
class S>
47#define PARAMS_ALIAS_TABLE(type_, ...) \
49 struct attribute_alias_table<type_, S> { \
51 inline static const attribute_alias_table_t<type, S> table{ \
57#define PARAMS_MEMBER_ALIAS(alias, name) \
62template <
class T,
class S>
66template <
class T,
class S>
67using enum_table_t = std::map<std::string_view, enum_accessor<T, S>>;
71template <
class T,
class S>
75#define ENUM_TABLE(type_, ...) \
77 struct enum_table<type_, S> { \
79 inline static const enum_table_t<type, S> table{__VA_ARGS__}; \
84#define ENUM_MEMBER(name, ...) \
86 #name, { type::name, __VA_ARGS__ } \
std::map< std::string_view, attribute_accessor< T, S > > attribute_table_t
Dictionary that maps struct attribute names to type-erased functions that set those attributes.
std::map< std::string_view, enum_accessor< T, S > > enum_table_t
Dictionary that maps enumerator names to their values and documentation.
std::map< std::string_view, std::string_view > attribute_alias_table_t
Dictionary that maps struct attribute names to type-erased functions that set those attributes.
Function wrapper to set attributes of a struct, type-erasing the type of the attribute.
Specialize this type to define the alternative attribute name to attribute setters dictionaries for a...
Specialize this type to define the attribute name to attribute setters dictionaries for a struct type...
Function wrapper access the enumerators of an enum, type-erasing the type of the enum.
Specialize this type to define the enumerator name to value dictionaries for an enum type T.