メインページ | アルファベット順一覧 | 構成 | ファイル一覧 | 構成メンバ | ファイルメンバ | 関連ページ

dkcLZSS.h

LZSS圧縮 [詳細]

#include "dkcOSIndependent.h"

dkcLZSS.hのインクルード依存関係図

このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

ソースコードを見る。

構成

struct  dkc_LZSS
struct  dkc_LZSS_Header

マクロ定義

#define LZSS_RING_LENGTH   4096
 < 環状バッファの大きさ 環状バッファのマスク
#define LZSS_RING_MASK   (LZSS_RING_LENGTH-1)
 最長一致長
#define LZSS_LONGEST_MATCH   16
#define dkcdLZSS_SIGNATURE   edk_LZSS_SIGNATURE
 LZSSのシグネチャ(変更しても大丈夫だよ〜(多分))

型定義

typedef dkc_LZSS DKC_LZSS
typedef dkc_LZSS_Header DKC_LZSS_HEADER

関数

DKC_EXTERN DKC_LZSS *WINAPI dkcAllocLZSS ()
DKC_EXTERN int WINAPI dkcFreeLZSS (DKC_LZSS **)
DKC_EXTERN int WINAPI dkcLZSSDecode (DKC_LZSS *ptr, DKC_LZSS_HEADER *ph, BYTE *dest, size_t dsize, const BYTE *src, size_t ssize, ULONG sig)
DKC_EXTERN int WINAPI dkcLZSSEncode (DKC_LZSS *ptr, DKC_LZSS_HEADER *ph, BYTE *dest, size_t dsize, const BYTE *src, size_t ssize, size_t CloseProcessSize, ULONG sig)


説明

LZSS圧縮

から:
2004/04/20
作者:
Original:Lee Noriyuki / Reconstruction:d金魚

dkcLZSS.h で定義されています。


マクロ定義

#define dkcdLZSS_SIGNATURE   edk_LZSS_SIGNATURE
 

LZSSのシグネチャ(変更しても大丈夫だよ〜(多分))

dkcLZSS.h21 行で定義されています。

#define LZSS_LONGEST_MATCH   16
 

dkcLZSS.h19 行で定義されています。

参照元 Decode(), Encode(), と InsertNode().

#define LZSS_RING_LENGTH   4096
 

< 環状バッファの大きさ 環状バッファのマスク

dkcLZSS.h15 行で定義されています。

参照元 Decode(), Encode(), InitTree(), と InsertNode().

#define LZSS_RING_MASK   (LZSS_RING_LENGTH-1)
 

最長一致長

dkcLZSS.h17 行で定義されています。


型定義

typedef struct dkc_LZSS DKC_LZSS
 

typedef struct dkc_LZSS_Header DKC_LZSS_HEADER
 


関数

DKC_EXTERN DKC_LZSS* WINAPI dkcAllocLZSS  ) 
 

dkcLZSS.c497 行で定義されています。

参照先 dkcAllocate().

00498 {
00499     DKC_LZSS *p = dkcAllocate(sizeof(DKC_LZSS));
00500     return p;
00501 }

DKC_EXTERN int WINAPI dkcFreeLZSS DKC_LZSS **   ) 
 

dkcLZSS.c503 行で定義されています。

参照先 dkcFree(), と NULL.

00503                                     {
00504     if(NULL==p || NULL==*p) return edk_FAILED;
00505     return dkcFree((void **)p);
00506 }

DKC_EXTERN int WINAPI dkcLZSSDecode DKC_LZSS ptr,
DKC_LZSS_HEADER ph,
BYTE dest,
size_t  dsize,
const BYTE src,
size_t  ssize,
ULONG  sig
 

引数:
ptr[in][out] dkcAllocLZSS()で取得したポインタ
ph[out] DKC_LZSS_HEADERへのポインタ
dest[out] デコードされたデータの書き出しバッファへのポインタ
dsize[in] destのサイズ
src[in] バッファへのポインタ
ssize[in] srcのサイズ
sig[in] dkcLZSSEncode()の時、指定したシグネチャID
戻り値:
edk_Resultのどれかが返る。
覚え書き:
DKC_LZSS_HEADERのメンバのmOriginSizeよりdsizeが小さいとこの関数は失敗します。

dkcLZSS.c509 行で定義されています。

参照先 Decode(), FALSE, dkc_LZSS_Header::mOriginSize, dkc_LZSS_Header::mSignature, と NULL.

00511 {
00512     if(NULL==ptr || NULL==ph)
00513         return edk_ArgumentException;
00514 
00515     if(ph->mOriginSize > dsize){
00516         return edk_BufferOverFlow;
00517         }
00518     //if(dkcLZSSIsLZSS(ph)==FALSE){
00519     if(ph->mSignature != sig){
00520         return edk_FAILED;
00521         }
00522 
00523     if(FALSE==Decode(ptr,ph,src,dest)){
00524         return edk_FAILED;
00525         }
00526 
00527     return edk_SUCCEEDED;
00528 
00529 }

DKC_EXTERN int WINAPI dkcLZSSEncode DKC_LZSS ptr,
DKC_LZSS_HEADER ph,
BYTE dest,
size_t  dsize,
const BYTE src,
size_t  ssize,
size_t  CloseProcessSize,
ULONG  sig
 

引数:
ptr[in][out] dkcAllocLZSS()で取得したポインタ
ph[out] DKC_LZSS_HEADERへのポインタ
dest[out] LZSSで圧縮されたデータの書き出しバッファへのポインタ
dsize[in] destのサイズ
src[in] バッファへのポインタ
ssize[in] srcのサイズ
CloseProcessSize[in] 処理を打ち切りにするサイズ dsizeより小さくするのがセオリー
sig[in] LZSSだと証明するシグネチャ
戻り値:
edk_Resultのどれかが返る。圧縮する価値の無い場合はedk_NoValueToProcessが返る。

dkcLZSS.c531 行で定義されています。

参照先 dkcmNOT_ASSERT, Encode(), dkc_LZSS_Header::mCompressedSize, dkc_LZSS_Header::mOriginSize, dkc_LZSS_Header::mSignature, と NULL.

00534 {
00535     unsigned long comped;
00536     int result;
00537 
00538     if(NULL==ptr || NULL==ph)
00539         return edk_ArgumentException;
00540     
00541     dkcmNOT_ASSERT(NULL==dest || 0==dsize);
00542 
00543 
00544     result = Encode(ptr,src,ssize,dest,dsize,&comped,CloseProcessSize);
00545     if(DKUTIL_FAILED(result))
00546     {
00547         return result;
00548     }
00549     ph->mOriginSize = (size_t)ssize;
00550     ph->mCompressedSize = comped;
00551     ph->mSignature =  sig;
00552 
00553     return result;
00554 
00555 }


dkutil_cに対してSat Sep 10 09:24:31 2005に生成されました。  doxygen 1.4.4