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:
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é à