You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.0 KiB
62 lines
2.0 KiB
/*
|
|
** lzcommon.h - Shared information for LZ modules.
|
|
**
|
|
** Author: DavidDi
|
|
*/
|
|
|
|
//global variable
|
|
BYTE byteAlgorithm;
|
|
|
|
// Constants
|
|
/////////////
|
|
|
|
#define RING_BUF_LEN 4096 // size of ring buffer
|
|
#define MAX_RING_BUF_LEN 4224 // size of ring buffer - from LZFile
|
|
// struct declaration in lzexpand.h
|
|
|
|
#define NIL RING_BUF_LEN // flag index used in binary search
|
|
// trees
|
|
|
|
#define BUF_CLEAR_BYTE ((BYTE) ' ') // rgbyteRingBuf[] initializer
|
|
|
|
#define MAX_LITERAL_LEN 2 // encode string into position and
|
|
// length if match length greater than
|
|
// this value (== # of bytes required
|
|
// to encode position and length)
|
|
|
|
#define FIRST_MAX_MATCH_LEN 0x10 // ALG_FIRST used this length
|
|
#define LZ_MAX_MATCH_LEN (0x10 + MAX_LITERAL_LEN)
|
|
#define LZA_MAX_MATCH_LEN 64
|
|
// upper limit for match length
|
|
// (n.b., assume length field implies
|
|
// length += 3)
|
|
|
|
// Maximum number of bytes LZDecode() and LZADecode() will expand beyond
|
|
// position requested.
|
|
#define MAX_OVERRUN ((long)pLZI->cbMaxMatchLen)
|
|
|
|
|
|
// Globals
|
|
///////////
|
|
|
|
extern INT iCurMatch, // index of longest match (set by LZInsertNode())
|
|
cbCurMatch; // length of longest match (set by LZInsertNode())
|
|
|
|
extern DWORD uFlags; // LZ decoding description byte
|
|
|
|
extern INT iCurRingBufPos; // ring buffer offset
|
|
|
|
// Prototypes
|
|
//////////////
|
|
|
|
// lzcommon.c
|
|
extern BOOL LZInitTree(PLZINFO pLZI);
|
|
extern VOID LZFreeTree(PLZINFO pLZI);
|
|
extern VOID LZInsertNode(INT nodeToInsert, BOOL bDoArithmeticInsert, PLZINFO pLZI);
|
|
extern VOID LZDeleteNode(INT nodeToDelete, PLZINFO pLZI);
|
|
|
|
// lzcomp.c
|
|
extern INT LZEncode(HANDLE doshSource, HANDLE doshDest, PLZINFO pLZI);
|
|
|
|
|
|
|