The list data type implements a fast generic doubly-linked list.
More...
|
void | stp_list_node_free_data (void *item) |
| Free node data allocated with stp_malloc. More...
|
|
stp_list_t * | stp_list_create (void) |
| Create a new list object. More...
|
|
stp_list_t * | stp_list_copy (const stp_list_t *list) |
| Copy and allocate a list object. More...
|
|
int | stp_list_destroy (stp_list_t *list) |
| Destroy a list object. More...
|
|
stp_list_item_t * | stp_list_get_start (const stp_list_t *list) |
| Find the first item in a list. More...
|
|
stp_list_item_t * | stp_list_get_end (const stp_list_t *list) |
| Find the last item in a list. More...
|
|
stp_list_item_t * | stp_list_get_item_by_index (const stp_list_t *list, int idx) |
| Find an item in a list by its index. More...
|
|
stp_list_item_t * | stp_list_get_item_by_name (const stp_list_t *list, const char *name) |
| Find an item in a list by its name. More...
|
|
stp_list_item_t * | stp_list_get_item_by_long_name (const stp_list_t *list, const char *long_name) |
| Find an item in a list by its long name. More...
|
|
int | stp_list_get_length (const stp_list_t *list) |
| Get the length of a list. More...
|
|
void | stp_list_set_freefunc (stp_list_t *list, stp_node_freefunc freefunc) |
| Set a list node free function. More...
|
|
stp_node_freefunc | stp_list_get_freefunc (const stp_list_t *list) |
| Get a list node free function. More...
|
|
void | stp_list_set_copyfunc (stp_list_t *list, stp_node_copyfunc copyfunc) |
| Set a list node copy function. More...
|
|
stp_node_copyfunc | stp_list_get_copyfunc (const stp_list_t *list) |
| Get a list node copy function. More...
|
|
void | stp_list_set_namefunc (stp_list_t *list, stp_node_namefunc namefunc) |
| Set a list node name function. More...
|
|
stp_node_namefunc | stp_list_get_namefunc (const stp_list_t *list) |
| Get a list node name function. More...
|
|
void | stp_list_set_long_namefunc (stp_list_t *list, stp_node_namefunc long_namefunc) |
| Set a list node long name function. More...
|
|
stp_node_namefunc | stp_list_get_long_namefunc (const stp_list_t *list) |
| Get a list node long name function. More...
|
|
void | stp_list_set_sortfunc (stp_list_t *list, stp_node_sortfunc sortfunc) |
| Set a list node sort function. More...
|
|
stp_node_sortfunc | stp_list_get_sortfunc (const stp_list_t *list) |
| Get a list node sort function. More...
|
|
int | stp_list_item_create (stp_list_t *list, stp_list_item_t *next, const void *data) |
| Create a new list item. More...
|
|
int | stp_list_item_destroy (stp_list_t *list, stp_list_item_t *item) |
| Destroy a list item. More...
|
|
stp_list_item_t * | stp_list_item_prev (const stp_list_item_t *item) |
| Get the previous item in the list. More...
|
|
stp_list_item_t * | stp_list_item_next (const stp_list_item_t *item) |
| Get the next item in the list. More...
|
|
void * | stp_list_item_get_data (const stp_list_item_t *item) |
| Get the data associated with a list item. More...
|
|
int | stp_list_item_set_data (stp_list_item_t *item, void *data) |
| Set the data associated with a list item. More...
|
|
The list data type implements a fast generic doubly-linked list.
It supports all of the operations you might want in a list (insert, remove, iterate over the list, copy whole lists), plus some (optional) less common features: finding items by index, name or long name, and sorting. These should also be fairly fast, due to caching in the list head.
The list item opaque data type.
This object is a node in the list.
The list opaque data type.
This object represents the list as a whole.
typedef void*(* stp_node_copyfunc)(const void *) |
A callback function to copy the data a node contains.
The parameter is a pointer to the node data. The return value is a pointer to the new copy of the data.
typedef void(* stp_node_freefunc)(void *) |
A callback function to free the data a node contains.
The parameter is a pointer to the node data.
typedef const char*(* stp_node_namefunc)(const void *) |
A callback function to get the name of a node.
The parameter is a pointer to the node data. The return value is a pointer to the name of the node, or NULL if there is no name.
typedef int(* stp_node_sortfunc)(const void *, const void *) |
A callback function to compare two nodes.
The two parameters are pointers to node data. The return value is <0 if the first sorts before the second, 0 if they sort identically, and >0 if the first sorts after the second.
Copy and allocate a list object.
list must be a valid list object previously created with stp_list_create().
- Parameters
-
- Returns
- a pointer to the new copy of the list.
Create a new list object.
- Returns
- the newly created list object.
Destroy a list object.
It is an error to destroy the list more than once.
- Parameters
-
- Returns
- 0 on success, 1 on failure.
Get a list node copy function.
- Parameters
-
- Returns
- the function previously set with stp_list_set_copyfunc, or NULL if no function has been set.
Find the last item in a list.
- Parameters
-
- Returns
- a pointer to the last list item, or NULL if the list is empty.
Get a list node free function.
- Parameters
-
- Returns
- the function previously set with stp_list_set_freefunc, or NULL if no function has been set.
Find an item in a list by its index.
- Parameters
-
list | the list to use. |
idx | the index to find. |
- Returns
- a pointer to the list item, or NULL if the index is invalid or the list is empty.
Find an item in a list by its long name.
- Parameters
-
list | the list to use. |
long_name | the long name to find. |
- Returns
- a pointer to the list item, or NULL if the long name is invalid or the list is empty.
Find an item in a list by its name.
- Parameters
-
list | the list to use. |
name | the name to find. |
- Returns
- a pointer to the list item, or NULL if the name is invalid or the list is empty.
int stp_list_get_length |
( |
const stp_list_t * |
list | ) |
|
Get the length of a list.
- Parameters
-
- Returns
- the list length (number of list items).
Get a list node long name function.
- Parameters
-
- Returns
- the function previously set with stp_list_set_long_namefunc, or NULL if no function has been set.
Get a list node name function.
- Parameters
-
- Returns
- the function previously set with stp_list_set_namefunc, or NULL if no function has been set.
Get a list node sort function.
- Parameters
-
- Returns
- the function previously set with stp_list_set_sortfunc, or NULL if no function has been set.
Find the first item in a list.
- Parameters
-
- Returns
- a pointer to the first list item, or NULL if the list is empty.
Create a new list item.
- Parameters
-
list | the list to use. |
next | the next item in the list, or NULL to insert at the end of the list. |
data | the data the list item will contain. |
- Returns
- 0 on success, 1 on failure (if data is NULL, for example).
Destroy a list item.
- Parameters
-
list | the list to use. |
item | the item to destroy. |
- Returns
- 0 on success, 1 on failure.
Get the data associated with a list item.
- Parameters
-
item | the list item to use. |
- Returns
- the data associated with item.
Get the next item in the list.
- Parameters
-
item | the item to start from. |
- Returns
- a pointer to the list item following from item, or NULL if item is the end of the list.
Get the previous item in the list.
- Parameters
-
item | the item to start from. |
- Returns
- a pointer to the list item prior to item, or NULL if item is the start of the list.
Set the data associated with a list item.
- Warning
- Note that if a sortfunc is in use, changing the data will NOT re-sort the list!
- Parameters
-
item | the list item to use. |
data | the data to set. |
- Returns
- 0 on success, 1 on failure (if data is NULL).
void stp_list_node_free_data |
( |
void * |
item | ) |
|
Free node data allocated with stp_malloc.
This function is indended for use as an stp_node_freefunc, which uses stp_free to free the node data.
- Parameters
-
item | the node data to free |
Set a list node copy function.
This callback function will be called whenever a list item is copied. Its intended use is for automatic object copying (since C lacks a copy constructor).
- Parameters
-
list | the list to use. |
copyfunc | the function to set. |
Set a list node free function.
This callback function will be called whenever a list item is destroyed. Its intended use is for automatic object destruction and any other cleanup required.
- Parameters
-
list | the list to use. |
freefunc | the function to set. |
Set a list node long name function.
This callback function will be called whenever the long name of a list item needs to be determined. This is used to find list items by long name.
- Parameters
-
list | the list to use. |
long_namefunc | the function to set. |
Set a list node name function.
This callback function will be called whenever the name of a list item needs to be determined. This is used to find list items by name.
- Parameters
-
list | the list to use. |
namefunc | the function to set. |
Set a list node sort function.
This callback function will be called to determine the sort order for list items in sorted lists.
- Parameters
-
list | the list to use. |
sortfunc | the function to set. |