trafi

Transducteurs finis
git clone git://git.asteride.xyz/trafi.git
Journaux | Fichiers | Références

commit c7410c4f3c4253c0f1363a8bcdfb0a068a3403c3
parent cb0d23c75e3188b976c701f19b00de348e71a98d
Auteur: Loïc Daignault-Pichette <loic@asteride.xyz>
Date:   Sun, 15 Feb 2026 15:38:57 -0500

Rendre struct tampinf opaque

Diffstat:
Mtampinf.c | 15+++++++++++++++
Mtampinf.h | 16++--------------
2 fichiers modifiés, 17 insertions(+), 14 suppressions(-)

diff --git a/tampinf.c b/tampinf.c @@ -16,6 +16,21 @@ /* Le nombre d’éléments est inférieur ou égal à la longueur. */ \ assert((ti)->nelem <= (ti)->lngr); +/* La structure d’un tampinf comporte quatre champs. Le premier contient est un + * pointeur vers le contenu du tampon, placé dans un espace alloué par malloc(). + * Le deuxième champ contient la taille d’un élément du tampon, exprimée en + * octets. Le troisième champ donne la longueur actuelle du tampon, en multiples + * de la taille. Le caracètre extensible de la structure fait qu’elle est + * susceptible d’augmenter. Enfin, le quatrième champ indique le nombre + * d’éléments placés dans le tampon. */ + +struct tampinf { + void *ctn; /* Contenu. */ + size_t tll; /* Taille d’un élément. */ + size_t lngr; /* Longueur du tampon. */ + size_t nelem; /* Nombre d’éléments dans le tampon. */ +}; + /* Faire qu’un tampon soit au moins aussi grand que lngr. * Prend pour acquis que la longueur du tampon est inférieure à lngr. * Renvoie la longueur du tatmpon, ou -1 en cas d’erreur. */ diff --git a/tampinf.h b/tampinf.h @@ -5,25 +5,13 @@ #include <stddef.h> #include <sys/types.h> -/* Un tampinf est un tampon qui donne l’illusion d’être infini. Sa structure - * comporte quatre champs. Le premier contient est un pointeur vers le contenu - * du tampon, placé dans un espace alloué par malloc(). Le deuxième champ - * contient la taille d’un élément du tampon, exprimée en octets. Le troisième - * champ donne la longueur actuelle du tampon, en multiples de la taille. Le - * caracètre extensible de la structure fait qu’elle est susceptible - * d’augmenter. Enfin, le quatrième champ indique le nombre d’éléments placés - * dans le tampon. +/* Un tampinf est un tampon qui donne l’illusion d’être infini. * * L’emplacement du contenu du tampon n’étant pas statique, utiliser le résultat * de tampinf_ctn() après une fonction susceptible d’agrandir le tampon est * dangereux. */ -struct tampinf { - void *ctn; /* Contenu. */ - size_t tll; /* Taille d’un élément. */ - size_t lngr; /* Longueur du tampon. */ - size_t nelem; /* Nombre d’éléments dans le tampon. */ -}; +struct tampinf; /* Initialiser un tampon. * La longueur est interprétée en multiples de tll. Le tampon est initialisé à