www.pudn.com > gzip.rar > lzw.h


/* lzw.h -- define the lzw functions. 
 * Copyright (C) 1992-1993 Jean-loup Gailly. 
 * This is free software; you can redistribute it and/or modify it under the 
 * terms of the GNU General Public License, see the file COPYING. 
 */ 
#if !defined( OF ) && defined( lint ) 
#include "gzip.h" 
#endif 
#ifndef BITS 
#define BITS 16 /* bits len */ 
#endif 
#define INIT_BITS 9              /* Initial number of bits per code */ 
#define    LZW_MAGIC  "\037\235"   /* Magic header for lzw files, 1F 9D */ 
#define BIT_MASK    0x1f /* Mask for 'number of compression bits' */ 
/* Mask 0x20 is reserved to mean a fourth header byte, and 0x40 is free. 
 * It's a pity that old uncompress does not check bit 0x20. That makes 
 * extension of the format actually undesirable because old compress 
 * would just crash on the new format instead of giving a meaningful 
 * error message. It does check the number of bits, but it's more 
 * helpful to say "unsupported format, get a new version" than 
 * "can only handle 16 bits". 
 */ 
#define BLOCK_MODE  0x80 /* Block compression: if table is full and compression rate is dropping, 
 * clear the dictionary. 
 */ 
#define LZW_RESERVED 0x60 /* reserved bits */ 
#define    CLEAR  256       /* flush the dictionary */ 
#define FIRST  ( CLEAR + 1 ) /* first free entry */ 
extern int maxbits;      /* max bits per code for LZW */ 
extern int block_mode;   /* block compress mode -C compatible with 2.0 */ 
extern int lzw    OF(( int in, int out )); extern int unlzw  OF(( int in, int out ));