Data Structures | |
| struct | list |
Defines | |
| #define | assure(EXPR) assert(EXPR) |
Functions | |
| list * | list_new (void) |
| Constructor. | |
| list * | list_duplicate (const list *l, void *(*duplicate)(const void *)) |
| Copy constructor. | |
| void | list_delete_const (const list **l, void(*delete)(void **)) |
| void | list_delete (list **l, void(*delete)(void **)) |
| int | list_size (const list *l) |
| void | list_insert (list *l, void *e) |
| const void * | list_remove_const (list *l, const void *e) |
| void * | list_remove (list *l, void *e) |
| const void * | list_first_const (const list *l) |
| void * | list_first (list *l) |
| const void * | list_next_const (const list *l) |
| void * | list_next (list *l) |
| void | list_first_pair_const (const list *l, const void **e1, const void **e2) |
| void | list_first_pair (list *l, void **e1, void **e2) |
| void | list_next_pair_const (const list *l, const void **e1, const void **e2) |
| void | list_next_pair (list *l, void **e1, void **e2) |
| list * | list_extract (const list *l, void *(*duplicate)(const void *), bool(*predicate)(const void *, void *), void *data) |
| Extract elements. | |
| void * | list_min (list *l, list_func_lt less_than, void *data) |
| void * | list_min_val (list *l, list_func_eval eval, void *data) |
| void * | list_max_val (list *l, list_func_eval eval, void *data) |
| const void * | list_max_const (const list *l, list_func_lt less_than, void *data) |
| void * | list_max (list *l, list_func_lt less_than, void *data) |
| static const void * | kth (const void *a[], int k, int n, list_func_lt less_than, void *data) |
| const void * | list_kth_const (const list *l, int k, list_func_lt less_than, void *data) |
| void * | list_kth (list *l, int k, list_func_lt less_than, void *data) |
| static bool | val_less_than (const void *e1, const void *e2, void *data) |
| const void * | list_kth_val_const (const list *l, int k, list_func_eval eval, void *data) |
| void * | list_kth_val (list *l, int k, list_func_eval eval, void *data) |
| double | list_median (const list *l, list_func_eval eval, void *data) |
| double | list_mean (const list *l, list_func_eval eval, void *data) |
| double | list_mean_optimal (const list *l, list_func_eval eval, void *data_eval, list_func_eval eval_err, void *data_err, double *err, double *red_chisq) |
| static double | abs_dev (const void *e1, void *data) |
| double | list_mad (list *l, list_func_eval eval, void *data) |
Variables | |
| static void *(* | list_malloc )(size_t) = malloc |
| static void *(* | list_calloc )(size_t, size_t) = calloc |
| static void *(* | list_realloc )(void *, size_t) = realloc |
| static void(* | list_free )(const void *) = (void (*)(const void *))free |
This container is polymorphic and typesafe. That is, the elements are typed, not void pointers.
A few things to be aware of:
To define a class called e.g. integer_list, put in a source file
#define LIST_DEFINE #define LIST_ELEM integer #include <list.h>
And put in the header
#define LIST_ELEM integer #include <list.h>
|
|
|
Constructor.
Definition at line 107 of file list.c. References list_malloc. Referenced by list_extract(). |
|
||||||||||||
|
Copy constructor.
Definition at line 125 of file list.c. References assure, list::back, list::current, list::current_p1, list::current_p2, list::elements, list_malloc, and list::size. |
|
||||||||||||||||||||
|
Extract elements.
Definition at line 481 of file list.c. References assure, list::elements, list_insert(), list_new(), and list::size. |
|
|
Define memory handling here Definition at line 91 of file list.c. Referenced by list_duplicate(), and list_new(). |
1.4.6