H:/Class/11756/HLab/sphinxbase-0.4/include/glist.h File Reference
Generic linked-lists maintenance.
More...
#include <stdlib.h>
#include <sphinxbase_export.h>
#include <prim_type.h>
Go to the source code of this file.
Classes |
struct | gnode_s |
Defines |
#define | gnode_ptr(g) ((g)->data.ptr) |
#define | gnode_int32(g) ((g)->data.i) |
#define | gnode_uint32(g) ((g)->data.ui) |
#define | gnode_float32(g) ((float32)(g)->data.fl) |
#define | gnode_float64(g) ((g)->data.fl) |
#define | gnode_next(g) ((g)->next) |
Typedefs |
typedef struct gnode_s | gnode_t |
typedef gnode_t * | glist_t |
Functions |
SPHINXBASE_EXPORT glist_t | glist_add_ptr (glist_t g, void *ptr) |
SPHINXBASE_EXPORT glist_t | glist_add_int32 (glist_t g, int32 val) |
SPHINXBASE_EXPORT glist_t | glist_add_uint32 (glist_t g, uint32 val) |
SPHINXBASE_EXPORT glist_t | glist_add_float32 (glist_t g, float32 val) |
SPHINXBASE_EXPORT glist_t | glist_add_float64 (glist_t g, float64 val) |
SPHINXBASE_EXPORT gnode_t * | glist_insert_ptr (gnode_t *gn, void *ptr) |
SPHINXBASE_EXPORT gnode_t * | glist_insert_int32 (gnode_t *gn, int32 val) |
SPHINXBASE_EXPORT gnode_t * | glist_insert_uint32 (gnode_t *gn, uint32 val) |
SPHINXBASE_EXPORT gnode_t * | glist_insert_float32 (gnode_t *gn, float32 val) |
SPHINXBASE_EXPORT gnode_t * | glist_insert_float64 (gnode_t *gn, float64 val) |
SPHINXBASE_EXPORT glist_t | glist_reverse (glist_t g) |
SPHINXBASE_EXPORT int32 | glist_count (glist_t g) |
SPHINXBASE_EXPORT void | glist_free (glist_t g) |
SPHINXBASE_EXPORT gnode_t * | gnode_free (gnode_t *gn, gnode_t *pred) |
SPHINXBASE_EXPORT gnode_t * | glist_tail (glist_t g) |
Detailed Description
Generic linked-lists maintenance.
Only insert at the head of the list. A convenient little linked-list package, but a double-edged sword: the user must keep track of the data type within the linked list elements. When it was first written, there was no selective deletions except to destroy the entire list. This is modified in later version.
(C++ would be good for this, but that's a double-edged sword as well.)
Define Documentation
#define gnode_float32 |
( |
g |
|
) |
((float32)(g)->data.fl) |
#define gnode_float64 |
( |
g |
|
) |
((g)->data.fl) |
#define gnode_int32 |
( |
g |
|
) |
((g)->data.i) |
#define gnode_next |
( |
g |
|
) |
((g)->next) |
#define gnode_ptr |
( |
g |
|
) |
((g)->data.ptr) |
Head of a list of gnodes Access macros, for convenience
#define gnode_uint32 |
( |
g |
|
) |
((g)->data.ui) |
Typedef Documentation
Function Documentation
Create and prepend a new list node containing a single-precision float.
- Parameters:
-
| g | a link list |
| val | a float32 vlaue |
Create and prepend a new list node containing a double-precision float.
- Parameters:
-
| g | a link list |
| val | a float64 vlaue |
Create and prepend a new list node containing an integer.
- Parameters:
-
| g | a link list |
| val | an integer value |
Create and prepend a new list node, with the given user-defined data, at the HEAD of the given generic list. Return the new list thus formed. g may be NULL to indicate an initially empty list.
- Parameters:
-
| g | a link list |
| ptr | a pointer |
Create and prepend a new list node containing an unsigned integer.
- Parameters:
-
| g | a link list |
| val | an unsigned integer value |
Count the number of element in a given link list
- Returns:
- the number of elements in the given glist_t
- Parameters:
-
SPHINXBASE_EXPORT void glist_free |
( |
glist_t |
g |
) |
|
Free the given generic list; user-defined data contained within is not automatically freed. The caller must have done that already.
Create and insert a new list node containing a single-precision float.
- Parameters:
-
| gn | a generic node which a value will be inserted after it |
| val | float32 inserted |
Create and insert a new list node containing a double-precision float.
- Parameters:
-
| gn | a generic node which a value will be inserted after it |
| val | float64 inserted |
Create and insert a new list node containing an integer.
- Parameters:
-
| gn | a generic node which a value will be inserted after it |
| val | int32 inserted |
SPHINXBASE_EXPORT gnode_t* glist_insert_ptr |
( |
gnode_t * |
gn, |
|
|
void * |
ptr | |
|
) |
| | |
Create and insert a new list node, with the given user-defined data, after the given generic node gn. gn cannot be NULL. Return ptr to the newly created gnode_t.
- Parameters:
-
| gn | a generic node which ptr will be inserted after it |
| ptr | pointer inserted |
Create and insert a new list node containing an unsigned integer.
- Parameters:
-
| gn | a generic node which a value will be inserted after it |
| val | uint32 inserted |
Reverse the order of the given glist. (glist_add() adds to the head; one might ultimately want the reverse of that.) NOTE: The list is reversed "in place"; i.e., no new memory is allocated.
- Returns:
- : The head of the new list.
- Parameters:
-
Return the last node in the given list.
Free the given node, gn, of a glist, pred being its predecessor in the list. Return ptr to the next node in the list after the freed node.