Data Structures | |
| struct | di_slist |
| Single-linked list. More... | |
| struct | di_slist_node |
| Node of a single-linked list. More... | |
Functions | |
| di_slist * | di_slist_alloc (void) |
| void | di_slist_destroy (di_slist *slist, di_destroy_notify destroy_func) __attribute__((nonnull(1))) |
| void | di_slist_free (di_slist *slist) |
| void | di_slist_append (di_slist *slist, void *data) __attribute__((nonnull(1))) |
| void | di_slist_append_chunk (di_slist *slist, void *data, di_mem_chunk *mem_chunk) __attribute__((nonnull(1 |
| void void | di_slist_prepend (di_slist *slist, void *data) __attribute__((nonnull(1))) |
| void | di_slist_prepend_chunk (di_slist *slist, void *data, di_mem_chunk *mem_chunk) __attribute__((nonnull(1 |
| void | internal_di_slist_append_list (di_slist *slist, di_slist *slist_append) |
| di_slist* di_slist_alloc | ( | void | ) |
| void di_slist_append | ( | di_slist * | slist, | |
| void * | data | |||
| ) |
Append to a single-linked list
| slist | a di_slist | |
| data | the data |
References di_new.
Referenced by di_log_set_handler().
00072 { 00073 return internal_di_slist_append (slist, data, di_new (di_slist_node, 1)); 00074 }
| void di_slist_append_chunk | ( | di_slist * | slist, | |
| void * | data, | |||
| di_mem_chunk * | mem_chunk | |||
| ) |
Append to a single-linked list
| slist | a di_slist | |
| data | the data | |
| mem_chunk | a di_mem_chunk for allocation of new nodes |
Referenced by di_packages_append_package().
| void di_slist_destroy | ( | di_slist * | slist, | |
| di_destroy_notify | destroy_func | |||
| ) |
Destroy the contents of a single-linked list
| slist | a di_slist |
References di_slist_node::data, di_free(), head, and di_slist_node::next.
00039 { 00040 di_slist_node *node, *temp; 00041 00042 node = slist->head; 00043 while (node) 00044 { 00045 temp = node; 00046 node = node->next; 00047 if (destroy_func) 00048 destroy_func (temp->data); 00049 di_free (temp); 00050 } 00051 }
| void di_slist_free | ( | di_slist * | slist | ) |
| void void di_slist_prepend | ( | di_slist * | slist, | |
| void * | data | |||
| ) |
Prepend to a single-linked list
| slist | a di_slist | |
| data | the data |
References di_new.
00093 { 00094 return internal_di_slist_prepend (slist, data, di_new (di_slist_node, 1)); 00095 }
| void di_slist_prepend_chunk | ( | di_slist * | slist, | |
| void * | data, | |||
| di_mem_chunk * | mem_chunk | |||
| ) |
Prepend to a single-linked list
| slist | a di_slist | |
| data | the data | |
| mem_chunk | a di_mem_chunk for allocation of new nodes |
For internal use only.
References bottom, head, and di_slist_node::next.
00103 { 00104 if (!new->head || !new->bottom) 00105 return; 00106 if (slist->bottom) 00107 slist->bottom->next = new->head; 00108 else 00109 slist->head = new->head; 00110 slist->bottom = new->bottom; 00111 new->head = new->bottom = NULL; 00112 }
1.5.6