00001
00008 #ifndef DKUTIL_C_LZSS_H
00009 #define DKUTIL_C_LZSS_C
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 #define dkcdLZSS_SIGNATURE 'LZSS'
00022
00023 typedef struct dkc_LZSS
00024 {
00026 long Dad[LZSS_RING_LENGTH+1];
00028 long LSon[LZSS_RING_LENGTH+1];
00030 long RSon[LZSS_RING_LENGTH+257];
00031
00033 long MatchPos;
00035 long MatchLen;
00037 unsigned char Text[LZSS_RING_LENGTH + LZSS_LONGEST_MATCH - 1];
00038 }DKC_LZSS;
00039
00040 typedef struct dkc_LZSS_Header{
00041 unsigned long mSignature;
00043 size_t mOriginSize;
00045 size_t mCompressedSize;
00046
00047 }DKC_LZSS_HEADER;
00048
00049
00050 DKC_EXTERN DKC_LZSS *WINAPI dkcAllocLZSS();
00051
00052 DKC_EXTERN int WINAPI dkcFreeLZSS(DKC_LZSS **);
00065 DKC_EXTERN int WINAPI dkcLZSSDecode(DKC_LZSS *ptr,DKC_LZSS_HEADER *ph,
00066 BYTE *dest,size_t dsize,const BYTE *src,size_t ssize,ULONG sig);
00078 DKC_EXTERN int WINAPI dkcLZSSEncode(DKC_LZSS *ptr,DKC_LZSS_HEADER *ph,
00079 BYTE *dest,size_t dsize,const BYTE *src,size_t ssize,
00080 size_t CloseProcessSize,ULONG sig);
00081
00082
00083
00084
00085
00086 #if !defined( DKUTIL_C_LZSS_C ) && defined(USE_DKC_INDEPENDENT_INCLUDE)
00087 # include "dkcLZSS.c"
00088 #endif
00089
00090 #endif