Lines Matching refs:wrapper
74 LTYPE##_append (LWRAPPERTYPE *wrapper, LTYPE *new_)
78 LTYPE##_append (LWRAPPERTYPE *wrapper, LTYPE *new_) \
80 if (wrapper->last == NULL) \
81 wrapper->first = new_; \
84 new_->prev = wrapper->last; \
85 wrapper->last->next = new_; \
87 wrapper->last = new_; \
88 ++wrapper->size; \
97 LTYPE##_prepend (LWRAPPERTYPE *wrapper, LTYPE *new_)
101 LTYPE##_prepend (LWRAPPERTYPE *wrapper, LTYPE *new_) \
103 if (wrapper->first == NULL) \
104 wrapper->last = new_; \
107 new_->next = wrapper->first; \
108 wrapper->first->prev = new_; \
110 wrapper->first = new_; \
111 ++wrapper->size; \
121 LTYPE##_insert_before (LWRAPPERTYPE *wrapper, \
127 LTYPE##_insert_before (LWRAPPERTYPE *wrapper, \
131 if (where == wrapper->first) \
132 LTYPE##_prepend (wrapper, new_); \
134 LTYPE##_append (wrapper, new_); \
141 ++wrapper->size; \
150 LTYPE##_pop_front (LWRAPPERTYPE *wrapper)
154 LTYPE##_pop_front (LWRAPPERTYPE *wrapper) \
156 LTYPE *front_node = wrapper->first; \
159 wrapper->first = front_node->next; \
160 if (wrapper->last == front_node) \
161 wrapper->last = NULL; \
168 --wrapper->size; \
178 LTYPE##_pop_back (LWRAPPERTYPE *wrapper)
182 LTYPE##_pop_back (LWRAPPERTYPE *wrapper) \
184 LTYPE *back_node = wrapper->last; \
187 wrapper->last = back_node->prev; \
188 if (wrapper->first == back_node) \
189 wrapper->first = NULL; \
196 --wrapper->size; \
207 LTYPE##_remove (LWRAPPERTYPE *wrapper, LTYPE *node)
211 LTYPE##_remove (LWRAPPERTYPE *wrapper, LTYPE *node) \
219 wrapper->last = node->prev; \
225 --wrapper->size; \
228 LTYPE##_pop_front (wrapper); \
238 LTYPE##_swap (LWRAPPERTYPE *wrapper, LTYPE *node1, LTYPE *node2)
243 LTYPE##_swap (LWRAPPERTYPE *wrapper, LTYPE *node1, LTYPE *node2) \
253 wrapper->first = node2; \
257 wrapper->first = node1; \
262 wrapper->last = node2; \
266 wrapper->last = node1; \
280 /* Note: all the mutative operations below also update the data in the wrapper,
315 LTYPE##_merge_sort (LWRAPPERTYPE *wrapper, \
399 wrapper. */
422 /* Merge sort wrapper that the end-user should be using as it updates the
423 first and last metadata of the list in wrapper as well.
428 LTYPE##_merge_sort (LWRAPPERTYPE *wrapper, \
431 wrapper->first = LTYPE##_merge_sort_ (wrapper->first, fn_cmp); \
433 if (wrapper->first == NULL || wrapper->first->next == NULL) \
434 wrapper->last = wrapper->first; \
436 for (LTYPE *node = wrapper->first; \
439 wrapper->last = node; \