mirror of
https://github.com/mii443/qemu.git
synced 2025-08-23 23:49:36 +00:00
qapi: Change data type of the FOO_lookup generated for enum FOO
Currently, a FOO_lookup is an array of strings terminated by a NULL sentinel. A future patch will generate enums with "holes". NULL-termination will cease to work then. To prepare for that, store the length in the FOO_lookup by wrapping it in a struct and adding a member for the length. The sentinel will be dropped next. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20170822132255.23945-13-marcandre.lureau@redhat.com> [Basically redone] Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <1503564371-26090-16-git-send-email-armbru@redhat.com> [Rebased]
This commit is contained in:
committed by
Markus Armbruster
parent
788b305c91
commit
f7abe0ecd4
@ -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
|
||||
|
Reference in New Issue
Block a user