メインページ | 構成 | ファイル一覧 | 構成メンバ | ファイルメンバ | 関連ページ

dkcLZSS.h

LZSS圧縮. [詳細]

#include "dkcOSIndependent.h"

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

Include dependency graph

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

Included by dependency graph

ソースコードを見る。

構成

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   'LZSS'
 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   'LZSS'
 

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
 

参照元 Decode(), DeleteNode(), dkcAllocLZSS(), dkcFreeLZSS(), dkcLZSSDecode(), dkcLZSSEncode(), Encode(), InitTree(), と InsertNode().

typedef struct dkc_LZSS_Header DKC_LZSS_HEADER
 

参照元 Decode(), dkcLZSSDecode(), と dkcLZSSEncode().


関数

DKC_EXTERN DKC_LZSS* WINAPI dkcAllocLZSS  ) 
 

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

参照先 DKC_LZSS, と dkcAllocate().

00496 {
00497     DKC_LZSS *p = dkcAllocate(sizeof(DKC_LZSS));
00498     return p;
00499 }

DKC_EXTERN int WINAPI dkcFreeLZSS DKC_LZSS **   ) 
 

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

参照先 DKC_LZSS, dkcFree(), edk_FAILED, と NULL.

00501                                     {
00502     if(NULL==p || NULL==*p) return edk_FAILED;
00503     return dkcFree(p);
00504 }

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.c507 行で定義されています。

参照先 BYTE, Decode(), DKC_LZSS, DKC_LZSS_HEADER, edk_ArgumentException, edk_BufferOverFlow, edk_FAILED, edk_SUCCEEDED, FALSE, dkc_LZSS_Header::mOriginSize, dkc_LZSS_Header::mSignature, と NULL.

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

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.c529 行で定義されています。

参照先 BYTE, DKC_LZSS, DKC_LZSS_HEADER, dkcmNOT_ASSERT, DKUTIL_FAILED, edk_ArgumentException, Encode(), dkc_LZSS_Header::mCompressedSize, dkc_LZSS_Header::mOriginSize, dkc_LZSS_Header::mSignature, と NULL.

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


dkutil_cに対してSun Jul 18 22:45:47 2004に生成されました。 doxygen 1.3.6