From 73272856dba3b5e49710205601017724fbb6c424 Mon Sep 17 00:00:00 2001 From: Sebastian Harl Date: Sat, 17 Aug 2013 22:21:51 +0200 Subject: [PATCH] object: Removed support for cloning typed objects. This is not used currently. Since it only introduces unneeded complexity (and somewhat ugly code in some cases), it's better to remove it. --- src/core/object.c | 11 +----- src/core/plugin.c | 6 ++-- src/core/store.c | 72 ++------------------------------------- src/include/core/object.h | 16 +-------- 4 files changed, 6 insertions(+), 99 deletions(-) diff --git a/src/core/object.c b/src/core/object.c index d6665e7..0205ed5 100644 --- a/src/core/object.c +++ b/src/core/object.c @@ -66,8 +66,7 @@ static sdb_type_t sdb_object_wrapper_type = { sizeof(sdb_object_wrapper_t), sdb_object_wrapper_init, - sdb_object_wrapper_destroy, - /* clone = */ NULL + sdb_object_wrapper_destroy }; /* @@ -155,14 +154,6 @@ sdb_object_ref(sdb_object_t *obj) ++obj->ref_cnt; } /* sdb_object_ref */ -sdb_object_t * -sdb_object_clone(const sdb_object_t *obj) -{ - if ((! obj) || (! obj->type.clone)) - return NULL; - return obj->type.clone(obj); -} /* sdb_object_clone */ - int sdb_object_cmp_by_name(const sdb_object_t *o1, const sdb_object_t *o2) { diff --git a/src/core/plugin.c b/src/core/plugin.c index 4dbea70..8ca0fd7 100644 --- a/src/core/plugin.c +++ b/src/core/plugin.c @@ -198,16 +198,14 @@ static sdb_type_t sdb_plugin_cb_type = { sizeof(sdb_plugin_cb_t), sdb_plugin_cb_init, - sdb_plugin_cb_destroy, - /* clone = */ NULL + sdb_plugin_cb_destroy }; static sdb_type_t sdb_plugin_collector_cb_type = { sizeof(sdb_plugin_collector_cb_t), sdb_plugin_cb_init, - sdb_plugin_cb_destroy, - /* clone = */ NULL + sdb_plugin_cb_destroy }; static int diff --git a/src/core/store.c b/src/core/store.c index eebe24b..43a7a6b 100644 --- a/src/core/store.c +++ b/src/core/store.c @@ -118,30 +118,6 @@ store_obj_destroy(sdb_object_t *obj) sdb_object_deref(SDB_OBJ(sobj->parent)); } /* store_obj_destroy */ -/* this may not be used as a type on its own but only as helper functions for - * the derived types; the function accepts a variadic list of arguments to - * pass to the sub-type's init function */ -static sdb_object_t * -store_obj_clone(const sdb_object_t *obj, ...) -{ - const store_obj_t *sobj = STORE_CONST_OBJ(obj); - store_obj_t *new; - - va_list ap; - - va_start(ap, obj); - - new = STORE_OBJ(sdb_object_vcreate(obj->name, obj->type, ap)); - va_end(ap); - if (! new) - return NULL; - - new->last_update = sobj->last_update; - sdb_object_ref(SDB_OBJ(sobj->parent)); - new->parent = sobj->parent; - return SDB_OBJ(new); -} /* store_obj_clone */ - static int sdb_store_obj_init(sdb_object_t *obj, va_list ap) { @@ -178,36 +154,6 @@ sdb_store_obj_destroy(sdb_object_t *obj) sdb_llist_destroy(sobj->attributes); } /* sdb_store_obj_destroy */ -static sdb_object_t * -sdb_store_obj_clone(const sdb_object_t *obj) -{ - const sdb_store_obj_t *sobj = SDB_CONST_STORE_OBJ(obj); - sdb_store_obj_t *new; - - new = SDB_STORE_OBJ(store_obj_clone(obj, sobj->_last_update, sobj->type)); - if (! new) - return NULL; - - if (sobj->children) { - sdb_llist_destroy(new->children); - new->children = sdb_llist_clone(sobj->children); - if (! new->children) { - sdb_object_deref(SDB_OBJ(new)); - return NULL; - } - } - if (sobj->attributes) { - sdb_llist_destroy(new->attributes); - new->attributes = sdb_llist_clone(sobj->attributes); - if (! new->attributes) { - sdb_object_deref(SDB_OBJ(new)); - return NULL; - } - } - - return SDB_OBJ(new); -} /* sdb_store_obj_clone */ - static int sdb_attr_init(sdb_object_t *obj, va_list ap) { @@ -238,32 +184,18 @@ sdb_attr_destroy(sdb_object_t *obj) free(SDB_ATTR(obj)->value); } /* sdb_attr_destroy */ -static sdb_object_t * -sdb_attr_clone(const sdb_object_t *obj) -{ - const sdb_attribute_t *attr = (const sdb_attribute_t *)obj; - sdb_attribute_t *new; - - new = SDB_ATTR(store_obj_clone(obj, attr->_last_update, attr->value)); - if (! new) - return NULL; - return SDB_OBJ(new); -} /* sdb_attr_clone */ - static sdb_type_t sdb_store_obj_type = { sizeof(sdb_store_obj_t), sdb_store_obj_init, - sdb_store_obj_destroy, - sdb_store_obj_clone + sdb_store_obj_destroy }; static sdb_type_t sdb_attribute_type = { sizeof(sdb_attribute_t), sdb_attr_init, - sdb_attr_destroy, - sdb_attr_clone + sdb_attr_destroy }; /* diff --git a/src/include/core/object.h b/src/include/core/object.h index 23cd856..3c00fb5 100644 --- a/src/include/core/object.h +++ b/src/include/core/object.h @@ -46,9 +46,8 @@ struct sdb_type { int (*init)(sdb_object_t *, va_list); void (*destroy)(sdb_object_t *); - sdb_object_t *(*clone)(const sdb_object_t *); }; -#define SDB_TYPE_INIT { 0, NULL, NULL, NULL } +#define SDB_TYPE_INIT { 0, NULL, NULL } struct sdb_object { sdb_type_t type; @@ -123,19 +122,6 @@ sdb_object_deref(sdb_object_t *obj); void sdb_object_ref(sdb_object_t *obj); -/* - * sdb_object_clone: - * Clone an existing object using its type's 'clone' callback. The callback is - * responsible for correctly initializing a new object (which may be done - * using the object create function or the object's type's init function). - * - * Returns: - * - the cloned object on success - * - NULL on error or if no clone callback is available - */ -sdb_object_t * -sdb_object_clone(const sdb_object_t *obj); - /* * sdb_object_cmp_by_name: * Compare two objects by their name ignoring the case of the characters. -- 2.30.2