From 533dc85bfe9ef7ed1f7fead5ce612506b7fab90d Mon Sep 17 00:00:00 2001 From: Sebastian Harl Date: Fri, 22 Mar 2013 21:10:08 -0700 Subject: [PATCH] store: Let all store types be public. This allows to initialize all store objects in a correctly typed fashion. --- src/core/store.c | 12 ++++++------ src/include/core/object.h | 1 + src/include/core/store.h | 12 ++++++++---- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/core/store.c b/src/core/store.c index 4e6eb48..f99841f 100644 --- a/src/core/store.c +++ b/src/core/store.c @@ -83,7 +83,7 @@ sdb_cmp_store_obj_with_name(const sdb_object_t *a, const sdb_object_t *b) } /* sdb_cmp_store_obj_with_name */ /* - * private types + * public types */ static int @@ -241,7 +241,7 @@ sdb_svc_clone(const sdb_object_t *obj) return SDB_OBJ(new); } /* sdb_svc_clone */ -static sdb_type_t sdb_host_type = { +const sdb_type_t sdb_host_type = { sizeof(sdb_host_t), sdb_host_init, @@ -249,7 +249,7 @@ static sdb_type_t sdb_host_type = { sdb_host_do_clone }; -static sdb_type_t sdb_attr_type = { +const sdb_type_t sdb_attribute_type = { sizeof(sdb_attribute_t), sdb_attr_init, @@ -257,7 +257,7 @@ static sdb_type_t sdb_attr_type = { sdb_attr_clone }; -static sdb_type_t sdb_svc_type = { +const sdb_type_t sdb_service_type = { sizeof(sdb_service_t), sdb_svc_init, @@ -397,7 +397,7 @@ sdb_attribute_create(const char *hostname, if ((! hostname) || (! name) || (! value)) return NULL; - obj = sdb_object_create(sdb_attr_type, hostname, name, value); + obj = sdb_object_create(sdb_attribute_type, hostname, name, value); if (! obj) return NULL; return SDB_ATTR(obj); @@ -482,7 +482,7 @@ sdb_service_create(const char *hostname, const char *name) if ((! hostname) || (! name)) return NULL; - obj = sdb_object_create(sdb_svc_type, hostname, name); + obj = sdb_object_create(sdb_service_type, hostname, name); if (! obj) return NULL; return SDB_SVC(obj); diff --git a/src/include/core/object.h b/src/include/core/object.h index b75f3fc..2f46610 100644 --- a/src/include/core/object.h +++ b/src/include/core/object.h @@ -55,6 +55,7 @@ struct sdb_object { int ref_cnt; }; #define SDB_OBJECT_INIT { SDB_TYPE_INIT, 1 } +#define SDB_OBJECT_TYPED_INIT(t) { (t), 1 } typedef struct { sdb_object_t super; diff --git a/src/include/core/store.h b/src/include/core/store.h index 7e9c0de..a6f58cb 100644 --- a/src/include/core/store.h +++ b/src/include/core/store.h @@ -39,13 +39,17 @@ extern "C" { #endif +extern const sdb_type_t sdb_host_type; +extern const sdb_type_t sdb_attribute_type; +extern const sdb_type_t sdb_service_type; + typedef struct { sdb_object_t parent; sdb_time_t last_update; char *name; } sdb_store_obj_t; -#define SDB_STORE_OBJ_INIT { SDB_OBJECT_INIT, 0, NULL } +#define SDB_STORE_OBJ_INIT(t) { SDB_OBJECT_TYPED_INIT(t), 0, NULL } #define SDB_STORE_OBJ(obj) ((sdb_store_obj_t *)(obj)) #define SDB_CONST_STORE_OBJ(obj) ((const sdb_store_obj_t *)(obj)) @@ -54,7 +58,7 @@ typedef struct { char *hostname; } sdb_service_t; -#define SDB_SVC_INIT { SDB_STORE_OBJ_INIT, NULL } +#define SDB_SVC_INIT { SDB_STORE_OBJ_INIT(sdb_service_type), NULL } #define SDB_SVC(obj) ((sdb_service_t *)(obj)) #define SDB_CONST_SVC(obj) ((const sdb_service_t *)(obj)) @@ -64,7 +68,7 @@ typedef struct { char *attr_value; char *hostname; } sdb_attribute_t; -#define SDB_ATTR_INIT { SDB_STORE_OBJ_INIT, NULL, NULL } +#define SDB_ATTR_INIT { SDB_STORE_OBJ_INIT(sdb_attribute_type), NULL, NULL } #define SDB_ATTR(obj) ((sdb_attribute_t *)(obj)) #define SDB_CONST_ATTR(obj) ((const sdb_attribute_t *)(obj)) @@ -74,7 +78,7 @@ typedef struct { sdb_llist_t *attributes; sdb_llist_t *services; } sdb_host_t; -#define SDB_HOST_INIT { SDB_STORE_OBJ_INIT, NULL, NULL } +#define SDB_HOST_INIT { SDB_STORE_OBJ_INIT(sdb_host_type), NULL, NULL } #define SDB_HOST(obj) ((sdb_host_t *)(obj)) #define SDB_CONST_HOST(obj) ((const sdb_host_t *)(obj)) -- 2.30.2