@@ -2,34 +2,106 @@ macro package cenum
22
33import std.ast.Tokens
44
5+ /* *
6+ * @brief Defines a standard enumeration.
7+ *
8+ * Generates an enum struct that implements `Hashable` and `Comparable`.
9+ * Values auto-increment starting from 0.
10+ *
11+ * @param attrTokens Tokens specifying visibility, name, and optional type.
12+ * @param inputTokens Tokens specifying the enum members.
13+ */
514public macro Enum (attrTokens : Tokens , inputTokens : Tokens ) {
615 makeEnum (attrTokens , inputTokens )
716}
817
18+ /* *
19+ * @brief Defines a C-compatible standard enumeration.
20+ *
21+ * Generates a C-compatible struct (`@C`) for use with FFI.
22+ * Values auto-increment starting from 0.
23+ *
24+ * @param attrTokens Tokens specifying visibility, name, and optional type.
25+ * @param inputTokens Tokens specifying the enum members.
26+ */
927public macro CEnum (attrTokens : Tokens , inputTokens : Tokens ) {
1028 makeEnum (attrTokens , inputTokens , ffi_c : true )
1129}
1230
31+ /* *
32+ * @brief Defines a flag (bitfield) enumeration.
33+ *
34+ * Generates an enum struct with bitwise operators (`|`, `&`, `^`, etc.).
35+ * Values auto-increment using bit shifting starting from 0 (0, 1, 2, 4, ...).
36+ *
37+ * @param attrTokens Tokens specifying visibility, name, and optional type.
38+ * @param inputTokens Tokens specifying the enum members.
39+ */
1340public macro FlagEnum (attrTokens : Tokens , inputTokens : Tokens ) {
1441 makeEnum (attrTokens , inputTokens , flagEnum : true )
1542}
1643
44+ /* *
45+ * @brief Defines a flag (bitfield) enumeration starting at 0.
46+ *
47+ * Similar to `FlagEnum`, explicitly starts the sequence at 0.
48+ * Values: 0, 1, 2, 4, ...
49+ *
50+ * @param attrTokens Tokens specifying visibility, name, and optional type.
51+ * @param inputTokens Tokens specifying the enum members.
52+ */
1753public macro FlagEnum0 (attrTokens : Tokens , inputTokens : Tokens ) {
1854 makeEnum (attrTokens , inputTokens , flagEnum : true )
1955}
2056
57+ /* *
58+ * @brief Defines a flag (bitfield) enumeration starting at 1.
59+ *
60+ * Generates a flag enum where the first value is 1.
61+ * Values: 1, 2, 4, 8, ...
62+ *
63+ * @param attrTokens Tokens specifying visibility, name, and optional type.
64+ * @param inputTokens Tokens specifying the enum members.
65+ */
2166public macro FlagEnum1 (attrTokens : Tokens , inputTokens : Tokens ) {
2267 makeEnum (attrTokens , inputTokens , flagEnum : true , startValue : 1 )
2368}
2469
70+ /* *
71+ * @brief Defines a C-compatible flag (bitfield) enumeration.
72+ *
73+ * Generates a C-compatible struct (`@C`) with bitwise operators.
74+ * Values auto-increment starting from 0.
75+ *
76+ * @param attrTokens Tokens specifying visibility, name, and optional type.
77+ * @param inputTokens Tokens specifying the enum members.
78+ */
2579public macro CFlagEnum (attrTokens : Tokens , inputTokens : Tokens ) {
2680 makeEnum (attrTokens , inputTokens , flagEnum : true , ffi_c : true )
2781}
2882
83+ /* *
84+ * @brief Defines a C-compatible flag (bitfield) enumeration starting at 0.
85+ *
86+ * Generates a C-compatible struct (`@C`) with bitwise operators.
87+ * Values: 0, 1, 2, 4, ...
88+ *
89+ * @param attrTokens Tokens specifying visibility, name, and optional type.
90+ * @param inputTokens Tokens specifying the enum members.
91+ */
2992public macro CFlagEnum0 (attrTokens : Tokens , inputTokens : Tokens ) {
3093 makeEnum (attrTokens , inputTokens , flagEnum : true , ffi_c : true )
3194}
3295
96+ /* *
97+ * @brief Defines a C-compatible flag (bitfield) enumeration starting at 1.
98+ *
99+ * Generates a C-compatible struct (`@C`) with bitwise operators.
100+ * Values: 1, 2, 4, 8, ...
101+ *
102+ * @param attrTokens Tokens specifying visibility, name, and optional type.
103+ * @param inputTokens Tokens specifying the enum members.
104+ */
33105public macro CFlagEnum1 (attrTokens : Tokens , inputTokens : Tokens ) {
34106 makeEnum (attrTokens , inputTokens , flagEnum : true , startValue : 1 , ffi_c : true )
35107}
0 commit comments