Files
mcmartin a82bcf1338 Removed executable flags from a ridiculous number of non-executable files.
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@2661 8092fc87-c524-0410-9efc-e669fe64eaf9
2007-01-13 07:03:15 +00:00

75 lines
2.1 KiB
C

/**************************************************************
lzhuf.h
Lib-like reentrant definition of lzhuf.c
Please see lzhuf.c for authorship info
**************************************************************/
#ifndef LZHUF_H_INCL_
#define LZHUF_H_INCL_
/********** LZSS compression **********/
#define LZHUF_N 4096 /* buffer size */
#define LZHUF_F 60 /* lookahead buffer size */
#define LZHUF_THRESHOLD 2
#define LZHUF_NIL LZHUF_N /* leaf of tree */
/* Huffman coding */
#define LZHUF_N_CHAR (256 - LZHUF_THRESHOLD + LZHUF_F)
/* kinds of characters (character code = 0..LZHUF_N_CHAR-1) */
#define LZHUF_T (LZHUF_N_CHAR * 2 - 1) /* size of table */
#define LZHUF_R (LZHUF_T - 1) /* position of root */
#define LZHUF_MAX_FREQ 0x8000 /* updates tree when the */
typedef void* lzhuf_handle_t;
typedef struct
{
unsigned long int codesize;
unsigned char text_buf[LZHUF_N + LZHUF_F - 1];
int match_position;
int match_length;
int lson[LZHUF_N + 1];
int rson[LZHUF_N + 257];
int dad[LZHUF_N + 1];
unsigned freq[LZHUF_T + 1]; /* frequency table */
int prnt[LZHUF_T + LZHUF_N_CHAR]; /* pointers to parent nodes, except for the */
/* elements [LZHUF_T..LZHUF_T + LZHUF_N_CHAR - 1] which are used to get */
/* the positions of leaves corresponding to the codes. */
int son[LZHUF_T]; /* pointers to child nodes (son[], son[] + 1) */
unsigned getbuf;
unsigned char getlen;
unsigned putbuf;
unsigned char putlen;
/* user-settable data */
void* userdata;
lzhuf_handle_t infile;
lzhuf_handle_t outfile;
size_t (* read)(void*, size_t, size_t, lzhuf_handle_t);
size_t (* write)(const void*, size_t, size_t, lzhuf_handle_t);
int (* seek)(lzhuf_handle_t, long, int);
long (* tell)(lzhuf_handle_t);
} lzhuf_session_t;
#define LZHUF_STDIO 1
void lzhuf_startSession(lzhuf_session_t *, int bStdIO);
void lzhuf_endSession(lzhuf_session_t *);
int lzhuf_encode(lzhuf_session_t *); /* compression */
int lzhuf_decode(lzhuf_session_t *); /* recover */
#endif /* LZHUF_H_INCL_ */