@@ -203,7 +203,7 @@ static SchemaInfoList *zap_deprecated(SchemaInfoList *schema)
SchemaInfoList *qmp_query_qmp_schema(Error **errp)
{
- QObject *obj = qobject_from_qlit(&qmp_schema_qlit);
+ QObject *obj = qmp_schema_qobject();
Visitor *v = qobject_input_visitor_new(obj);
SchemaInfoList *schema = NULL;
@@ -1184,10 +1184,10 @@ static void test_visitor_in_fail_alternate(TestInputVisitorData *data,
}
static void do_test_visitor_in_qmp_introspect(TestInputVisitorData *data,
- const QLitObject *qlit)
+ QObject *qlit)
{
g_autoptr(SchemaInfoList) schema = NULL;
- QObject *obj = qobject_from_qlit(qlit);
+ QObject *obj = qlit;
Visitor *v;
v = qobject_input_visitor_new(obj);
@@ -1202,7 +1202,7 @@ static void do_test_visitor_in_qmp_introspect(TestInputVisitorData *data,
static void test_visitor_in_qmp_introspect(TestInputVisitorData *data,
const void *unused)
{
- do_test_visitor_in_qmp_introspect(data, &test_qmp_schema_qlit);
+ do_test_visitor_in_qmp_introspect(data, test_qmp_schema_qobject());
}
int main(int argc, char **argv)
@@ -193,15 +193,18 @@ def visit_end(self) -> None:
for typ in self._used_types:
typ.visit(self)
# generate C
- name = c_name(self._prefix, protect=False) + 'qmp_schema_qlit'
+ name = c_name(self._prefix, protect=False) + 'qmp_schema_qobject'
self._genh.add(mcgen('''
#include "qobject/qlit.h"
-extern const QLitObject %(c_name)s;
+QObject *%(c_name)s(void);
''',
c_name=c_name(name)))
self._genc.add(mcgen('''
-const QLitObject %(c_name)s = %(c_string)s;
+QObject *%(c_name)s(void) {
+ const QLitObject res = %(c_string)s;
+ return qobject_from_qlit(&res);
+}
''',
c_name=c_name(name),
c_string=_tree_to_qlit(self._trees)))
Instead of defining a const QLitObject, we implement a function to directly return the QObject associated. The benefit is that we can now have a non static definition for the QLitObject, and so we can assign it using non static initializer. This will be used in next commits to initialize a .hidden field per element, at runtime. Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> --- monitor/qmp-cmds-control.c | 2 +- tests/unit/test-qobject-input-visitor.c | 6 +++--- scripts/qapi/introspect.py | 9 ++++++--- 3 files changed, 10 insertions(+), 7 deletions(-)