125 #define cx_invoke_advanced_destructor(c, e) \ |
125 #define cx_invoke_advanced_destructor(c, e) \ |
126 (c)->advanced_destructor((c)->destructor_data, \ |
126 (c)->advanced_destructor((c)->destructor_data, \ |
127 (c)->store_pointer ? (*((void **) (e))) : (e)) |
127 (c)->store_pointer ? (*((void **) (e))) : (e)) |
128 |
128 |
129 |
129 |
|
130 /** |
|
131 * Invokes all available destructor functions for a specific element. |
|
132 * |
|
133 * Usually only used by collection implementations. There should be no need |
|
134 * to invoke this macro manually. |
|
135 * |
|
136 * @param c the collection |
|
137 * @param e the element |
|
138 */ |
130 #define cx_invoke_destructor(c, e) \ |
139 #define cx_invoke_destructor(c, e) \ |
131 if ((c)->simple_destructor) cx_invoke_simple_destructor(c,e); \ |
140 if ((c)->simple_destructor) cx_invoke_simple_destructor(c,e); \ |
132 if ((c)->advanced_destructor) cx_invoke_advanced_destructor(c,e) |
141 if ((c)->advanced_destructor) cx_invoke_advanced_destructor(c,e) |
133 |
142 |
134 #ifdef __cplusplus |
143 #ifdef __cplusplus |