camel-list-utils

camel-list-utils

Synopsis

struct              CamelDList;
struct              CamelDListNode;
#define             CAMEL_DLIST_INITIALISER             (l)
void                camel_dlist_init                    (CamelDList *v);
CamelDListNode *    camel_dlist_addhead                 (CamelDList *l,
                                                         CamelDListNode *n);
CamelDListNode *    camel_dlist_addtail                 (CamelDList *l,
                                                         CamelDListNode *n);
CamelDListNode *    camel_dlist_remove                  (CamelDListNode *n);
CamelDListNode *    camel_dlist_remhead                 (CamelDList *l);
CamelDListNode *    camel_dlist_remtail                 (CamelDList *l);
gint                camel_dlist_empty                   (CamelDList *l);
gint                camel_dlist_length                  (CamelDList *l);
struct              CamelSListNode;
struct              CamelSList;
#define             CAMEL_SLIST_INITIALISER             (l)
void                camel_slist_init                    (CamelSList *l);
CamelSListNode *    camel_slist_addhead                 (CamelSList *l,
                                                         CamelSListNode *n);
CamelSListNode *    camel_slist_addtail                 (CamelSList *l,
                                                         CamelSListNode *n);
CamelSListNode *    camel_slist_remove                  (CamelSList *l,
                                                         CamelSListNode *n);
CamelSListNode *    camel_slist_remhead                 (CamelSList *l);
CamelSListNode *    camel_slist_remtail                 (CamelSList *l);
gint                camel_slist_empty                   (CamelSList *l);
gint                camel_slist_length                  (CamelSList *l);

Description

Details

struct CamelDList

struct CamelDList {
	struct _CamelDListNode *head;
	struct _CamelDListNode *tail;
	struct _CamelDListNode *tailpred;
};


struct CamelDListNode

struct CamelDListNode {
	struct _CamelDListNode *next;
	struct _CamelDListNode *prev;
};


CAMEL_DLIST_INITIALISER()

#define CAMEL_DLIST_INITIALISER(l) { (CamelDListNode *)&l.tail, NULL, (CamelDListNode *)&l.head }


camel_dlist_init ()

void                camel_dlist_init                    (CamelDList *v);

Initialise a double-linked list header. All list headers must be initialised before use.


camel_dlist_addhead ()

CamelDListNode *    camel_dlist_addhead                 (CamelDList *l,
                                                         CamelDListNode *n);

Add the list node n to the head (start) of the list l.

l :

An initialised list header.

n :

A node, the next and prev pointers will be overwritten.

Returns :

n.

camel_dlist_addtail ()

CamelDListNode *    camel_dlist_addtail                 (CamelDList *l,
                                                         CamelDListNode *n);

Add the list onde n to the tail (end) of the list l.

l :

An intialised list header.

n :

A node, the next and prev pointers will be overwritten.

Returns :

n.

camel_dlist_remove ()

CamelDListNode *    camel_dlist_remove                  (CamelDListNode *n);

Remove n from the list it's in. n must belong to a list.

n :

A node which is part of a list.

Returns :

n.

camel_dlist_remhead ()

CamelDListNode *    camel_dlist_remhead                 (CamelDList *l);

Remove the head node (start) of the list.

xReturn value: The previously first-node in the list, or NULLif l is an empty list.

l :

An initialised list, maybe containing items.

camel_dlist_remtail ()

CamelDListNode *    camel_dlist_remtail                 (CamelDList *l);

Remove the last node in the list.

l :

An initialised list, maybe containing items.

Returns :

The previously last-node in the list, or NULL if l is an empty list.

camel_dlist_empty ()

gint                camel_dlist_empty                   (CamelDList *l);

Returns TRUE if l is an empty list.

l :

An initialised list header.

Returns :

TRUE if l is an empty list, FALSE otherwise.

camel_dlist_length ()

gint                camel_dlist_length                  (CamelDList *l);

Returns the number of nodes in the list l.

l :

An initialised list header.

Returns :

The number of nodes.

struct CamelSListNode

struct CamelSListNode {
	struct _CamelSListNode *next;
};


struct CamelSList

struct CamelSList {
	struct _CamelSListNode *head;
};


CAMEL_SLIST_INITIALISER()

#define CAMEL_SLIST_INITIALISER(l) { 0 }


camel_slist_init ()

void                camel_slist_init                    (CamelSList *l);


camel_slist_addhead ()

CamelSListNode *    camel_slist_addhead                 (CamelSList *l,
                                                         CamelSListNode *n);


camel_slist_addtail ()

CamelSListNode *    camel_slist_addtail                 (CamelSList *l,
                                                         CamelSListNode *n);


camel_slist_remove ()

CamelSListNode *    camel_slist_remove                  (CamelSList *l,
                                                         CamelSListNode *n);


camel_slist_remhead ()

CamelSListNode *    camel_slist_remhead                 (CamelSList *l);


camel_slist_remtail ()

CamelSListNode *    camel_slist_remtail                 (CamelSList *l);


camel_slist_empty ()

gint                camel_slist_empty                   (CamelSList *l);


camel_slist_length ()

gint                camel_slist_length                  (CamelSList *l);