diff --git a/examples/custom-gen/cdada.cc b/examples/custom-gen/cdada.cc index ea7e349..9345453 100644 --- a/examples/custom-gen/cdada.cc +++ b/examples/custom-gen/cdada.cc @@ -45,115 +45,115 @@ inline bool operator==(const foo_t & a1, const foo_t & a2){ //Operator -void __cdada_list_autogen_create_foo_t (void* m){ +void __cdada_list_autogen_create_foo_t (cdada_list_t* m){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; s->list.custom = (void*)new std::list(); } -void __cdada_list_autogen_destroy_foo_t (void* m){ +void __cdada_list_autogen_destroy_foo_t (cdada_list_t* m){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; delete p; } -void __cdada_list_autogen_clear_foo_t (void* m){ +void __cdada_list_autogen_clear_foo_t (cdada_list_t* m){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; p->clear(); } -bool __cdada_list_autogen_empty_foo_t (const void* m){ +bool __cdada_list_autogen_empty_foo_t (const cdada_list_t* m){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; return p->empty(); } -uint32_t __cdada_list_autogen_size_foo_t (const void* m){ +uint32_t __cdada_list_autogen_size_foo_t (const cdada_list_t* m){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; return p->size(); } -int __cdada_list_autogen_insert_foo_t (void* m, const void* val, +int __cdada_list_autogen_insert_foo_t (cdada_list_t* m, const void* val, const uint32_t pos){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; return cdada_list_insert_u (s, p, val, pos); } -int __cdada_list_autogen_get_foo_t (const void* m, const uint32_t pos, +int __cdada_list_autogen_get_foo_t (const cdada_list_t* m, const uint32_t pos, void* val){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; return cdada_list_get_u (s, p, pos, val); } -int __cdada_list_autogen_first_last_foo_t (const void* m, bool first, +int __cdada_list_autogen_first_last_foo_t (const cdada_list_t* m, bool first, void* key){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; return cdada_list_first_last_u (s, p, first, key); } -int __cdada_list_autogen_erase_foo_t (void* m, const uint32_t pos){ +int __cdada_list_autogen_erase_foo_t (cdada_list_t* m, const uint32_t pos){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; return cdada_list_erase_u (s, p, pos); } -int __cdada_list_autogen_remove_foo_t (void* m, const void* val){ +int __cdada_list_autogen_remove_foo_t (cdada_list_t* m, const void* val){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; return cdada_list_remove_u (s, p, val); } -int __cdada_list_autogen_push_foo_t (void* m, const void* val, +int __cdada_list_autogen_push_foo_t (cdada_list_t* m, const void* val, bool front){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; return cdada_list_push_u (s, p, val, front); } -int __cdada_list_autogen_pop_foo_t (void* m, bool front){ +int __cdada_list_autogen_pop_foo_t (cdada_list_t* m, bool front){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; return cdada_list_pop_u (s, p, front); } -void __cdada_list_autogen_sort_foo_t (void* m){ +void __cdada_list_autogen_sort_foo_t (cdada_list_t* m){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; p->sort(); } -void __cdada_list_autogen_reverse_foo_t (void* m){ +void __cdada_list_autogen_reverse_foo_t (cdada_list_t* m){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; p->reverse(); } -void __cdada_list_autogen_unique_foo_t (void* m){ +void __cdada_list_autogen_unique_foo_t (cdada_list_t* m){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; p->unique(); } -void __cdada_list_autogen_traverse_foo_t (const void* m, +void __cdada_list_autogen_traverse_foo_t (const cdada_list_t* m, cdada_list_it f, void* opaque){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; - return cdada_list_traverse_u (s, p, f, opaque); + return cdada_list_traverse_u (m, p, f, opaque); } -void __cdada_list_autogen_rtraverse_foo_t (const void* m, +void __cdada_list_autogen_rtraverse_foo_t (const cdada_list_t* m, cdada_list_it f, void* opaque){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; - return cdada_list_rtraverse_u (s, p, f, opaque); + return cdada_list_rtraverse_u (m, p, f, opaque); } -void __cdada_list_autogen_dump_foo_t (const void* m, +void __cdada_list_autogen_dump_foo_t (const cdada_list_t* m, std::stringstream& ss){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = diff --git a/include/cdada/list.h b/include/cdada/list.h index b680887..06b57c2 100644 --- a/include/cdada/list.h +++ b/include/cdada/list.h @@ -49,7 +49,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** * cdada list structure */ -typedef void cdada_list_t; +typedef struct cdada_list_t cdada_list_t; //In case it's included from C++ CDADA_BEGIN_DECLS diff --git a/include/cdada/list_custom_cc.h b/include/cdada/list_custom_cc.h index 848b7f3..cdbeceb 100644 --- a/include/cdada/list_custom_cc.h +++ b/include/cdada/list_custom_cc.h @@ -55,7 +55,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @internal Custom type create f */ #define __CDADA_LIST_CUSTOM_CREATE_F(TYPE) \ - void __cdada_list_autogen_create_##TYPE (void* m){ \ + void __cdada_list_autogen_create_##TYPE (cdada_list_t* m){ \ __cdada_list_int_t* s = (__cdada_list_int_t*)m; \ s->list.custom = (void*)new __CDADA_STD_LIST_TYPE(TYPE)(); \ } @@ -64,7 +64,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @internal Custom type destroy f */ #define __CDADA_LIST_CUSTOM_DESTROY_F(TYPE) \ - void __cdada_list_autogen_destroy_##TYPE (void* m){ \ + void __cdada_list_autogen_destroy_##TYPE (cdada_list_t* m){ \ __cdada_list_int_t* s = (__cdada_list_int_t*)m; \ __CDADA_STD_LIST_TYPE(TYPE)* p = \ (__CDADA_STD_LIST_TYPE(TYPE)*)s->list.custom; \ @@ -75,7 +75,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @internal Custom type clear f */ #define __CDADA_LIST_CUSTOM_CLEAR_F(TYPE) \ - void __cdada_list_autogen_clear_##TYPE (void* m){ \ + void __cdada_list_autogen_clear_##TYPE (cdada_list_t* m){ \ __cdada_list_int_t* s = (__cdada_list_int_t*)m; \ __CDADA_STD_LIST_TYPE(TYPE)* p = \ (__CDADA_STD_LIST_TYPE(TYPE)*)s->list.custom; \ @@ -86,7 +86,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @internal Custom type empty f */ #define __CDADA_LIST_CUSTOM_EMPTY_F(TYPE) \ - bool __cdada_list_autogen_empty_##TYPE (const void* m){ \ + bool __cdada_list_autogen_empty_##TYPE (const cdada_list_t* m){ \ __cdada_list_int_t* s = (__cdada_list_int_t*)m; \ __CDADA_STD_LIST_TYPE(TYPE)* p = \ (__CDADA_STD_LIST_TYPE(TYPE)*)s->list.custom; \ @@ -96,7 +96,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @internal Custom type size f */ #define __CDADA_LIST_CUSTOM_SIZE_F(TYPE) \ - uint32_t __cdada_list_autogen_size_##TYPE (const void* m){ \ + uint32_t __cdada_list_autogen_size_##TYPE (const cdada_list_t* m){ \ __cdada_list_int_t* s = (__cdada_list_int_t*)m; \ __CDADA_STD_LIST_TYPE(TYPE)* p = \ (__CDADA_STD_LIST_TYPE(TYPE)*)s->list.custom; \ @@ -106,7 +106,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @internal Custom type insert f */ #define __CDADA_LIST_CUSTOM_INSERT_F(TYPE) \ - int __cdada_list_autogen_insert_##TYPE (void* m, const void* val, \ + int __cdada_list_autogen_insert_##TYPE (cdada_list_t* m, const void* val, \ const uint32_t pos){ \ __cdada_list_int_t* s = (__cdada_list_int_t*)m; \ __CDADA_STD_LIST_TYPE(TYPE)* p = \ @@ -118,7 +118,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @internal Custom type get f */ #define __CDADA_LIST_CUSTOM_GET_F(TYPE) \ - int __cdada_list_autogen_get_##TYPE (const void* m, const uint32_t pos,\ + int __cdada_list_autogen_get_##TYPE (const cdada_list_t* m, const uint32_t pos,\ void* val){ \ __cdada_list_int_t* s = (__cdada_list_int_t*)m; \ __CDADA_STD_LIST_TYPE(TYPE)* p = \ @@ -130,7 +130,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @internal Custom type first_last f */ #define __CDADA_LIST_CUSTOM_FIRST_LAST_F(TYPE) \ - int __cdada_list_autogen_first_last_##TYPE (const void* m, bool first, \ + int __cdada_list_autogen_first_last_##TYPE (const cdada_list_t* m, bool first, \ void* key){ \ __cdada_list_int_t* s = (__cdada_list_int_t*)m; \ __CDADA_STD_LIST_TYPE(TYPE)* p = \ @@ -142,7 +142,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @internal Custom type erase f */ #define __CDADA_LIST_CUSTOM_ERASE_F(TYPE) \ - int __cdada_list_autogen_erase_##TYPE (void* m, const uint32_t pos){ \ + int __cdada_list_autogen_erase_##TYPE (cdada_list_t* m, const uint32_t pos){ \ __cdada_list_int_t* s = (__cdada_list_int_t*)m; \ __CDADA_STD_LIST_TYPE(TYPE)* p = \ (__CDADA_STD_LIST_TYPE(TYPE)*)s->list.custom; \ @@ -153,7 +153,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @internal Custom type remove f */ #define __CDADA_LIST_CUSTOM_REMOVE_F(TYPE) \ - int __cdada_list_autogen_remove_##TYPE (void* m, const void* val){ \ + int __cdada_list_autogen_remove_##TYPE (cdada_list_t* m, const void* val){ \ __cdada_list_int_t* s = (__cdada_list_int_t*)m; \ __CDADA_STD_LIST_TYPE(TYPE)* p = \ (__CDADA_STD_LIST_TYPE(TYPE)*)s->list.custom; \ @@ -164,7 +164,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @internal Custom type push f */ #define __CDADA_LIST_CUSTOM_PUSH_F(TYPE) \ - int __cdada_list_autogen_push_##TYPE (void* m, const void* val,\ + int __cdada_list_autogen_push_##TYPE (cdada_list_t* m, const void* val,\ bool front){ \ __cdada_list_int_t* s = (__cdada_list_int_t*)m; \ __CDADA_STD_LIST_TYPE(TYPE)* p = \ @@ -176,7 +176,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @internal Custom type pop f */ #define __CDADA_LIST_CUSTOM_POP_F(TYPE) \ - int __cdada_list_autogen_pop_##TYPE (void* m, bool front){ \ + int __cdada_list_autogen_pop_##TYPE (cdada_list_t* m, bool front){ \ __cdada_list_int_t* s = (__cdada_list_int_t*)m; \ __CDADA_STD_LIST_TYPE(TYPE)* p = \ (__CDADA_STD_LIST_TYPE(TYPE)*)s->list.custom; \ @@ -187,7 +187,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @internal Custom type sort f */ #define __CDADA_LIST_CUSTOM_SORT_F(TYPE) \ - void __cdada_list_autogen_sort_##TYPE (void* m){ \ + void __cdada_list_autogen_sort_##TYPE (cdada_list_t* m){ \ __cdada_list_int_t* s = (__cdada_list_int_t*)m; \ __CDADA_STD_LIST_TYPE(TYPE)* p = \ (__CDADA_STD_LIST_TYPE(TYPE)*)s->list.custom; \ @@ -198,7 +198,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @internal Custom type reverse f */ #define __CDADA_LIST_CUSTOM_REVERSE_F(TYPE) \ - void __cdada_list_autogen_reverse_##TYPE (void* m){ \ + void __cdada_list_autogen_reverse_##TYPE (cdada_list_t* m){ \ __cdada_list_int_t* s = (__cdada_list_int_t*)m; \ __CDADA_STD_LIST_TYPE(TYPE)* p = \ (__CDADA_STD_LIST_TYPE(TYPE)*)s->list.custom; \ @@ -209,7 +209,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @internal Custom type unique f */ #define __CDADA_LIST_CUSTOM_UNIQUE_F(TYPE) \ - void __cdada_list_autogen_unique_##TYPE (void* m){ \ + void __cdada_list_autogen_unique_##TYPE (cdada_list_t* m){ \ __cdada_list_int_t* s = (__cdada_list_int_t*)m; \ __CDADA_STD_LIST_TYPE(TYPE)* p = \ (__CDADA_STD_LIST_TYPE(TYPE)*)s->list.custom; \ @@ -220,33 +220,33 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @internal Custom type traverse f */ #define __CDADA_LIST_CUSTOM_TRAVERSE_F(TYPE) \ - void __cdada_list_autogen_traverse_##TYPE (const void* m, \ + void __cdada_list_autogen_traverse_##TYPE (const cdada_list_t* m, \ cdada_list_it f, \ void* opaque){ \ __cdada_list_int_t* s = (__cdada_list_int_t*)m; \ __CDADA_STD_LIST_TYPE(TYPE)* p = \ (__CDADA_STD_LIST_TYPE(TYPE)*)s->list.custom; \ - return cdada_list_traverse_u< TYPE > (s, p, f, opaque);\ + return cdada_list_traverse_u< TYPE > (m, p, f, opaque);\ } /** * @internal Custom type rtraverse f */ #define __CDADA_LIST_CUSTOM_RTRAVERSE_F(TYPE) \ - void __cdada_list_autogen_rtraverse_##TYPE (const void* m, \ + void __cdada_list_autogen_rtraverse_##TYPE (const cdada_list_t* m, \ cdada_list_it f, \ void* opaque){ \ __cdada_list_int_t* s = (__cdada_list_int_t*)m; \ __CDADA_STD_LIST_TYPE(TYPE)* p = \ (__CDADA_STD_LIST_TYPE(TYPE)*)s->list.custom; \ - return cdada_list_rtraverse_u< TYPE > (s, p, f, opaque);\ + return cdada_list_rtraverse_u< TYPE > (m, p, f, opaque);\ } /** * @internal Custom type dump f */ #define __CDADA_LIST_CUSTOM_DUMP_F(TYPE) \ - void __cdada_list_autogen_dump_##TYPE (const void* m, \ + void __cdada_list_autogen_dump_##TYPE (const cdada_list_t* m, \ std::stringstream& ss){\ __cdada_list_int_t* s = (__cdada_list_int_t*)m; \ __CDADA_STD_LIST_TYPE(TYPE)* p = \ diff --git a/src/list.cc b/src/list.cc index 1b4f4d9..2c9cc6d 100644 --- a/src/list.cc +++ b/src/list.cc @@ -13,7 +13,7 @@ cdada_list_t* __cdada_list_create(const uint16_t val_size, __cdada_list_int_t* m = NULL; if(unlikely(val_size == 0)) - return m; + return (cdada_list_t *)m; m = (__cdada_list_int_t*)malloc(sizeof(__cdada_list_int_t)); if(!m) @@ -22,13 +22,17 @@ cdada_list_t* __cdada_list_create(const uint16_t val_size, m->magic_num = CDADA_MAGIC; m->user_val_len = val_size; + cdada_list_t *result = (cdada_list_t *)m; + try{ //Custom type if(ops){ m->val_len = m->user_val_len = val_size; m->ops = ops; - (*m->ops->create)(m); - return m; + + (*m->ops->create)(result); + + return result; } //Regular @@ -70,7 +74,7 @@ cdada_list_t* __cdada_list_create(const uint16_t val_size, goto ROLLBACK; } - return m; + return result; ROLLBACK: free(m); @@ -118,7 +122,7 @@ int cdada_list_destroy(cdada_list_t* list){ break; case 0: CDADA_ASSERT(m->ops); - (*m->ops->destroy)(m); + (*m->ops->destroy)(list); break; default: CDADA_ASSERT(0); @@ -173,7 +177,7 @@ int cdada_list_clear(cdada_list_t* list){ break; case 0: CDADA_ASSERT(m->ops); - (*m->ops->clear)(m); + (*m->ops->clear)(list); break; default: CDADA_ASSERT(0); @@ -219,7 +223,7 @@ bool cdada_list_empty(const cdada_list_t* list){ return m->list.u2048->empty(); case 0: CDADA_ASSERT(m->ops); - return (*m->ops->empty)(m); + return (*m->ops->empty)(list); default: break; } @@ -259,7 +263,7 @@ uint32_t cdada_list_size(const cdada_list_t* list){ return m->list.u2048->size(); case 0: CDADA_ASSERT(m->ops); - return (*m->ops->size)(m); + return (*m->ops->size)(list); default: break; } @@ -321,7 +325,7 @@ int cdada_list_insert(cdada_list_t* list, const void* val, const uint32_t pos){ val, pos); case 0: CDADA_ASSERT(m->ops); - return (*m->ops->insert)(m, val, pos); + return (*m->ops->insert)(list, val, pos); default: break; } @@ -385,7 +389,7 @@ int cdada_list_get(const cdada_list_t* list, const uint32_t pos, void* val){ pos, val); case 0: CDADA_ASSERT(m->ops); - return (*m->ops->get)(m, pos, val); + return (*m->ops->get)(list, pos, val); default: break; } @@ -445,7 +449,7 @@ static int __cdada_list_first_last(const cdada_list_t* list, bool first, m->list.u2048, first, key); case 0: - return (*m->ops->first_last)(m, first, key); + return (*m->ops->first_last)(list, first, key); default: break; } @@ -510,7 +514,7 @@ int cdada_list_erase(cdada_list_t* list, const uint32_t pos){ pos); case 0: CDADA_ASSERT(m->ops); - return (*m->ops->erase)(m, pos); + return (*m->ops->erase)(list, pos); default: break; } @@ -574,7 +578,7 @@ int cdada_list_remove(cdada_list_t* list, const void* val){ val); case 0: CDADA_ASSERT(m->ops); - return (*m->ops->remove)(m, val); + return (*m->ops->remove)(list, val); default: break; } @@ -636,7 +640,7 @@ static int cdada_list_push_(cdada_list_t* list, const void* val, bool front){ val, front); case 0: CDADA_ASSERT(m->ops); - return (*m->ops->push)(m, val, front); + return (*m->ops->push)(list, val, front); default: break; } @@ -703,7 +707,7 @@ static int cdada_list_pop_(cdada_list_t* list, bool front){ front); case 0: CDADA_ASSERT(m->ops); - return (*m->ops->pop)(m, front); + return (*m->ops->pop)(list, front); default: break; } @@ -762,7 +766,7 @@ int cdada_list_sort(cdada_list_t* list){ break; case 0: CDADA_ASSERT(m->ops); - (*m->ops->sort)(m); + (*m->ops->sort)(list); break; default: CDADA_ASSERT(0); @@ -815,7 +819,7 @@ int cdada_list_reverse(cdada_list_t* list){ break; case 0: CDADA_ASSERT(m->ops); - (*m->ops->reverse)(m); + (*m->ops->reverse)(list); break; default: CDADA_ASSERT(0); @@ -868,7 +872,7 @@ int cdada_list_unique(cdada_list_t* list){ break; case 0: CDADA_ASSERT(m->ops); - (*m->ops->unique)(m); + (*m->ops->unique)(list); break; default: CDADA_ASSERT(0); @@ -896,53 +900,53 @@ int cdada_list_traverse(const cdada_list_t* list, cdada_list_it f, int c = m->ops? 0 : m->val_len; switch(c){ case 1: - cdada_list_traverse_u(m, + cdada_list_traverse_u(list, m->list.u8, f, opaque); break; case 2: - cdada_list_traverse_u(m, + cdada_list_traverse_u(list, m->list.u16, f, opaque); break; case 4: - cdada_list_traverse_u(m, + cdada_list_traverse_u(list, m->list.u32, f, opaque); break; case 8: - cdada_list_traverse_u(m, + cdada_list_traverse_u(list, m->list.u64, f, opaque); break; case 16: - cdada_list_traverse_u(m, + cdada_list_traverse_u(list, m->list.u128, f, opaque); break; case 32: - cdada_list_traverse_u(m, + cdada_list_traverse_u(list, m->list.u256, f, opaque); break; case 64: - cdada_list_traverse_u(m, + cdada_list_traverse_u(list, m->list.u512, f, opaque); break; case 128: - cdada_list_traverse_u(m, + cdada_list_traverse_u(list, m->list.u1024, f, opaque); break; case 256: - cdada_list_traverse_u(m, + cdada_list_traverse_u(list, m->list.u2048, f, opaque); break; case 0: CDADA_ASSERT(m->ops); - (*m->ops->traverse)(m, f, opaque); + (*m->ops->traverse)(list, f, opaque); break; default: CDADA_ASSERT(0); @@ -970,53 +974,53 @@ int cdada_list_rtraverse(const cdada_list_t* list, cdada_list_it f, int c = m->ops? 0 : m->val_len; switch(c){ case 1: - cdada_list_rtraverse_u(m, + cdada_list_rtraverse_u(list, m->list.u8, f, opaque); break; case 2: - cdada_list_rtraverse_u(m, + cdada_list_rtraverse_u(list, m->list.u16, f, opaque); break; case 4: - cdada_list_rtraverse_u(m, + cdada_list_rtraverse_u(list, m->list.u32, f, opaque); break; case 8: - cdada_list_rtraverse_u(m, + cdada_list_rtraverse_u(list, m->list.u64, f, opaque); break; case 16: - cdada_list_rtraverse_u(m, + cdada_list_rtraverse_u(list, m->list.u128, f, opaque); break; case 32: - cdada_list_rtraverse_u(m, + cdada_list_rtraverse_u(list, m->list.u256, f, opaque); break; case 64: - cdada_list_rtraverse_u(m, + cdada_list_rtraverse_u(list, m->list.u512, f, opaque); break; case 128: - cdada_list_rtraverse_u(m, + cdada_list_rtraverse_u(list, m->list.u1024, f, opaque); break; case 256: - cdada_list_rtraverse_u(m, + cdada_list_rtraverse_u(list, m->list.u2048, f, opaque); break; case 0: CDADA_ASSERT(m->ops); - (*m->ops->rtraverse)(m, f, opaque); + (*m->ops->rtraverse)(list, f, opaque); break; default: CDADA_ASSERT(0); @@ -1092,7 +1096,7 @@ int cdada_list_dump(cdada_list_t* list, uint32_t size, char* buffer, break; case 0: CDADA_ASSERT(m->ops); - (*m->ops->dump)(m, ss); + (*m->ops->dump)(list, ss); break; default: CDADA_ASSERT(0); @@ -1178,7 +1182,7 @@ int cdada_list_print(cdada_list_t* list, FILE *stream){ break; case 0: CDADA_ASSERT(m->ops); - (*m->ops->dump)(m, ss); + (*m->ops->dump)(list, ss); break; default: CDADA_ASSERT(0); diff --git a/tools/cdada-gen b/tools/cdada-gen index 151ee72..8a1d69f 100755 --- a/tools/cdada-gen +++ b/tools/cdada-gen @@ -25,115 +25,115 @@ inline bool operator==(const TT_TYPE_TT & a1, const TT_TYPE_TT & a2){ LIST=""" //Operator -void __cdada_list_autogen_create_TT_TYPE_TT (void* m){ +void __cdada_list_autogen_create_TT_TYPE_TT (cdada_list_t* m){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; s->list.custom = (void*)new std::list(); } -void __cdada_list_autogen_destroy_TT_TYPE_TT (void* m){ +void __cdada_list_autogen_destroy_TT_TYPE_TT (cdada_list_t* m){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; delete p; } -void __cdada_list_autogen_clear_TT_TYPE_TT (void* m){ +void __cdada_list_autogen_clear_TT_TYPE_TT (cdada_list_t* m){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; p->clear(); } -bool __cdada_list_autogen_empty_TT_TYPE_TT (const void* m){ +bool __cdada_list_autogen_empty_TT_TYPE_TT (const cdada_list_t* m){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; return p->empty(); } -uint32_t __cdada_list_autogen_size_TT_TYPE_TT (const void* m){ +uint32_t __cdada_list_autogen_size_TT_TYPE_TT (const cdada_list_t* m){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; return p->size(); } -int __cdada_list_autogen_insert_TT_TYPE_TT (void* m, const void* val, +int __cdada_list_autogen_insert_TT_TYPE_TT (cdada_list_t* m, const void* val, const uint32_t pos){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; return cdada_list_insert_u (s, p, val, pos); } -int __cdada_list_autogen_get_TT_TYPE_TT (const void* m, const uint32_t pos, +int __cdada_list_autogen_get_TT_TYPE_TT (const cdada_list_t* m, const uint32_t pos, void* val){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; return cdada_list_get_u (s, p, pos, val); } -int __cdada_list_autogen_first_last_TT_TYPE_TT (const void* m, bool first, +int __cdada_list_autogen_first_last_TT_TYPE_TT (const cdada_list_t* m, bool first, void* key){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; return cdada_list_first_last_u (s, p, first, key); } -int __cdada_list_autogen_erase_TT_TYPE_TT (void* m, const uint32_t pos){ +int __cdada_list_autogen_erase_TT_TYPE_TT (cdada_list_t* m, const uint32_t pos){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; return cdada_list_erase_u (s, p, pos); } -int __cdada_list_autogen_remove_TT_TYPE_TT (void* m, const void* val){ +int __cdada_list_autogen_remove_TT_TYPE_TT (cdada_list_t* m, const void* val){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; return cdada_list_remove_u (s, p, val); } -int __cdada_list_autogen_push_TT_TYPE_TT (void* m, const void* val, +int __cdada_list_autogen_push_TT_TYPE_TT (cdada_list_t* m, const void* val, bool front){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; return cdada_list_push_u (s, p, val, front); } -int __cdada_list_autogen_pop_TT_TYPE_TT (void* m, bool front){ +int __cdada_list_autogen_pop_TT_TYPE_TT (cdada_list_t* m, bool front){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; return cdada_list_pop_u (s, p, front); } -void __cdada_list_autogen_sort_TT_TYPE_TT (void* m){ +void __cdada_list_autogen_sort_TT_TYPE_TT (cdada_list_t* m){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; p->sort(); } -void __cdada_list_autogen_reverse_TT_TYPE_TT (void* m){ +void __cdada_list_autogen_reverse_TT_TYPE_TT (cdada_list_t* m){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; p->reverse(); } -void __cdada_list_autogen_unique_TT_TYPE_TT (void* m){ +void __cdada_list_autogen_unique_TT_TYPE_TT (cdada_list_t* m){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; p->unique(); } -void __cdada_list_autogen_traverse_TT_TYPE_TT (const void* m, +void __cdada_list_autogen_traverse_TT_TYPE_TT (const cdada_list_t* m, cdada_list_it f, void* opaque){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; - return cdada_list_traverse_u (s, p, f, opaque); + return cdada_list_traverse_u (m, p, f, opaque); } -void __cdada_list_autogen_rtraverse_TT_TYPE_TT (const void* m, +void __cdada_list_autogen_rtraverse_TT_TYPE_TT (const cdada_list_t* m, cdada_list_it f, void* opaque){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p = (std::list*)s->list.custom; - return cdada_list_rtraverse_u (s, p, f, opaque); + return cdada_list_rtraverse_u (m, p, f, opaque); } -void __cdada_list_autogen_dump_TT_TYPE_TT (const void* m, +void __cdada_list_autogen_dump_TT_TYPE_TT (const cdada_list_t* m, std::stringstream& ss){ __cdada_list_int_t* s = (__cdada_list_int_t*)m; std::list* p =