Subversion Repositories nw_plus

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
23 h266 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
/*-------------------------------------------------------------*/