Lines Matching refs:list
41 list *listCreate(void) in listCreate()
43 struct list *list; in listCreate() local
45 if ((list = zmalloc(sizeof(*list))) == NULL) in listCreate()
47 list->head = list->tail = NULL; in listCreate()
48 list->len = 0; in listCreate()
49 list->dup = NULL; in listCreate()
50 list->free = NULL; in listCreate()
51 list->match = NULL; in listCreate()
52 return list; in listCreate()
56 void listEmpty(list *list) in listEmpty() argument
61 current = list->head; in listEmpty()
62 len = list->len; in listEmpty()
65 if (list->free) list->free(current->value); in listEmpty()
69 list->head = list->tail = NULL; in listEmpty()
70 list->len = 0; in listEmpty()
76 void listRelease(list *list) in listRelease() argument
78 listEmpty(list); in listRelease()
79 zfree(list); in listRelease()
88 list *listAddNodeHead(list *list, void *value) in listAddNodeHead() argument
95 if (list->len == 0) { in listAddNodeHead()
96 list->head = list->tail = node; in listAddNodeHead()
100 node->next = list->head; in listAddNodeHead()
101 list->head->prev = node; in listAddNodeHead()
102 list->head = node; in listAddNodeHead()
104 list->len++; in listAddNodeHead()
105 return list; in listAddNodeHead()
114 list *listAddNodeTail(list *list, void *value) in listAddNodeTail() argument
121 if (list->len == 0) { in listAddNodeTail()
122 list->head = list->tail = node; in listAddNodeTail()
125 node->prev = list->tail; in listAddNodeTail()
127 list->tail->next = node; in listAddNodeTail()
128 list->tail = node; in listAddNodeTail()
130 list->len++; in listAddNodeTail()
131 return list; in listAddNodeTail()
134 list *listInsertNode(list *list, listNode *old_node, void *value, int after) { in listInsertNode() argument
143 if (list->tail == old_node) { in listInsertNode()
144 list->tail = node; in listInsertNode()
149 if (list->head == old_node) { in listInsertNode()
150 list->head = node; in listInsertNode()
159 list->len++; in listInsertNode()
160 return list; in listInsertNode()
167 void listDelNode(list *list, listNode *node) in listDelNode() argument
172 list->head = node->next; in listDelNode()
176 list->tail = node->prev; in listDelNode()
177 if (list->free) list->free(node->value); in listDelNode()
179 list->len--; in listDelNode()
186 listIter *listGetIterator(list *list, int direction) in listGetIterator() argument
192 iter->next = list->head; in listGetIterator()
194 iter->next = list->tail; in listGetIterator()
205 void listRewind(list *list, listIter *li) { in listRewind() argument
206 li->next = list->head; in listRewind()
210 void listRewindTail(list *list, listIter *li) { in listRewindTail() argument
211 li->next = list->tail; in listRewindTail()
250 list *listDup(list *orig) in listDup()
252 list *copy; in listDup()
290 listNode *listSearchKey(list *list, void *key) in listSearchKey() argument
295 listRewind(list, &iter); in listSearchKey()
297 if (list->match) { in listSearchKey()
298 if (list->match(node->value, key)) { in listSearchKey()
315 listNode *listIndex(list *list, long index) { in listIndex() argument
320 n = list->tail; in listIndex()
323 n = list->head; in listIndex()
330 void listRotate(list *list) { in listRotate() argument
331 listNode *tail = list->tail; in listRotate()
333 if (listLength(list) <= 1) return; in listRotate()
336 list->tail = tail->prev; in listRotate()
337 list->tail->next = NULL; in listRotate()
339 list->head->prev = tail; in listRotate()
341 tail->next = list->head; in listRotate()
342 list->head = tail; in listRotate()
347 void listJoin(list *l, list *o) { in listJoin()