jp.gr.java_conf.dangan.util.lha

Interface LzssSearchMethod

Known Implementing Classes:
BinaryTreeSearch, HashAndBinaryTreeSearch, HashAndChainedListSearch, PatriciaTrieSearch, SimpleSearch, TwoLevelHashSearch

public interface LzssSearchMethod

LzssOutputStream で使用される 最長一致検索を提供するインターフェイス。

コンストラクタの形式は
 LzssSearchMethod( int    DictionarySize,
                   int    MaxMatch,
                   int    Threshold,
                   byte[] TextBuffer )
 
 パラメータ:
   DictionarySize - LZSSの辞書サイズ
   MaxMatch       - LZSSの最大一致長
   Threshold      - LZSSの圧縮/非圧縮の閾値
   TextBuffer     - LZSS圧縮を施すデータの入ったバッファ
 
のような形式に則ること。
また、追加の引数をとりたい場合は
 LzssSearchMethod( int    DictionarySize,
                   int    MaxMatch,
                   int    Threshold,
                   byte[] TextBuffer,
                   Object ExtraArgument1,
                   Object ExtraArgument2 )
 
のような形式を用いる。
なお、コンストラクタの引数チェックは追加の引数がある場合について行えばよい。
 -- revision history --
 $Log: LzssSearchMethod.java,v $
 Revision 1.1  2002/12/04 00:00:00  dangan
 [maintenance]
     ソース整備

 Revision 1.0  2002/07/24 00:00:00  dangan
 add to version control
 [change]
     slide() で引数を取らずに 
     スライド幅を常に DictionarySize とするように変更。
     putLength を putRequires に変更
 [maintenance]
     タブ廃止
     ライセンス文の修正

 
Version:
$Revision: 1.1 $
Author:
$Author: dangan $

Method Summary

abstract void
put(int position)
position から始まるデータパタンを LzssSearchMethod の持つ検索機構に登録する。
LzssOutputStream は 線形に、重複無く、 put または searchAndPut を呼び出す。
abstract int
putRequires()
put() または searchAndPut() を使用して データパタンを検索機構に登録する時に 必要とするデータ量を得る。
abstract int
search(int position, int lastPutPos)
検索機構に登録されたデータパタンから position から始まるデータパタンと 最長の一致を持つものを検索する。
このメソッドは LzssOutputStream の flush() を実装するためだけに提供される。
TextBuffer.length &lt position + MaxMatch となるような position にも対応すること。
abstract int
searchAndPut(int position)
検索機構に登録されたデータパタンから position から始まるデータパタンと 最長の一致を持つものを検索し、 同時に position から始まるデータパタンを LzssSearchMethod の持つ検索機構に登録する。
LzssOutputStream は 線形に、重複無く、 put または searchAndPut を呼び出す。
abstract void
slide()
LzssOutputStream が slide() でTextBuffer内のデータを DictionarySize だけ移動させる際に検索機構内のデータを それらと矛盾無く移動させる処理を行う。

Method Details

put

public abstract void put(int position)
position から始まるデータパタンを LzssSearchMethod の持つ検索機構に登録する。
LzssOutputStream は 線形に、重複無く、 put または searchAndPut を呼び出す。
Parameters:
position - TextBuffer内のデータパタンの開始位置

putRequires

public abstract int putRequires()
put() または searchAndPut() を使用して データパタンを検索機構に登録する時に 必要とするデータ量を得る。
Returns:
put() または searchAndPut() で 検索機構に登録するデータ量

search

public abstract int search(int position,
                           int lastPutPos)
検索機構に登録されたデータパタンから position から始まるデータパタンと 最長の一致を持つものを検索する。
このメソッドは LzssOutputStream の flush() を実装するためだけに提供される。
TextBuffer.length &lt position + MaxMatch となるような position にも対応すること。
Parameters:
position - TextBuffer内のデータパタンの開始位置
lastPutPos - 最後に登録したデータパタンの開始位置
Returns:
一致が見つかった場合は LzssOutputStream.createSearchReturn によって生成された一致位置と一致長の情報を持つ値、 一致が見つからなかった場合は LzssOutputStream.NOMATCH。

searchAndPut

public abstract int searchAndPut(int position)
検索機構に登録されたデータパタンから position から始まるデータパタンと 最長の一致を持つものを検索し、 同時に position から始まるデータパタンを LzssSearchMethod の持つ検索機構に登録する。
LzssOutputStream は 線形に、重複無く、 put または searchAndPut を呼び出す。
Parameters:
position - TextBuffer内のデータパタンの開始位置
Returns:
一致が見つかった場合は LzssOutputStream.createSearchReturn によって生成された一致位置と一致長の情報を持つ値、 一致が見つからなかった場合は LzssOutputStream.NOMATCH。

slide

public abstract void slide()
LzssOutputStream が slide() でTextBuffer内のデータを DictionarySize だけ移動させる際に検索機構内のデータを それらと矛盾無く移動させる処理を行う。

When you found typographical errors or omissions, Please mail to cqw10305@nifty.com
The company name and product name which are used in this document, it is the trademark or registered trademark of each company generally.
Copyright © 2001-2002 Michel Ishizuka. All Rights Reserved.