trafi

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

commit b68fefc0121d0e9da9b75826d8d9f4d8812bb1b1
parent dccbbcfc59d6dab34e7fca011a3782ce08a10d31
Auteur: Loïc Daignault-Pichette <loic@asteride.xyz>
Date:   Fri, 10 Apr 2026 14:46:47 -0400

Rendre ecrire_16() et ecrire_32() plus générales

Diffstat:
Mtfd.c | 38+++++++++++++++++++++++---------------
1 fichier modifié, 23 insertions(+), 15 suppressions(-)

diff --git a/tfd.c b/tfd.c @@ -13,11 +13,11 @@ /* Renvoie le maximum de deux nombres. */ #define MAX(n1, n2) ((n1) > (n2) ? (n1) : (n2)) -/* Écrire la valeur val dans le tampon te, en préservant le boutisme de +/* Écrire la valeur val dans le tampon tp, en préservant le boutisme de * l’hôte. ecrire_16() écrit deux octets et ecrire_32() en écrit 4. * Renvoie un pointer vers l’octet suivant le dernier écrit. */ -static uint8_t *ecrire_16(uint8_t *tp, uint16_t val); -static uint8_t *ecrire_32(uint8_t *tp, uint32_t val); +static void *ecrire_16(void *tp, uint16_t val); +static void *ecrire_32(void *tp, uint32_t val); /* Créer le segmenteur de symboles. * Renvoie un pointeur vers un tampex, ou NULL en cas d’erreur. */ @@ -127,28 +127,36 @@ tfd_ecrire(FILE *f, struct tfm *tfm) return 0; } -static uint8_t * -ecrire_16(uint8_t *tp, uint16_t val) +static void * +ecrire_16(void *tp, uint16_t val) { + uint8_t *inter; + assert(tp); - *tp++ = ((unsigned char *)(&val))[0]; - *tp++ = ((unsigned char *)(&val))[1]; + inter = tp; + + *inter++ = ((unsigned char *)(&val))[0]; + *inter++ = ((unsigned char *)(&val))[1]; - return tp; + return inter; } -static uint8_t * -ecrire_32(uint8_t *tp, uint32_t val) +static void * +ecrire_32(void *tp, uint32_t val) { + uint8_t *inter; + assert(tp); - *tp++ = ((unsigned char *)(&val))[0]; - *tp++ = ((unsigned char *)(&val))[1]; - *tp++ = ((unsigned char *)(&val))[2]; - *tp++ = ((unsigned char *)(&val))[3]; + inter = tp; + + *inter++ = ((unsigned char *)(&val))[0]; + *inter++ = ((unsigned char *)(&val))[1]; + *inter++ = ((unsigned char *)(&val))[2]; + *inter++ = ((unsigned char *)(&val))[3]; - return tp; + return inter; } static void *