二分木に登録されたデータパタンを検索し
position から始まるデータパタンと
最長の一致を持つものを得る。
TextBuffer.length < position + MaxMatch
となるような position では、
二分木を完全に走査できないため
最長一致を得られるとは限らない。
ハッシュと二分木を使用した検索機構に登録されたデータパタンを検索し
position から始まるデータパタンと最長の一致を持つものを得る。
TextBuffer.length < position + MaxMatch となるような position では、
二分木を完全に走査しないため最長一致を得られるとは限らない。
ハッシュと連結リストを使用した検索機構に登録された
データパタンを検索し position から始まるデータパタンと
最長の一致を持つものを得る。
検索機構に登録されたデータパタンから
position から始まるデータパタンと
最長の一致を持つものを検索する。
このメソッドは LzssOutputStream の
flush() を実装するためだけに提供される。
TextBuffer.length < position + MaxMatch となるような
position にも対応すること。
PATRICIA Trie に登録されたデータパタンを検索し
position から始まるデータパタンと
最長の一致を持つものを得る。
TextBuffer 内の辞書領域にあるデータパタンから
position から始まるデータパタンと
最長の一致を持つものを検索する。
ハッシュと連結リストを使用した検索機構に登録された
データパタンを検索し position から始まるデータパタンと
最長の一致を持つものを得る。
二分木に登録されたデータパタンから
position から始まるデータパタンと
最長の一致を持つものを検索し、
同時に position から始まるデータパタンを
二分木に登録する。
ハッシュと二分木を使用した検索機構に登録された
データパタンから position から始まるデータパタンと
最長の一致を持つものを検索し、
同時に position から始まるデータパタンを
ハッシュと二分木を使用した検索機構に登録する。
ハッシュと連結リストから成る検索機構に登録された
データパタンから position から始まるデータパタンと
最長の一致を持つものを検索し、
同時に position から始まるデータパタンを
ハッシュと連結リストから成る検索機構に登録する。
検索機構に登録されたデータパタンから
position から始まるデータパタンと
最長の一致を持つものを検索し、
同時に position から始まるデータパタンを
LzssSearchMethod の持つ検索機構に登録する。
LzssOutputStream は 線形に、重複無く、
put または searchAndPut を呼び出す。
PATRICIA Trie に登録されたデータパタンから
position から始まるデータパタンと
最長の一致を持つものを検索し、
同時に position から始まるデータパタンを
PATRICIA Trie に登録する。
TextBuffer 内の辞書領域にあるデータパタンから
position から始まるデータパタンと
最長の一致を持つものを検索する。
二段階ハッシュと連結リストから成る検索機構に登録された
データパタンから position から始まるデータパタンと
最長の一致を持つものを検索し、
同時に position から始まるデータパタンを
二段階ハッシュと連結リストから成る検索機構に登録する。
より良い LZSS 圧縮のための選択肢を提供する searchAndPut()。
例えば一致長 3, 一致位置 4 と 一致長 4, 一致位置 1024 では
一致長 3, 一致位置 4 + 非圧縮1文字 の方が出力ビット数が
少なくなる事がある。そのような場合に対処するため一致長毎に
positionに一番近い一致位置を列挙する。
現在位置を設定する。
java.io.RandomAccessFileと同じく
seek で読みこみ限界を超えた値を
設定した直後にはバッファは増加していない。
その後 write によって書きこんだ時にはじ
めてバッファは増加する。
圧縮後データサイズを設定する。
LhaHeader.UNKNOWN( -1 ) は サイズ不明を示す
特別な数字であるため設定できない。
また レベル0,1,3 では処理できるのは 4バイト値のみであるため
4バイトで表現できない値を設定した場合 getByte() 時に例外を投げる。
圧縮前のデータの CRC16値を設定する。
LhaHeader.UNKNOWN( -1 ) は サイズ不明を示す
特別な数字であるため設定できない。
LhaHeader.NO_CRC( -2 ) は レベル0ヘッダの場
合に CRC値を出力しないことを意味する特別な値
である。
他のヘッダレベルの時に LhaHeader.NO_CRC( -2 )
を設定しても例外を投げないが getBytes() 時に
例外を投げるので注意すること。
有効なのは下位2バイトで、上位2バイトは無視される。
この WindowsDate の示す 一ヶ月の
中での何日目かを date で指定された値に設定する。
このメソッドは範囲チェックを行うだけのために存在する。
レベル 0,1ヘッダ時に使用される 基本ヘッダ内
拡張情報を設定する。
拡張情報のバイト数には§限が存在するが、このメソッドは
§限を越えても例外を投げないことに注意。§限を越えた場合
getBytes()時に例外を投げる。
ヘッダレベルを設定する。
現在設定できるのは 0,1,2,3 のみとなっている。
ヘッダレベルの変更はパスの最大長や、LastModified の§限範囲
などを変化させるため注意が必要である。
この WindowsDate の示す一日の中での時間を
hours で指定された値に設定する。
このメソッドは範囲チェックを行うだけのために存在する。
圧縮データの最終更新日時を設定する。
ヘッダレベルが 0,1 の場合は MsdosDateで表せる範囲内、
ヘッダレベルが 2,3 の場合は 4byte の time_tで表せる範囲内
の日付で無ければならない。
範囲内でなくても このメソッドは例外を投げないことに注意す
ること。範囲内に無い場合は このメソッドは例外を投げないが、
getBytes() 時に例外を投げる。
レベル 0ヘッダの場合に出力される、
MS-DOS のファイル属性を設定する。
この WindowsDate の示す一時間の中での分を
minutes で指定された値に設定する。
このメソッドは範囲チェックを行うだけのために存在する。
この WindowsDate の示す月を month で指定された値に設定する。
このメソッドは範囲チェックを行うだけのために存在する。
この MsdosDate に MS-DOS 時間形式の時間情報を設定する。
圧縮前データサイズを設定する。
LhaHeader.UNKNOWN( -1 ) は サイズ不明を示す
特別な数字であるため設定できない。
また レベル0,1,3 では処理できるのは 4バイト値のみであるため
4バイトで表現できない値を設定した場合 getByte() 時に例外を投げる。
このヘッダにOS固有の情報が含まれる場合、
そのデータを解釈する手がかりとして OSの識別子を設定する。
データの名前、もしくはデータがファイルである場合、
データのパスを設定する。
パスデリミタには File.separator を使用する。
ヘッダレベルによって path にはバイト数の§限が存在するが、
このメソッドは§限を越えた場合でも 例外を投げないことに
注意。§限を越えた場合は このメソッドは例外を投げないが、
getBytes()時に例外を投げる
現在位置を設定する。
java.io.RandomAccessFileと同じく
setPosition で読みこみ限界を超えた値を
設定した直後にはバッファは増加していない。
その後 write によって書きこんだ時にはじ
めてバッファは増加する。
この WindowsDate の示す一分の中での秒数を
secounds で指定された値に設定する。
このメソッドは範囲チェックを行うだけのために存在する。
この MsdosDate の示す時間を 1970年1月1日 00:00:00 GMTから
time ミリ秒経過した時刻に設定する。
MS-DOS 形式の時間情報で表せない細かい精度の情報は
無視され、最小時間単位は java.util.Date の 1ミリ秒でなく
MS-DOS 形式の時間情報 の最小単位である 2秒となる。
この WindowsDate の示す時間を
1970年1月1日 00:00:00 GMTから
time ミリ秒経過した時刻に設定する。
このメソッドは範囲チェックを行うだけのために存在する。
この WindowsDate に FILETIME形式の時間情報を設定する。
この MsdosDate の示す年を year で指定された値に1900を足し
たものに設定する。
このメソッドは範囲チェックを行うだけのために存在する。
この WindowsDate の示す年を year で
指定された値に1900を足したものに設定する。
このメソッドは範囲チェックを行うだけのために存在する。
特別な検索機構を用いない
LzssSearchMethod の最もシンプルな実装。
検索機構を用いないため、
他の検索機構を用いる実装と比べると遅いが、
メモリ消費量も非常に少ない。
-- revision history --
$Log: SimpleSearch.java,v $
Revision 1.0 2002/08/05 00:00:00 dangan
add to version control
[change]
LzssSearchMethod のインタフェイス変更にあわせてインタフェイス変更。
[maintenance]
ソース整備
タブ廃止
ライセンス文の修正
特別な検索機構を用いないシンプルな
LzssSearchMethod を構築する。
接続された入力ストリームのデータを length バイト
読み飛ばす。
このメソッドは lengthバイト読み飛ばすか、
EndOfStream に到達するまでブロックする。
データは必ずしも length バイト読み飛ばされるとは限ら
ないことに注意。
接続された入力ストリームのデータを length バイト読み飛ばす。
このメソッドは length バイト読み飛ばすか
EndOfStream に到達するまでブロックする。
接続された入力ストリームのデータを length バイト
読み飛ばす。
現在のエントリのデータを length バイト読みとばす。
接続された入力ストリームのデータを length バイト読み飛ばす。
解凍されたデータを lengthバイト読み飛ばす。
接続されたストリームから count ビットのデータを
読み飛ばす。
TextBuffer内のpositionまでのデータを前方へ移動する際、
それに応じて 二分木を構成するデータも
TextBuffer内のデータと矛盾しないように前方へ移動する処理を行う。
TextBuffer内の position までのデータを前方へ移動する際、
それに応じて ハッシュと二分木を使用した検索機構を構成するデータも
TextBuffer内のデータと矛盾しないように前方へ移動する処理を行う。
TextBuffer内のpositionまでのデータを
前方へ移動する際、それに応じて SearchMethod内の
データも TextBuffer内のデータと矛盾しないように
前方へ移動する処理を行う。
LzssOutputStream が slide() でTextBuffer内のデータを
DictionarySize だけ移動させる際に検索機構内のデータを
それらと矛盾無く移動させる処理を行う。
TextBuffer内のpositionまでのデータを
前方へ移動する際、それに応じて LzssSearchMethod
内のデータも TextBuffer内のデータと矛盾しないよ
うに前方へ移動する処理を行う。
LzssOutputStream が slide() でTextBuffer内のデータを
DictionarySize だけ移動させる際に検索機構内のデータを
それらと矛盾無く移動させる処理を行う。
TextBuffer内のpositionまでのデータを
前方へ移動する際、それに応じて SearchMethod内の
データも TextBuffer内のデータと矛盾しないように
前方へ移動する処理を行う。
静的ハフマン用ユーティリティ関数群を保持する。
ハフマン符号は最大16ビットに§限される。
-- revision history --
$Log: StaticHuffman.java,v $
Revision 1.0 2002/07/24 00:00:00 dangan
add to version control
[maintenance]
ソース整備
タブ廃止
ライセンス文の修正