mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 12:23:53 -06: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:
parent
788b305c91
commit
f7abe0ecd4
33 changed files with 106 additions and 89 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue