|
GRU - Generic Reusable Utilities
|
#include <assert.h>#include <inttypes.h>#include <stdbool.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include "common/gru_base.h"#include "common/gru_status.h"#include "gru_collection_callbacks.h"#include "gru_node.h"#include "gru_node_info.h"Go to the source code of this file.
Data Structures | |
| struct | gru_list_t_ |
Typedefs | |
| typedef void(* | gru_nodedata_destructor) (void **) |
| Reusable destructor for cleaning list data. More... | |
| typedef struct gru_list_t_ | gru_list_t |
Functions | |
| gru_export gru_list_t * | gru_list_new (gru_status_t *status) |
| Creates a new list. More... | |
| gru_export void | gru_list_destroy (gru_list_t **list) |
| Ensures that the list is properly destroyed. More... | |
| gru_export uint32_t | gru_list_count (const gru_list_t *list) |
| Returns the number of items in a list. More... | |
| gru_export const gru_node_t * | gru_list_append (gru_list_t *list, const void *data) |
| Appends an item in the list. More... | |
| gru_export gru_node_t * | gru_list_insert (gru_list_t *list, const void *data, uint32_t position) |
| Inserts an item in the list. More... | |
| gru_export gru_node_t * | gru_list_remove (gru_list_t *list, uint32_t position) |
| Removes an item from a list. More... | |
| gru_export gru_node_t * | gru_list_remove_node (gru_list_t *list, gru_node_t *node) |
| Removes a node from a list. More... | |
| gru_export bool | gru_list_remove_item (gru_list_t *list, compare_function_t comparable, const void *other) |
| Removes a node that matches a given data as returned by comparable. More... | |
| gru_export const gru_node_t * | gru_list_get (const gru_list_t *list, uint32_t position) |
| Gets a node from the list at the given position. More... | |
| gru_export void | gru_list_for_each_compare (const gru_list_t *list, bool uniqueness, compare_function_t comparable, const void *compare, void *result) |
| Traverses the list comparing the data. More... | |
| gru_export void | gru_list_for_each (const gru_list_t *list, handle_function_t handle, void *data) |
| Traverses the list executing a set of operations. More... | |
| gru_export void | gru_list_for_each_ex (const gru_list_t *list, handle_function_info_t handle, void *data) |
| Traverses the list executing a set of operations and passes through node information (ie.: its position) More... | |
| gru_export const void * | gru_list_get_item (const gru_list_t *list, compare_function_t comparable, const void *other) |
| Traverses the list comparing the data. More... | |
| gru_export void | gru_list_clean (gru_list_t *list, gru_nodedata_destructor destructor) |
| typedef struct gru_list_t_ gru_list_t |
| typedef void(* gru_nodedata_destructor) (void **) |
Reusable destructor for cleaning list data.
| gru_export const gru_node_t * gru_list_append | ( | gru_list_t * | list, |
| const void * | data | ||
| ) |
Appends an item in the list.
| list | The list to receive the new item |
| data | The data for the new node |
| gru_export void gru_list_clean | ( | gru_list_t * | list, |
| gru_nodedata_destructor | destructor | ||
| ) |
| gru_export uint32_t gru_list_count | ( | const gru_list_t * | list | ) |
Returns the number of items in a list.
| list | A given list to check the number of items |
| gru_export void gru_list_destroy | ( | gru_list_t ** | list | ) |
Ensures that the list is properly destroyed.
| list | the list to destroy |
| gru_export void gru_list_for_each | ( | const gru_list_t * | list, |
| handle_function_t | handle, | ||
| void * | data | ||
| ) |
Traverses the list executing a set of operations.
| list | The list to be traversed |
| handle | A pointer to a function of type handle_function_t |
| data | Payload data for the true_handle and false_handle functions |
| gru_export void gru_list_for_each_compare | ( | const gru_list_t * | list, |
| bool | uniqueness, | ||
| compare_function_t | comparable, | ||
| const void * | compare, | ||
| void * | result | ||
| ) |
Traverses the list comparing the data.
It aborts if the uniqueness is true and the comparison returns true
| list | |
| comparable | |
| other | |
| result |
| gru_export void gru_list_for_each_ex | ( | const gru_list_t * | list, |
| handle_function_info_t | handle, | ||
| void * | data | ||
| ) |
Traverses the list executing a set of operations and passes through node information (ie.: its position)
| list | The list to be traversed |
| handle | A pointer to a function of type handle_function_info_t |
| data | Payload data for the true_handle and false_handle functions |
| gru_export const gru_node_t * gru_list_get | ( | const gru_list_t * | list, |
| uint32_t | position | ||
| ) |
Gets a node from the list at the given position.
| list | the list |
| position | the position |
| gru_export const void * gru_list_get_item | ( | const gru_list_t * | list, |
| compare_function_t | comparable, | ||
| const void * | other | ||
| ) |
Traverses the list comparing the data.
It aborts if the uniqueness is true and the comparison returns true
| list | |
| comparable | |
| other | |
| result |
| gru_export gru_node_t * gru_list_insert | ( | gru_list_t * | list, |
| const void * | data, | ||
| uint32_t | position | ||
| ) |
Inserts an item in the list.
| list | The list to receive the new item |
| data | The data for the new node |
| position | The position to insert the data |
| gru_export gru_list_t * gru_list_new | ( | gru_status_t * | status | ) |
Creates a new list.
| gru_export gru_node_t * gru_list_remove | ( | gru_list_t * | list, |
| uint32_t | position | ||
| ) |
Removes an item from a list.
| list | The list to remove the item |
| position | The position of the item to be removed |
| gru_export bool gru_list_remove_item | ( | gru_list_t * | list, |
| compare_function_t | comparable, | ||
| const void * | other | ||
| ) |
Removes a node that matches a given data as returned by comparable.
| list | The list to remove the node from |
| comparable | The comparison function (void *result will be NULL) |
| other | The data to compare the node with |
| gru_export gru_node_t * gru_list_remove_node | ( | gru_list_t * | list, |
| gru_node_t * | node | ||
| ) |
Removes a node from a list.
| list | The list to remove the item |
| node | The node to be removed |