00001
00008 #ifndef dkutil_c_LZSS__h
00009 #define dkutil_c_LZSS__h
00010
00011
00012 #include "dkcOSIndependent.h"
00013
00015 #define LZSS_RING_LENGTH 4096
00016
00017 #define LZSS_RING_MASK (LZSS_RING_LENGTH-1)
00018
00019 #define LZSS_LONGEST_MATCH 16
00020
00021 typedef struct dkc_LZSS
00022 {
00024 long Dad[LZSS_RING_LENGTH+1];
00026 long LSon[LZSS_RING_LENGTH+1];
00028 long RSon[LZSS_RING_LENGTH+257];
00029
00031 long MatchPos;
00033 long MatchLen;
00035 unsigned char Text[LZSS_RING_LENGTH + LZSS_LONGEST_MATCH - 1];
00036 }DKC_LZSS;
00037
00038 typedef struct dkc_LZSS_Header{
00039 unsigned long mSignature;
00041 size_t mOriginSize;
00043 size_t mCompressedSize;
00044
00045 }DKC_LZSS_HEADER;
00046
00047
00048 DKC_EXTERN DKC_LZSS *WINAPI dkcAllocLZSS();
00049
00050 DKC_EXTERN int WINAPI dkcFreeLZSS(DKC_LZSS **);
00062 DKC_EXTERN int WINAPI dkcLZSSDecode(DKC_LZSS *ptr,DKC_LZSS_HEADER *ph,
00063 BYTE *dest,size_t dsize,const BYTE *src,size_t ssize);
00073 DKC_EXTERN int WINAPI dkcLZSSEncode(DKC_LZSS *ptr,DKC_LZSS_HEADER *ph,
00074 BYTE *dest,size_t dsize,const BYTE *src,size_t ssize);
00075
00076
00077 DKC_EXTERN BOOL WINAPI dkcLZSSIsLZSS(DKC_LZSS_HEADER *p);
00078
00079
00080
00081
00082 #endif