summaryrefslogtreecommitdiff
path: root/qom
diff options
context:
space:
mode:
Diffstat (limited to 'qom')
-rw-r--r--qom/Makefile.objs1
-rw-r--r--qom/object_interfaces.c32
2 files changed, 33 insertions, 0 deletions
diff --git a/qom/Makefile.objs b/qom/Makefile.objs
index 6a93ac7398..985003bd03 100644
--- a/qom/Makefile.objs
+++ b/qom/Makefile.objs
@@ -1,2 +1,3 @@
common-obj-y = object.o container.o qom-qobject.o
common-obj-y += cpu.o
+common-obj-y += object_interfaces.o
diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c
new file mode 100644
index 0000000000..6360818397
--- /dev/null
+++ b/qom/object_interfaces.c
@@ -0,0 +1,32 @@
+#include "qom/object_interfaces.h"
+#include "qemu/module.h"
+
+void user_creatable_complete(Object *obj, Error **errp)
+{
+
+ UserCreatableClass *ucc;
+ UserCreatable *uc =
+ (UserCreatable *)object_dynamic_cast(obj, TYPE_USER_CREATABLE);
+
+ if (!uc) {
+ return;
+ }
+
+ ucc = USER_CREATABLE_GET_CLASS(uc);
+ if (ucc->complete) {
+ ucc->complete(uc, errp);
+ }
+}
+
+static void register_types(void)
+{
+ static const TypeInfo uc_interface_info = {
+ .name = TYPE_USER_CREATABLE,
+ .parent = TYPE_INTERFACE,
+ .class_size = sizeof(UserCreatableClass),
+ };
+
+ type_register_static(&uc_interface_info);
+}
+
+type_init(register_types)