AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
Tableaux dynamiques

Description détaillée

Ce module fournit les fonctions permettant de gérer des tableaux à taille dynamique.

Graphe de collaboration de Tableaux dynamiques:

Structures de données

class  vVector
 Vecteur dynamique. Plus de détails...
 

Fonctions

int iVectorAppend (xVector *vector, void *data)
 Ajout en fin de tableau. Plus de détails...
 
int iVectorClear (xVector *vector)
 Vide un tableau dynamique. Plus de détails...
 
int iVectorFindFirstIndex (const xVector *vector, const void *key)
 Chercher l'index du premier élément correspondant à une clé Plus de détails...
 
int iVectorInit (xVector *vector, int growth, vVectorElmtNew fnew, vVectorElmtDestroy fdestroy)
 Initialise un tableau dynamique. Plus de détails...
 
int iVectorInitSearch (xVector *vector, pvVectorElmtKey fkey, iVectorElmtMatch fmatch)
 Initialise les fonctions de recherche. Plus de détails...
 
int iVectorRemove (xVector *vector, int index)
 Retire un élément. Plus de détails...
 
int iVectorReplace (xVector *vector, int index, void *data)
 Modifie l'élément pointé par une case. Plus de détails...
 
int iVectorResize (xVector *vector, int new_size)
 Modifie la taille. Plus de détails...
 
int iVectorSize (const xVector *vector)
 Taille du tableau en nombre d'éléments. Plus de détails...
 
void * pvVectorFindFirst (const xVector *vector, const void *key)
 Chercher le premier élément correspondant à une clé Plus de détails...
 
void * pvVectorGet (const xVector *vector, int index)
 Pointeur sur l'élément. Plus de détails...
 
void vVectorDestroy (xVector *vector)
 Destruction d'un tableau dynamique. Plus de détails...
 

Définitions de type

typedef int(* iVectorElmtMatch) (const void *key1, const void *key2)
 Fonction de comparaison de 2 clés. Plus de détails...
 
typedef const void *(* pvVectorElmtKey) (const void *element)
 Retourne la clé d'un élément.
 
typedef void(* vVectorElmtDestroy) (void *data)
 Fonction qui libère la mémoire allouée à une donnée de le vecteur.
 
typedef void *(* vVectorElmtNew) (void)
 Fonction qui retourne un élément alloué avec une valeur par défaut.
 
typedef struct vVector xVector
 

Documentation des définitions de type

typedef int(* iVectorElmtMatch) (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 55 du fichier vector.h.

Documentation des fonctions

int iVectorAppend ( xVector vector,
void *  data 
)

Ajout en fin de tableau.

Si la taille du tableau est importante, cette fonction peut-être lente car chaque élément pourrait être recopié dans une nouvelle zone mémoire. On préférera dans ce cas utiliser une liste.

Paramètres
vectorpointeur sur le vecteur
dataélément à affecter à la case
Renvoie
0, -1 si erreur dans ce cas errno contient le code d'erreur
int iVectorClear ( xVector vector)

Vide un tableau dynamique.

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
vectorpointeur sur le vecteur
Renvoie
0, -1 si erreur dans ce cas errno contient le code d'erreur
int iVectorFindFirstIndex ( const xVector vector,
const void *  key 
)

Chercher l'index du premier élément correspondant à une clé

Paramètres
vectorpointeur sur le vecteur
keyclé de l'élément à trouver
Renvoie
index, -1 si pas trouvé, -2 si erreur dans ce cas errno contient le code d'erreur
int iVectorInit ( xVector vector,
int  growth,
vVectorElmtNew  fnew,
vVectorElmtDestroy  fdestroy 
)

Initialise un tableau dynamique.

Paramètres
vectorpointeur sur le vecteur
growthnombre d'éléments à ajouter lors d'une réallocation à la hausse
fnewfonction qui retourne un élément alloué avec une valeur par défaut, NULL si les données sont statiques
fdestroyfonction chargée de libébrer la mémoire allouée aux données, NULL si les données sont statiques
Renvoie
0, -1 si erreur dans ce cas errno contient le code d'erreur
int iVectorInitSearch ( xVector vector,
pvVectorElmtKey  fkey,
iVectorElmtMatch  fmatch 
)

Initialise les fonctions de recherche.

Paramètres
vectorpointeur sur le vecteur
fkeyfonction de clé
fmatchfonction de comparaison
Renvoie
0, -1 si erreur dans ce cas errno contient le code d'erreur
int iVectorRemove ( xVector vector,
int  index 
)

Retire un élément.

La mémoire allouée à l'élément est libérée si une fonction destroy() a été fournie à l'initialisation. La taille est réduite de 1.

Paramètres
vectorpointeur sur le vecteur
indexindex de l'élément concerné
Renvoie
0, -1 si erreur dans ce cas errno contient le code d'erreur
int iVectorReplace ( xVector vector,
int  index,
void *  data 
)

Modifie l'élément pointé par une case.

Il est de la responsabilité de l'utilisateur de libérer éventuellement la mémoire allouée à l'élément remplacé.

Avertissement
pour modifier le contenu de l'élément pointé par une case, il ne faut pas utiliser cette fonction mais pvVectorGet() afin de récupérer le pointeur sur l'élément, puis modifier l'élément à partir de ce pointeur.
Paramètres
vectorpointeur sur le vecteur
indexindex de l'élément concerné
dataà affecter à l'élément
Renvoie
0, -1 si erreur dans ce cas errno contient le code d'erreur
int iVectorResize ( xVector vector,
int  new_size 
)

Modifie la taille.

Si la nouvelle taille est inférieure à l'ancienne les éléments en excés sont retirés avec destroy() si définie. Les nouvelles cases sont initialisées avec fnew si fournie ou à NULL.

Paramètres
vectorpointeur sur le vecteur
new_sizenouvelle taille
Renvoie
0, -1 si erreur dans ce cas errno contient le code d'erreur
int iVectorSize ( const xVector vector)

Taille du tableau en nombre d'éléments.

Paramètres
vectorpointeur sur le vecteur
Renvoie
la valeur, -1 si erreur dans ce cas errno contient le code d'erreur
void* pvVectorFindFirst ( const xVector vector,
const void *  key 
)

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

Paramètres
vectorpointeur sur le vecteur
keyclé de l'élément à trouver
Renvoie
premier élément trouvé, NULL si pas trouvé ou erreur
void* pvVectorGet ( const xVector vector,
int  index 
)

Pointeur sur l'élément.

Paramètres
indexindex de l'élément concerné
Renvoie
le pointeur sur l'élément ou NULL si erreur dans ce cas errno contient le code d'erreur
void vVectorDestroy ( xVector vector)

Destruction d'un tableau dynamique.

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, puis le vecteur est effacé ou libéré si son champs malloc = 1.

Paramètres
vectorpointeur sur le vecteur