Main Page | Modules | Data Structures | File List | Data Fields | Globals | Examples

Linked list library


Detailed Description

The linked list library provides a set of functions for manipulating linked lists.

A linked list is made up of elements where the first element must be a pointer. This pointer is used by the linked list library to form lists of the elements.

Lists are declared with the LIST() macro. The declaration specifies the name of the list that later is used with all list functions.

Example:

struct packet { struct packet *next; char data[1500]; int len; }; LIST(packets); static void init_function(void) { list_init(packets); } static void another_function(struct packet *p) { list_add(packets, p); p = list_head(packets); p = list_tail(packets); }

Lists can be manipulated by inserting or removing elements from either sides of the list (list_push(), list_add(), list_pop(), list_chop()). A specified element can also be removed from inside a list with list_remove(). The head and tail of a list can be extracted using list_head() and list_tail(), respecitively.


Files

file  list.h
 Linked list manipulation routines.

file  list.c
 Linked list library implementation.


Defines

#define LIST(name)
 Declare a linked list.


Typedefs

typedef void ** list_t
 The linked list type.


Functions

void list_init (list_t list)
 Initialize a list.

void * list_head (list_t list)
 Get a pointer to the first element of a list.

void * list_tail (list_t list)
 Get the tail of a list.

void * list_pop (list_t list)
 Remove the first object on a list.

void list_push (list_t list, void *item)
 Add an item to the start of the list.

void * list_chop (list_t list)
 Remove the last object on the list.

void list_add (list_t list, void *item)
 Add an item at the end of a list.

void list_remove (list_t list, void *item)
 Remove a specific element from a list.

void list_copy (list_t dest, list_t src)
 Duplicate a list.

int list_length (list_t list)
 Get the length of a list.


Define Documentation

#define LIST name   ) 
 

Value:

static void *LIST_CONCAT(name,_list) = NULL; \
         static list_t name = (list_t)&LIST_CONCAT(name,_list)
Declare a linked list.

This macro declares a linked list with the specified type. The type must be a structure (struct) with its first element being a pointer. This pointer is used by the linked list library to form the linked lists.

Example

struct packet * { struct packet *next; char data[1500]; }; LIST(packets);

Parameters:
name The name of the list.


Function Documentation

void list_add list_t  list,
void *  item
 

Add an item at the end of a list.

This function adds an item to the end of the list.

Parameters:
list The list.
item A pointer to the item to be added.
See also:
list_push()

void * list_chop list_t  list  ) 
 

Remove the last object on the list.

This function removes the last object on the list and returns it.

Parameters:
list The list
Returns:
The removed object

void list_copy list_t  dest,
list_t  src
 

Duplicate a list.

This function duplicates a list by copying the list reference, but not the elements.

Note:
This function does not copy the elements of the list, but merely duplicates the pointer to the first element of the list.
Parameters:
dest The destination list.
src The source list.

void * list_head list_t  list  ) 
 

Get a pointer to the first element of a list.

This function returns a pointer to the first element of the list. The element will not be removed from the list.

Parameters:
list The list.
Returns:
A pointer to the first element on the list.
See also:
list_tail()

void list_init list_t  list  ) 
 

Initialize a list.

This function initalizes a list. The list will be empty after this function has been called.

Parameters:
list The list to be initialized.

int list_length list_t  list  ) 
 

Get the length of a list.

This function counts the number of elements on a specified list.

Parameters:
list The list.
Returns:
The length of the list.

void * list_pop list_t  list  ) 
 

Remove the first object on a list.

This function removes the first object on the list and returns it.

Parameters:
list The list.
Returns:
The new head of the list.

void list_remove list_t  list,
void *  item
 

Remove a specific element from a list.

This function removes a specified element from the list.

Parameters:
list The list.
item The item that is to be removed from the list.

void * list_tail list_t  list  ) 
 

Get the tail of a list.

This function returns a pointer to the elements following the first element of a list. No elements are removed by this function.

Parameters:
list The list
Returns:
A pointer to the element after the first element on the list.
See also:
list_head()


Generated on Wed Jul 6 01:19:06 2005 for Contiki/ESB by doxygen 1.3.6