bzlib.h
上传用户:zswatin
上传日期:2007-01-06
资源大小:440k
文件大小:7k
- /*-------------------------------------------------------------*/
- /*--- Public header file for the library. ---*/
- /*--- bzlib.h ---*/
- /*-------------------------------------------------------------*/
- /*--
- This file is a part of bzip2 and/or libbzip2, a program and
- library for lossless, block-sorting data compression.
- Copyright (C) 1996-1998 Julian R Seward. All rights reserved.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. The origin of this software must not be misrepresented; you must
- not claim that you wrote the original software. If you use this
- software in a product, an acknowledgment in the product
- documentation would be appreciated but is not required.
- 3. Altered source versions must be plainly marked as such, and must
- not be misrepresented as being the original software.
- 4. The name of the author may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
- OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- Julian Seward, Guildford, Surrey, UK.
- jseward@acm.org
- bzip2/libbzip2 version 0.9.0c of 18 October 1998
- This program is based on (at least) the work of:
- Mike Burrows
- David Wheeler
- Peter Fenwick
- Alistair Moffat
- Radford Neal
- Ian H. Witten
- Robert Sedgewick
- Jon L. Bentley
- For more information on these sources, see the manual.
- --*/
- #ifndef _BZLIB_H
- #define _BZLIB_H
- #define BZ_RUN 0
- #define BZ_FLUSH 1
- #define BZ_FINISH 2
- #define BZ_OK 0
- #define BZ_RUN_OK 1
- #define BZ_FLUSH_OK 2
- #define BZ_FINISH_OK 3
- #define BZ_STREAM_END 4
- #define BZ_SEQUENCE_ERROR (-1)
- #define BZ_PARAM_ERROR (-2)
- #define BZ_MEM_ERROR (-3)
- #define BZ_DATA_ERROR (-4)
- #define BZ_DATA_ERROR_MAGIC (-5)
- #define BZ_IO_ERROR (-6)
- #define BZ_UNEXPECTED_EOF (-7)
- #define BZ_OUTBUFF_FULL (-8)
- typedef
- struct {
- char *next_in;
- unsigned int avail_in;
- unsigned int total_in;
- char *next_out;
- unsigned int avail_out;
- unsigned int total_out;
- void *state;
- void *(*bzalloc)(void *,int,int);
- void (*bzfree)(void *,void *);
- void *opaque;
- }
- bz_stream;
- #ifndef BZ_IMPORT
- #define BZ_EXPORT
- #endif
- #ifdef _WIN32
- # include <stdio.h>
- # include <windows.h>
- # ifdef small
- /* windows.h define small to char */
- # undef small
- # endif
- # ifdef BZ_EXPORT
- # define BZ_API(func) WINAPI func
- # define BZ_EXTERN extern
- # else
- /* import windows dll dynamically */
- # define BZ_API(func) (WINAPI * func)
- # define BZ_EXTERN
- # endif
- #else
- # define BZ_API(func) func
- # define BZ_EXTERN extern
- #endif
- /*-- Core (low-level) library functions --*/
- BZ_EXTERN int BZ_API(bzCompressInit) (
- bz_stream* strm,
- int blockSize100k,
- int verbosity,
- int workFactor
- );
- BZ_EXTERN int BZ_API(bzCompress) (
- bz_stream* strm,
- int action
- );
- BZ_EXTERN int BZ_API(bzCompressEnd) (
- bz_stream* strm
- );
- BZ_EXTERN int BZ_API(bzDecompressInit) (
- bz_stream *strm,
- int verbosity,
- int small
- );
- BZ_EXTERN int BZ_API(bzDecompress) (
- bz_stream* strm
- );
- BZ_EXTERN int BZ_API(bzDecompressEnd) (
- bz_stream *strm
- );
- /*-- High(er) level library functions --*/
- #ifndef BZ_NO_STDIO
- #define BZ_MAX_UNUSED 5000
- typedef void BZFILE;
- BZ_EXTERN BZFILE* BZ_API(bzReadOpen) (
- int* bzerror,
- FILE* f,
- int verbosity,
- int small,
- void* unused,
- int nUnused
- );
- BZ_EXTERN void BZ_API(bzReadClose) (
- int* bzerror,
- BZFILE* b
- );
- BZ_EXTERN void BZ_API(bzReadGetUnused) (
- int* bzerror,
- BZFILE* b,
- void** unused,
- int* nUnused
- );
- BZ_EXTERN int BZ_API(bzRead) (
- int* bzerror,
- BZFILE* b,
- void* buf,
- int len
- );
- BZ_EXTERN BZFILE* BZ_API(bzWriteOpen) (
- int* bzerror,
- FILE* f,
- int blockSize100k,
- int verbosity,
- int workFactor
- );
- BZ_EXTERN void BZ_API(bzWrite) (
- int* bzerror,
- BZFILE* b,
- void* buf,
- int len
- );
- BZ_EXTERN void BZ_API(bzWriteClose) (
- int* bzerror,
- BZFILE* b,
- int abandon,
- unsigned int* nbytes_in,
- unsigned int* nbytes_out
- );
- #endif
- /*-- Utility functions --*/
- BZ_EXTERN int BZ_API(bzBuffToBuffCompress) (
- char* dest,
- unsigned int* destLen,
- char* source,
- unsigned int sourceLen,
- int blockSize100k,
- int verbosity,
- int workFactor
- );
- BZ_EXTERN int BZ_API(bzBuffToBuffDecompress) (
- char* dest,
- unsigned int* destLen,
- char* source,
- unsigned int sourceLen,
- int small,
- int verbosity
- );
- /*--
- Code contributed by Yoshioka Tsuneo
- (QWF00133@niftyserve.or.jp/tsuneo-y@is.aist-nara.ac.jp),
- to support better zlib compatibility.
- This code is not _officially_ part of libbzip2 (yet);
- I haven't tested it, documented it, or considered the
- threading-safeness of it.
- If this code breaks, please contact both Yoshioka and me.
- --*/
- BZ_EXTERN const char * BZ_API(bzlibVersion) (
- void
- );
- #ifndef BZ_NO_STDIO
- BZ_EXTERN BZFILE * BZ_API(bzopen) (
- const char *path,
- const char *mode
- );
- BZ_EXTERN BZFILE * BZ_API(bzdopen) (
- int fd,
- const char *mode
- );
-
- BZ_EXTERN int BZ_API(bzread) (
- BZFILE* b,
- void* buf,
- int len
- );
- BZ_EXTERN int BZ_API(bzwrite) (
- BZFILE* b,
- void* buf,
- int len
- );
- BZ_EXTERN int BZ_API(bzflush) (
- BZFILE* b
- );
- BZ_EXTERN void BZ_API(bzclose) (
- BZFILE* b
- );
- BZ_EXTERN const char * BZ_API(bzerror) (
- BZFILE *b,
- int *errnum
- );
- #endif
- #endif
- /*-------------------------------------------------------------*/
- /*--- end bzlib.h ---*/
- /*-------------------------------------------------------------*/