Author: rhs
Date: Wed Aug 28 15:37:28 2013
New Revision: 1518264
URL: http://svn.apache.org/r1518264
Log:
added initializer; switched definitions over to using PN_CLASS macro
Modified:
qpid/proton/trunk/proton-c/include/proton/object.h
qpid/proton/trunk/proton-c/src/codec/codec.c
qpid/proton/trunk/proton-c/src/engine/engine.c
qpid/proton/trunk/proton-c/src/message/message.c
qpid/proton/trunk/proton-c/src/messenger/store.c
qpid/proton/trunk/proton-c/src/messenger/transform.c
qpid/proton/trunk/proton-c/src/object/object.c
qpid/proton/trunk/proton-c/src/tests/object.c
Modified: qpid/proton/trunk/proton-c/include/proton/object.h
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/include/proton/object.h?rev=1518264&r1=1518263&r2=1518264&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/include/proton/object.h (original)
+++ qpid/proton/trunk/proton-c/include/proton/object.h Wed Aug 28 15:37:28 2013
@@ -46,6 +46,7 @@ typedef struct pn_hash_t pn_hash_t;
typedef struct pn_string_t pn_string_t;
typedef struct {
+ void (*initialize)(void *);
void (*finalize)(void *);
uintptr_t (*hashcode)(void *);
intptr_t (*compare)(void *, void *);
@@ -53,6 +54,7 @@ typedef struct {
} pn_class_t;
#define PN_CLASS(PREFIX) { \
+ PREFIX ## _initialize, \
PREFIX ## _finalize, \
PREFIX ## _hashcode, \
PREFIX ## _compare, \
Modified: qpid/proton/trunk/proton-c/src/codec/codec.c
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/codec/codec.c?rev=1518264&r1=1518263&r2=1518264&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/codec/codec.c (original)
+++ qpid/proton/trunk/proton-c/src/codec/codec.c Wed Aug 28 15:37:28 2013
@@ -1060,9 +1060,13 @@ static int pn_data_inspect(void *obj, pn
}
}
+#define pn_data_initialize NULL
+#define pn_data_hashcode NULL
+#define pn_data_compare NULL
+
pn_data_t *pn_data(size_t capacity)
{
- static pn_class_t clazz = {pn_data_finalize, NULL, NULL, pn_data_inspect};
+ static pn_class_t clazz = PN_CLASS(pn_data);
pn_data_t *data = (pn_data_t *) pn_new(sizeof(pn_data_t), &clazz);
data->capacity = capacity;
data->size = 0;
Modified: qpid/proton/trunk/proton-c/src/engine/engine.c
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/engine/engine.c?rev=1518264&r1=1518263&r2=1518264&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/engine/engine.c (original)
+++ qpid/proton/trunk/proton-c/src/engine/engine.c Wed Aug 28 15:37:28 2013
@@ -242,9 +242,14 @@ static void pn_connection_finalize(void
pn_endpoint_tini(&conn->endpoint);
}
+#define pn_connection_initialize NULL
+#define pn_connection_hashcode NULL
+#define pn_connection_compare NULL
+#define pn_connection_inspect NULL
+
pn_connection_t *pn_connection()
{
- static pn_class_t clazz = {pn_connection_finalize};
+ static pn_class_t clazz = PN_CLASS(pn_connection);
pn_connection_t *conn = (pn_connection_t *) pn_new(sizeof(pn_connection_t),
&clazz);
if (!conn) return NULL;
@@ -542,10 +547,15 @@ static void pn_session_finalize(void *ob
pn_free(session->state.remote_handles);
}
+#define pn_session_initialize NULL
+#define pn_session_hashcode NULL
+#define pn_session_compare NULL
+#define pn_session_inspect NULL
+
pn_session_t *pn_session(pn_connection_t *conn)
{
assert(conn);
- static pn_class_t clazz = {pn_session_finalize};
+ static pn_class_t clazz = PN_CLASS(pn_session);
pn_session_t *ssn = (pn_session_t *) pn_new(sizeof(pn_session_t), &clazz);
if (!ssn) return NULL;
@@ -645,9 +655,14 @@ static void pn_link_finalize(void *objec
pn_endpoint_tini(&link->endpoint);
}
+#define pn_link_initialize NULL
+#define pn_link_hashcode NULL
+#define pn_link_compare NULL
+#define pn_link_inspect NULL
+
pn_link_t *pn_link_new(int type, pn_session_t *session, const char *name)
{
- static pn_class_t clazz = {pn_link_finalize};
+ static pn_class_t clazz = PN_CLASS(pn_link);
pn_link_t *link = (pn_link_t *) pn_new(sizeof(pn_link_t), &clazz);
pn_endpoint_init(&link->endpoint, type, session->connection);
@@ -908,13 +923,18 @@ static void pn_disposition_clear(pn_disp
pn_condition_clear(&ds->condition);
}
+#define pn_delivery_initialize NULL
+#define pn_delivery_hashcode NULL
+#define pn_delivery_compare NULL
+#define pn_delivery_inspect NULL
+
pn_delivery_t *pn_delivery(pn_link_t *link, pn_delivery_tag_t tag)
{
assert(link);
pn_delivery_t *delivery = link->settled_head;
LL_POP(link, settled, pn_delivery_t);
if (!delivery) {
- static pn_class_t clazz = {pn_delivery_finalize};
+ static pn_class_t clazz = PN_CLASS(pn_delivery);
delivery = (pn_delivery_t *) pn_new(sizeof(pn_delivery_t), &clazz);
if (!delivery) return NULL;
delivery->tag = pn_buffer(16);
Modified: qpid/proton/trunk/proton-c/src/message/message.c
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/message/message.c?rev=1518264&r1=1518263&r2=1518264&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/message/message.c (original)
+++ qpid/proton/trunk/proton-c/src/message/message.c Wed Aug 28 15:37:28 2013
@@ -312,9 +312,13 @@ int pn_message_inspect(void *obj, pn_str
return pn_string_addf(dst, "}");
}
+#define pn_message_initialize NULL
+#define pn_message_hashcode NULL
+#define pn_message_compare NULL
+
pn_message_t *pn_message()
{
- static pn_class_t clazz = {pn_message_finalize, NULL, NULL,
pn_message_inspect};
+ static pn_class_t clazz = PN_CLASS(pn_message);
pn_message_t *msg = (pn_message_t *) pn_new(sizeof(pn_message_t), &clazz);
msg->durable = false;
msg->priority = PN_DEFAULT_PRIORITY;
Modified: qpid/proton/trunk/proton-c/src/messenger/store.c
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/messenger/store.c?rev=1518264&r1=1518263&r2=1518264&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/messenger/store.c (original)
+++ qpid/proton/trunk/proton-c/src/messenger/store.c Wed Aug 28 15:37:28 2013
@@ -197,10 +197,15 @@ pni_stream_t *pni_stream_get(pni_store_t
return pni_stream(store, address, false);
}
+#define pni_entry_initialize NULL
+#define pni_entry_hashcode NULL
+#define pni_entry_compare NULL
+#define pni_entry_inspect NULL
+
pni_entry_t *pni_store_put(pni_store_t *store, const char *address)
{
assert(store);
- static pn_class_t clazz = {pni_entry_finalize};
+ static pn_class_t clazz = PN_CLASS(pni_entry);
if (!address) address = "";
pni_stream_t *stream = pni_stream_put(store, address);
Modified: qpid/proton/trunk/proton-c/src/messenger/transform.c
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/messenger/transform.c?rev=1518264&r1=1518263&r2=1518264&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/messenger/transform.c (original)
+++ qpid/proton/trunk/proton-c/src/messenger/transform.c Wed Aug 28 15:37:28
2013
@@ -55,9 +55,14 @@ static void pn_rule_finalize(void *objec
pn_free(rule->substitution);
}
+#define pn_rule_initialize NULL
+#define pn_rule_hashcode NULL
+#define pn_rule_compare NULL
+#define pn_rule_inspect NULL
+
pn_rule_t *pn_rule(const char *pattern, const char *substitution)
{
- static pn_class_t clazz = {pn_rule_finalize};
+ static pn_class_t clazz = PN_CLASS(pn_rule);
pn_rule_t *rule = (pn_rule_t *) pn_new(sizeof(pn_rule_t), &clazz);
rule->pattern = pn_string(pattern);
rule->substitution = pn_string(substitution);
@@ -70,9 +75,14 @@ static void pn_transform_finalize(void *
pn_free(transform->rules);
}
+#define pn_transform_initialize NULL
+#define pn_transform_hashcode NULL
+#define pn_transform_compare NULL
+#define pn_transform_inspect NULL
+
pn_transform_t *pn_transform()
{
- static pn_class_t clazz = {pn_transform_finalize};
+ static pn_class_t clazz = PN_CLASS(pn_transform);
pn_transform_t *transform = (pn_transform_t *)
pn_new(sizeof(pn_transform_t), &clazz);
transform->rules = pn_list(0, PN_REFCOUNT);
transform->matched = false;
Modified: qpid/proton/trunk/proton-c/src/object/object.c
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/object/object.c?rev=1518264&r1=1518263&r2=1518264&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/object/object.c (original)
+++ qpid/proton/trunk/proton-c/src/object/object.c Wed Aug 28 15:37:28 2013
@@ -49,6 +49,9 @@ void pn_initialize(void *object, pn_clas
pni_head_t *head = pni_head(object);
head->clazz = clazz;
head->refcount = 1;
+ if (clazz && clazz->initialize) {
+ clazz->initialize(object);
+ }
}
void *pn_incref(void *object)
@@ -319,6 +322,8 @@ static int pn_list_inspect(void *obj, pn
return pn_string_addf(dst, "]");
}
+#define pn_list_initialize NULL
+
pn_list_t *pn_list(size_t capacity, int options)
{
static pn_class_t clazz = PN_CLASS(pn_list);
@@ -425,6 +430,7 @@ static int pn_map_inspect(void *obj, pn_
return pn_string_addf(dst, "}");
}
+#define pn_map_initialize NULL
#define pn_map_compare NULL
pn_map_t *pn_map(size_t capacity, float load_factor, int options)
@@ -753,6 +759,8 @@ pn_string_t *pn_string(const char *bytes
return pn_stringn(bytes, bytes ? strlen(bytes) : 0);
}
+#define pn_string_initialize NULL
+
static pn_class_t clazz = PN_CLASS(pn_string);
pn_string_t *pn_stringn(const char *bytes, size_t n)
Modified: qpid/proton/trunk/proton-c/src/tests/object.c
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/tests/object.c?rev=1518264&r1=1518263&r2=1518264&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/tests/object.c (original)
+++ qpid/proton/trunk/proton-c/src/tests/object.c Wed Aug 28 15:37:28 2013
@@ -95,7 +95,7 @@ static intptr_t delta(void *a, void *b)
static pn_class_t null_class = {0};
-static pn_class_t noop_class = {noop, zero, delta};
+static pn_class_t noop_class = {noop, noop, zero, delta};
static void test_new(size_t size, pn_class_t *clazz)
{
@@ -119,7 +119,7 @@ static void finalizer(void *object)
static void test_finalize()
{
- static pn_class_t clazz = {finalizer};
+ static pn_class_t clazz = {NULL, finalizer};
int **obj = (int **) pn_new(sizeof(int **), &clazz);
assert(obj);
@@ -141,7 +141,7 @@ static uintptr_t hashcode(void *obj) { r
static void test_hashcode()
{
- static pn_class_t clazz = {NULL, hashcode};
+ static pn_class_t clazz = {NULL, NULL, hashcode};
void *obj = pn_new(0, &clazz);
assert(obj);
assert(pn_hashcode(obj) == (uintptr_t) obj);
@@ -151,7 +151,7 @@ static void test_hashcode()
static void test_compare()
{
- static pn_class_t clazz = {NULL, NULL, delta};
+ static pn_class_t clazz = {NULL, NULL, NULL, delta};
void *a = pn_new(0, &clazz);
assert(a);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]