home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 9 Archive / 09-Archive.zip / gzip124.zip / gzip-1.2.4 / lzw.h < prev    next >
C/C++ Source or Header  |  1993-08-13  |  1KB  |  43 lines

  1. /* lzw.h -- define the lzw functions.
  2.  * Copyright (C) 1992-1993 Jean-loup Gailly.
  3.  * This is free software; you can redistribute it and/or modify it under the
  4.  * terms of the GNU General Public License, see the file COPYING.
  5.  */
  6.  
  7. #if !defined(OF) && defined(lint)
  8. #  include "gzip.h"
  9. #endif
  10.  
  11. #ifndef BITS
  12. #  define BITS 16
  13. #endif
  14. #define INIT_BITS 9              /* Initial number of bits per code */
  15.  
  16. #define    LZW_MAGIC  "\037\235"   /* Magic header for lzw files, 1F 9D */
  17.  
  18. #define BIT_MASK    0x1f /* Mask for 'number of compression bits' */
  19. /* Mask 0x20 is reserved to mean a fourth header byte, and 0x40 is free.
  20.  * It's a pity that old uncompress does not check bit 0x20. That makes
  21.  * extension of the format actually undesirable because old compress
  22.  * would just crash on the new format instead of giving a meaningful
  23.  * error message. It does check the number of bits, but it's more
  24.  * helpful to say "unsupported format, get a new version" than
  25.  * "can only handle 16 bits".
  26.  */
  27.  
  28. #define BLOCK_MODE  0x80
  29. /* Block compression: if table is full and compression rate is dropping,
  30.  * clear the dictionary.
  31.  */
  32.  
  33. #define LZW_RESERVED 0x60 /* reserved bits */
  34.  
  35. #define    CLEAR  256       /* flush the dictionary */
  36. #define FIRST  (CLEAR+1) /* first free entry */
  37.  
  38. extern int maxbits;      /* max bits per code for LZW */
  39. extern int block_mode;   /* block compress mode -C compatible with 2.0 */
  40.  
  41. extern int lzw    OF((int in, int out));
  42. extern int unlzw  OF((int in, int out));
  43.