|
18 | 18 | // and code.
|
19 | 19 | // While some of associated macros sets are not defined in this file, these
|
20 | 20 | // definitions allow custom paths in the type definition files in certain cases.
|
21 |
| -#define DEF_RDAT_DEFAULTS 1 // DEF_RDAT_TYPES and DEF_RDAT_ENUMS - define empty macros for anything not already defined |
22 |
| -#define DEF_RDAT_TYPES_BASIC_STRUCT 2 // DEF_RDAT_TYPES - define structs with basic types, matching RDAT format |
23 |
| -#define DEF_RDAT_TYPES_USE_HELPERS 3 // DEF_RDAT_TYPES - define structs using helpers, matching RDAT format |
24 |
| -#define DEF_RDAT_DUMP_DECL 4 // DEF_RDAT_TYPES and DEF_RDAT_ENUMS - write dump declarations |
25 |
| -#define DEF_RDAT_DUMP_IMPL 5 // DEF_RDAT_TYPES and DEF_RDAT_ENUMS - write dump implementation |
26 |
| -#define DEF_RDAT_TYPES_USE_POINTERS 6 // DEF_RDAT_TYPES - define deserialized version using pointers instead of offsets |
27 |
| -#define DEF_RDAT_ENUM_CLASS 7 // DEF_RDAT_ENUMS - declare enums with enum class |
28 |
| -#define DEF_RDAT_TRAITS 8 // DEF_RDAT_TYPES - define type traits |
29 |
| -#define DEF_RDAT_TYPES_FORWARD_DECL 9 // DEF_RDAT_TYPES - forward declare type struct/class |
30 |
| -#define DEF_RDAT_READER_DECL 10 // DEF_RDAT_TYPES and DEF_RDAT_ENUMS - write reader classes |
31 |
| -#define DEF_RDAT_READER_IMPL 11 // DEF_RDAT_TYPES and DEF_RDAT_ENUMS - write reader classes |
32 |
| -#define DEF_RDAT_STRUCT_VALIDATION 13 // DEF_RDAT_TYPES and DEF_RDAT_ENUMS - define structural validation |
| 21 | + |
| 22 | +// DEF_RDAT_TYPES and DEF_RDAT_ENUMS - define empty macros for anything not |
| 23 | +// already defined |
| 24 | +#define DEF_RDAT_DEFAULTS 1 |
| 25 | +// DEF_RDAT_TYPES - define structs with basic types, matching RDAT format |
| 26 | +#define DEF_RDAT_TYPES_BASIC_STRUCT 2 |
| 27 | +// DEF_RDAT_TYPES - define structs using helpers, matching RDAT format |
| 28 | +#define DEF_RDAT_TYPES_USE_HELPERS 3 |
| 29 | +// DEF_RDAT_TYPES and DEF_RDAT_ENUMS - write dump declarations |
| 30 | +#define DEF_RDAT_DUMP_DECL 4 |
| 31 | +// DEF_RDAT_TYPES and DEF_RDAT_ENUMS - write dump implementation |
| 32 | +#define DEF_RDAT_DUMP_IMPL 5 |
| 33 | +// DEF_RDAT_TYPES - define deserialized version using pointers instead of |
| 34 | +// offsets |
| 35 | +#define DEF_RDAT_TYPES_USE_POINTERS 6 |
| 36 | +// DEF_RDAT_ENUMS - declare enums with enum class |
| 37 | +#define DEF_RDAT_ENUM_CLASS 7 |
| 38 | +// DEF_RDAT_TYPES - define type traits |
| 39 | +#define DEF_RDAT_TRAITS 8 |
| 40 | +// DEF_RDAT_TYPES - forward declare type struct/class |
| 41 | +#define DEF_RDAT_TYPES_FORWARD_DECL 9 |
| 42 | +// DEF_RDAT_TYPES and DEF_RDAT_ENUMS - write reader classes |
| 43 | +#define DEF_RDAT_READER_DECL 10 |
| 44 | +// DEF_RDAT_TYPES and DEF_RDAT_ENUMS - write reader classes |
| 45 | +#define DEF_RDAT_READER_IMPL 11 |
| 46 | +// DEF_RDAT_TYPES and DEF_RDAT_ENUMS - define structural validation |
| 47 | +#define DEF_RDAT_STRUCT_VALIDATION 13 |
| 48 | + |
33 | 49 | // PRERELEASE-TODO: deeper validation for DxilValidation (limiting enum values and other such things)
|
34 | 50 |
|
| 51 | +// clang-format off |
| 52 | +#define CLOSE_COMPOUND_DECL }; |
| 53 | +// clang-format on |
| 54 | + |
35 | 55 | #define GLUE2(a, b) a##b
|
36 | 56 | #define GLUE(a, b) GLUE2(a, b)
|
37 | 57 |
|
|
48 | 68 | #define RDAT_STRUCT(type) struct type {
|
49 | 69 | #define RDAT_STRUCT_DERIVED(type, base) \
|
50 | 70 | struct type : public base {
|
51 |
| - #define RDAT_STRUCT_END() }; |
| 71 | + #define RDAT_STRUCT_END() CLOSE_COMPOUND_DECL |
52 | 72 | #define RDAT_UNION() union {
|
53 |
| - #define RDAT_UNION_END() }; |
| 73 | + #define RDAT_UNION_END() CLOSE_COMPOUND_DECL |
54 | 74 | #define RDAT_RECORD_REF(type, name) uint32_t name;
|
55 | 75 | #define RDAT_RECORD_ARRAY_REF(type, name) uint32_t name;
|
56 | 76 | #define RDAT_RECORD_VALUE(type, name) type name;
|
|
67 | 87 |
|
68 | 88 | #define RDAT_STRUCT(type) struct type {
|
69 | 89 | #define RDAT_STRUCT_DERIVED(type, base) struct type : public base {
|
70 |
| - #define RDAT_STRUCT_END() }; |
| 90 | + #define RDAT_STRUCT_END() CLOSE_COMPOUND_DECL |
71 | 91 | #define RDAT_UNION() union {
|
72 |
| - #define RDAT_UNION_END() }; |
| 92 | + #define RDAT_UNION_END() CLOSE_COMPOUND_DECL |
73 | 93 | #define RDAT_RECORD_REF(type, name) RecordRef<type> name;
|
74 | 94 | #define RDAT_RECORD_ARRAY_REF(type, name) RecordArrayRef<type> name;
|
75 | 95 | #define RDAT_RECORD_VALUE(type, name) type name;
|
|
100 | 120 | type##_Reader(); \
|
101 | 121 | const RecordType *asRecord() const; \
|
102 | 122 | const RecordType *operator->() const { return asRecord(); }
|
103 |
| - #define RDAT_STRUCT_END() }; |
| 123 | + #define RDAT_STRUCT_END() CLOSE_COMPOUND_DECL |
104 | 124 | #define RDAT_UNION_IF(name, expr) bool has##name() const;
|
105 | 125 | #define RDAT_UNION_ELIF(name, expr) RDAT_UNION_IF(name, expr)
|
106 | 126 | #define RDAT_RECORD_REF(type, name) type##_Reader get##name() const;
|
|
304 | 324 | #define RDAT_ENUM_VALUE(name, value) name = value,
|
305 | 325 | #define RDAT_ENUM_VALUE_ALIAS(name, value) name = value,
|
306 | 326 | #define RDAT_ENUM_VALUE_NODEF(name) name,
|
307 |
| - #define RDAT_ENUM_END() }; |
| 327 | + #define RDAT_ENUM_END() CLOSE_COMPOUND_DECL |
308 | 328 |
|
309 | 329 | #elif DEF_RDAT_ENUMS == DEF_RDAT_DUMP_DECL
|
310 | 330 |
|
|
0 commit comments