Introduce macro to enforce matching enum to string for node types
authorEtienne Bergeron <etienneb@google.com>
Wed, 3 Apr 2013 17:54:11 +0000 (13:54 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 3 Apr 2013 17:54:11 +0000 (13:54 -0400)
Signed-off-by: Etienne Bergeron <etienneb@google.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
formats/ctf/metadata/ctf-ast.h
formats/ctf/metadata/ctf-parser.y

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,
 };
 
index 58ea245b8d30f2b43b17cb26b7a8a72594bd0dc2..7e3fc40bc9e68f24e311ec238178d620737138ef 100644 (file)
@@ -77,32 +77,9 @@ struct gc_string {
 };
 
 static const char *node_type_to_str[] = {
-       [ NODE_UNKNOWN ] = "NODE_UNKNOWN",
-       [ NODE_ROOT ] = "NODE_ROOT",
-       [ NODE_EVENT ] = "NODE_EVENT",
-       [ NODE_ENV ] = "NODE_ENV",
-       [ NODE_STREAM ] = "NODE_STREAM",
-       [ NODE_TRACE ] = "NODE_TRACE",
-       [ NODE_CLOCK ] = "NODE_CLOCK",
-       [ NODE_CALLSITE ] = "NODE_CALLSITE",
-       [ NODE_CTF_EXPRESSION ] = "NODE_CTF_EXPRESSION",
-       [ NODE_UNARY_EXPRESSION ] = "NODE_UNARY_EXPRESSION",
-       [ NODE_TYPEDEF ] = "NODE_TYPEDEF",
-       [ NODE_TYPEALIAS_TARGET ] = "NODE_TYPEALIAS_TARGET",
-       [ NODE_TYPEALIAS_ALIAS ] = "NODE_TYPEALIAS_ALIAS",
-       [ NODE_TYPEALIAS ] = "NODE_TYPEALIAS",
-       [ NODE_TYPE_SPECIFIER ] = "NODE_TYPE_SPECIFIER",
-       [ NODE_TYPE_SPECIFIER_LIST ] = "NODE_TYPE_SPECIFIER_LIST",
-       [ NODE_POINTER ] = "NODE_POINTER",
-       [ NODE_TYPE_DECLARATOR ] = "NODE_TYPE_DECLARATOR",
-       [ NODE_FLOATING_POINT ] = "NODE_FLOATING_POINT",
-       [ NODE_INTEGER ] = "NODE_INTEGER",
-       [ NODE_STRING ] = "NODE_STRING",
-       [ NODE_ENUMERATOR ] = "NODE_ENUMERATOR",
-       [ NODE_ENUM ] = "NODE_ENUM",
-       [ NODE_STRUCT_OR_VARIANT_DECLARATION ] = "NODE_STRUCT_OR_VARIANT_DECLARATION",
-       [ NODE_VARIANT ] = "NODE_VARIANT",
-       [ NODE_STRUCT ] = "NODE_STRUCT",
+#define ENTRY(S)       [S] = #S,
+       FOREACH_CTF_NODES(ENTRY)
+#undef ENTRY
 };
 
 BT_HIDDEN
This page took 0.026483 seconds and 4 git commands to generate.