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 edk_LZSS_SIGNATURE
00022
00023
00024 typedef struct dkc_LZSS
00025 {
00027 long Dad[LZSS_RING_LENGTH+1];
00029 long LSon[LZSS_RING_LENGTH+1];
00031 long RSon[LZSS_RING_LENGTH+257];
00032
00034 long MatchPos;
00036 long MatchLen;
00038 unsigned char Text[LZSS_RING_LENGTH + LZSS_LONGEST_MATCH - 1];
00039 }DKC_LZSS;
00040
00041 typedef struct dkc_LZSS_Header{
00042 unsigned long mSignature;
00044 size_t mOriginSize;
00046 size_t mCompressedSize;
00047
00048 }DKC_LZSS_HEADER;
00049
00050
00051 DKC_EXTERN DKC_LZSS *WINAPI dkcAllocLZSS();
00052
00053 DKC_EXTERN int WINAPI dkcFreeLZSS(DKC_LZSS **);
00066 DKC_EXTERN int WINAPI dkcLZSSDecode(DKC_LZSS *ptr,DKC_LZSS_HEADER *ph,
00067 BYTE *dest,size_t dsize,const BYTE *src,size_t ssize,ULONG sig);
00079 DKC_EXTERN int WINAPI dkcLZSSEncode(DKC_LZSS *ptr,DKC_LZSS_HEADER *ph,
00080 BYTE *dest,size_t dsize,const BYTE *src,size_t ssize,
00081 size_t CloseProcessSize,ULONG sig);
00082
00083
00084
00085
00086
00087 #if !defined( DKUTIL_C_LZSS_C ) && defined(USE_DKC_INDEPENDENT_INCLUDE)
00088 # include "dkcLZSS.c"
00089 #endif
00090
00091 #endif