Author: gsim Date: Fri Oct 10 12:51:03 2014 New Revision: 1630816 URL: http://svn.apache.org/r1630816 Log: added PN_WEAKREF class and removed options
Modified: qpid/proton/branches/examples/proton-c/include/proton/cproton.i qpid/proton/branches/examples/proton-c/include/proton/object.h qpid/proton/branches/examples/proton-c/src/engine/engine.c qpid/proton/branches/examples/proton-c/src/messenger/messenger.c qpid/proton/branches/examples/proton-c/src/messenger/store.c qpid/proton/branches/examples/proton-c/src/messenger/transform.c qpid/proton/branches/examples/proton-c/src/object/list.c qpid/proton/branches/examples/proton-c/src/object/map.c qpid/proton/branches/examples/proton-c/src/object/object.c qpid/proton/branches/examples/proton-c/src/posix/selector.c qpid/proton/branches/examples/proton-c/src/tests/object.c qpid/proton/branches/examples/proton-c/src/transport/transport.c Modified: qpid/proton/branches/examples/proton-c/include/proton/cproton.i URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/cproton.i?rev=1630816&r1=1630815&r2=1630816&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-c/include/proton/cproton.i (original) +++ qpid/proton/branches/examples/proton-c/include/proton/cproton.i Fri Oct 10 12:51:03 2014 @@ -55,6 +55,7 @@ typedef long long int int64_t; %ignore pn_string_vaddf; %immutable PN_OBJECT; %immutable PN_VOID; +%immutable PN_WEAKREF; %include "proton/object.h" %ignore pn_error_format; Modified: qpid/proton/branches/examples/proton-c/include/proton/object.h URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/object.h?rev=1630816&r1=1630815&r2=1630816&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-c/include/proton/object.h (original) +++ qpid/proton/branches/examples/proton-c/include/proton/object.h Fri Oct 10 12:51:03 2014 @@ -43,9 +43,6 @@ typedef struct pn_hash_t pn_hash_t; typedef void *(*pn_iterator_next_t)(void *state); typedef struct pn_iterator_t pn_iterator_t; -// XXX: if we factor refcounting stuff into a separate dimension then -// we could have a weakref class instead of having the options stuff - struct pn_class_t { const char *name; void *(*newinst)(const pn_class_t *, size_t); @@ -63,6 +60,7 @@ struct pn_class_t { extern const pn_class_t *PN_OBJECT; extern const pn_class_t *PN_VOID; +extern const pn_class_t *PN_WEAKREF; #define PN_CLASS(PREFIX) { \ #PREFIX, \ @@ -124,7 +122,7 @@ PN_EXTERN int pn_inspect(void *object, p #define PN_REFCOUNT (0x1) -PN_EXTERN pn_list_t *pn_list(const pn_class_t *clazz, size_t capacity, int options); +PN_EXTERN pn_list_t *pn_list(const pn_class_t *clazz, size_t capacity); PN_EXTERN size_t pn_list_size(pn_list_t *list); PN_EXTERN void *pn_list_get(pn_list_t *list, int index); PN_EXTERN void pn_list_set(pn_list_t *list, int index, void *value); @@ -139,7 +137,7 @@ PN_EXTERN void pn_list_iterator(pn_list_ #define PN_REFCOUNT_VALUE (0x4) PN_EXTERN pn_map_t *pn_map(const pn_class_t *key, const pn_class_t *value, - size_t capacity, float load_factor, int options); + size_t capacity, float load_factor); PN_EXTERN size_t pn_map_size(pn_map_t *map); PN_EXTERN int pn_map_put(pn_map_t *map, void *key, void *value); PN_EXTERN void *pn_map_get(pn_map_t *map, void *key); @@ -149,7 +147,7 @@ PN_EXTERN pn_handle_t pn_map_next(pn_map PN_EXTERN void *pn_map_key(pn_map_t *map, pn_handle_t entry); PN_EXTERN void *pn_map_value(pn_map_t *map, pn_handle_t entry); -PN_EXTERN pn_hash_t *pn_hash(const pn_class_t *clazz, size_t capacity, float load_factor, int options); +PN_EXTERN pn_hash_t *pn_hash(const pn_class_t *clazz, size_t capacity, float load_factor); PN_EXTERN size_t pn_hash_size(pn_hash_t *hash); PN_EXTERN int pn_hash_put(pn_hash_t *hash, uintptr_t key, void *value); PN_EXTERN void *pn_hash_get(pn_hash_t *hash, uintptr_t key); Modified: qpid/proton/branches/examples/proton-c/src/engine/engine.c URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/engine/engine.c?rev=1630816&r1=1630815&r2=1630816&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-c/src/engine/engine.c (original) +++ qpid/proton/branches/examples/proton-c/src/engine/engine.c Fri Oct 10 12:51:03 2014 @@ -379,7 +379,7 @@ pn_connection_t *pn_connection() pn_endpoint_init(&conn->endpoint, CONNECTION, conn); conn->transport_head = NULL; conn->transport_tail = NULL; - conn->sessions = pn_list(PN_OBJECT, 0, 0); + conn->sessions = pn_list(PN_WEAKREF, 0); conn->transport = NULL; conn->work_head = NULL; conn->work_tail = NULL; @@ -723,7 +723,7 @@ pn_session_t *pn_session(pn_connection_t pn_endpoint_init(&ssn->endpoint, SESSION, conn); pn_add_session(conn, ssn); - ssn->links = pn_list(PN_OBJECT, 0, 0); + ssn->links = pn_list(PN_WEAKREF, 0); ssn->context = 0; ssn->incoming_capacity = 1024*1024; ssn->incoming_bytes = 0; @@ -737,8 +737,8 @@ pn_session_t *pn_session(pn_connection_t ssn->state.remote_channel = (uint16_t)-1; pn_delivery_map_init(&ssn->state.incoming, 0); pn_delivery_map_init(&ssn->state.outgoing, 0); - ssn->state.local_handles = pn_hash(PN_OBJECT, 0, 0.75, PN_REFCOUNT); - ssn->state.remote_handles = pn_hash(PN_OBJECT, 0, 0.75, PN_REFCOUNT); + ssn->state.local_handles = pn_hash(PN_OBJECT, 0, 0.75); + ssn->state.remote_handles = pn_hash(PN_OBJECT, 0, 0.75); // end transport state pn_collector_put(conn->collector, PN_SESSION_INIT, ssn); Modified: qpid/proton/branches/examples/proton-c/src/messenger/messenger.c URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/messenger/messenger.c?rev=1630816&r1=1630815&r2=1630816&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-c/src/messenger/messenger.c (original) +++ qpid/proton/branches/examples/proton-c/src/messenger/messenger.c Fri Oct 10 12:51:03 2014 @@ -596,7 +596,7 @@ pn_messenger_t *pn_messenger(const char m->blocking = true; m->passive = false; m->io = pn_io(); - m->pending = pn_list(PN_OBJECT, 0, 0); + m->pending = pn_list(PN_WEAKREF, 0); m->interruptor = pni_selectable (pni_interruptor_capacity, pni_interruptor_pending, pni_interruptor_deadline, pni_interruptor_readable, @@ -611,8 +611,8 @@ pn_messenger_t *pn_messenger(const char pn_pipe(m->io, m->ctrl); pni_selectable_set_fd(m->interruptor, m->ctrl[0]); pni_selectable_set_context(m->interruptor, m); - m->listeners = pn_list(PN_OBJECT, 0, 0); - m->connections = pn_list(PN_OBJECT, 0, 0); + m->listeners = pn_list(PN_WEAKREF, 0); + m->connections = pn_list(PN_WEAKREF, 0); m->selector = pn_io_selector(m->io); m->collector = pn_collector(); m->credit_mode = LINK_CREDIT_EXPLICIT; @@ -621,13 +621,13 @@ pn_messenger_t *pn_messenger(const char m->distributed = 0; m->receivers = 0; m->draining = 0; - m->credited = pn_list(PN_OBJECT, 0, 0); - m->blocked = pn_list(PN_OBJECT, 0, 0); + m->credited = pn_list(PN_WEAKREF, 0); + m->blocked = pn_list(PN_WEAKREF, 0); m->next_drain = 0; m->next_tag = 0; m->outgoing = pni_store(); m->incoming = pni_store(); - m->subscriptions = pn_list(PN_OBJECT, 0, PN_REFCOUNT); + m->subscriptions = pn_list(PN_OBJECT, 0); m->incoming_subscription = NULL; m->error = pn_error(); m->routes = pn_transform(); Modified: qpid/proton/branches/examples/proton-c/src/messenger/store.c URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/messenger/store.c?rev=1630816&r1=1630815&r2=1630816&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-c/src/messenger/store.c (original) +++ qpid/proton/branches/examples/proton-c/src/messenger/store.c Fri Oct 10 12:51:03 2014 @@ -89,7 +89,7 @@ pni_store_t *pni_store() store->window = 0; store->lwm = 0; store->hwm = 0; - store->tracked = pn_hash(PN_OBJECT, 0, 0.75, PN_REFCOUNT); + store->tracked = pn_hash(PN_OBJECT, 0, 0.75); return store; } Modified: qpid/proton/branches/examples/proton-c/src/messenger/transform.c URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/messenger/transform.c?rev=1630816&r1=1630815&r2=1630816&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-c/src/messenger/transform.c (original) +++ qpid/proton/branches/examples/proton-c/src/messenger/transform.c Fri Oct 10 12:51:03 2014 @@ -84,7 +84,7 @@ pn_transform_t *pn_transform() { static const pn_class_t clazz = PN_CLASS(pn_transform); pn_transform_t *transform = (pn_transform_t *) pn_class_new(&clazz, sizeof(pn_transform_t)); - transform->rules = pn_list(PN_OBJECT, 0, PN_REFCOUNT); + transform->rules = pn_list(PN_OBJECT, 0); transform->matched = false; return transform; } Modified: qpid/proton/branches/examples/proton-c/src/object/list.c URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/object/list.c?rev=1630816&r1=1630815&r2=1630816&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-c/src/object/list.c (original) +++ qpid/proton/branches/examples/proton-c/src/object/list.c Fri Oct 10 12:51:03 2014 @@ -28,7 +28,6 @@ struct pn_list_t { size_t capacity; size_t size; void **elements; - int options; }; size_t pn_list_size(pn_list_t *list) @@ -47,9 +46,9 @@ void pn_list_set(pn_list_t *list, int in { assert(list); assert(list->size); void *old = list->elements[index % list->size]; - if (list->options & PN_REFCOUNT) pn_class_decref(list->clazz, old); + pn_class_decref(list->clazz, old); list->elements[index % list->size] = value; - if (list->options & PN_REFCOUNT) pn_class_incref(list->clazz, value); + pn_class_incref(list->clazz, value); } void pn_list_ensure(pn_list_t *list, size_t capacity) @@ -69,7 +68,7 @@ int pn_list_add(pn_list_t *list, void *v assert(list); pn_list_ensure(list, list->size + 1); list->elements[list->size++] = value; - if (list->options & PN_REFCOUNT) pn_class_incref(list->clazz, value); + pn_class_incref(list->clazz, value); return 0; } @@ -102,10 +101,8 @@ void pn_list_del(pn_list_t *list, int in assert(list); index %= list->size; - if (list->options & PN_REFCOUNT) { - for (int i = 0; i < n; i++) { - pn_class_decref(list->clazz, list->elements[index + i]); - } + for (int i = 0; i < n; i++) { + pn_class_decref(list->clazz, list->elements[index + i]); } size_t slide = list->size - (index + n); @@ -156,7 +153,7 @@ static void pn_list_finalize(void *objec assert(object); pn_list_t *list = (pn_list_t *) object; for (size_t i = 0; i < list->size; i++) { - if (list->options & PN_REFCOUNT) pn_class_decref(list->clazz, pn_list_get(list, i)); + pn_class_decref(list->clazz, pn_list_get(list, i)); } free(list->elements); } @@ -214,7 +211,7 @@ static int pn_list_inspect(void *obj, pn #define pn_list_initialize NULL -pn_list_t *pn_list(const pn_class_t *clazz, size_t capacity, int options) +pn_list_t *pn_list(const pn_class_t *clazz, size_t capacity) { static const pn_class_t list_clazz = PN_CLASS(pn_list); @@ -223,7 +220,6 @@ pn_list_t *pn_list(const pn_class_t *cla list->capacity = capacity ? capacity : 16; list->elements = (void **) malloc(list->capacity * sizeof(void *)); list->size = 0; - list->options = options; return list; } Modified: qpid/proton/branches/examples/proton-c/src/object/map.c URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/object/map.c?rev=1630816&r1=1630815&r2=1630816&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-c/src/object/map.c (original) +++ qpid/proton/branches/examples/proton-c/src/object/map.c Fri Oct 10 12:51:03 2014 @@ -44,20 +44,16 @@ struct pn_map_t { uintptr_t (*hashcode)(void *key); bool (*equals)(void *a, void *b); float load_factor; - bool count_keys; - bool count_values; }; static void pn_map_finalize(void *object) { pn_map_t *map = (pn_map_t *) object; - if (map->count_keys || map->count_values) { - for (size_t i = 0; i < map->capacity; i++) { - if (map->entries[i].state != PNI_ENTRY_FREE) { - if (map->count_keys) pn_class_decref(map->key, map->entries[i].key); - if (map->count_values) pn_class_decref(map->value, map->entries[i].value); - } + for (size_t i = 0; i < map->capacity; i++) { + if (map->entries[i].state != PNI_ENTRY_FREE) { + pn_class_decref(map->key, map->entries[i].key); + pn_class_decref(map->value, map->entries[i].value); } } @@ -123,7 +119,7 @@ static int pn_map_inspect(void *obj, pn_ #define pn_map_compare NULL pn_map_t *pn_map(const pn_class_t *key, const pn_class_t *value, - size_t capacity, float load_factor, int options) + size_t capacity, float load_factor) { static const pn_class_t clazz = PN_CLASS(pn_map); @@ -136,8 +132,6 @@ pn_map_t *pn_map(const pn_class_t *key, map->load_factor = load_factor; map->hashcode = pn_hashcode; map->equals = pn_equals; - map->count_keys = (options & PN_REFCOUNT) || (options & PN_REFCOUNT_KEY); - map->count_values = (options & PN_REFCOUNT) || (options & PN_REFCOUNT_VALUE); pni_map_allocate(map); return map; } @@ -175,8 +169,8 @@ static bool pni_map_ensure(pn_map_t *map void *key = entries[i].key; void *value = entries[i].value; pn_map_put(map, key, value); - if (map->count_keys) pn_class_decref(map->key, key); - if (map->count_values) pn_class_decref(map->value, value); + pn_class_decref(map->key, key); + pn_class_decref(map->value, value); } } @@ -195,7 +189,7 @@ static pni_entry_t *pni_map_entry(pn_map if (create) { entry->state = PNI_ENTRY_TAIL; entry->key = key; - if (map->count_keys) pn_class_incref(map->key, key); + pn_class_incref(map->key, key); map->size++; return entry; } else { @@ -235,7 +229,7 @@ static pni_entry_t *pni_map_entry(pn_map entry->state = PNI_ENTRY_LINK; map->entries[empty].state = PNI_ENTRY_TAIL; map->entries[empty].key = key; - if (map->count_keys) pn_class_incref(map->key, key); + pn_class_incref(map->key, key); if (pprev) *pprev = entry; map->size++; return &map->entries[empty]; @@ -248,9 +242,9 @@ int pn_map_put(pn_map_t *map, void *key, { assert(map); pni_entry_t *entry = pni_map_entry(map, key, NULL, true); - if (map->count_values) pn_class_decref(map->value, entry->value); + pn_class_decref(map->value, entry->value); entry->value = value; - if (map->count_values) pn_class_incref(map->value, value); + pn_class_incref(map->value, value); return 0; } @@ -267,8 +261,8 @@ void pn_map_del(pn_map_t *map, void *key pni_entry_t *prev = NULL; pni_entry_t *entry = pni_map_entry(map, key, &prev, false); if (entry) { - void *dref_key = (map->count_keys) ? entry->key : NULL; - void *dref_value = (map->count_values) ? entry->value : NULL; + void *dref_key = entry->key; + void *dref_value = entry->value; if (prev) { prev->next = entry->next; prev->state = entry->state; @@ -283,8 +277,8 @@ void pn_map_del(pn_map_t *map, void *key entry->key = NULL; entry->value = NULL; map->size--; - if (dref_key) pn_class_decref(map->key, dref_key); - if (dref_value) pn_class_decref(map->value, dref_value); + pn_class_decref(map->key, dref_key); + pn_class_decref(map->value, dref_value); } } @@ -342,16 +336,13 @@ static bool pni_identity_equals(void *a, extern const pn_class_t *PN_UINTPTR; -static const pn_class_t *pni_uintptr_reify(void *object) { - return PN_UINTPTR; -} - +static const pn_class_t *pni_uintptr_reify(void *object) { return PN_UINTPTR; } #define pni_uintptr_new NULL #define pni_uintptr_free NULL #define pni_uintptr_initialize NULL -#define pni_uintptr_incref NULL -#define pni_uintptr_decref NULL -#define pni_uintptr_refcount NULL +static void pni_uintptr_incref(void *object) {} +static void pni_uintptr_decref(void *object) {} +static int pni_uintptr_refcount(void *object) { return -1; } #define pni_uintptr_finalize NULL #define pni_uintptr_hashcode NULL #define pni_uintptr_compare NULL @@ -360,13 +351,11 @@ static const pn_class_t *pni_uintptr_rei const pn_class_t PNI_UINTPTR = PN_METACLASS(pni_uintptr); const pn_class_t *PN_UINTPTR = &PNI_UINTPTR; -pn_hash_t *pn_hash(const pn_class_t *clazz, size_t capacity, float load_factor, int options) +pn_hash_t *pn_hash(const pn_class_t *clazz, size_t capacity, float load_factor) { - pn_hash_t *hash = (pn_hash_t *) pn_map(PN_UINTPTR, clazz, capacity, load_factor, 0); + pn_hash_t *hash = (pn_hash_t *) pn_map(PN_UINTPTR, clazz, capacity, load_factor); hash->map.hashcode = pni_identity_hashcode; hash->map.equals = pni_identity_equals; - hash->map.count_keys = false; - hash->map.count_values = options & PN_REFCOUNT; return hash; } Modified: qpid/proton/branches/examples/proton-c/src/object/object.c URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/object/object.c?rev=1630816&r1=1630815&r2=1630816&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-c/src/object/object.c (original) +++ qpid/proton/branches/examples/proton-c/src/object/object.c Fri Oct 10 12:51:03 2014 @@ -171,18 +171,12 @@ int pn_class_inspect(const pn_class_t *c pn_string_set(dst, ""); } - const char *name; - - if (object) { - if (clazz->inspect) { - return clazz->inspect(object, dst); - } else if (clazz->name) { - name = clazz->name; - } else { - name = "<anon>"; - } + if (object && clazz->inspect) { + return clazz->inspect(object, dst); } + const char *name = clazz->name ? clazz->name : "<anon>"; + return pn_string_addf(dst, "%s<%p>", name, object); } @@ -282,3 +276,27 @@ int pn_inspect(void *object, pn_string_t { return pn_class_inspect(PN_OBJECT, object, dst); } + +#define pn_weakref_new NULL +#define pn_weakref_initialize NULL +#define pn_weakref_finalize NULL +#define pn_weakref_free NULL + +static void pn_weakref_incref(void *object) {} +static void pn_weakref_decref(void *object) {} +static int pn_weakref_refcount(void *object) { return -1; } +static const pn_class_t *pn_weakref_reify(void *object) { + return PN_WEAKREF; +} +static uintptr_t pn_weakref_hashcode(void *object) { + return pn_hashcode(object); +} +static intptr_t pn_weakref_compare(void *a, void *b) { + return pn_compare(a, b); +} +static int pn_weakref_inspect(void *object, pn_string_t *dst) { + return pn_inspect(object, dst); +} + +const pn_class_t PNI_WEAKREF = PN_METACLASS(pn_weakref); +const pn_class_t *PN_WEAKREF = &PNI_WEAKREF; Modified: qpid/proton/branches/examples/proton-c/src/posix/selector.c URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/posix/selector.c?rev=1630816&r1=1630815&r2=1630816&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-c/src/posix/selector.c (original) +++ qpid/proton/branches/examples/proton-c/src/posix/selector.c Fri Oct 10 12:51:03 2014 @@ -45,7 +45,7 @@ void pn_selector_initialize(void *obj) selector->fds = NULL; selector->deadlines = NULL; selector->capacity = 0; - selector->selectables = pn_list(PN_OBJECT, 0, 0); + selector->selectables = pn_list(PN_WEAKREF, 0); selector->deadline = 0; selector->current = 0; selector->awoken = 0; Modified: qpid/proton/branches/examples/proton-c/src/tests/object.c URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/tests/object.c?rev=1630816&r1=1630815&r2=1630816&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-c/src/tests/object.c (original) +++ qpid/proton/branches/examples/proton-c/src/tests/object.c Fri Oct 10 12:51:03 2014 @@ -30,12 +30,12 @@ static char mem; static void *END = &mem; -static pn_list_t *build_list(size_t capacity, int options, ...) +static pn_list_t *build_list(size_t capacity, ...) { - pn_list_t *result = pn_list(PN_OBJECT, capacity, options); + pn_list_t *result = pn_list(PN_OBJECT, capacity); va_list ap; - va_start(ap, options); + va_start(ap, capacity); while (true) { void *arg = va_arg(ap, void *); if (arg == END) { @@ -43,23 +43,21 @@ static pn_list_t *build_list(size_t capa } pn_list_add(result, arg); - if (PN_REFCOUNT & options) { - pn_class_decref(PN_OBJECT, arg); - } + pn_class_decref(PN_OBJECT, arg); } va_end(ap); return result; } -static pn_map_t *build_map(size_t capacity, float load_factor, int options, ...) +static pn_map_t *build_map(size_t capacity, float load_factor, ...) { - pn_map_t *result = pn_map(PN_OBJECT, PN_OBJECT, capacity, load_factor, options); + pn_map_t *result = pn_map(PN_OBJECT, PN_OBJECT, capacity, load_factor); va_list ap; void *prev = NULL; - va_start(ap, options); + va_start(ap, load_factor); int count = 0; while (true) { void *arg = va_arg(ap, void *); @@ -70,10 +68,8 @@ static pn_map_t *build_map(size_t capaci if (count % 2) { pn_map_put(result, prev, arg); - if (PN_REFCOUNT & options) { - pn_class_decref(PN_OBJECT, prev); - pn_class_decref(PN_OBJECT, arg); - } + pn_class_decref(PN_OBJECT, prev); + pn_class_decref(PN_OBJECT, arg); } else { prev = arg; } @@ -257,7 +253,7 @@ static void test_refcounting(int refs) static void test_list(size_t capacity) { - pn_list_t *list = pn_list(PN_OBJECT, 0, 0); + pn_list_t *list = pn_list(PN_WEAKREF, 0); assert(pn_list_size(list) == 0); assert(!pn_list_add(list, (void *) 0)); assert(!pn_list_add(list, (void *) 1)); @@ -282,7 +278,7 @@ static void test_list_refcount(size_t ca void *three = pn_class_new(PN_OBJECT, 0); void *four = pn_class_new(PN_OBJECT, 0); - pn_list_t *list = pn_list(PN_OBJECT, 0, PN_REFCOUNT); + pn_list_t *list = pn_list(PN_OBJECT, 0); assert(!pn_list_add(list, one)); assert(!pn_list_add(list, two)); assert(!pn_list_add(list, three)); @@ -334,7 +330,7 @@ static void check_list_index(pn_list_t * static void test_list_index(void) { - pn_list_t *l = pn_list(PN_OBJECT, 0, 0); + pn_list_t *l = pn_list(PN_WEAKREF, 0); void *one = pn_string("one"); void *two = pn_string("two"); void *three = pn_string("three"); @@ -377,7 +373,7 @@ static bool pn_strequals(const char *a, static void test_build_list(void) { - pn_list_t *l = build_list(0, PN_REFCOUNT, + pn_list_t *l = build_list(0, pn_string("one"), pn_string("two"), pn_string("three"), @@ -397,7 +393,7 @@ static void test_build_list(void) static void test_build_map(void) { - pn_map_t *m = build_map(0, 0.75, PN_REFCOUNT, + pn_map_t *m = build_map(0, 0.75, pn_string("key"), pn_string("value"), pn_string("key2"), @@ -421,7 +417,7 @@ static void test_build_map(void) static void test_build_map_odd(void) { - pn_map_t *m = build_map(0, 0.75, PN_REFCOUNT, + pn_map_t *m = build_map(0, 0.75, pn_string("key"), pn_string("value"), pn_string("key2"), @@ -452,7 +448,7 @@ static void test_map(void) void *two = pn_class_new(PN_OBJECT, 0); void *three = pn_class_new(PN_OBJECT, 0); - pn_map_t *map = pn_map(PN_OBJECT, PN_OBJECT, 4, 0.75, PN_REFCOUNT); + pn_map_t *map = pn_map(PN_OBJECT, PN_OBJECT, 4, 0.75); assert(pn_map_size(map) == 0); pn_string_t *key = pn_string("key"); @@ -515,7 +511,7 @@ static void test_hash(void) void *two = pn_class_new(PN_OBJECT, 0); void *three = pn_class_new(PN_OBJECT, 0); - pn_hash_t *hash = pn_hash(PN_OBJECT, 4, 0.75, PN_REFCOUNT); + pn_hash_t *hash = pn_hash(PN_OBJECT, 4, 0.75); pn_hash_put(hash, 0, NULL); pn_hash_put(hash, 1, one); pn_hash_put(hash, 2, two); @@ -579,7 +575,7 @@ static void test_map_links(void) // test deleting a head, middle link, tail for (int delete_idx=0; delete_idx < 3; delete_idx++) { - pn_map_t *map = pn_map(PN_OBJECT, PN_OBJECT, 0, 0.75, 0); + pn_map_t *map = pn_map(PN_WEAKREF, PN_WEAKREF, 0, 0.75); // create a chain of entries that have same head (from identical key hashcode) for (int i = 0; i < 3; i++) { pn_map_put(map, keys[i], keys[i]); @@ -690,7 +686,7 @@ static void test_string_addf(void) static void test_map_iteration(int n) { - pn_list_t *pairs = pn_list(PN_OBJECT, 2*n, PN_REFCOUNT); + pn_list_t *pairs = pn_list(PN_OBJECT, 2*n); for (int i = 0; i < n; i++) { void *key = pn_class_new(PN_OBJECT, 0); void *value = pn_class_new(PN_OBJECT, 0); @@ -700,7 +696,7 @@ static void test_map_iteration(int n) pn_decref(value); } - pn_map_t *map = pn_map(PN_OBJECT, PN_OBJECT, 0, 0.75, PN_REFCOUNT); + pn_map_t *map = pn_map(PN_OBJECT, PN_OBJECT, 0, 0.75); assert(pn_map_head(map) == 0); @@ -737,22 +733,22 @@ void test_inspect(void *o, const char *e void test_list_inspect(void) { - pn_list_t *l = build_list(0, PN_REFCOUNT, END); + pn_list_t *l = build_list(0, END); test_inspect(l, "[]"); pn_free(l); - l = build_list(0, PN_REFCOUNT, pn_string("one"), END); + l = build_list(0, pn_string("one"), END); test_inspect(l, "[\"one\"]"); pn_free(l); - l = build_list(0, PN_REFCOUNT, + l = build_list(0, pn_string("one"), pn_string("two"), END); test_inspect(l, "[\"one\", \"two\"]"); pn_free(l); - l = build_list(0, PN_REFCOUNT, + l = build_list(0, pn_string("one"), pn_string("two"), pn_string("three"), @@ -766,24 +762,24 @@ void test_map_inspect(void) // note that when there is more than one entry in a map, the order // of the entries is dependent on the hashes involved, it will be // deterministic though - pn_map_t *m = build_map(0, 0.75, PN_REFCOUNT, END); + pn_map_t *m = build_map(0, 0.75, END); test_inspect(m, "{}"); pn_free(m); - m = build_map(0, 0.75, PN_REFCOUNT, + m = build_map(0, 0.75, pn_string("key"), pn_string("value"), END); test_inspect(m, "{\"key\": \"value\"}"); pn_free(m); - m = build_map(0, 0.75, PN_REFCOUNT, + m = build_map(0, 0.75, pn_string("k1"), pn_string("v1"), pn_string("k2"), pn_string("v2"), END); test_inspect(m, "{\"k1\": \"v1\", \"k2\": \"v2\"}"); pn_free(m); - m = build_map(0, 0.75, PN_REFCOUNT, + m = build_map(0, 0.75, pn_string("k1"), pn_string("v1"), pn_string("k2"), pn_string("v2"), pn_string("k3"), pn_string("v3"), @@ -794,8 +790,8 @@ void test_map_inspect(void) void test_list_compare(void) { - pn_list_t *a = pn_list(PN_OBJECT, 0, PN_REFCOUNT); - pn_list_t *b = pn_list(PN_OBJECT, 0, PN_REFCOUNT); + pn_list_t *a = pn_list(PN_OBJECT, 0); + pn_list_t *b = pn_list(PN_OBJECT, 0); assert(pn_equals(a, b)); @@ -838,7 +834,7 @@ static void *pn_it_next(void *state) { void test_iterator(void) { - pn_list_t *list = build_list(0, PN_REFCOUNT, + pn_list_t *list = build_list(0, pn_string("one"), pn_string("two"), pn_string("three"), Modified: qpid/proton/branches/examples/proton-c/src/transport/transport.c URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/transport/transport.c?rev=1630816&r1=1630815&r2=1630816&view=diff ============================================================================== --- qpid/proton/branches/examples/proton-c/src/transport/transport.c (original) +++ qpid/proton/branches/examples/proton-c/src/transport/transport.c Fri Oct 10 12:51:03 2014 @@ -41,7 +41,7 @@ static ssize_t transport_consume(pn_tran void pn_delivery_map_init(pn_delivery_map_t *db, pn_sequence_t next) { - db->deliveries = pn_hash(PN_OBJECT, 0, 0.75, PN_REFCOUNT); + db->deliveries = pn_hash(PN_OBJECT, 0, 0.75); db->next = next; } @@ -164,8 +164,8 @@ static void pn_transport_initialize(void transport->disp_data = pn_data(0); pn_condition_init(&transport->remote_condition); - transport->local_channels = pn_hash(PN_OBJECT, 0, 0.75, PN_REFCOUNT); - transport->remote_channels = pn_hash(PN_OBJECT, 0, 0.75, PN_REFCOUNT); + transport->local_channels = pn_hash(PN_OBJECT, 0, 0.75); + transport->remote_channels = pn_hash(PN_OBJECT, 0, 0.75); transport->bytes_input = 0; transport->bytes_output = 0; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org