SysIo  1.9.0
Embedded Library and tools
Vecteur

Detailed Description

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 Documentation

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

#include <vector.h>

Fonction de comparaison de 2 clés.

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

Definition at line 42 of file vector.h.

Function Documentation

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.

Parameters
vectorpointeur sur le vecteur
dataélément à affecter à la case
Returns
0, -1 si erreur dans ce cas errno contient le code d'erreur
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.

Parameters
vectorpointeur sur le vecteur
Returns
0, -1 si erreur dans ce cas errno contient le code d'erreur
int iVectorFindFirstIndex ( const xVector vector,
const void *  key 
)

#include <vector.h>

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

Parameters
vectorpointeur sur le vecteur
keyclé de l'élément à trouver
Returns
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 
)

#include <vector.h>

Initialise un tableau dynamique.

Parameters
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
Returns
0, -1 si erreur dans ce cas errno contient le code d'erreur
int iVectorInitSearch ( xVector vector,
pvVectorElmtKey  fkey,
iVectorElmtMatch  fmatch 
)

#include <vector.h>

Initialise les fonctions de recherche.

Parameters
vectorpointeur sur le vecteur
fkeyfonction de clé
fmatchfonction de comparaison
Returns
0, -1 si erreur dans ce cas errno contient le code d'erreur
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.

Parameters
vectorpointeur sur le vecteur
indexindex de l'élément concerné
Returns
0, -1 si erreur dans ce cas errno contient le code d'erreur
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é.

Warning
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.
Parameters
vectorpointeur sur le vecteur
indexindex de l'élément concerné
dataà affecter à l'élément
Returns
0, -1 si erreur dans ce cas errno contient le code d'erreur
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.

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

#include <vector.h>

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

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

#include <vector.h>

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

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

#include <vector.h>

Pointeur sur l'élément.

Parameters
indexindex de l'élément concerné
Returns
le pointeur sur l'élément ou NULL si erreur dans ce cas errno contient le code d'erreur
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.

Parameters
vectorpointeur sur le vecteur