Subversion Repositories nw_plus

Rev

Blame | Last modification | View Log | RSS feed

  1.  
  2. /*-------------------------------------------------------------*/
  3. /*--- Public header file for the library.                   ---*/
  4. /*---                                               bzlib.h ---*/
  5. /*-------------------------------------------------------------*/
  6.  
  7. /* ------------------------------------------------------------------
  8.    This file is part of bzip2/libbzip2, a program and library for
  9.    lossless, block-sorting data compression.
  10.  
  11.    bzip2/libbzip2 version 1.0.4 of 20 December 2006
  12.    Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org>
  13.  
  14.    Please read the WARNING, DISCLAIMER and PATENTS sections in the
  15.    README file.
  16.  
  17.    This program is released under the terms of the license contained
  18.    in the file LICENSE.
  19.    ------------------------------------------------------------------ */
  20.  
  21.  
  22. #ifndef _BZLIB_H
  23. #define _BZLIB_H
  24.  
  25. #ifdef __cplusplus
  26. extern "C" {
  27. #endif
  28.  
  29. #define BZ_RUN               0
  30. #define BZ_FLUSH             1
  31. #define BZ_FINISH            2
  32.  
  33. #define BZ_OK                0
  34. #define BZ_RUN_OK            1
  35. #define BZ_FLUSH_OK          2
  36. #define BZ_FINISH_OK         3
  37. #define BZ_STREAM_END        4
  38. #define BZ_SEQUENCE_ERROR    (-1)
  39. #define BZ_PARAM_ERROR       (-2)
  40. #define BZ_MEM_ERROR         (-3)
  41. #define BZ_DATA_ERROR        (-4)
  42. #define BZ_DATA_ERROR_MAGIC  (-5)
  43. #define BZ_IO_ERROR          (-6)
  44. #define BZ_UNEXPECTED_EOF    (-7)
  45. #define BZ_OUTBUFF_FULL      (-8)
  46. #define BZ_CONFIG_ERROR      (-9)
  47.  
  48. typedef
  49.    struct {
  50.       char *next_in;
  51.       unsigned int avail_in;
  52.       unsigned int total_in_lo32;
  53.       unsigned int total_in_hi32;
  54.  
  55.       char *next_out;
  56.       unsigned int avail_out;
  57.       unsigned int total_out_lo32;
  58.       unsigned int total_out_hi32;
  59.  
  60.       void *state;
  61.  
  62.       void *(*bzalloc)(void *,int,int);
  63.       void (*bzfree)(void *,void *);
  64.       void *opaque;
  65.    }
  66.    bz_stream;
  67.  
  68.  
  69. #ifndef BZ_IMPORT
  70. #define BZ_EXPORT
  71. #endif
  72.  
  73. #ifndef BZ_NO_STDIO
  74. /* Need a definitition for FILE */
  75. #include <stdio.h>
  76. #endif
  77.  
  78. #ifdef _WIN32
  79. #   include <windows.h>
  80. #   ifdef small
  81.       /* windows.h define small to char */
  82. #      undef small
  83. #   endif
  84. #   ifdef BZ_EXPORT
  85. #   define BZ_API(func) WINAPI func
  86. #   define BZ_EXTERN extern
  87. #   else
  88.    /* import windows dll dynamically */
  89. #   define BZ_API(func) (WINAPI * func)
  90. #   define BZ_EXTERN
  91. #   endif
  92. #else
  93. #   define BZ_API(func) func
  94. #   define BZ_EXTERN extern
  95. #endif
  96.  
  97.  
  98. /*-- Core (low-level) library functions --*/
  99.  
  100. BZ_EXTERN int BZ_API(BZ2_bzCompressInit) (
  101.       bz_stream* strm,
  102.       int        blockSize100k,
  103.       int        verbosity,
  104.       int        workFactor
  105.    );
  106.  
  107. BZ_EXTERN int BZ_API(BZ2_bzCompress) (
  108.       bz_stream* strm,
  109.       int action
  110.    );
  111.  
  112. BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) (
  113.       bz_stream* strm
  114.    );
  115.  
  116. BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) (
  117.       bz_stream *strm,
  118.       int       verbosity,
  119.       int       small
  120.    );
  121.  
  122. BZ_EXTERN int BZ_API(BZ2_bzDecompress) (
  123.       bz_stream* strm
  124.    );
  125.  
  126. BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) (
  127.       bz_stream *strm
  128.    );
  129.  
  130.  
  131.  
  132. /*-- High(er) level library functions --*/
  133.  
  134. #ifndef BZ_NO_STDIO
  135. #define BZ_MAX_UNUSED 5000
  136.  
  137. typedef void BZFILE;
  138.  
  139. BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) (
  140.       int*  bzerror,  
  141.       FILE* f,
  142.       int   verbosity,
  143.       int   small,
  144.       void* unused,    
  145.       int   nUnused
  146.    );
  147.  
  148. BZ_EXTERN void BZ_API(BZ2_bzReadClose) (
  149.       int*    bzerror,
  150.       BZFILE* b
  151.    );
  152.  
  153. BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) (
  154.       int*    bzerror,
  155.       BZFILE* b,
  156.       void**  unused,  
  157.       int*    nUnused
  158.    );
  159.  
  160. BZ_EXTERN int BZ_API(BZ2_bzRead) (
  161.       int*    bzerror,
  162.       BZFILE* b,
  163.       void*   buf,
  164.       int     len
  165.    );
  166.  
  167. BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) (
  168.       int*  bzerror,      
  169.       FILE* f,
  170.       int   blockSize100k,
  171.       int   verbosity,
  172.       int   workFactor
  173.    );
  174.  
  175. BZ_EXTERN void BZ_API(BZ2_bzWrite) (
  176.       int*    bzerror,
  177.       BZFILE* b,
  178.       void*   buf,
  179.       int     len
  180.    );
  181.  
  182. BZ_EXTERN void BZ_API(BZ2_bzWriteClose) (
  183.       int*          bzerror,
  184.       BZFILE*       b,
  185.       int           abandon,
  186.       unsigned int* nbytes_in,
  187.       unsigned int* nbytes_out
  188.    );
  189.  
  190. BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) (
  191.       int*          bzerror,
  192.       BZFILE*       b,
  193.       int           abandon,
  194.       unsigned int* nbytes_in_lo32,
  195.       unsigned int* nbytes_in_hi32,
  196.       unsigned int* nbytes_out_lo32,
  197.       unsigned int* nbytes_out_hi32
  198.    );
  199. #endif
  200.  
  201.  
  202. /*-- Utility functions --*/
  203.  
  204. BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) (
  205.       char*         dest,
  206.       unsigned int* destLen,
  207.       char*         source,
  208.       unsigned int  sourceLen,
  209.       int           blockSize100k,
  210.       int           verbosity,
  211.       int           workFactor
  212.    );
  213.  
  214. BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) (
  215.       char*         dest,
  216.       unsigned int* destLen,
  217.       char*         source,
  218.       unsigned int  sourceLen,
  219.       int           small,
  220.       int           verbosity
  221.    );
  222.  
  223.  
  224. /*--
  225.    Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
  226.    to support better zlib compatibility.
  227.    This code is not _officially_ part of libbzip2 (yet);
  228.    I haven't tested it, documented it, or considered the
  229.    threading-safeness of it.
  230.    If this code breaks, please contact both Yoshioka and me.
  231. --*/
  232.  
  233. BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) (
  234.       void
  235.    );
  236.  
  237. #ifndef BZ_NO_STDIO
  238. BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) (
  239.       const char *path,
  240.       const char *mode
  241.    );
  242.  
  243. BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) (
  244.       int        fd,
  245.       const char *mode
  246.    );
  247.          
  248. BZ_EXTERN int BZ_API(BZ2_bzread) (
  249.       BZFILE* b,
  250.       void* buf,
  251.       int len
  252.    );
  253.  
  254. BZ_EXTERN int BZ_API(BZ2_bzwrite) (
  255.       BZFILE* b,
  256.       void*   buf,
  257.       int     len
  258.    );
  259.  
  260. BZ_EXTERN int BZ_API(BZ2_bzflush) (
  261.       BZFILE* b
  262.    );
  263.  
  264. BZ_EXTERN void BZ_API(BZ2_bzclose) (
  265.       BZFILE* b
  266.    );
  267.  
  268. BZ_EXTERN const char * BZ_API(BZ2_bzerror) (
  269.       BZFILE *b,
  270.       int    *errnum
  271.    );
  272. #endif
  273.  
  274. #ifdef __cplusplus
  275. }
  276. #endif
  277.  
  278. #endif
  279.  
  280. /*-------------------------------------------------------------*/
  281. /*--- end                                           bzlib.h ---*/
  282. /*-------------------------------------------------------------*/
  283.