[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 05/17] qom: Make all the object_property_add_FOO() return the pro
From: |
Markus Armbruster |
Subject: |
[PATCH 05/17] qom: Make all the object_property_add_FOO() return the property |
Date: |
Tue, 28 Apr 2020 18:34:07 +0200 |
Some object_property_add_FOO() return the newly added property, some
don't. Clean that up.
Signed-off-by: Markus Armbruster <address@hidden>
---
include/qom/object.h | 50 ++++++---
qom/object.c | 250 ++++++++++++++++++++++---------------------
2 files changed, 164 insertions(+), 136 deletions(-)
diff --git a/include/qom/object.h b/include/qom/object.h
index 5d1ed672c3..26e9f13a17 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -1505,9 +1505,11 @@ Object *object_resolve_path_component(Object *parent,
const char *part);
* The value of a child property as a C string will be the child object's
* canonical path. It can be retrieved using object_property_get_str().
* The child object itself can be retrieved using object_property_get_link().
+ *
+ * Returns: The newly added property on success, or %NULL on failure.
*/
-void object_property_add_child(Object *obj, const char *name,
- Object *child, Error **errp);
+ObjectProperty *object_property_add_child(Object *obj, const char *name,
+ Object *child, Error **errp);
typedef enum {
/* Unref the link pointer when the property is deleted */
@@ -1556,8 +1558,10 @@ void object_property_allow_set_link(const Object *,
const char *,
* <code>@flags</code> <code>OBJ_PROP_LINK_STRONG</code> bit is set,
* the reference count is decremented when the property is deleted or
* modified.
+ *
+ * Returns: The newly added property on success, or %NULL on failure.
*/
-void object_property_add_link(Object *obj, const char *name,
+ObjectProperty *object_property_add_link(Object *obj, const char *name,
const char *type, Object **targetp,
void (*check)(const Object *obj, const char
*name,
Object *val, Error **errp),
@@ -1583,8 +1587,10 @@ ObjectProperty
*object_class_property_add_link(ObjectClass *oc,
*
* Add a string property using getters/setters. This function will add a
* property of type 'string'.
+ *
+ * Returns: The newly added property on success, or %NULL on failure.
*/
-void object_property_add_str(Object *obj, const char *name,
+ObjectProperty *object_property_add_str(Object *obj, const char *name,
char *(*get)(Object *, Error **),
void (*set)(Object *, const char *, Error **),
Error **errp);
@@ -1606,8 +1612,10 @@ ObjectProperty
*object_class_property_add_str(ObjectClass *klass,
*
* Add a bool property using getters/setters. This function will add a
* property of type 'bool'.
+ *
+ * Returns: The newly added property on success, or %NULL on failure.
*/
-void object_property_add_bool(Object *obj, const char *name,
+ObjectProperty *object_property_add_bool(Object *obj, const char *name,
bool (*get)(Object *, Error **),
void (*set)(Object *, bool, Error **),
Error **errp);
@@ -1629,8 +1637,10 @@ ObjectProperty
*object_class_property_add_bool(ObjectClass *klass,
*
* Add an enum property using getters/setters. This function will add a
* property of type '@typename'.
+ *
+ * Returns: The newly added property on success, or %NULL on failure.
*/
-void object_property_add_enum(Object *obj, const char *name,
+ObjectProperty *object_property_add_enum(Object *obj, const char *name,
const char *typename,
const QEnumLookup *lookup,
int (*get)(Object *, Error **),
@@ -1654,8 +1664,10 @@ ObjectProperty
*object_class_property_add_enum(ObjectClass *klass,
*
* Add a read-only struct tm valued property using a getter function.
* This function will add a property of type 'struct tm'.
+ *
+ * Returns: The newly added property on success, or %NULL on failure.
*/
-void object_property_add_tm(Object *obj, const char *name,
+ObjectProperty *object_property_add_tm(Object *obj, const char *name,
void (*get)(Object *, struct tm *, Error **),
Error **errp);
@@ -1683,8 +1695,10 @@ typedef enum {
*
* Add an integer property in memory. This function will add a
* property of type 'uint8'.
+ *
+ * Returns: The newly added property on success, or %NULL on failure.
*/
-void object_property_add_uint8_ptr(Object *obj, const char *name,
+ObjectProperty *object_property_add_uint8_ptr(Object *obj, const char *name,
const uint8_t *v, ObjectPropertyFlags flags,
Error **errp);
@@ -1704,8 +1718,10 @@ ObjectProperty
*object_class_property_add_uint8_ptr(ObjectClass *klass,
*
* Add an integer property in memory. This function will add a
* property of type 'uint16'.
+ *
+ * Returns: The newly added property on success, or %NULL on failure.
*/
-void object_property_add_uint16_ptr(Object *obj, const char *name,
+ObjectProperty *object_property_add_uint16_ptr(Object *obj, const char *name,
const uint16_t *v,
ObjectPropertyFlags flags,
Error **errp);
@@ -1726,8 +1742,10 @@ ObjectProperty
*object_class_property_add_uint16_ptr(ObjectClass *klass,
*
* Add an integer property in memory. This function will add a
* property of type 'uint32'.
+ *
+ * Returns: The newly added property on success, or %NULL on failure.
*/
-void object_property_add_uint32_ptr(Object *obj, const char *name,
+ObjectProperty *object_property_add_uint32_ptr(Object *obj, const char *name,
const uint32_t *v,
ObjectPropertyFlags flags,
Error **errp);
@@ -1748,8 +1766,10 @@ ObjectProperty
*object_class_property_add_uint32_ptr(ObjectClass *klass,
*
* Add an integer property in memory. This function will add a
* property of type 'uint64'.
+ *
+ * Returns: The newly added property on success, or %NULL on failure.
*/
-void object_property_add_uint64_ptr(Object *obj, const char *name,
+ObjectProperty *object_property_add_uint64_ptr(Object *obj, const char *name,
const uint64_t *v,
ObjectPropertyFlags flags,
Error **Errp);
@@ -1775,8 +1795,10 @@ ObjectProperty
*object_class_property_add_uint64_ptr(ObjectClass *klass,
* this property exists. In the case of a child object or an alias on the same
* object this will be the case. For aliases to other objects the caller is
* responsible for taking a reference.
+ *
+ * Returns: The newly added property on success, or %NULL on failure.
*/
-void object_property_add_alias(Object *obj, const char *name,
+ObjectProperty *object_property_add_alias(Object *obj, const char *name,
Object *target_obj, const char *target_name,
Error **errp);
@@ -1794,8 +1816,10 @@ void object_property_add_alias(Object *obj, const char
*name,
* this property exists. In the case @target is a child of @obj,
* this will be the case. Otherwise, the caller is responsible for
* taking a reference.
+ *
+ * Returns: The newly added property on success, or %NULL on failure.
*/
-void object_property_add_const_link(Object *obj, const char *name,
+ObjectProperty *object_property_add_const_link(Object *obj, const char *name,
Object *target, Error **errp);
/**
diff --git a/qom/object.c b/qom/object.c
index ddb021db21..067bb3186d 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -1679,33 +1679,30 @@ static void object_finalize_child_property(Object *obj,
const char *name,
object_unref(child);
}
-void object_property_add_child(Object *obj, const char *name,
- Object *child, Error **errp)
+ObjectProperty *
+object_property_add_child(Object *obj, const char *name,
+ Object *child, Error **errp)
{
- Error *local_err = NULL;
- char *type;
+ g_autofree char *type = NULL;
ObjectProperty *op;
if (child->parent != NULL) {
error_setg(errp, "child object is already parented");
- return;
+ return NULL;
}
type = g_strdup_printf("child<%s>", object_get_typename(OBJECT(child)));
op = object_property_add(obj, name, type, object_get_child_property, NULL,
- object_finalize_child_property, child,
&local_err);
- if (local_err) {
- error_propagate(errp, local_err);
- goto out;
+ object_finalize_child_property, child, errp);
+ if (!op) {
+ return NULL;
}
op->resolve = object_resolve_child_property;
object_ref(child);
child->parent = obj;
-
-out:
- g_free(type);
+ return op;
}
void object_property_allow_set_link(const Object *obj, const char *name,
@@ -1852,16 +1849,16 @@ static void object_release_link_property(Object *obj,
const char *name,
}
}
-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)
+static ObjectProperty *
+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));
- char *full_type;
+ g_autofree char *full_type = NULL;
ObjectProperty *op;
if (flags & OBJ_PROP_LINK_DIRECT) {
@@ -1879,27 +1876,26 @@ static void object_add_link_prop(Object *obj, const
char *name,
check ? object_set_link_property : NULL,
object_release_link_property,
prop,
- &local_err);
- if (local_err) {
- error_propagate(errp, local_err);
+ errp);
+ if (!op) {
g_free(prop);
- goto out;
+ return NULL;
}
op->resolve = object_resolve_link_property;
-
-out:
- g_free(full_type);
+ return op;
}
-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)
+ObjectProperty *
+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);
+ return object_add_link_prop(obj, name, type, targetp, check, flags,
+ errp);
}
ObjectProperty *
@@ -1941,11 +1937,13 @@ out:
return op;
}
-void object_property_add_const_link(Object *obj, const char *name,
- Object *target, Error **errp)
+ObjectProperty *
+object_property_add_const_link(Object *obj, const char *name,
+ Object *target, Error **errp)
{
- object_add_link_prop(obj, name, object_get_typename(target), target,
- NULL, OBJ_PROP_LINK_DIRECT, errp);
+ return object_add_link_prop(obj, name,
+ object_get_typename(target), target,
+ NULL, OBJ_PROP_LINK_DIRECT, errp);
}
char *object_get_canonical_path_component(Object *obj)
@@ -2154,26 +2152,27 @@ static void property_release_str(Object *obj, const
char *name,
g_free(prop);
}
-void object_property_add_str(Object *obj, const char *name,
- char *(*get)(Object *, Error **),
- void (*set)(Object *, const char *, Error **),
- Error **errp)
+ObjectProperty *
+object_property_add_str(Object *obj, const char *name,
+ char *(*get)(Object *, Error **),
+ void (*set)(Object *, const char *, Error **),
+ Error **errp)
{
- Error *local_err = NULL;
StringProperty *prop = g_malloc0(sizeof(*prop));
+ ObjectProperty *op;
prop->get = get;
prop->set = set;
- object_property_add(obj, name, "string",
- get ? property_get_str : NULL,
- set ? property_set_str : NULL,
- property_release_str,
- prop, &local_err);
- if (local_err) {
- error_propagate(errp, local_err);
+ op = object_property_add(obj, name, "string",
+ get ? property_get_str : NULL,
+ set ? property_set_str : NULL,
+ property_release_str,
+ prop, errp);
+ if (!op) {
g_free(prop);
}
+ return op;
}
ObjectProperty *
@@ -2248,26 +2247,27 @@ static void property_release_bool(Object *obj, const
char *name,
g_free(prop);
}
-void object_property_add_bool(Object *obj, const char *name,
- bool (*get)(Object *, Error **),
- void (*set)(Object *, bool, Error **),
- Error **errp)
+ObjectProperty *
+object_property_add_bool(Object *obj, const char *name,
+ bool (*get)(Object *, Error **),
+ void (*set)(Object *, bool, Error **),
+ Error **errp)
{
- Error *local_err = NULL;
BoolProperty *prop = g_malloc0(sizeof(*prop));
+ ObjectProperty *op;
prop->get = get;
prop->set = set;
- object_property_add(obj, name, "bool",
- get ? property_get_bool : NULL,
- set ? property_set_bool : NULL,
- property_release_bool,
- prop, &local_err);
- if (local_err) {
- error_propagate(errp, local_err);
+ op = object_property_add(obj, name, "bool",
+ get ? property_get_bool : NULL,
+ set ? property_set_bool : NULL,
+ property_release_bool,
+ prop, errp);
+ if (!op) {
g_free(prop);
}
+ return op;
}
ObjectProperty *
@@ -2334,29 +2334,30 @@ static void property_release_enum(Object *obj, const
char *name,
g_free(prop);
}
-void object_property_add_enum(Object *obj, const char *name,
- const char *typename,
- const QEnumLookup *lookup,
- int (*get)(Object *, Error **),
- void (*set)(Object *, int, Error **),
- Error **errp)
+ObjectProperty *
+object_property_add_enum(Object *obj, const char *name,
+ const char *typename,
+ const QEnumLookup *lookup,
+ int (*get)(Object *, Error **),
+ void (*set)(Object *, int, Error **),
+ Error **errp)
{
- Error *local_err = NULL;
EnumProperty *prop = g_malloc(sizeof(*prop));
+ ObjectProperty *op;
prop->lookup = lookup;
prop->get = get;
prop->set = set;
- object_property_add(obj, name, typename,
- get ? property_get_enum : NULL,
- set ? property_set_enum : NULL,
- property_release_enum,
- prop, &local_err);
- if (local_err) {
- error_propagate(errp, local_err);
+ op = object_property_add(obj, name, typename,
+ get ? property_get_enum : NULL,
+ set ? property_set_enum : NULL,
+ property_release_enum,
+ prop, errp);
+ if (!op) {
g_free(prop);
}
+ return op;
}
ObjectProperty *
@@ -2447,23 +2448,24 @@ static void property_release_tm(Object *obj, const char
*name,
g_free(prop);
}
-void object_property_add_tm(Object *obj, const char *name,
- void (*get)(Object *, struct tm *, Error **),
- Error **errp)
+ObjectProperty *
+object_property_add_tm(Object *obj, const char *name,
+ void (*get)(Object *, struct tm *, Error **),
+ Error **errp)
{
- Error *local_err = NULL;
TMProperty *prop = g_malloc0(sizeof(*prop));
+ ObjectProperty *op;
prop->get = get;
- object_property_add(obj, name, "struct tm",
- get ? property_get_tm : NULL, NULL,
- property_release_tm,
- prop, &local_err);
- if (local_err) {
- error_propagate(errp, local_err);
+ op = object_property_add(obj, name, "struct tm",
+ get ? property_get_tm : NULL, NULL,
+ property_release_tm,
+ prop, errp);
+ if (!op) {
g_free(prop);
}
+ return op;
}
ObjectProperty *
@@ -2586,10 +2588,11 @@ static void property_set_uint64_ptr(Object *obj,
Visitor *v, const char *name,
*field = value;
}
-void object_property_add_uint8_ptr(Object *obj, const char *name,
- const uint8_t *v,
- ObjectPropertyFlags flags,
- Error **errp)
+ObjectProperty *
+object_property_add_uint8_ptr(Object *obj, const char *name,
+ const uint8_t *v,
+ ObjectPropertyFlags flags,
+ Error **errp)
{
ObjectPropertyAccessor *getter = NULL;
ObjectPropertyAccessor *setter = NULL;
@@ -2602,8 +2605,8 @@ void object_property_add_uint8_ptr(Object *obj, const
char *name,
setter = property_set_uint8_ptr;
}
- object_property_add(obj, name, "uint8",
- getter, setter, NULL, (void *)v, errp);
+ return object_property_add(obj, name, "uint8",
+ getter, setter, NULL, (void *)v, errp);
}
ObjectProperty *
@@ -2627,10 +2630,11 @@ object_class_property_add_uint8_ptr(ObjectClass *klass,
const char *name,
getter, setter, NULL, (void *)v, errp);
}
-void object_property_add_uint16_ptr(Object *obj, const char *name,
- const uint16_t *v,
- ObjectPropertyFlags flags,
- Error **errp)
+ObjectProperty *
+object_property_add_uint16_ptr(Object *obj, const char *name,
+ const uint16_t *v,
+ ObjectPropertyFlags flags,
+ Error **errp)
{
ObjectPropertyAccessor *getter = NULL;
ObjectPropertyAccessor *setter = NULL;
@@ -2643,8 +2647,8 @@ void object_property_add_uint16_ptr(Object *obj, const
char *name,
setter = property_set_uint16_ptr;
}
- object_property_add(obj, name, "uint16",
- getter, setter, NULL, (void *)v, errp);
+ return object_property_add(obj, name, "uint16",
+ getter, setter, NULL, (void *)v, errp);
}
ObjectProperty *
@@ -2668,10 +2672,11 @@ object_class_property_add_uint16_ptr(ObjectClass
*klass, const char *name,
getter, setter, NULL, (void *)v, errp);
}
-void object_property_add_uint32_ptr(Object *obj, const char *name,
- const uint32_t *v,
- ObjectPropertyFlags flags,
- Error **errp)
+ObjectProperty *
+object_property_add_uint32_ptr(Object *obj, const char *name,
+ const uint32_t *v,
+ ObjectPropertyFlags flags,
+ Error **errp)
{
ObjectPropertyAccessor *getter = NULL;
ObjectPropertyAccessor *setter = NULL;
@@ -2684,8 +2689,8 @@ void object_property_add_uint32_ptr(Object *obj, const
char *name,
setter = property_set_uint32_ptr;
}
- object_property_add(obj, name, "uint32",
- getter, setter, NULL, (void *)v, errp);
+ return object_property_add(obj, name, "uint32",
+ getter, setter, NULL, (void *)v, errp);
}
ObjectProperty *
@@ -2709,10 +2714,11 @@ object_class_property_add_uint32_ptr(ObjectClass
*klass, const char *name,
getter, setter, NULL, (void *)v, errp);
}
-void object_property_add_uint64_ptr(Object *obj, const char *name,
- const uint64_t *v,
- ObjectPropertyFlags flags,
- Error **errp)
+ObjectProperty *
+object_property_add_uint64_ptr(Object *obj, const char *name,
+ const uint64_t *v,
+ ObjectPropertyFlags flags,
+ Error **errp)
{
ObjectPropertyAccessor *getter = NULL;
ObjectPropertyAccessor *setter = NULL;
@@ -2725,8 +2731,8 @@ void object_property_add_uint64_ptr(Object *obj, const
char *name,
setter = property_set_uint64_ptr;
}
- object_property_add(obj, name, "uint64",
- getter, setter, NULL, (void *)v, errp);
+ return object_property_add(obj, name, "uint64",
+ getter, setter, NULL, (void *)v, errp);
}
ObjectProperty *
@@ -2787,19 +2793,19 @@ static void property_release_alias(Object *obj, const
char *name, void *opaque)
g_free(prop);
}
-void object_property_add_alias(Object *obj, const char *name,
- Object *target_obj, const char *target_name,
- Error **errp)
+ObjectProperty *
+object_property_add_alias(Object *obj, const char *name,
+ Object *target_obj, const char *target_name,
+ Error **errp)
{
AliasProperty *prop;
ObjectProperty *op;
ObjectProperty *target_prop;
- char *prop_type;
- Error *local_err = NULL;
+ g_autofree char *prop_type = NULL;
target_prop = object_property_find(target_obj, target_name, errp);
if (!target_prop) {
- return;
+ return NULL;
}
if (object_property_is_child(target_prop)) {
@@ -2817,12 +2823,12 @@ void object_property_add_alias(Object *obj, const char
*name,
property_get_alias,
property_set_alias,
property_release_alias,
- prop, &local_err);
- if (local_err) {
- error_propagate(errp, local_err);
+ prop, errp);
+ if (!op) {
g_free(prop);
- goto out;
+ return NULL;
}
+
op->resolve = property_resolve_alias;
if (target_prop->defval) {
op->defval = qobject_ref(target_prop->defval);
@@ -2831,9 +2837,7 @@ void object_property_add_alias(Object *obj, const char
*name,
object_property_set_description(obj, op->name,
target_prop->description,
&error_abort);
-
-out:
- g_free(prop_type);
+ return op;
}
void object_property_set_description(Object *obj, const char *name,
--
2.21.1
- Re: [PATCH 04/17] qom: Change object_property_get_uint16List() to match its doc, (continued)
- [PATCH 03/17] qom: Drop object_property_del_child()'s unused parameter @errp, Markus Armbruster, 2020/04/28
- [PATCH 02/17] qom: Clean up inconsistent use of gchar * vs. char *, Markus Armbruster, 2020/04/28
- [PATCH 07/17] tests/check-qom-proplist: Improve iterator coverage, Markus Armbruster, 2020/04/28
- [PATCH 06/17] qom: Drop object_property_set_description() parameter @errp, Markus Armbruster, 2020/04/28
- [PATCH 12/17] qdev: Clean up qdev_connect_gpio_out_named(), Markus Armbruster, 2020/04/28
- [PATCH 05/17] qom: Make all the object_property_add_FOO() return the property,
Markus Armbruster <=
- [PATCH 11/17] hw/arm/bcm2835: Drop futile attempts at QOM-adopting memory, Markus Armbruster, 2020/04/28
- [PATCH 10/17] e1000: Don't run e1000_instance_init() twice, Markus Armbruster, 2020/04/28
- [PATCH 14/17] Drop more @errp parameters after previous commit, Markus Armbruster, 2020/04/28
- [PATCH 08/17] s390x/cpumodel: Fix UI to CPU features pcc-cmac-{aes, eaes}-256, Markus Armbruster, 2020/04/28