]> git.lizzy.rs Git - zlib.git/blobdiff - infutil.h
zlib 1.1.2
[zlib.git] / infutil.h
index b5639d646ad235cdd294d280c9f71213a1c725a4..99d1135d06a3573784a48685c4c35f2b1fb2a6cf 100644 (file)
--- a/infutil.h
+++ b/infutil.h
@@ -1,5 +1,5 @@
 /* infutil.h -- types and macros common to blocks and codes
- * Copyright (C) 1995 Mark Adler
+ * Copyright (C) 1995-1998 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h 
  */
 
@@ -8,11 +8,10 @@
    subject to change. Applications should only use zlib.h.
  */
 
-/* inflate blocks semi-private state */
-struct inflate_blocks_state {
+#ifndef _INFUTIL_H
+#define _INFUTIL_H
 
-  /* mode */
-  enum {
+typedef enum {
       TYPE,     /* get type bits (3, including end bit) */
       LENS,     /* get lengths for stored */
       STORED,   /* processing stored block */
@@ -23,7 +22,13 @@ struct inflate_blocks_state {
       DRY,      /* output remaining window bytes */
       DONE,     /* finished last block, done */
       BAD}      /* got a data error--stuck here */
-    mode;               /* current inflate_block mode */
+inflate_block_mode;
+
+/* inflate blocks semi-private state */
+struct inflate_blocks_state {
+
+  /* mode */
+  inflate_block_mode  mode;     /* current inflate_block mode */
 
   /* mode dependent information */
   union {
@@ -31,14 +36,13 @@ struct inflate_blocks_state {
     struct {
       uInt table;               /* table lengths (14 bits) */
       uInt index;               /* index into blens (or border) */
-      uInt *blens;              /* bit lengths of codes */
+      uIntf *blens;             /* bit lengths of codes */
       uInt bb;                  /* bit length tree depth */
       inflate_huft *tb;         /* bit length decoding tree */
     } trees;            /* if DTREE, decoding info for trees */
     struct {
-      inflate_huft *tl, *td;    /* trees to free */
-      struct inflate_codes_state
-        *codes;
+      inflate_codes_statef 
+         *codes;
     } decode;           /* if CODES, current state */
   } sub;                /* submode */
   uInt last;            /* true if this block is the last block */
@@ -46,15 +50,17 @@ struct inflate_blocks_state {
   /* mode independent information */
   uInt bitk;            /* bits in bit buffer */
   uLong bitb;           /* bit buffer */
-  Byte *window;         /* sliding window */
-  Byte *end;            /* one byte after sliding window */
-  Byte *read;           /* window read pointer */
-  Byte *write;          /* window write pointer */
+  inflate_huft *hufts;  /* single malloc for tree space */
+  Bytef *window;        /* sliding window */
+  Bytef *end;           /* one byte after sliding window */
+  Bytef *read;          /* window read pointer */
+  Bytef *write;         /* window write pointer */
   check_func checkfn;   /* check function */
   uLong check;          /* check on output */
 
 };
 
+
 /* defines for inflate input/output */
 /*   update pointers and return */
 #define UPDBITS {s->bitb=b;s->bitk=k;}
@@ -69,22 +75,24 @@ struct inflate_blocks_state {
 #define NEEDBITS(j) {while(k<(j)){NEEDBYTE;b|=((uLong)NEXTBYTE)<<k;k+=8;}}
 #define DUMPBITS(j) {b>>=(j);k-=(j);}
 /*   output bytes */
-#define WAVAIL (q<s->read?s->read-q-1:s->end-q)
-#define LOADOUT {q=s->write;m=WAVAIL;}
-#define WRAP {if(q==s->end&&s->read!=s->window){q=s->window;m=WAVAIL;}}
+#define WAVAIL (uInt)(q<s->read?s->read-q-1:s->end-q)
+#define LOADOUT {q=s->write;m=(uInt)WAVAIL;}
+#define WRAP {if(q==s->end&&s->read!=s->window){q=s->window;m=(uInt)WAVAIL;}}
 #define FLUSH {UPDOUT r=inflate_flush(s,z,r); LOADOUT}
 #define NEEDOUT {if(m==0){WRAP if(m==0){FLUSH WRAP if(m==0) LEAVE}}r=Z_OK;}
 #define OUTBYTE(a) {*q++=(Byte)(a);m--;}
 /*   load local pointers */
 #define LOAD {LOADIN LOADOUT}
 
-/* masks for lower bits */
-extern uInt inflate_mask[];
+/* masks for lower bits (size given to avoid silly warnings with Visual C++) */
+extern uInt inflate_mask[17];
 
 /* copy as much as possible from the sliding window to the output area */
-extern int inflate_flush __P((
-    struct inflate_blocks_state *,
-    z_stream *,
+extern int inflate_flush OF((
+    inflate_blocks_statef *,
+    z_stream,
     int));
 
 struct internal_state      {int dummy;}; /* for buggy compilers */
+
+#endif