22
33namespace vg ::core
44{
5+ #define vg_generic_enum_value_8 (Namespace, enumTypename ) vg_enum_class(Namespace, enumTypename, vg::core::u8 , \
6+ enumTypename##_0, \
7+ enumTypename##_1, \
8+ enumTypename##_2, \
9+ enumTypename##_3, \
10+ enumTypename##_4, \
11+ enumTypename##_5, \
12+ enumTypename##_6, \
13+ enumTypename##_7 \
14+ );
15+
16+ #define vg_generic_enum_value_16 (Namespace, enumTypename ) vg_enum_class(Namespace, enumTypename, vg::core::u8 , \
17+ enumTypename##_0, enumTypename##_1, enumTypename##_2, enumTypename##_3, \
18+ enumTypename##_4, enumTypename##_5, enumTypename##_6, enumTypename##_7, \
19+ enumTypename##_8, enumTypename##_9, enumTypename##_10, enumTypename##_11, \
20+ enumTypename##_12, enumTypename##_13, enumTypename##_14, enumTypename##_15 \
21+ );
22+
23+ #define vg_generic_enum_value_32 (Namespace, enumTypename ) vg_enum_class(Namespace, enumTypename, vg::core::u8 , \
24+ enumTypename##_0, enumTypename##_1, enumTypename##_2, enumTypename##_3, \
25+ enumTypename##_4, enumTypename##_5, enumTypename##_6, enumTypename##_7, \
26+ enumTypename##_8, enumTypename##_9, enumTypename##_10, enumTypename##_11, \
27+ enumTypename##_12, enumTypename##_13, enumTypename##_14, enumTypename##_15, \
28+ enumTypename##_16, enumTypename##_17, enumTypename##_18, enumTypename##_19, \
29+ enumTypename##_20, enumTypename##_21, enumTypename##_22, enumTypename##_23, \
30+ enumTypename##_24, enumTypename##_25, enumTypename##_26, enumTypename##_27, \
31+ enumTypename##_28, enumTypename##_29, enumTypename##_30, enumTypename##_31 \
32+ );
33+
534 #define vg_generic_enum_value_64 (Namespace, enumTypename ) vg_enum_class(Namespace, enumTypename, vg::core::u8 , \
635 enumTypename##_0, enumTypename##_1, enumTypename##_2, enumTypename##_3, \
736 enumTypename##_4, enumTypename##_5, enumTypename##_6, enumTypename##_7, \
@@ -21,7 +50,36 @@ namespace vg::core
2150 enumTypename##_60, enumTypename##_61, enumTypename##_62, enumTypename##_63 \
2251 );
2352
24- #define vg_generic_enum_bitfield_64 (Namespace, enumTypename ) vg_enum_class(Namespace, enumTypename, vg::core::u64 , \
53+ #define vg_generic_enum_bitfield_8 (Namespace, enumTypename ) vg_enum_class(Namespace, enumTypename, vg::core::u8 , \
54+ enumTypename##_0 = 0x01 , \
55+ enumTypename##_1 = 0x02 , \
56+ enumTypename##_2 = 0x04 , \
57+ enumTypename##_3 = 0x08 , \
58+ enumTypename##_4 = 0x10 , \
59+ enumTypename##_5 = 0x20 , \
60+ enumTypename##_6 = 0x40 , \
61+ enumTypename##_7 = 0x80 \
62+ );
63+
64+ #define vg_generic_enum_bitfield_16 (Namespace, enumTypename ) vg_enum_class(Namespace, enumTypename, vg::core::u16 , \
65+ enumTypename##_0 = 0x00000001ULL , enumTypename##_1 = 0x00000002ULL , enumTypename##_2 = 0x00000004ULL , enumTypename##_3 = 0x00000008ULL , \
66+ enumTypename##_4 = 0x00000010ULL , enumTypename##_5 = 0x00000020ULL , enumTypename##_6 = 0x00000040ULL , enumTypename##_7 = 0x00000080ULL , \
67+ enumTypename##_8 = 0x00000100ULL , enumTypename##_9 = 0x00000200ULL , enumTypename##_10 = 0x00000400ULL , enumTypename##_11 = 0x00000800ULL , \
68+ enumTypename##_12 = 0x00001000ULL , enumTypename##_13 = 0x00002000ULL , enumTypename##_14 = 0x00004000ULL , enumTypename##_15 = 0x00008000ULL \
69+ );
70+
71+ #define vg_generic_enum_bitfield_32 (Namespace, enumTypename ) vg_enum_class(Namespace, enumTypename, vg::core::u32 , \
72+ enumTypename##_0 = 0x00000001ULL , enumTypename##_1 = 0x00000002ULL , enumTypename##_2 = 0x00000004ULL , enumTypename##_3 = 0x00000008ULL , \
73+ enumTypename##_4 = 0x00000010ULL , enumTypename##_5 = 0x00000020ULL , enumTypename##_6 = 0x00000040ULL , enumTypename##_7 = 0x00000080ULL , \
74+ enumTypename##_8 = 0x00000100ULL , enumTypename##_9 = 0x00000200ULL , enumTypename##_10 = 0x00000400ULL , enumTypename##_11 = 0x00000800ULL , \
75+ enumTypename##_12 = 0x00001000ULL , enumTypename##_13 = 0x00002000ULL , enumTypename##_14 = 0x00004000ULL , enumTypename##_15 = 0x00008000ULL , \
76+ enumTypename##_16 = 0x00010000ULL , enumTypename##_17 = 0x00020000ULL , enumTypename##_18 = 0x00040000ULL , enumTypename##_19 = 0x00080000ULL , \
77+ enumTypename##_20 = 0x00100000ULL , enumTypename##_21 = 0x00200000ULL , enumTypename##_22 = 0x00400000ULL , enumTypename##_23 = 0x00800000ULL , \
78+ enumTypename##_24 = 0x01000000ULL , enumTypename##_25 = 0x02000000ULL , enumTypename##_26 = 0x04000000ULL , enumTypename##_27 = 0x08000000ULL , \
79+ enumTypename##_28 = 0x10000000ULL , enumTypename##_29 = 0x20000000ULL , enumTypename##_30 = 0x40000000ULL , enumTypename##_31 = 0x80000000ULL \
80+ );
81+
82+ #define vg_generic_enum_bitfield_64 (Namespace, enumTypename ) vg_enum_class(Namespace, enumTypename, vg::core::u64 , \
2583 enumTypename##_0 = 0x0000000000000001ULL , enumTypename##_1 = 0x0000000000000002ULL , enumTypename##_2 = 0x0000000000000004ULL , enumTypename##_3 = 0x0000000000000008ULL , \
2684 enumTypename##_4 = 0x0000000000000010ULL , enumTypename##_5 = 0x0000000000000020ULL , enumTypename##_6 = 0x0000000000000040ULL , enumTypename##_7 = 0x0000000000000080ULL , \
2785 enumTypename##_8 = 0x0000000000000100ULL , enumTypename##_9 = 0x0000000000000200ULL , enumTypename##_10 = 0x0000000000000400ULL , enumTypename##_11 = 0x0000000000000800ULL , \
0 commit comments