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 |