Containers
This library provides various containers. Each container has utility functions to manipulate the data it holds. This is an abstraction as to not have to manually manage and reallocate memory.
|
Functions | |
list | list_init (const size_t data_size) |
size_t | list_size (list me) |
bk_bool | list_is_empty (list me) |
void | list_copy_to_array (void *const arr, list me) |
bk_err | list_add_all (list me, void *const arr, const size_t size) |
bk_err | list_add_first (list me, void *const data) |
bk_err | list_add_at (list me, const size_t index, void *const data) |
bk_err | list_add_last (list me, void *const data) |
bk_err | list_remove_first (list me) |
bk_err | list_remove_at (list me, const size_t index) |
bk_err | list_remove_last (list me) |
bk_err | list_set_first (list me, void *const data) |
bk_err | list_set_at (list me, const size_t index, void *const data) |
bk_err | list_set_last (list me, void *const data) |
bk_err | list_get_first (void *const data, list me) |
bk_err | list_get_at (void *const data, list me, const size_t index) |
bk_err | list_get_last (void *const data, list me) |
void | list_clear (list me) |
list | list_destroy (list me) |
Copies elements from an array to the doubly-linked list. The size specifies the number of elements to copy, starting from the beginning of the array. The size must be less than or equal to the size of the array.
me | the doubly-linked list to add data to |
arr | the array to copy data from |
size | the number of elements to copy |
Adds data at a specified index in the doubly-linked list. The pointer to the data being passed in should point to the data type which this doubly-linked list holds. For example, if this doubly-linked list holds integers, the data pointer should be a pointer to an integer. Since the data is being copied, the pointer only has to be valid when this function is called.
me | the doubly-linked list to add data to |
index | the index to add the data at |
data | the data to add to the doubly-linked list |
Adds data at the first index in the doubly-linked list. The pointer to the data being passed in should point to the data type which this doubly-linked list holds. For example, if this doubly-linked list holds integers, the data pointer should be a pointer to an integer. Since the data is being copied, the pointer only has to be valid when this function is called.
me | the doubly-linked list to add data to |
data | the data to add to the doubly-linked list |
Adds data at the last index in the doubly-linked list. The pointer to the data being passed in should point to the data type which this doubly-linked list holds. For example, if this doubly-linked list holds integers, the data pointer should be a pointer to an integer. Since the data is being copied, the pointer only has to be valid when this function is called.
me | the doubly-linked list to add data to |
data | the data to add to the doubly-linked list |
void list_clear | ( | list | me | ) |
Clears all elements from the doubly-linked list.
me | the doubly-linked list to clear |
void list_copy_to_array | ( | void *const | arr, |
list | me | ||
) |
Copies the nodes of the doubly-linked list to an array. Since it is a copy, the array may be modified without causing side effects to the doubly-linked list data structure. Memory is not allocated, thus the array being used for the copy must be allocated before this function is called. The size of the doubly-linked list should be queried prior to calling this function, which also serves as the size of the newly-copied array.
arr | the initialized array to copy the doubly-linked list to |
me | the doubly-linked list to copy to the array |
Destroys the doubly-linked list. Performing further operations after calling this function results in undefined behavior. Freeing NULL is legal, and causes no operation to be performed.
me | the doubly-linked list to destroy |
Gets the data at the specified index in the doubly-linked list. The pointer to the data being obtained should point to the data type which this doubly- linked list holds. For example, if this doubly-linked list holds integers, the data pointer should be a pointer to an integer. Since this data is being copied from the array to the data pointer, the pointer only has to be valid when this function is called.
data | the data to get |
me | the doubly-linked list to get data from |
index | the index to get data from |
Gets the data at the first index in the doubly-linked list. The pointer to the data being obtained should point to the data type which this doubly- linked list holds. For example, if this doubly-linked list holds integers, the data pointer should be a pointer to an integer. Since this data is being copied from the array to the data pointer, the pointer only has to be valid when this function is called.
data | the data to get |
me | the doubly-linked list to get data from |
Gets the data at the last index in the doubly-linked list. The pointer to the data being obtained should point to the data type which this doubly- linked list holds. For example, if this doubly-linked list holds integers, the data pointer should be a pointer to an integer. Since this data is being copied from the array to the data pointer, the pointer only has to be valid when this function is called.
data | the data to get |
me | the doubly-linked list to get data from |
list list_init | ( | const size_t | data_size | ) |
Initializes a doubly-linked list.
data_size | the size of data to store; must be positive |
Determines if the doubly-linked list is empty.
me | the doubly-linked list to check |
Removes data from the doubly-linked list at the specified index.
me | the doubly-linked list to remove data from |
index | the index to remove from |
Removes the first piece of data from the doubly-linked list.
me | the doubly-linked list to remove data from |
Removes the last piece of data from the doubly-linked list.
me | the doubly-linked list to remove data from |
Sets the data at the specified index in the doubly-linked list. The pointer to the data being passed in should point to the data type which this doubly- linked list holds. For example, if this doubly-linked list holds integers, the data pointer should be a pointer to an integer. Since the data is being copied, the pointer only has to be valid when this function is called.
me | the doubly-linked list to set data for |
index | the index to set data in the doubly-linked list |
data | the data to set in the doubly-linked list |
Sets the data at the first index in the doubly-linked list. The pointer to the data being passed in should point to the data type which this doubly- linked list holds. For example, if this doubly-linked list holds integers, the data pointer should be a pointer to an integer. Since the data is being copied, the pointer only has to be valid when this function is called.
me | the doubly-linked list to set data for |
data | the data to set in the doubly-linked list |
Sets the data at the last index in the doubly-linked list. The pointer to the data being passed in should point to the data type which this doubly- linked list holds. For example, if this doubly-linked list holds integers, the data pointer should be a pointer to an integer. Since the data is being copied, the pointer only has to be valid when this function is called.
me | the doubly-linked list to set data for |
data | the data to set in the doubly-linked list |
size_t list_size | ( | list | me | ) |
Gets the number of elements in the doubly-linked list.
me | the doubly-linked list to check |