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()
58 void listRelease(list *list) in listRelease() argument
63 current = list->head; in listRelease()
64 len = list->len; in listRelease()
67 if (list->free) list->free(current->value); in listRelease()
71 zfree(list); in listRelease()
80 list *listAddNodeHead(list *list, void *value) in listAddNodeHead() argument
87 if (list->len == 0) { in listAddNodeHead()
88 list->head = list->tail = node; in listAddNodeHead()
92 node->next = list->head; in listAddNodeHead()
93 list->head->prev = node; in listAddNodeHead()
94 list->head = node; in listAddNodeHead()
96 list->len++; in listAddNodeHead()
97 return list; in listAddNodeHead()
106 list *listAddNodeTail(list *list, void *value) in listAddNodeTail() argument
113 if (list->len == 0) { in listAddNodeTail()
114 list->head = list->tail = node; in listAddNodeTail()
117 node->prev = list->tail; in listAddNodeTail()
119 list->tail->next = node; in listAddNodeTail()
120 list->tail = node; in listAddNodeTail()
122 list->len++; in listAddNodeTail()
123 return list; in listAddNodeTail()
126 list *listInsertNode(list *list, listNode *old_node, void *value, int after) { in listInsertNode() argument
135 if (list->tail == old_node) { in listInsertNode()
136 list->tail = node; in listInsertNode()
141 if (list->head == old_node) { in listInsertNode()
142 list->head = node; in listInsertNode()
151 list->len++; in listInsertNode()
152 return list; in listInsertNode()
159 void listDelNode(list *list, listNode *node) in listDelNode() argument
164 list->head = node->next; in listDelNode()
168 list->tail = node->prev; in listDelNode()
169 if (list->free) list->free(node->value); in listDelNode()
171 list->len--; in listDelNode()
178 listIter *listGetIterator(list *list, int direction) in listGetIterator() argument
184 iter->next = list->head; in listGetIterator()
186 iter->next = list->tail; in listGetIterator()
197 void listRewind(list *list, listIter *li) { in listRewind() argument
198 li->next = list->head; in listRewind()
202 void listRewindTail(list *list, listIter *li) { in listRewindTail() argument
203 li->next = list->tail; in listRewindTail()
242 list *listDup(list *orig) in listDup()
244 list *copy; in listDup()
282 listNode *listSearchKey(list *list, void *key) in listSearchKey() argument
287 listRewind(list, &iter); in listSearchKey()
289 if (list->match) { in listSearchKey()
290 if (list->match(node->value, key)) { in listSearchKey()
307 listNode *listIndex(list *list, long index) { in listIndex() argument
312 n = list->tail; in listIndex()
315 n = list->head; in listIndex()
322 void listRotate(list *list) { in listRotate() argument
323 listNode *tail = list->tail; in listRotate()
325 if (listLength(list) <= 1) return; in listRotate()
328 list->tail = tail->prev; in listRotate()
329 list->tail->next = NULL; in listRotate()
331 list->head->prev = tail; in listRotate()
333 tail->next = list->head; in listRotate()
334 list->head = tail; in listRotate()