|
| #define | TAGVAL_DETAIL_USED |
| |
| #define | TAGVAL_ENTRY(Owner, TypeName, FuncName, ...) |
| |
| #define | TAGVAL_ENTRY_AS(Owner, TypeName, FuncName, Code, ...) |
| |
| #define | TAGVAL_EXTERN_ENTRY(Owner, TypeName, FuncName, ...) |
| |
| #define | TAGVAL_EXTERN_ENTRY_AS(Owner, TypeName, FuncName, Code, ...) |
| |
| #define | TAGVAL_DETAIL_PASTE2(a, b) a##b |
| |
| #define | TAGVAL_DETAIL_PASTE(a, b) TAGVAL_DETAIL_PASTE2(a, b) |
| |
| #define | TAGVAL_REGISTER_KIND(KindType) |
| |
TAGVAL_* macros for declaring entries.
In-class macros (TAGVAL_ENTRY, TAGVAL_ENTRY_AS) live inside the kind class body and declare a nested Entry type plus a static accessor. The kind must list these entries in values_t so they are visible to all_values() (ClosedEnded) or to the compile-time portion of an OpenEnded merge.
External macros (TAGVAL_EXTERN_ENTRY, TAGVAL_EXTERN_ENTRY_AS) live at namespace scope and always register into OpenEndedRegistry<Owner> — there is no other reason to declare an entry outside its class.