![]() |
SysIo
1.9.0
Embedded Library and tools
|
Ce module fournit les fonctions permettant de gérer des tableaux à taille dynamique.
Classes | |
class | vVector |
Vecteur dynamique. More... | |
struct | xVector |
Functions | |
int | iVectorAppend (xVector *vector, void *data) |
Ajout en fin de tableau. More... | |
int | iVectorClear (xVector *vector) |
Vide un tableau dynamique. More... | |
int | iVectorFindFirstIndex (const xVector *vector, const void *key) |
Chercher l'index du premier élément correspondant à une clé More... | |
int | iVectorInit (xVector *vector, int growth, vVectorElmtNew fnew, vVectorElmtDestroy fdestroy) |
Initialise un tableau dynamique. More... | |
int | iVectorInitSearch (xVector *vector, pvVectorElmtKey fkey, iVectorElmtMatch fmatch) |
Initialise les fonctions de recherche. More... | |
int | iVectorRemove (xVector *vector, int index) |
Retire un élément. More... | |
int | iVectorReplace (xVector *vector, int index, void *data) |
Modifie l'élément pointé par une case. More... | |
int | iVectorResize (xVector *vector, int new_size) |
Modifie la taille. More... | |
int | iVectorSize (const xVector *vector) |
Taille du tableau en nombre d'éléments. More... | |
void * | pvVectorFindFirst (const xVector *vector, const void *key) |
Chercher le premier élément correspondant à une clé More... | |
void * | pvVectorGet (const xVector *vector, int index) |
Pointeur sur l'élément. More... | |
void | vVectorDestroy (xVector *vector) |
Destruction d'un tableau dynamique. More... | |
Typedefs | |
typedef int(* | iVectorElmtMatch) (const void *key1, const void *key2) |
Fonction de comparaison de 2 clés. More... | |
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 xVector | xVector |
typedef int(* iVectorElmtMatch) (const void *key1, const void *key2) |
int iVectorAppend | ( | xVector * | vector, |
void * | data | ||
) |
#include <vector.h>
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.
vector | pointeur sur le vecteur |
data | élément à affecter à la case |
int iVectorClear | ( | xVector * | vector | ) |
#include <vector.h>
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.
vector | pointeur sur le vecteur |
int iVectorFindFirstIndex | ( | const xVector * | vector, |
const void * | key | ||
) |
#include <vector.h>
Chercher l'index du premier élément correspondant à une clé
vector | pointeur sur le vecteur |
key | clé de l'élément à trouver |
int iVectorInit | ( | xVector * | vector, |
int | growth, | ||
vVectorElmtNew | fnew, | ||
vVectorElmtDestroy | fdestroy | ||
) |
#include <vector.h>
Initialise un tableau dynamique.
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 |
int iVectorInitSearch | ( | xVector * | vector, |
pvVectorElmtKey | fkey, | ||
iVectorElmtMatch | fmatch | ||
) |
#include <vector.h>
Initialise les fonctions de recherche.
vector | pointeur sur le vecteur |
fkey | fonction de clé |
fmatch | fonction de comparaison |
int iVectorRemove | ( | xVector * | vector, |
int | index | ||
) |
#include <vector.h>
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.
vector | pointeur sur le vecteur |
index | index de l'élément concerné |
int iVectorReplace | ( | xVector * | vector, |
int | index, | ||
void * | data | ||
) |
#include <vector.h>
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é.
vector | pointeur sur le vecteur |
index | index de l'élément concerné |
data | à affecter à l'élément |
int iVectorResize | ( | xVector * | vector, |
int | new_size | ||
) |
#include <vector.h>
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.
vector | pointeur sur le vecteur |
new_size | nouvelle taille |
int iVectorSize | ( | const xVector * | vector | ) |
#include <vector.h>
Taille du tableau en nombre d'éléments.
vector | pointeur sur le vecteur |
void* pvVectorFindFirst | ( | const xVector * | vector, |
const void * | key | ||
) |
#include <vector.h>
Chercher le premier élément correspondant à une clé
vector | pointeur sur le vecteur |
key | clé de l'élément à trouver |
void* pvVectorGet | ( | const xVector * | vector, |
int | index | ||
) |
#include <vector.h>
Pointeur sur l'élément.
index | index de l'élément concerné |
void vVectorDestroy | ( | xVector * | vector | ) |
#include <vector.h>
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.
vector | pointeur sur le vecteur |