Introduce macro to enforce matching enum to string for node types
[babeltrace.git] / formats / ctf / metadata / ctf-ast.h
index 042726e9edc35d9dea049b3ee235701b74da0e0d..3fb38b2d6295c4eca0f0500374c68e7f17bd307d 100644 (file)
 struct ctf_node;
 struct ctf_parser;
 
-enum node_type {
-       NODE_UNKNOWN = 0,
-       NODE_ROOT,
-
-       NODE_EVENT,
-       NODE_STREAM,
-       NODE_ENV,
-       NODE_TRACE,
-       NODE_CLOCK,
-       NODE_CALLSITE,
-
-       NODE_CTF_EXPRESSION,
-       NODE_UNARY_EXPRESSION,
-
-       NODE_TYPEDEF,
-       NODE_TYPEALIAS_TARGET,
-       NODE_TYPEALIAS_ALIAS,
-       NODE_TYPEALIAS,
-
-       NODE_TYPE_SPECIFIER,
-       NODE_TYPE_SPECIFIER_LIST,
-       NODE_POINTER,
-       NODE_TYPE_DECLARATOR,
-
-       NODE_FLOATING_POINT,
-       NODE_INTEGER,
-       NODE_STRING,
-       NODE_ENUMERATOR,
-       NODE_ENUM,
-       NODE_STRUCT_OR_VARIANT_DECLARATION,
-       NODE_VARIANT,
-       NODE_STRUCT,
+#define FOREACH_CTF_NODES(F) \
+       F(NODE_UNKNOWN) \
+       F(NODE_ROOT) \
+       F(NODE_EVENT) \
+       F(NODE_STREAM) \
+       F(NODE_ENV) \
+       F(NODE_TRACE) \
+       F(NODE_CLOCK) \
+       F(NODE_CALLSITE) \
+       F(NODE_CTF_EXPRESSION) \
+       F(NODE_UNARY_EXPRESSION) \
+       F(NODE_TYPEDEF) \
+       F(NODE_TYPEALIAS_TARGET) \
+       F(NODE_TYPEALIAS_ALIAS) \
+       F(NODE_TYPEALIAS) \
+       F(NODE_TYPE_SPECIFIER) \
+       F(NODE_TYPE_SPECIFIER_LIST) \
+       F(NODE_POINTER) \
+       F(NODE_TYPE_DECLARATOR) \
+       F(NODE_FLOATING_POINT) \
+       F(NODE_INTEGER) \
+       F(NODE_STRING) \
+       F(NODE_ENUMERATOR) \
+       F(NODE_ENUM) \
+       F(NODE_STRUCT_OR_VARIANT_DECLARATION) \
+       F(NODE_VARIANT) \
+       F(NODE_STRUCT)
 
+enum node_type {
+#define ENTRY(S)       S,
+       FOREACH_CTF_NODES(ENTRY)
+#undef ENTRY
        NR_NODE_TYPES,
 };
 
This page took 0.023611 seconds and 4 git commands to generate.