AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
dlist.h
1 
21 #ifndef _AVRIO_DLIST_H_
22 #define _AVRIO_DLIST_H_
23 #include <stdlib.h>
24 #include <avrio/defs.h>
25 
26 __BEGIN_C_DECLS
27 /* ========================================================================== */
28 struct xDListElmt;
29 typedef struct xDListElmt xDListElmt;
30 
40 /* types ==================================================================== */
44 typedef void (*vDListElmtDestroy) (void *data);
45 
50 typedef int (*iDListElmtMatch) (const void *key1, const void *key2);
51 
55 typedef const void * (*pvDListElmtKey) (const xDListElmt * element);
56 
57 /* structures =============================================================== */
58 
62 struct xDListElmt {
63 
64  void *data;
65  struct xDListElmt *prev;
66  struct xDListElmt *next;
67 
68 } ;
69 
73 typedef struct xDList {
74 
75  int size;
76  xDListElmt *head;
77  xDListElmt *tail;
78  vDListElmtDestroy destroy;
79  pvDListElmtKey key;
80  iDListElmtMatch match;
81 } xDList;
82 
83 /* macros =================================================================== */
87 #define pxDListElmtDataPtr(element, t) ((t *)pvDListElmtData(element))
88 
89 /* internal public functions ================================================ */
96 int iDListInit (xDList *list, vDListElmtDestroy fdestroy);
97 
104 int iDListInitSearch (xDList *list, pvDListElmtKey fkey, iDListElmtMatch fmatch);
105 
113 int iDListDestroy (xDList *list);
114 
122 int iDListInsertAfter (xDList *list, xDListElmt *element, const void *data);
123 
131 int iDListInsertBefore (xDList *list, xDListElmt *element, const void *data);
132 
140 int iDListRemove (xDList *list, xDListElmt *element, void **data);
141 
148 xDListElmt * pxDListFindFirst (xDList *list, const void * key);
149 
155 int iDListSize (const xDList *list);
156 
163 int iDListPrepend (xDList *list,const void *data);
164 
171 int iDListAppend (xDList *list,const void *data);
172 
178 xDListElmt * pxDListHead (const xDList *list);
179 
185 xDListElmt * pxDListTail (const xDList *list);
186 
192 bool bDListElmtIsHead (const xDListElmt *element);
193 
199 bool bDListElmtIsTail (const xDListElmt *element);
200 
206 void * pvDListElmtData (const xDListElmt *element);
207 
213 xDListElmt * pxDListElmtNext (const xDListElmt *element);
214 
220 xDListElmt * pxDListElmtPrev (const xDListElmt *element);
221 
227 /* ========================================================================== */
228 __END_C_DECLS
229 #endif /* _AVRIO_DLIST_H_ */
xDListElmt * pxDListTail(const xDList *list)
Retourne l&#39;élément en queue de liste.
Liste doublement chaînée.
Definition: dlist.h:73
int iDListPrepend(xDList *list, const void *data)
Insertion en début de liste.
struct xDList xDList
Liste doublement chaînée.
xDListElmt * pxDListHead(const xDList *list)
Retourne l&#39;élément en tête de liste.
Elément d&#39;une liste doublement chaînée.
Definition: dlist.h:62
int iDListInitSearch(xDList *list, pvDListElmtKey fkey, iDListElmtMatch fmatch)
Initialise les fonctions de recherche.
int iDListRemove(xDList *list, xDListElmt *element, void **data)
Retire un élément.
xDListElmt * pxDListElmtNext(const xDListElmt *element)
Pointeur sur l&#39;élément suivant dans la liste.
int iDListSize(const xDList *list)
Nombre d&#39;élément.
bool bDListElmtIsHead(const xDListElmt *element)
Indique si l&#39;élément est en tête de liste.
int iDListInsertAfter(xDList *list, xDListElmt *element, const void *data)
Insertion avant l&#39;élément.
int iDListInit(xDList *list, vDListElmtDestroy fdestroy)
Initialise une liste doublement chaînée.
const void *(* pvDListElmtKey)(const xDListElmt *element)
Retourne la clé d&#39;un élément.
Definition: dlist.h:55
int iDListInsertBefore(xDList *list, xDListElmt *element, const void *data)
Insertion après l&#39;élément.
xDListElmt * pxDListElmtPrev(const xDListElmt *element)
Pointeur sur l&#39;élément précédent dans la liste.
int iDListDestroy(xDList *list)
Destruction d&#39;une liste doublement chaînée.
void(* vDListElmtDestroy)(void *data)
Fonction qui libère la mémoire allouée à une donnée de la liste.
Definition: dlist.h:44
xDListElmt * pxDListFindFirst(xDList *list, const void *key)
Chercher le premier élément correspondant à une clé
int iDListAppend(xDList *list, const void *data)
Insertion en fin de liste.
int(* iDListElmtMatch)(const void *key1, const void *key2)
Fonction de comparaison de 2 clés.
Definition: dlist.h:50
void * pvDListElmtData(const xDListElmt *element)
Pointeur sur la donnée de l&#39;élément.
bool bDListElmtIsTail(const xDListElmt *element)
Indique si l&#39;élément est en queue de liste.