diff options
author | Marc-André Lureau | 2017-08-24 10:46:10 +0200 |
---|---|---|
committer | Markus Armbruster | 2017-09-04 13:09:13 +0200 |
commit | f7abe0ecd4973dfe36944b916c5b9cf8ec199b8a (patch) | |
tree | 99ca676afbfcf2da0182b3bf99811d000cb69c58 /tests | |
parent | qapi: Convert indirect uses of FOO_lookup[...] to qapi_enum_lookup() (diff) | |
download | qemu-f7abe0ecd4973dfe36944b916c5b9cf8ec199b8a.tar.gz qemu-f7abe0ecd4973dfe36944b916c5b9cf8ec199b8a.tar.xz qemu-f7abe0ecd4973dfe36944b916c5b9cf8ec199b8a.zip |
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]
Diffstat (limited to 'tests')
-rw-r--r-- | tests/check-qom-proplist.c | 15 | ||||
-rw-r--r-- | tests/qmp-test.c | 2 | ||||
-rw-r--r-- | tests/test-qapi-util.c | 10 | ||||
-rw-r--r-- | tests/test-qobject-input-visitor.c | 2 |
4 files changed, 16 insertions, 13 deletions
diff --git a/tests/check-qom-proplist.c b/tests/check-qom-proplist.c index c51e6e734d..07e351f950 100644 --- a/tests/check-qom-proplist.c +++ b/tests/check-qom-proplist.c @@ -46,11 +46,14 @@ enum DummyAnimal { DUMMY_LAST, }; -static const char *const dummy_animal_map[DUMMY_LAST + 1] = { - [DUMMY_FROG] = "frog", - [DUMMY_ALLIGATOR] = "alligator", - [DUMMY_PLATYPUS] = "platypus", - [DUMMY_LAST] = NULL, +const QEnumLookup dummy_animal_map = { + .array = (const char *const[]) { + [DUMMY_FROG] = "frog", + [DUMMY_ALLIGATOR] = "alligator", + [DUMMY_PLATYPUS] = "platypus", + [DUMMY_LAST] = NULL, + }, + .size = DUMMY_LAST }; struct DummyObject { @@ -142,7 +145,7 @@ static void dummy_class_init(ObjectClass *cls, void *data) NULL); object_class_property_add_enum(cls, "av", "DummyAnimal", - dummy_animal_map, + &dummy_animal_map, dummy_get_av, dummy_set_av, NULL); diff --git a/tests/qmp-test.c b/tests/qmp-test.c index b5f21dfa57..c5a5c10b41 100644 --- a/tests/qmp-test.c +++ b/tests/qmp-test.c @@ -181,7 +181,7 @@ static void test_query(const void *data) g_assert(qdict_haskey(resp, "return")); } else { g_assert(error); - g_assert_cmpint(qapi_enum_parse(QapiErrorClass_lookup, error_class, + g_assert_cmpint(qapi_enum_parse(&QapiErrorClass_lookup, error_class, -1, &error_abort), ==, expected_error_class); } diff --git a/tests/test-qapi-util.c b/tests/test-qapi-util.c index 0992bdb218..4b5e4f8bd3 100644 --- a/tests/test-qapi-util.c +++ b/tests/test-qapi-util.c @@ -19,19 +19,19 @@ static void test_qapi_enum_parse(void) Error *err = NULL; int ret; - ret = qapi_enum_parse(QType_lookup, NULL, QTYPE_NONE, &error_abort); + ret = qapi_enum_parse(&QType_lookup, NULL, QTYPE_NONE, &error_abort); g_assert_cmpint(ret, ==, QTYPE_NONE); - ret = qapi_enum_parse(QType_lookup, "junk", -1, NULL); + ret = qapi_enum_parse(&QType_lookup, "junk", -1, NULL); g_assert_cmpint(ret, ==, -1); - ret = qapi_enum_parse(QType_lookup, "junk", -1, &err); + ret = qapi_enum_parse(&QType_lookup, "junk", -1, &err); error_free_or_abort(&err); - ret = qapi_enum_parse(QType_lookup, "none", -1, &error_abort); + ret = qapi_enum_parse(&QType_lookup, "none", -1, &error_abort); g_assert_cmpint(ret, ==, QTYPE_NONE); - ret = qapi_enum_parse(QType_lookup, QType_str(QTYPE__MAX - 1), + ret = qapi_enum_parse(&QType_lookup, QType_str(QTYPE__MAX - 1), QTYPE__MAX - 1, &error_abort); g_assert_cmpint(ret, ==, QTYPE__MAX - 1); } diff --git a/tests/test-qobject-input-visitor.c b/tests/test-qobject-input-visitor.c index f8720aa5eb..fe591814e4 100644 --- a/tests/test-qobject-input-visitor.c +++ b/tests/test-qobject-input-visitor.c @@ -1110,7 +1110,7 @@ static void test_visitor_in_fail_struct_missing(TestInputVisitorData *data, error_free_or_abort(&err); visit_optional(v, "optional", &present); g_assert(!present); - visit_type_enum(v, "enum", &en, EnumOne_lookup, &err); + visit_type_enum(v, "enum", &en, &EnumOne_lookup, &err); error_free_or_abort(&err); visit_type_int(v, "i64", &i64, &err); error_free_or_abort(&err); |