From 590ca879d080e496026281003b6455a7db5d5ee9 Mon Sep 17 00:00:00 2001 From: Etienne Bergeron Date: Wed, 3 Apr 2013 13:54:11 -0400 Subject: [PATCH] Introduce macro to enforce matching enum to string for node types Signed-off-by: Etienne Bergeron Signed-off-by: Mathieu Desnoyers --- formats/ctf/metadata/ctf-ast.h | 63 +++++++++++++++---------------- formats/ctf/metadata/ctf-parser.y | 29 ++------------ 2 files changed, 34 insertions(+), 58 deletions(-) diff --git a/formats/ctf/metadata/ctf-ast.h b/formats/ctf/metadata/ctf-ast.h index 042726e9..3fb38b2d 100644 --- a/formats/ctf/metadata/ctf-ast.h +++ b/formats/ctf/metadata/ctf-ast.h @@ -32,39 +32,38 @@ 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, }; diff --git a/formats/ctf/metadata/ctf-parser.y b/formats/ctf/metadata/ctf-parser.y index 58ea245b..7e3fc40b 100644 --- a/formats/ctf/metadata/ctf-parser.y +++ b/formats/ctf/metadata/ctf-parser.y @@ -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 -- 2.34.1