mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
qom: add QObject-based property get/set wrappers
Move the creation of QmpInputVisitor and QmpOutputVisitor from qmp.c to qom/object.c, since it's the only practical way to access object properties. Keep this isolated such that it's easy to remove. At some point, we need to remove all usage of QObject in the tree and replace it with GVariant. Reviewed-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
b46d9b1082
commit
9f5f135058
4 changed files with 90 additions and 16 deletions
44
qom/qom-qobject.c
Normal file
44
qom/qom-qobject.c
Normal file
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* QEMU Object Model - QObject wrappers
|
||||
*
|
||||
* Copyright (C) 2012 Red Hat, Inc.
|
||||
*
|
||||
* Author: Paolo Bonzini <pbonzini@redhat.com>
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#include "qemu-common.h"
|
||||
#include "qemu/object.h"
|
||||
#include "qemu/qom-qobject.h"
|
||||
#include "qapi/qapi-visit-core.h"
|
||||
#include "qapi/qmp-input-visitor.h"
|
||||
#include "qapi/qmp-output-visitor.h"
|
||||
|
||||
void object_property_set_qobject(Object *obj, QObject *value,
|
||||
const char *name, Error **errp)
|
||||
{
|
||||
QmpInputVisitor *mi;
|
||||
mi = qmp_input_visitor_new(value);
|
||||
object_property_set(obj, qmp_input_get_visitor(mi), name, errp);
|
||||
|
||||
qmp_input_visitor_cleanup(mi);
|
||||
}
|
||||
|
||||
QObject *object_property_get_qobject(Object *obj, const char *name,
|
||||
Error **errp)
|
||||
{
|
||||
QObject *ret = NULL;
|
||||
Error *local_err = NULL;
|
||||
QmpOutputVisitor *mo;
|
||||
|
||||
mo = qmp_output_visitor_new();
|
||||
object_property_get(obj, qmp_output_get_visitor(mo), name, &local_err);
|
||||
if (!local_err) {
|
||||
ret = qmp_output_get_qobject(mo);
|
||||
}
|
||||
error_propagate(errp, local_err);
|
||||
qmp_output_visitor_cleanup(mo);
|
||||
return ret;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue