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_tglist_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_tglist_insert_ptr (gnode_t *gn, void *ptr)
SPHINXBASE_EXPORT gnode_tglist_insert_int32 (gnode_t *gn, int32 val)
SPHINXBASE_EXPORT gnode_tglist_insert_uint32 (gnode_t *gn, uint32 val)
SPHINXBASE_EXPORT gnode_tglist_insert_float32 (gnode_t *gn, float32 val)
SPHINXBASE_EXPORT gnode_tglist_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_tgnode_free (gnode_t *gn, gnode_t *pred)
SPHINXBASE_EXPORT gnode_tglist_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 (  )     ((float32)(g)->data.fl)
#define gnode_float64 (  )     ((g)->data.fl)
#define gnode_int32 (  )     ((g)->data.i)
#define gnode_next (  )     ((g)->next)
#define gnode_ptr (  )     ((g)->data.ptr)

Head of a list of gnodes Access macros, for convenience

#define gnode_uint32 (  )     ((g)->data.ui)

Typedef Documentation

typedef gnode_t* glist_t
typedef struct gnode_s gnode_t

A node in a generic list


Function Documentation

SPHINXBASE_EXPORT glist_t glist_add_float32 ( glist_t  g,
float32  val 
)

Create and prepend a new list node containing a single-precision float.

Parameters:
g a link list
val a float32 vlaue
SPHINXBASE_EXPORT glist_t glist_add_float64 ( glist_t  g,
float64  val 
)

Create and prepend a new list node containing a double-precision float.

Parameters:
g a link list
val a float64 vlaue
SPHINXBASE_EXPORT glist_t glist_add_int32 ( glist_t  g,
int32  val 
)

Create and prepend a new list node containing an integer.

Parameters:
g a link list
val an integer value
SPHINXBASE_EXPORT glist_t glist_add_ptr ( glist_t  g,
void *  ptr 
)

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
SPHINXBASE_EXPORT glist_t glist_add_uint32 ( glist_t  g,
uint32  val 
)

Create and prepend a new list node containing an unsigned integer.

Parameters:
g a link list
val an unsigned integer value
SPHINXBASE_EXPORT int32 glist_count ( glist_t  g  ) 

Count the number of element in a given link list

Returns:
the number of elements in the given glist_t
Parameters:
g input link list
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.

SPHINXBASE_EXPORT gnode_t* glist_insert_float32 ( gnode_t gn,
float32  val 
)

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
SPHINXBASE_EXPORT gnode_t* glist_insert_float64 ( gnode_t gn,
float64  val 
)

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
SPHINXBASE_EXPORT gnode_t* glist_insert_int32 ( gnode_t gn,
int32  val 
)

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
SPHINXBASE_EXPORT gnode_t* glist_insert_uint32 ( gnode_t gn,
uint32  val 
)

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
SPHINXBASE_EXPORT glist_t glist_reverse ( glist_t  g  ) 

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:
g input link list
SPHINXBASE_EXPORT gnode_t* glist_tail ( glist_t  g  ) 

Return the last node in the given list.

SPHINXBASE_EXPORT gnode_t* gnode_free ( gnode_t gn,
gnode_t pred 
)

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.

 All Classes Files Functions Variables Typedefs Enumerations Enumerator Defines
Generated on Sat May 8 14:21:41 2010 for HLab by  doxygen 1.6.3