diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/qapi-visit.py | 2 | ||||
-rw-r--r-- | scripts/qapi.py | 13 |
2 files changed, 9 insertions, 6 deletions
diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py index bd0b742236..7e1cfc13f0 100644 --- a/scripts/qapi-visit.py +++ b/scripts/qapi-visit.py @@ -153,7 +153,7 @@ def gen_visit_enum(name): void visit_type_%(c_name)s(Visitor *v, const char *name, %(c_name)s *obj, Error **errp) { int value = *obj; - visit_type_enum(v, name, &value, %(c_name)s_lookup, errp); + visit_type_enum(v, name, &value, &%(c_name)s_lookup, errp); *obj = value; } ''', diff --git a/scripts/qapi.py b/scripts/qapi.py index 8736b9c786..39a67270fc 100644 --- a/scripts/qapi.py +++ b/scripts/qapi.py @@ -1849,19 +1849,22 @@ def guardend(name): def gen_enum_lookup(name, values, prefix=None): ret = mcgen(''' -const char *const %(c_name)s_lookup[] = { +const QEnumLookup %(c_name)s_lookup = { + .array = (const char *const[]) { ''', c_name=c_name(name)) for value in values: index = c_enum_const(name, value, prefix) ret += mcgen(''' - [%(index)s] = "%(value)s", + [%(index)s] = "%(value)s", ''', index=index, value=value) max_index = c_enum_const(name, '_MAX', prefix) ret += mcgen(''' - [%(max_index)s] = NULL, + [%(max_index)s] = NULL, + }, + .size = %(max_index)s }; ''', max_index=max_index) @@ -1895,9 +1898,9 @@ typedef enum %(c_name)s { ret += mcgen(''' #define %(c_name)s_str(val) \\ - qapi_enum_lookup(%(c_name)s_lookup, (val)) + qapi_enum_lookup(&%(c_name)s_lookup, (val)) -extern const char *const %(c_name)s_lookup[]; +extern const QEnumLookup %(c_name)s_lookup; ''', c_name=c_name(name)) return ret |