qapi: generate a literal qobject for introspection

Replace the generated json string with a literal qobject. The later is
easier to deal with, at run time as well as compile time: adding #if
conditionals will be easier than in a json string.

The output of query-qmp-schema is not changed.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20180305172951.2150-5-marcandre.lureau@redhat.com>
[eblake: fix python 3 failure]
Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Marc-André Lureau 2018-03-05 18:29:51 +01:00 committed by Eric Blake
parent 3cf42b8b3a
commit 7d0f982bfb
4 changed files with 70 additions and 48 deletions

View file

@ -1250,24 +1250,27 @@ static void test_visitor_in_fail_alternate(TestInputVisitorData *data,
}
static void do_test_visitor_in_qmp_introspect(TestInputVisitorData *data,
const char *schema_json)
const QLitObject *qlit)
{
SchemaInfoList *schema = NULL;
QObject *obj = qobject_from_qlit(qlit);
Visitor *v;
v = visitor_input_test_init_raw(data, schema_json);
v = qobject_input_visitor_new(obj);
visit_type_SchemaInfoList(v, NULL, &schema, &error_abort);
g_assert(schema);
qapi_free_SchemaInfoList(schema);
qobject_decref(obj);
visit_free(v);
}
static void test_visitor_in_qmp_introspect(TestInputVisitorData *data,
const void *unused)
{
do_test_visitor_in_qmp_introspect(data, test_qmp_schema_json);
do_test_visitor_in_qmp_introspect(data, qmp_schema_json);
do_test_visitor_in_qmp_introspect(data, &test_qmp_schema_qlit);
do_test_visitor_in_qmp_introspect(data, &qmp_schema_qlit);
}
int main(int argc, char **argv)