libSBML Perl API
libSBML 5.15.2 Perl API
|
Simple, generic list utility class. More...
Classes | |
class | List |
{core} More... | |
Macros | |
#define | List_freeItems(list, free_item, type) |
Frees the items in the given List. More... | |
Typedefs | |
typedef void(* | ListDeleteItemFunc) (void *item) |
ListDeleteItemFunc. More... | |
typedef int(* | ListItemComparator) (const void *item1, const void *item2) |
ListItemComparator. More... | |
typedef int(* | ListItemPredicate) (const void *item) |
ListItemPredicate. 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 void(* ListDeleteItemFunc) (void *item) |
ListDeleteItemFunc.
This is a typedef for a pointer to a function that takes a List item and deletes / frees it as apropriate.
typedef int(* ListItemComparator) (const void *item1, const void *item2) |
ListItemComparator.
This 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) |
ListItemPredicate.
This is a typedef for a pointer to a function that takes a List item and returns nonzero (for true) or zero (for false).