Ce module fournit les fonctions permettant de gérer des tableaux à taille dynamique.
|
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...
|
|
|
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 |
|
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.
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
-
vector | pointeur 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
-
vector | pointeur 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
-
vector | pointeur sur le vecteur |
key | clé de l'élément à trouver |
- Renvoie
- index, -1 si pas trouvé, -2 si erreur dans ce cas errno contient le code d'erreur
Initialise un tableau dynamique.
- Paramètres
-
vector | pointeur sur le vecteur |
growth | nombre d'éléments à ajouter lors d'une réallocation à la hausse |
fnew | fonction qui retourne un élément alloué avec une valeur par défaut, NULL si les données sont statiques |
fdestroy | fonction 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
Initialise les fonctions de recherche.
- Paramètres
-
vector | pointeur sur le vecteur |
fkey | fonction de clé |
fmatch | fonction 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
-
vector | pointeur sur le vecteur |
index | index 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
-
vector | pointeur sur le vecteur |
index | index 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
-
vector | pointeur sur le vecteur |
new_size | nouvelle 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
-
vector | pointeur 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
-
vector | pointeur sur le vecteur |
key | clé 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
-
index | index 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
-
vector | pointeur sur le vecteur |