AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
Listes doublement chaînée

Description détaillée

Ce module fournit les fonctions permettant de gérer des listes doublement chaînées.

Graphe de collaboration de Listes doublement chaînée:

Structures de données

struct  xDList
 Liste doublement chaînée. Plus de détails...
 
struct  xDListElmt
 Elément d'une liste doublement chaînée. Plus de détails...
 

Fonctions

bool bDListElmtIsHead (const xDListElmt *element)
 Indique si l'élément est en tête de liste. Plus de détails...
 
bool bDListElmtIsTail (const xDListElmt *element)
 Indique si l'élément est en queue de liste. Plus de détails...
 
int iDListAppend (xDList *list, const void *data)
 Insertion en fin de liste. Plus de détails...
 
int iDListDestroy (xDList *list)
 Destruction d'une liste doublement chaînée. Plus de détails...
 
int iDListInit (xDList *list, vDListElmtDestroy fdestroy)
 Initialise une liste doublement chaînée. Plus de détails...
 
int iDListInitSearch (xDList *list, pvDListElmtKey fkey, iDListElmtMatch fmatch)
 Initialise les fonctions de recherche. Plus de détails...
 
int iDListInsertAfter (xDList *list, xDListElmt *element, const void *data)
 Insertion avant l'élément. Plus de détails...
 
int iDListInsertBefore (xDList *list, xDListElmt *element, const void *data)
 Insertion après l'élément. Plus de détails...
 
int iDListPrepend (xDList *list, const void *data)
 Insertion en début de liste. Plus de détails...
 
int iDListRemove (xDList *list, xDListElmt *element, void **data)
 Retire un élément. Plus de détails...
 
int iDListSize (const xDList *list)
 Nombre d'élément. Plus de détails...
 
void * pvDListElmtData (const xDListElmt *element)
 Pointeur sur la donnée de l'élément. Plus de détails...
 
xDListElmtpxDListElmtNext (const xDListElmt *element)
 Pointeur sur l'élément suivant dans la liste. Plus de détails...
 
xDListElmtpxDListElmtPrev (const xDListElmt *element)
 Pointeur sur l'élément précédent dans la liste. Plus de détails...
 
xDListElmtpxDListFindFirst (xDList *list, const void *key)
 Chercher le premier élément correspondant à une clé Plus de détails...
 
xDListElmtpxDListHead (const xDList *list)
 Retourne l'élément en tête de liste. Plus de détails...
 
xDListElmtpxDListTail (const xDList *list)
 Retourne l'élément en queue de liste. Plus de détails...
 

Macros

#define pxDListElmtDataPtr(element, t)   ((t *)pvDListElmtData(element))
 Retourne le pointeur sur la donnée convertit en pointeur sur type t.
 

Définitions de type

typedef int(* iDListElmtMatch) (const void *key1, const void *key2)
 Fonction de comparaison de 2 clés. Plus de détails...
 
typedef const void *(* pvDListElmtKey) (const xDListElmt *element)
 Retourne la clé d'un élément.
 
typedef void(* vDListElmtDestroy) (void *data)
 Fonction qui libère la mémoire allouée à une donnée de la liste.
 
typedef struct xDList xDList
 Liste doublement chaînée.
 

Documentation des définitions de type

typedef int(* iDListElmtMatch) (const void *key1, const void *key2)

Fonction de comparaison de 2 clés.

Renvoie
0 si key1 == key2, positif si key1 > key2, négatif si key1 < key2,

Définition à la ligne 50 du fichier dlist.h.

Documentation des fonctions

bool bDListElmtIsHead ( const xDListElmt element)

Indique si l'élément est en tête de liste.

Paramètres
elementpointeur sur l'élément concerné
Renvoie
la valeur
bool bDListElmtIsTail ( const xDListElmt element)

Indique si l'élément est en queue de liste.

Paramètres
elementpointeur sur l'élément concerné
Renvoie
la valeur
int iDListAppend ( xDList list,
const void *  data 
)

Insertion en fin de liste.

Paramètres
listpointeur sur la liste
dataà affecter au nouvel élément
Renvoie
0, -1 si erreur
int iDListDestroy ( xDList list)

Destruction d'une liste doublement chaînée.

La mémoire allouée aux données de chaque élément est libérée si une fonction destroy() a été fournie à l'initialisation.

Paramètres
listpointeur sur la liste
int iDListInit ( xDList list,
vDListElmtDestroy  fdestroy 
)

Initialise une liste doublement chaînée.

Paramètres
listpointeur sur la liste
fdestroyfonction chargée de libébrer la mémoire allouée aux données, NULL si les données sont statiques
int iDListInitSearch ( xDList list,
pvDListElmtKey  fkey,
iDListElmtMatch  fmatch 
)

Initialise les fonctions de recherche.

Paramètres
listpointeur sur la liste
fkeyfonction de clé
fmatchfonction de comparaison
int iDListInsertAfter ( xDList list,
xDListElmt element,
const void *  data 
)

Insertion avant l'élément.

Paramètres
listpointeur sur la liste
elementprécédent le nouveau
dataà affecter au nouvel élément
Renvoie
0, -1 si erreur
int iDListInsertBefore ( xDList list,
xDListElmt element,
const void *  data 
)

Insertion après l'élément.

Paramètres
listpointeur sur la liste
elementsuivant le nouveau
dataà affecter au nouvel élément
Renvoie
0, -1 si erreur
int iDListPrepend ( xDList list,
const void *  data 
)

Insertion en début de liste.

Paramètres
listpointeur sur la liste
dataà affecter au nouvel élément
Renvoie
0, -1 si erreur
int iDListRemove ( xDList list,
xDListElmt element,
void **  data 
)

Retire un élément.

Paramètres
listpointeur sur la liste
elementà retier
datapointeur sur la donnée de l'élément retiré (mémoire non libérée)
Renvoie
0, -1 si erreur
int iDListSize ( const xDList list)

Nombre d'élément.

Paramètres
listpointeur sur la liste
Renvoie
la valeur
void* pvDListElmtData ( const xDListElmt element)

Pointeur sur la donnée de l'élément.

Paramètres
elementpointeur sur l'élément concerné
Renvoie
la valeur
xDListElmt* pxDListElmtNext ( const xDListElmt element)

Pointeur sur l'élément suivant dans la liste.

Paramètres
elementpointeur sur l'élément concerné
Renvoie
la valeur
xDListElmt* pxDListElmtPrev ( const xDListElmt element)

Pointeur sur l'élément précédent dans la liste.

Paramètres
elementpointeur sur l'élément concerné
Renvoie
la valeur
xDListElmt* pxDListFindFirst ( xDList list,
const void *  key 
)

Chercher le premier élément correspondant à une clé

Paramètres
listpointeur sur la liste
keyclé de l'élément à trouver
Renvoie
premier élément trouvé, NULL si pas trouvé
xDListElmt* pxDListHead ( const xDList list)

Retourne l'élément en tête de liste.

Paramètres
listpointeur sur la liste
Renvoie
la valeur
xDListElmt* pxDListTail ( const xDList list)

Retourne l'élément en queue de liste.

Paramètres
listpointeur sur la liste
Renvoie
la valeur