tampex.h (2191B)
1 #ifndef TAMPEX_H 2 #define TAMPEX_H 3 4 #include <stdbool.h> 5 #include <stddef.h> 6 #include <sys/types.h> 7 8 /* Un tampex est un tampon extensible. Cette bibliothèque est une interface 9 * devant malloc(3), realloc(3) et free(3). Elle dispense de retenir 10 * explicitement la longueur d’un tampon, la taille des objets qui y sont 11 * placés ainsi que leur nombre. */ 12 13 /* Initialiser un tampon pouvant contenir au moins lngr objets de tll octets 14 * chacun. 15 * Le contenu du tampon est initialisé à zéro. 16 * Renvoie le tampon, ou NULL en cas d’erreur. */ 17 void *tampex_init(size_t lngr, size_t tll); 18 19 /* Réinitialiser le tampon te. 20 * Son contenu est aussi réinitialisé à zéro. */ 21 void tampex_reinit(void *te); 22 23 /* Libérer l’espace utilisé par le tampon te. */ 24 void tampex_libr(void *te); 25 26 /* Assurer que le tampon te soit assez grand pour contenir un élément à l’index 27 * i et l’agrandir si nécessaire. 28 * Renvoie i, ou -1 en cas d’erreur. 29 * En cas d’erreur, *te est laissé intact. 30 * Le champ nelem du tampex est augmenté à i + 1, si cette nouvelle valeur le 31 * fait vraiment augmenter. Il est possible, si le tampex doit être agrandi, 32 * que le tampon doive être déplacé. te est alors modifié en conséquence. Il 33 * s’en suit que toute référence au contenu d’un tampex doit être relative à la 34 * position en mémoire du tampon. */ 35 ssize_t tampex_minim(void **te, size_t i); 36 37 /* Augmenter nelem d’un et agrandir le tampon si besoin. 38 * Renvoie le nombre d’éléments contenus dans le tampon, ou -1 en cas 39 * d’erreur. */ 40 ssize_t tampex_empl(void **te); 41 42 /* Diminuer nelem d’un. 43 * Renvoie l’indice de l’éléments dépilé. 44 * Prend pour acquis que le tampex contient au moins un élément. */ 45 size_t tampex_dpl(void *te); 46 47 /* Obtenir le nombre d’éléments contenus dans le tampon te. 48 * Ce nombre correspond à la valeur de i la plus élevée donnée à 49 * tampex_minim(). */ 50 size_t tampex_nelem(void *te); 51 52 /* Obtenir l’espace utilisé par les éléments du tampon te. */ 53 size_t tampex_esp(void *te); 54 55 /* Renvoie 1 si l’indice i est dans la partie utilisée du tampon, 0 56 * autrement. */ 57 bool tampex_dedans(void *te, size_t i); 58 59 #endif