src/kv_list.c

changeset 1369
a9989e16f7df
parent 1368
19025ca34caa
child 1370
607f822c79fe
equal deleted inserted replaced
1368:19025ca34caa 1369:a9989e16f7df
69 if (kv_list->map_destr2) { 69 if (kv_list->map_destr2) {
70 kv_list->map_destr2(kv_list->map_destr_data, elem); 70 kv_list->map_destr2(kv_list->map_destr_data, elem);
71 } 71 }
72 } 72 }
73 73
74 static void cx_kv_list_destructor_wrapper_map(void *list_ptr, void *node_data) {
75 const cx_kv_list *kv_list = list_ptr;
76 // the elem called with a map destructor is a pointer to the node
77 // we need to deref the elem accordingly
78 void *elem = kv_list->list.base.collection.store_pointer ? *(void**)node_data : node_data;
79 if (kv_list->list_destr) {
80 kv_list->list_destr(elem);
81 }
82 if (kv_list->list_destr2) {
83 kv_list->list_destr2(kv_list->list_destr_data, elem);
84 }
85 if (kv_list->map_destr) {
86 kv_list->map_destr(elem);
87 }
88 if (kv_list->map_destr2) {
89 kv_list->map_destr2(kv_list->map_destr_data, elem);
90 }
91 }
92
93 static void cx_kv_list_update_destructors(cx_kv_list *list) { 74 static void cx_kv_list_update_destructors(cx_kv_list *list) {
94 // we copy the destructors to our custom fields and register 75 // we copy the destructors to our custom fields and register
95 // an own destructor function which invokes all these 76 // an own destructor function which invokes all these
96 if (list->list.base.collection.simple_destructor != NULL) { 77 if (list->list.base.collection.simple_destructor != NULL) {
97 list->list_destr = list->list.base.collection.simple_destructor; 78 list->list_destr = list->list.base.collection.simple_destructor;

mercurial