/* * inflate.h - inflate decompression routine * * Version 1.1.2 */ /* * Copyright (C) 1995, Edward B. Hamrick * * Permission to use, copy, modify, and distribute this software and * its documentation for any purpose and without fee is hereby granted, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear in * supporting documentation, and that the name of the copyright holders * not be used in advertising or publicity pertaining to distribution of * the software without specific, written prior permission. The copyright * holders makes no representations about the suitability of this software * for any purpose. It is provided "as is" without express or implied warranty. * * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, * IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT * OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ /* * Changes from 1.1 to 1.1.2: * Relicensed under the MIT license, with consent of the copyright holders. * Claudio Matsuoka (Jan 11 2011) */ /* * 1) All file i/o is done externally to these routines * 2) Routines are symmetrical so inflate can feed into deflate * 3) Routines can be easily integrated into wide range of applications * 4) Routines are very portable, and use only ANSI C * 5) No #defines in inflate.h to conflict with external #defines * 6) No external routines need be called by these routines * 7) Buffers are owned by the calling routine * 8) No static non-constant variables are allowed */ /* * Note that for each call to InflatePutBuffer, there will be * 0 or more calls to (*putbuffer_ptr). All except the last * call to (*putbuffer_ptr) will be with 32768 bytes, although * this behaviour may change in the future. Before InflatePutBuffer * returns, it will have output as much uncompressed data as * is possible. */ #ifndef __INFLATE_H #define __INFLATE_H #ifdef __cplusplus extern "C" { #endif /* Routine to initialize inflate decompression */ void *InflateInitialize( /* returns InflateState */ void *AppState, /* for passing to putbuffer */ int (*putbuffer_ptr)( /* returns 0 on success */ void *AppState, /* opaque ptr from Initialize */ unsigned char *buffer, /* buffer to put */ long length /* length of buffer */ ), void *(*malloc_ptr)(long length), /* utility routine */ void (*free_ptr)(void *buffer) /* utility routine */ ); /* Call-in routine to put a buffer into inflate decompression */ int InflatePutBuffer( /* returns 0 on success */ void *InflateState, /* opaque ptr from Initialize */ unsigned char *buffer, /* buffer to put */ long length /* length of buffer */ ); /* Routine to terminate inflate decompression */ int InflateTerminate( /* returns 0 on success */ void *InflateState /* opaque ptr from Initialize */ ); #ifdef __cplusplus } #endif #endif