libSBML C++ API
5.18.0
|
Simple, generic list utility class. More...
Classes | |
class | List |
Simple, plain, generic lists. More... | |
Macros | |
#define | List_freeItems(list, free_item, type) |
Frees the items in the given List. More... | |
Typedefs | |
typedef int(* | ListItemComparator) (const void *item1, const void *item2) |
A ListItemComparator is a typedef for a pointer to a function that compares two list items. More... | |
typedef int(* | ListItemPredicate) (const void *item) |
A ListItemPredicate is a typedef for a pointer to a function that takes a List item and returns 1 (true) or 0 (false). More... | |
Simple, generic list utility class.
#define List_freeItems | ( | list, | |
free_item, | |||
type | |||
) |
Frees the items in the given List.
Iterates over the items in this List and frees each one in turn by calling the passed-in 'void free_item(type *)' function.
The List itself will not be freed and so may be re-used. To free the List, use the destructor.
While the function prototype cannot be expressed precisely in C syntax, it is roughly:
where type
is a C type resolved at compile time.
Believe it or not, defining List_freeItems() as a macro is actually more type safe than can be acheived with straight C. That is, in C, the free_item() function would need to take a void pointer argument, requiring any type safe XXX_free() functions to be re-written to be less safe.
As with all line-continuation macros, compile-time errors will still report the correct line number.
typedef int(* ListItemComparator) (const void *item1, const void *item2) |
A ListItemComparator is a typedef for a pointer to a function that compares two list items.
The return value semantics are the same as for the C library function strcmp:
item1
< item2
item1
== item2
item1
> item2
typedef int(* ListItemPredicate) (const void *item) |
A ListItemPredicate is a typedef for a pointer to a function that takes a List item and returns 1
(true) or 0
(false).