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]

Reply via email to