Les fonctions utilitaires
Les fonctions utilitaires suivantes sont implémentées en plus des fonctions de base orientées flux. Pour simplifier l'interface, certaines options par défaut sont supposées (niveau de compression et utilisation de la mémoire, fonctions d'allocation de mémoire standard). Le code source de ces fonctions utilitaires peut être facilement modifié si vous avez besoin d'options spéciales.
ZEXTERN int ZEXPORT compress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen); |
Compresse le tampon source dans le tampon de destination. sourceLen est la longueur en octets du tampon source. À l'entrée, destLen est la taille totale du tampon de destination, devant être au moins égale à la valeur renvoyée par compressBound(sourceLen). À la sortie, destLen est la taille réelle des données compressées. compress() est équivalent à compress2() avec un paramètre de niveau de Z_DEFAULT_COMPRESSION.
compress renvoie Z_OK en cas de succès, Z_MEM_ERROR s'il n'y avait pas assez de mémoire, Z_BUF_ERROR s'il n'y avait pas assez de place dans le tampon de sortie.
ZEXTERN int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen, int level); |
Compresse le tampon source dans le tampon de destination. Le paramètre level a la même signification que dans deflateInit. sourceLen est la longueur en octets du tampon source. À l'entrée, destLen est la taille totale du tampon de destination, qui doit être au moins égale à la valeur renvoyée par compressBound(sourceLen). À la sortie, destLen est la taille réelle des données compressées.
compress2 renvoie Z_OK en cas de succès, Z_MEM_ERROR s'il n'y avait pas assez de mémoire, Z_BUF_ERROR s'il n'y avait pas assez de place dans le tampon de sortie, Z_STREAM_ERROR si le paramètre level n'est pas valide.
ZEXTERN uLong ZEXPORT compressBound(uLong sourceLen); |
compressBound() renvoie une limite supérieure sur la taille compressée après compress() ou compress2() sur sourceLen octets. Elle serait utilisée avant un appel à compress() ou compress2() pour allouer le tampon de destination.
ZEXTERN int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen); |
Décompresse le tampon source dans le tampon de destination. sourceLen est la longueur en octets du tampon source. À l'entrée, destLen est la taille totale du tampon de destination, devant être suffisamment grande pour contenir l'intégralité des données non compressées. (La taille des données non compressées doit avoir été enregistrée précédemment par le compresseur et transmise au décompresseur par un mécanisme extérieur à la portée de cette bibliothèque de compression.) À la sortie, destLen est la taille réelle des données non compressées.
uncompress renvoie Z_OK en cas de succès, Z_MEM_ERROR s'il n'y avait pas assez de mémoire, Z_BUF_ERROR s'il n'y avait pas assez de place dans le tampon de sortie, ou Z_DATA_ERROR si les données d'entrée étaient corrompues ou incomplètes. Dans le cas où il n'y a pas assez de place, uncompress() remplira le tampon de sortie avec les données non compressées jusqu'à ce point.
ZEXTERN int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source, uLong *sourceLen); |
Identique à uncompress, sauf que sourceLen est un pointeur, où la longueur de la source est *sourceLen. Au retour, *sourceLen est le nombre d'octets de la source consommés.