12345678910111213141516171819202122232425262728293031323334353637383940 |
- typedef struct Whack Whack;
- typedef struct Unwhack Unwhack;
- enum
- {
- WhackStats = 8,
- WhackErrLen = 64, /* max length of error message from thwack or unthwack */
- WhackMaxOff = 16*1024, /* max allowed offset */
- HashLog = 14,
- HashSize = 1<<HashLog,
- HashMask = HashSize - 1,
- MinMatch = 3, /* shortest match possible */
- MinDecode = 8, /* minimum bits to decode a match or lit; >= 8 */
- MaxSeqMask = 8, /* number of bits in coding block mask */
- MaxSeqStart = 256 /* max offset of initial coding block */
- };
- struct Whack
- {
- ushort begin; /* time of first byte in hash */
- ushort hash[HashSize];
- ushort next[WhackMaxOff];
- uchar *data;
- };
- struct Unwhack
- {
- char err[WhackErrLen];
- };
- void whackinit(Whack*, int level);
- void unwhackinit(Unwhack*);
- int whack(Whack*, uchar *dst, uchar *src, int nsrc, ulong stats[WhackStats]);
- int unwhack(Unwhack*, uchar *dst, int ndst, uchar *src, int nsrc);
- int whackblock(uchar *dst, uchar *src, int ssize);
|