mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
qapi: Introduce a first class 'null' type
I expect the 'null' type to be useful mostly for members of alternate types. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Daniel P. Berrange <berrange@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
d2f95f4d48
commit
4d2d5c41a9
8 changed files with 31 additions and 8 deletions
|
@ -93,7 +93,8 @@
|
|||
{ 'struct': 'WrapAlternate',
|
||||
'data': { 'alt': 'UserDefAlternate' } }
|
||||
{ 'alternate': 'UserDefAlternate',
|
||||
'data': { 'udfu': 'UserDefFlatUnion', 'e': 'EnumOne', 'i': 'int' } }
|
||||
'data': { 'udfu': 'UserDefFlatUnion', 'e': 'EnumOne', 'i': 'int',
|
||||
'n': 'null' } }
|
||||
|
||||
{ 'struct': 'UserDefC',
|
||||
'data': { 'string1': 'str', 'string2': 'str' } }
|
||||
|
|
|
@ -64,6 +64,7 @@ alternate UserDefAlternate
|
|||
case udfu: UserDefFlatUnion
|
||||
case e: EnumOne
|
||||
case i: int
|
||||
case n: null
|
||||
object UserDefB
|
||||
member intb: int optional=False
|
||||
member a-b: bool optional=True
|
||||
|
|
|
@ -583,6 +583,11 @@ static void test_visitor_in_alternate(TestInputVisitorData *data,
|
|||
g_assert_cmpint(tmp->u.e, ==, ENUM_ONE_VALUE1);
|
||||
qapi_free_UserDefAlternate(tmp);
|
||||
|
||||
v = visitor_input_test_init(data, "null");
|
||||
visit_type_UserDefAlternate(v, NULL, &tmp, &error_abort);
|
||||
g_assert_cmpint(tmp->type, ==, QTYPE_QNULL);
|
||||
qapi_free_UserDefAlternate(tmp);
|
||||
|
||||
v = visitor_input_test_init(data, "{'integer':1, 'string':'str', "
|
||||
"'enum1':'value1', 'boolean':true}");
|
||||
visit_type_UserDefAlternate(v, NULL, &tmp, &error_abort);
|
||||
|
|
|
@ -422,6 +422,16 @@ static void test_visitor_out_alternate(TestOutputVisitorData *data,
|
|||
|
||||
qapi_free_UserDefAlternate(tmp);
|
||||
|
||||
visitor_reset(data);
|
||||
tmp = g_new0(UserDefAlternate, 1);
|
||||
tmp->type = QTYPE_QNULL;
|
||||
tmp->u.n = qnull();
|
||||
|
||||
visit_type_UserDefAlternate(data->ov, NULL, &tmp, &error_abort);
|
||||
g_assert_cmpint(qobject_type(visitor_get(data)), ==, QTYPE_QNULL);
|
||||
|
||||
qapi_free_UserDefAlternate(tmp);
|
||||
|
||||
visitor_reset(data);
|
||||
tmp = g_new0(UserDefAlternate, 1);
|
||||
tmp->type = QTYPE_QDICT;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue