Fandom

Документация к библиотекам

Zlib

38pages on
this wiki
Add New Page
Comments0 Share
Zlib

zlib logo

zlib — свободная кроссплатформенная библиотека для сжатия данных, созданная Жан-лу Гайи (Jean-loup Gailly) и Марком Адлером (Mark Adler). Является обобщением алгоритма сжатия данных DEFLATE, используемого в компрессоре данных gzip. Первая публичная версия 0.9, выпущена 1 мая 1995 года для использования вместе с библиотекой libpng. Распространяется под лицензией zlib.

ВведениеEdit

The zlib compression library provides in-memory compression and decompression functions, включая проверки целостности разархивированных данных. На данный момент библиотека поддерживает один метод сжатия (deflation) но другие алгоритмы будут добавлены позже и будут иметь такой же потоковый интерфейс.

Сжатие может быть произведено за один шаг, если буфферы имеют достаточный размер (например, входной файл отображён в память), или или последовательностью вызовов функций сжатия. In the latter case, the application must provide more input and/or consume the output (providing more output space) before each call.

The compressed data format used by default by the in-memory functions is the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped around a deflate stream, which is itself documented in RFC 1951.

The library also supports reading and writing files in gzip (.gz) format with an interface similar to that of stdio using the functions that start with "gz". The gzip format is different from the zlib format. gzip is a gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.

Библиотека (опционально) может читать/писать gzip-потоки в/из памят(ь/и).

The zlib format was designed to be compact and fast for use in memory and on communications channels. The gzip format was designed for single- file compression on file systems, has a larger header than zlib to maintain directory information, and uses a different, slower check method than zlib.

The library does not install any signal handler. The decoder checks the consistency of the compressed data, so the библиотека не должна падать в случае неправильного ввода.

ОсновыEdit

Структуры для потоковой обработки

Константы и макросы

APIEdit

БазовыеEdit

  • const char * zlibVersion (void);
  • int deflate(z_streamp strm, int flush);
  • int inflate(z_streamp strm, int flush);

С расширенным функционаломEdit

typedef unsigned (*in_func) (void FAR *, unsigned char FAR * FAR *);
typedef int (*out_func) (void FAR *, unsigned char FAR *, unsigned);

int inflateBack (z_streamp strm, in_func in, void FAR *in_desc, out_func out, void FAR *out_desc);

СлужебныеEdit

  • int compress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);
  • int compress2(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen, int level);
  • uLong compressBound(uLong sourceLen);
  • int uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);

Для доступа к файлам gzipEdit

typedef voidp gzFile; /* opaque gzip file descriptor*/
  • gzFile gzopen(const char *path, const char *mode);
  • gzFile gzdopen(int fd, const char *mode);
  • int gzbuffer(gzFile file, unsigned size);
  • int gzsetparams(gzFile file, int level, int strategy);
  • int gzread(gzFile file, voidp buf, unsigned len);
  • int gzwrite(gzFile file, voidpc buf, unsigned len);
  • int gzprintf(gzFile file, const char *format, ...);
  • int gzputs(gzFile file, const char *s);
  • char * gzgets (gzFile file, char *buf, int len);
  • int gzputc(gzFile file, int c);
  • int gzgetc(gzFile file);
  • int gzungetc(int c, gzFile file);
  • int gzflush(gzFile file, int flush);
  • z_off_t gzseek(gzFile file, z_off_t offset, int whence);
  • int gzrewind(gzFile file);
  • z_off_t gztell(gzFile file);
  • z_off_t gzoffset(gzFile file);
  • int gzeof(gzFile file);
  • int gzdirect(gzFile file);
  • int gzclose(gzFile file);
  • int gzclose_r(gzFile file);
  • int gzclose_w(gzFile file);
  • const char * gzerror (gzFile file, int *errnum);
  • void gzclearerr(gzFile file);

Подсчёт и сверка контрольных суммEdit

  • uLong adler32(uLong adler, const Bytef *buf, uInt len);
  • uLong adler32_combine(uLong adler1, uLong adler2, z_off_t len2);
  • uLong crc32(uLong crc, const Bytef *buf, uInt len);
  • uLong crc32_combine(uLong crc1, uLong crc2, z_off_t len2);

НедокументированныеEdit

ZEXTERN const char   * ZEXPORT zError           OF((int));
ZEXTERN int            ZEXPORT inflateSyncPoint OF((z_streamp z));
ZEXTERN const uLongf * ZEXPORT get_crc_table    OF((void));
ZEXTERN int            ZEXPORT inflateUndermine OF((z_streamp, int));

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.