zutil.h 4.0 KB
Newer Older
M
Mark Adler 已提交
1 2 3 4 5 6 7 8 9 10
/* zutil.h -- internal interface and configuration of the compression library
 * Copyright (C) 1995 Jean-loup Gailly.
 * For conditions of distribution and use, see copyright notice in zlib.h
 */

/* WARNING: this file should *not* be used by applications. It is
   part of the implementation of the compression library and is
   subject to change. Applications should only use zlib.h.
 */

M
Mark Adler 已提交
11
/* $Id: zutil.h,v 1.9 1995/05/03 17:27:12 jloup Exp $ */
M
Mark Adler 已提交
12 13 14 15 16 17

#ifndef _Z_UTIL_H
#define _Z_UTIL_H

#include "zlib.h"

M
Mark Adler 已提交
18 19 20 21 22 23
#ifdef __GNUC__
#  define INLINE inline
#else
#  define INLINE
#endif

M
Mark Adler 已提交
24 25
#ifdef MSDOS
#   include <stddef.h>
M
Mark Adler 已提交
26
#   include <errno.h>
M
Mark Adler 已提交
27 28 29
#else
    extern int errno;
#endif
M
Mark Adler 已提交
30
#ifdef STDC
M
Mark Adler 已提交
31 32
#  include <string.h>
#endif
M
Mark Adler 已提交
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47

#ifndef local
#  define local static
#endif
/* compile with -Dlocal if your debugger can't find static symbols */

typedef unsigned char  uch;
typedef unsigned short ush;
typedef unsigned long  ulg;

extern char *z_errmsg[]; /* indexed by 1-zlib_error */

#define ERR_RETURN(strm,err) return (strm->msg=z_errmsg[1-err], err)
/* To be used only when the state is known to be valid */

M
Mark Adler 已提交
48
        /* common constants */
M
Mark Adler 已提交
49 50 51

#define DEFLATED   8

M
Mark Adler 已提交
52
#define DEF_WBITS 15
M
Mark Adler 已提交
53 54 55 56 57 58 59 60
/* default windowBits for decompression. MAX_WBITS is for compression only */

#if MAX_MEM_LEVEL >= 8
#  define DEF_MEM_LEVEL 8
#else
#  define DEF_MEM_LEVEL  MAX_MEM_LEVEL
#endif
/* default memLevel */
M
Mark Adler 已提交
61 62 63 64 65 66 67 68 69 70

#define STORED_BLOCK 0
#define STATIC_TREES 1
#define DYN_TREES    2
/* The three kinds of block type */

#define MIN_MATCH  3
#define MAX_MATCH  258
/* The minimum and maximum match lengths */

M
Mark Adler 已提交
71
        /* target dependencies */
M
Mark Adler 已提交
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115

#ifdef MSDOS
#  define OS_CODE  0x00
#  ifdef __TURBOC__
#    include <alloc.h>
#  else /* MSC */
#    include <malloc.h>
#  endif
#endif

#ifdef OS2
#  define OS_CODE  0x06
#endif

#ifdef WIN32 /* Windows NT */
#  define OS_CODE  0x0b
#endif

#if defined(VAXC) || defined(VMS)
#  define OS_CODE  0x02
#  define FOPEN(name, mode) \
     fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")
#endif

#ifdef AMIGA
#  define OS_CODE  0x01
#endif

#if defined(ATARI) || defined(atarist)
#  define OS_CODE  0x05
#endif

#ifdef MACOS
#  define OS_CODE  0x07
#endif

#ifdef __50SERIES /* Prime/PRIMOS */
#  define OS_CODE  0x0F
#endif

#ifdef TOPS20
#  define OS_CODE  0x0a
#endif

M
Mark Adler 已提交
116
        /* Common defaults */
M
Mark Adler 已提交
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134

#ifndef OS_CODE
#  define OS_CODE  0x03  /* assume Unix */
#endif

#ifndef FOPEN
#  define FOPEN(name, mode) fopen((name), (mode))
#endif

         /* functions */

#ifdef HAVE_STRERROR
   extern char *strerror __P((int));
#  define zstrerror(errnum) strerror(errnum)
#else
#  define zstrerror(errnum) ""
#endif

M
Mark Adler 已提交
135 136 137 138
#if defined(pyr) && !defined(NO_MEMCPY)
#  define NO_MEMCPY
#endif
#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)
M
Mark Adler 已提交
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
#  define HAVE_MEMCPY
#endif
#ifdef HAVE_MEMCPY
#  define zmemcpy memcpy
#  define zmemzero(dest, len) memset(dest, 0, len)
#else
   extern void zmemcpy  __P((Byte* dest, Byte* source, uInt len));
   extern void zmemzero __P((Byte* dest, uInt len));
#endif

/* Diagnostic functions */
#ifdef DEBUG
#  include <stdio.h>
#  ifndef verbose
#    define verbose 0
#  endif
#  define Assert(cond,msg) {if(!(cond)) z_error(msg);}
#  define Trace(x) fprintf x
#  define Tracev(x) {if (verbose) fprintf x ;}
#  define Tracevv(x) {if (verbose>1) fprintf x ;}
#  define Tracec(c,x) {if (verbose && (c)) fprintf x ;}
#  define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;}
#else
#  define Assert(cond,msg)
#  define Trace(x)
#  define Tracev(x)
#  define Tracevv(x)
#  define Tracec(c,x)
#  define Tracecv(c,x)
#endif


M
Mark Adler 已提交
171 172
typedef uLong (*check_func) __P((uLong check, Byte *buf, uInt len));

M
Mark Adler 已提交
173 174 175 176 177
extern void z_error    __P((char *m));

voidp zcalloc __P((voidp opaque, unsigned items, unsigned size));
void  zcfree  __P((voidp opaque, voidp ptr));

M
Mark Adler 已提交
178 179 180
#define ZALLOC(strm, items, size) \
           (*((strm)->zalloc))((strm)->opaque, (items), (size))
#define ZFREE(strm, addr)  (*((strm)->zfree))((strm)->opaque, (voidp)(addr))
M
Mark Adler 已提交
181 182 183
#define TRY_FREE(s, p) {if (p) ZFREE(s, p);}

#endif /* _Z_UTIL_H */