embedded-software
reusable software modules for embedded systems
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
list.c File Reference
#include <string.h>
#include "list.h"
#include "hal_general.h"
Include dependency graph for list.c:

Macros

#define NULL_LINK   0
 
#define UNUSED_LINK   (list_link_t*)1
 
#define PENDING_LINK   (list_link_t*)2
 
#define LINK_IN_USE   (list_link_t*)3
 
#define IsLinkValid(link)   (link > LINK_IN_USE)
 
#define ERROR_NO_ROOM_IN_LIST   1
 
#define ERROR_ITEM_NOT_FOUND   2
 
#define ERROR_INVALID_LINK   3
 
#define UpdateWorkingLinks(list, link)
 
#define List_Error(error)
 

Functions

void List_Init (list_t *list, uint16_t item_size, void *item_array, uint16_t item_array_length, list_link_t *link_array)
 
void List_SetSortFunction (list_t *list, list_sort_fn_t sort_fn)
 
void List_SetIdentifyFunction (list_t *list, list_identify_fn_t identify_fn)
 
void * List_AddAndLink (list_t *list, void *item)
 
void * List_Add (list_t *list, void *item)
 List_Add is used to add an item to a list. Uses List_AddIndirect to find where the item should go in the list. More...
 
void * List_AddIndirect (list_t *list)
 List_AddIndirect is used to obtain a valid position for which an item can be saved to. More...
 
void List_Link (list_t *list)
 
void List_ResortFirst (list_t *list)
 
void List_ResortLast (list_t *list)
 
void List_LinkItem (list_t *list, void *item)
 
void * List_GetFirst (list_t *list)
 
void * List_GetLast (list_t *list)
 Get the Last Item in the List. More...
 
void * List_GetNext (list_t *list, void *item)
 Get the Next Item in the List. More...
 
void * List_GetItem (list_t *list, void *identifier)
 
void List_RemoveFirst (list_t *list)
 
void List_RemoveLast (list_t *list)
 
void List_Remove (list_t *list, void *item)
 
void List_RemoveAll (list_t *list)
 
void List_UnlinkItem (list_t *list, void *item)
 
void List_UnlinkFirst (list_t *list)
 
void List_UnlinkLast (list_t *list)
 
void List_RunFunction (list_t *list, void(*function)(void *))
 

Macro Definition Documentation

#define ERROR_INVALID_LINK   3
#define ERROR_ITEM_NOT_FOUND   2
#define ERROR_NO_ROOM_IN_LIST   1
#define IsLinkValid (   link)    (link > LINK_IN_USE)
#define LINK_IN_USE   (list_link_t*)3
#define List_Error (   error)
#define NULL_LINK   0
#define PENDING_LINK   (list_link_t*)2
#define UNUSED_LINK   (list_link_t*)1
#define UpdateWorkingLinks (   list,
  link 
)
Value:
list->working[1] = list->working[0]; \
list->working[0] = link;

Function Documentation

void List_SetIdentifyFunction ( list_t list,
list_identify_fn_t  identify_fn 
)
void List_SetSortFunction ( list_t list,
list_sort_fn_t  sort_fn 
)