1*9f5f1350SPaolo Bonzini /* 2*9f5f1350SPaolo Bonzini * QEMU Object Model - QObject wrappers 3*9f5f1350SPaolo Bonzini * 4*9f5f1350SPaolo Bonzini * Copyright (C) 2012 Red Hat, Inc. 5*9f5f1350SPaolo Bonzini * 6*9f5f1350SPaolo Bonzini * Author: Paolo Bonzini <pbonzini@redhat.com> 7*9f5f1350SPaolo Bonzini * 8*9f5f1350SPaolo Bonzini * This work is licensed under the terms of the GNU GPL, version 2 or later. 9*9f5f1350SPaolo Bonzini * See the COPYING file in the top-level directory. 10*9f5f1350SPaolo Bonzini */ 11*9f5f1350SPaolo Bonzini 12*9f5f1350SPaolo Bonzini #include "qemu-common.h" 13*9f5f1350SPaolo Bonzini #include "qemu/object.h" 14*9f5f1350SPaolo Bonzini #include "qemu/qom-qobject.h" 15*9f5f1350SPaolo Bonzini #include "qapi/qapi-visit-core.h" 16*9f5f1350SPaolo Bonzini #include "qapi/qmp-input-visitor.h" 17*9f5f1350SPaolo Bonzini #include "qapi/qmp-output-visitor.h" 18*9f5f1350SPaolo Bonzini 19*9f5f1350SPaolo Bonzini void object_property_set_qobject(Object *obj, QObject *value, 20*9f5f1350SPaolo Bonzini const char *name, Error **errp) 21*9f5f1350SPaolo Bonzini { 22*9f5f1350SPaolo Bonzini QmpInputVisitor *mi; 23*9f5f1350SPaolo Bonzini mi = qmp_input_visitor_new(value); 24*9f5f1350SPaolo Bonzini object_property_set(obj, qmp_input_get_visitor(mi), name, errp); 25*9f5f1350SPaolo Bonzini 26*9f5f1350SPaolo Bonzini qmp_input_visitor_cleanup(mi); 27*9f5f1350SPaolo Bonzini } 28*9f5f1350SPaolo Bonzini 29*9f5f1350SPaolo Bonzini QObject *object_property_get_qobject(Object *obj, const char *name, 30*9f5f1350SPaolo Bonzini Error **errp) 31*9f5f1350SPaolo Bonzini { 32*9f5f1350SPaolo Bonzini QObject *ret = NULL; 33*9f5f1350SPaolo Bonzini Error *local_err = NULL; 34*9f5f1350SPaolo Bonzini QmpOutputVisitor *mo; 35*9f5f1350SPaolo Bonzini 36*9f5f1350SPaolo Bonzini mo = qmp_output_visitor_new(); 37*9f5f1350SPaolo Bonzini object_property_get(obj, qmp_output_get_visitor(mo), name, &local_err); 38*9f5f1350SPaolo Bonzini if (!local_err) { 39*9f5f1350SPaolo Bonzini ret = qmp_output_get_qobject(mo); 40*9f5f1350SPaolo Bonzini } 41*9f5f1350SPaolo Bonzini error_propagate(errp, local_err); 42*9f5f1350SPaolo Bonzini qmp_output_visitor_cleanup(mo); 43*9f5f1350SPaolo Bonzini return ret; 44*9f5f1350SPaolo Bonzini } 45