[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 15/26] object: express const link with link property
From: |
Marc-André Lureau |
Subject: |
[PATCH 15/26] object: express const link with link property |
Date: |
Sun, 1 Dec 2019 15:15:20 +0400 |
Let's not mix child property and link property callbacks, as this is
confusing, use LinkProperty with DIRECT flag to hold the target pointer.
Signed-off-by: Marc-André Lureau <address@hidden>
---
qom/object.c | 41 +++++++++++++++++++++++------------------
1 file changed, 23 insertions(+), 18 deletions(-)
diff --git a/qom/object.c b/qom/object.c
index d9fc71c284..b73fe66dc9 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -1827,19 +1827,23 @@ static void object_release_link_property(Object *obj,
const char *name,
g_free(prop);
}
-void object_property_add_link(Object *obj, const char *name,
- const char *type, Object **targetp,
- void (*check)(const Object *, const char *,
- Object *, Error **),
- ObjectPropertyLinkFlags flags,
- Error **errp)
+static void object_add_link_prop(Object *obj, const char *name,
+ const char *type, void *ptr,
+ void (*check)(const Object *, const char *,
+ Object *, Error **),
+ ObjectPropertyLinkFlags flags,
+ Error **errp)
{
Error *local_err = NULL;
LinkProperty *prop = g_malloc(sizeof(*prop));
gchar *full_type;
ObjectProperty *op;
- prop->targetp = targetp;
+ if (flags & OBJ_PROP_LINK_DIRECT) {
+ prop->target = ptr;
+ } else {
+ prop->targetp = ptr;
+ }
prop->check = check;
prop->flags = flags;
@@ -1863,20 +1867,21 @@ out:
g_free(full_type);
}
+void object_property_add_link(Object *obj, const char *name,
+ const char *type, Object **targetp,
+ void (*check)(const Object *, const char *,
+ Object *, Error **),
+ ObjectPropertyLinkFlags flags,
+ Error **errp)
+{
+ object_add_link_prop(obj, name, type, targetp, check, flags, errp);
+}
+
void object_property_add_const_link(Object *obj, const char *name,
Object *target, Error **errp)
{
- char *link_type;
- ObjectProperty *op;
-
- link_type = g_strdup_printf("link<%s>", object_get_typename(target));
- op = object_property_add(obj, name, link_type,
- object_get_child_property, NULL,
- NULL, target, errp);
- if (op != NULL) {
- op->resolve = object_resolve_child_property;
- }
- g_free(link_type);
+ object_add_link_prop(obj, name, object_get_typename(target), target,
+ NULL, OBJ_PROP_LINK_DIRECT, errp);
}
gchar *object_get_canonical_path_component(Object *obj)
--
2.24.0
- [PATCH 05/26] object: avoid extra class property key duplication, (continued)
- [PATCH 05/26] object: avoid extra class property key duplication, Marc-André Lureau, 2019/12/01
- [PATCH 06/26] object: add class property initializer, Marc-André Lureau, 2019/12/01
- [PATCH 07/26] object: add object_property_get_defaut(), Marc-André Lureau, 2019/12/01
- [PATCH 08/26] object: make object_class_property_add* return property, Marc-André Lureau, 2019/12/01
- [PATCH 09/26] qstring: add qstring_free(), Marc-André Lureau, 2019/12/01
- [PATCH 10/26] object: add object_property_set_defaut_{bool, str, int, uint}(), Marc-André Lureau, 2019/12/01
- [PATCH 11/26] object: do not free class properties, Marc-André Lureau, 2019/12/01
- [PATCH 12/26] object: check strong flag with &, Marc-André Lureau, 2019/12/01
- [PATCH 13/26] object: rename link "child" to "target", Marc-André Lureau, 2019/12/01
- [PATCH 14/26] object: add direct link flag, Marc-André Lureau, 2019/12/01
- [PATCH 15/26] object: express const link with link property,
Marc-André Lureau <=
- [PATCH 16/26] object: add object_class_property_add_link(), Marc-André Lureau, 2019/12/01
- [PATCH 17/26] object: release all props, Marc-André Lureau, 2019/12/01
- [PATCH 18/26] object: return self in object_ref(), Marc-André Lureau, 2019/12/01
- [PATCH 20/26] qdev: move instance properties to class properties, Marc-André Lureau, 2019/12/01
- [PATCH 21/26] qdev: register properties as class properties, Marc-André Lureau, 2019/12/01
- [PATCH 19/26] qdev: set properties with device_class_set_props(), Marc-André Lureau, 2019/12/01
- [PATCH 22/26] vl: print default value in object help, Marc-André Lureau, 2019/12/01
- [PATCH 23/26] qom: simplify qmp_device_list_properties(), Marc-André Lureau, 2019/12/01
- [PATCH 24/26] qom: introduce object_property_help(), Marc-André Lureau, 2019/12/01
- [PATCH 25/26] qapi/qmp: add ObjectPropertyInfo.default-value, Marc-André Lureau, 2019/12/01