Package jp.gr.java_conf.dangan.util.lha

Interface Summary

HashMethod ハッシュ関数を提供するインターフェイス。

コンストラクタの形式は
 HashMethod( byte[] TextBuffer )
 
 パラメータ:
   TextBuffer     - LZSS圧縮を施すデータの入ったバッファ
 
のような形式に則ること。
また、追加の引数をとりたい場合は
 HashMethod( byte[] TextBuffer,
             Object ExtraData1,
             Object ExtraData2 )
 
のような形式を用いる。
なお、コンストラクタの引数チェックは追加の引数がある場合について行えばよい。
 -- revision history --
 $Log: HashMethod.java,v $
 Revision 1.0  2002/08/05 00:00:00  dangan
 add to version cotrol
 [change]
     requiredSize() を hashRequires() に名前変更。
     size() を tableSize() 名前変更。
 [maintanance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
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]
     タブ廃止
     ライセンス文の修正

 
PostLzssEncoder LZSS圧縮コードを処理する インターフェイス。
 -- revision history --
 $Log: PostLzssEncoder.java,v $
 Revision 1.0  2002/07/25 00:00:00  dangan
 add to version control
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
PreLzssDecoder LZSS圧縮コードを供給するインターフェイス。
 -- revision history --
 $Log: PreLzssDecoder.java,v $
 Revision 1.0  2002/07/25 00:00:00  dangan
 add to version control
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 

Class Summary

BadHuffmanTableException BlockHuffman.LenListToCodeList() 内で、 渡された LenList ( ハフマン符号長の表 )が不正なため、 ハフマン符号を生成できない事を示す。
 -- revision history --
 $Log: BadHuffmanTableException.java,v $
 Revision 1.0  2002/07/24 00:00:00  dangan
 add to version control
 [maintenance]
     タブ廃止
     ライセンス文の修正

 
BinaryTreeSearch 二分木を使用した LzssSearchMethod の実装。
 データ圧縮ハンドブック[改定第二版]
        M.ネルソン/J.-L.ゲィリー 著
                萩原剛志・山口英 訳
                  ISBN4-8101-8605-9
                             5728円(税抜き,当方の購入当時の価格)
 
を参考にした。
二分木では、最長一致を見つけることはできるが、 最も近い一致を見つけられるとは限らないため、 LZSSで 一致位置が近い場所に偏る事を 利用するような -lh5- のような圧縮法では、 圧縮率はいくらか低下する。
 -- revision history --
 $Log: BinaryTreeSearch.java,v $
 Revision 1.0  2002/08/06 00:00:00  dangan
 add to version control
 [change]
     LzssSearchMethod のインタフェイス変更にあわせてインタフェイス変更
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
CompressMethod LHAの各種定数を定義する。
 -- revision history --
 $Log: CompressMethod.java,v $
 Revision 1.1  2002/12/08 00:00:00  dangan
 [change]
     クラス名を LhaConstants から CompressMethod へと変更。

 Revision 1.0  2002/07/24 00:00:00  dangan
 add to version control
 [change]
     LhaUtil の connectExtractInputStream を connectDecoder として
     connectCompressOutputStream を connectEncoder として引き継ぐ。
     LhaUtil の CompressMethodTo????????? を引き継ぐ。
 [maintanance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
CRC16 CRC16値を算出するためのクラス。 クラス内の定数、処理、説明は
 C言語によるアルゴリズム辞典
   奥村晴彦著 技術評論社 
   ISBN4-87408-414-1 C3055 2400円(購入当時)
 
によった。
 -- revision history --
 $Log: CRC16.java,v $
 Revision 1.0  2002/07/24 00:00:00  dangan
 add to version control
 [maintanance]
     ソース整備
     タブ廃止
     ライセンス文の変更

 
DynamicHuffman 動的ハフマンを扱うクラス。
 -- revision history --
 $Log: DynamicHuffman.java,v $
 Revision 1.0  2002/07/24 00:00:00  dangan
 add to version control
 [bug fix]
     addLeaf() で葉の数が 1 から 2へと増加するときに
     最初からあった葉の重さが 1 だと決め付けていた。
 [change]
     コンストラクタ DynamicHuffman( int, int ) で
     開始時のハフマン木のサイズでなく 開始時の葉の数を渡すように変更。
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の変更

 
HashAndBinaryTreeSearch ハッシュと二分木を使った LzssSearchMethod の実装。
 データ圧縮ハンドブック[改定第二版]
        M.ネルソン/J.-L.ゲィリー 著
                萩原剛志・山口英 訳
                  ISBN4-8101-8605-9
                             5728円(税抜き,当方の購入当時の価格)
 
を参考にした。
二分木では、最長一致を見つけることはできるが、 最も近い一致を見つけられるとは限らないため、 LZSSで 一致位置が近い場所に偏る事を 利用するような -lh5- のような圧縮法では、 圧縮率はいくらか低下する。
 -- revision history --
 $Log: HashAndBinaryTreeSearch.java,v $
 Revision 1.0  2002/08/05 00:00:00  dangan
 add to version control
 [change]
     LzssSearchMethod のインタフェイス変更にあわせてインタフェイス変更
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
HashAndChainedListSearch ハッシュと単方向連結リストを使って高速化された LzssSearchMethod。
検索を打ち切ることによる高速化も行っているため、 必ず最長一致を見つけることが出来るとは限らない。
 -- revision history --
 $Log: HashAndChainedListSearch.java,v $
 Revision 1.0  2002/08/05 00:00:00  dangan
 add to version control
 [change]
     LzssSearchMethod のインタフェイス変更にあわせてインタフェイス変更
 [improvement]
     ar940528 の TEST5相当 の実装に変更。
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
HashDefault 試作プログラム ar940528 や LHa for Unix で使用されているハッシュ関数。
gzip で使用されているを参考にしたようだ。
 -- revision history --
 $Log: HashDefault.java,v $
 Revision 1.0  2002/08/05 00:00:00  dangan
 add to version control
 [change]
     HashMethod のインタフェイス変更にあわせてインテフェイス変更。
     コンストラクタで引数チェックを削除。
 [maintanance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
HashShort データパタンの先頭2バイトから 0 〜 4095 のハッシュ値を生成するハッシュ関数。
 -- revision history --
 $Log: HashShort.java,v $
 Revision 1.0  2002/08/05 00:00:00  dangan
 add to version control
 [change]
     HashMethod のインタフェイス変更にあわせてインテフェイス変更。
 [maintanance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
LhaChecksum LHAで使用される 単純な 1バイトのチェックサム値を 算出するためのクラス。
 -- revision history --
 $Log: LhaChecksum.java,v $
 Revision 1.0  2002/08/05 00:00:00  dangan
 add to version control
 [maintanance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
LhaFile LHA書庫ファイルからエントリデータを読み出す InputStreamを得るためのユーティリティクラス。
java.util.zip.ZipFile と似た インターフェイスを持つように作った。 CRC16等によるチェックは行わない。
 -- revision history --
 $Log: LhaFile.java,v $
 Revision 1.1  2002/12/08 00:00:00  dangan
 [maintenance]
     LhaConstants から CompressMethod へのクラス名の変更に合わせて修正。

 Revision 1.0  2002/08/05 00:00:00  dangan
 add to version control
 [improvement]
     エントリの管理に Hashtable を使用する事によって
     大量のエントリを持つ書庫でエントリ開始位置を
     より速く見つけられるように改良。
 [change]
     コンストラクタから 引数に String encode を取るものを廃止、
     Properties を引数に取るものを追加。
 [maintanance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
LhaHeader LHAヘッダを扱う。
このクラスは java.util.zip パッケージでは ZipEntry と近いが、 ヘッダの入出力のためのユーティリティ関数を持つ点が違う。
このクラスは set系メソッドで為された方が良いチェックを getBytes() 時に行うように書かれている。その点は注意すること。
 -- revision history --
 $Log: LhaHeader.java,v $
 Revision 1.2.2.3  2005/05/03 07:50:30  dangan
 [bug fix]
     exportLevel1Header() で skip size のチェックがされていなかった。

 Revision 1.2.2.2  2005/02/02 00:57:46  dangan
 [bug fix]
     importLevelXHeader(byte[], String) でファイルサイズを int で読み込んでいたため
     31ビット値以上のサイズのファイルを正しく扱えていなかったのを修正。

 Revision 1.2.2.1  2003/07/20 13:19:21  dangan
 [bug fix]
     exportDirNameExtHeader(String) で System.arraycopy の src と dest の配置が間違っていた。

 Revision 1.2  2002/12/08 00:00:00  dangan
 [maintenance]
     LhaConstants から CompressMethod へのクラス名の変更に合わせて修正。

 Revision 1.1  2002/12/05 00:00:00  dangan
 [improvement]
     64ビットファイルサイズヘッダに対応。
 [change]
     LhaUtil.DefaultEncoding から LhaProperty.encoding を使用するように変更。
     getNextHeaderData() を getFirstHeaderData() に名前変更。
     新しい getNextHeaderData() は呼び出された位置で
     ヘッダを発見できない場合 null を返す。
     LhaHeader を拡張したサブクラスを使用する人のための createInstance() を追加。

 Revision 1.0  2002/08/05 00:00:00  dangan
 add to version control
 [bug fix]
     setDate( null ) を許していた。
     setCompressMethod( null ) を許していた。
     exportLevel2,3Header で
     Date が 32bit の time_t の範囲外の値(負の値を含む)の場合を許していた。
 [change]
     exportHeader で ヘッダレベルが 0,1,2,3 のいずれでもない場合
     IllegalStateException を投げるように変更。
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
LhaImmediateOutputStream 接続されたRandomAccessFileに 圧縮データを出力するためのユーティリティクラス。
java.util.zip.ZipOutputStream と似たインターフェイスを持つように作った。
圧縮失敗時( 圧縮後サイズが圧縮前サイズを上回った場合 )の処理を 手動で行わなければならない。 以下に そのようなコードを示す。
 LhaCompressFiles( String arcfile, File[] files ){
   LhaImmediateOutputStream lio = new LhaImmediateOutputStream( arcfile );
 
   for( int i = 0 ; i < files.length ; i++ ){
     RandomAccessFile raf = new RandomAccessFile( files[i] );
     LhaHeader header = new LhaHeader( files[i].getName() );
     header.setLastModified( new Date( files.lastModified() ) );
     header.setOriginalSize( files.length() );
     byte[] buffer  = new byte[8192];
     int    length;
 
     while( 0 <= ( length = raf.read( buffer ) ) ){
         lio.write( buffer, 0, length );
     }
 
     if( !lio.closeEntry() ){
       header.setCompressMethod( CompressMethod.LH0 );
       lio.putNextEntry( lhaheader );
       raf.seek( 0 );
       while( 0 <= ( length = raf.read( buffer ) ) ){
           lio.write( buffer, 0, length );
       }
       lio.closeEntry();
     }
 
   lio.close();
 }
 
進捗報告を実装する場合、このような処理をクラス内に隠蔽すると進捗報告は何秒間か 時によっては何十分も応答しなくなる。(例えばギガバイト級のデータを扱った場合) LhaRetainedOutputStream で発生する、このような事態を避けるために設計されている。
また、JDK 1.1 以前では RandomAccessFile が setLength を持たないため、 書庫データの後ろに他のデータがある場合でもファイルサイズを切り詰めることが出来ない。
この問題点は常にサイズ0の新しいファイルを開く事によって回避する事ができる。
 -- revision history --
 $Log: LhaImmediateOutputStream.java,v $
 Revision 1.2  2002/12/11 02:25:06  dangan
 [bug fix]
     jdk1.2 でコンパイルできなかった箇所を修正。

 Revision 1.1  2002/12/08 00:00:00  dangan
 [maintenance]
     LhaConstants から CompressMethod へのクラス名の変更に合わせて修正。

 Revision 1.0  2002/08/05 00:00:00  dangan
 add to version control
 [change]
     コンストラクタから 引数に String encode を取るものを廃止、
     Properties を引数に取るものを追加。
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
LhaInputStream 接続されたストリームからLHA書庫データを読みこみ、 エントリを解凍しつつ読み込むためのユーティリティクラス。
java.util.zip.ZipInputStream と似たインターフェイスを持つように作った。
壊れた書庫の処理に関しては壊れたエントリ以降の 壊れていないエントリも正常に読みこめない可能性がある。
 -- revision history --
 $Log: LhaInputStream.java,v $
 Revision 1.1.2.1  2003/07/20 13:22:31  dangan
 [bug fix]
     getNextEntry() で CompressMethod.connectDecoder に 
     this.limit を渡すべきところで this.in を渡していた。

 Revision 1.1  2002/12/08 00:00:00  dangan
 [maintenance]
     LhaConstants から CompressMethod へのクラス名の変更に合わせて修正。

 Revision 1.0  2002/08/05 00:00:00  dangan
 add to version control
 [change]
     コンストラクタから 引数に String encode を取るものを廃止、
     Properties を引数に取るものを追加。
     書庫終端に達した場合はそれ以上読み込めないように修正。
     available() の振る舞いを java.util.zip.ZipInputStream と同じように
     エントリの終端に達していない場合は 1 エントリの終端に達した場合は 0 を返すように変更。
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
LhaOutputStream 接続されたストリームに 圧縮データを出力するためのユーティリティクラス。
java.util.zip.ZipOutputStream と似たインターフェイスを持つように作った。 Zipと違い、LHAの出力は本来 2パスであるため、1つのエントリを圧縮するまで、 エントリ全体のデータを持つ一時記憶領域が必要となる。 そのような記憶領域を使用したくない場合は LhaRetainedOutputStream か LhaImmediateOutputStream を使用する事。
 -- revision history --
 $Log: LhaOutputStream.java,v $
 Revision 1.1.2.2  2005/05/03 07:48:40  dangan
 [bug fix]
     圧縮法識別子 -lhd- を指定した時、圧縮後サイズがオリジナルサイズを下回らないため、
     必ず -lh0- に再設定されていた。そのためディレクトリ情報を格納できなかった。

 Revision 1.1.2.1  2005/04/29 02:14:28  dangan
 [bug fix]
     圧縮法識別子 -lhd- を指定した時、圧縮後サイズがオリジナルサイズを下回らないため、
     必ず -lh0- に再設定されていた。そのためディレクトリ情報を格納できなかった。

 Revision 1.1  2002/12/08 00:00:00  dangan
 [maintenance]
     LhaConstants から CompressMethod へのクラス名の変更に合わせて修正。

 Revision 1.0  2002/08/05 00:00:00  dangan
 add to version control
 [change]
     コンストラクタから 引数に String encode を取るものを廃止、
     Properties を引数に取るものを追加。
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
LhaProperty LHA Library for Java の各種設定を扱う。
LhaProperty.getProperty() や LhaProperty.getProperties() で得られる値は システムプロパティ、設定ファイル、デフォルト値の何れかが用いられ、 その優先順位は以下のようになる。
  1. システムプロパティ に設定されている値。
  2. jp/gr/java_conf/dangan/util/lha/resources/lha.properties に設定された値。
  3. デフォルト値。


キーの一覧は以下のとおり。
キー対応する値の説明
lha.encodingString とヘッダ内の文字列との相互変換に用いるエンコーディング
lha.packages生成式内で使われるクラスのパッケージ名の列挙(カンマ区切り)
lha.lzs.encoder-lzs- 形式への符号化を行うオブジェクトの生成式
lha.lz4.encoder-lz4- 形式への符号化を行うオブジェクトの生成式
lha.lz5.encoder-lz5- 形式への符号化を行うオブジェクトの生成式
lha.lh0.encoder-lh0- 形式への符号化を行うオブジェクトの生成式
lha.lh1.encoder-lh1- 形式への符号化を行うオブジェクトの生成式
lha.lh2.encoder-lh2- 形式への符号化を行うオブジェクトの生成式
lha.lh3.encoder-lh3- 形式への符号化を行うオブジェクトの生成式
lha.lh4.encoder-lh4- 形式への符号化を行うオブジェクトの生成式
lha.lh5.encoder-lh5- 形式への符号化を行うオブジェクトの生成式
lha.lh6.encoder-lh6- 形式への符号化を行うオブジェクトの生成式
lha.lh7.encoder-lh7- 形式への符号化を行うオブジェクトの生成式
lha.lhd.encoder-lhd- 形式への符号化を行うオブジェクトの生成式
lha.lzs.decoder-lzs- 形式のデータを復号化するオブジェクトの生成式
lha.lz4.decoder-lz4- 形式のデータを復号化するオブジェクトの生成式
lha.lz5.decoder-lz5- 形式のデータを復号化するオブジェクトの生成式
lha.lh0.decoder-lh0- 形式のデータを復号化するオブジェクトの生成式
lha.lh1.decoder-lh1- 形式のデータを復号化するオブジェクトの生成式
lha.lh2.decoder-lh2- 形式のデータを復号化するオブジェクトの生成式
lha.lh3.decoder-lh3- 形式のデータを復号化するオブジェクトの生成式
lha.lh4.decoder-lh4- 形式のデータを復号化するオブジェクトの生成式
lha.lh5.decoder-lh5- 形式のデータを復号化するオブジェクトの生成式
lha.lh6.decoder-lh6- 形式のデータを復号化するオブジェクトの生成式
lha.lh7.decoder-lh7- 形式のデータを復号化するオブジェクトの生成式
lha.lhd.decoder-lhd- 形式のデータを復号化するオブジェクトの生成式
lha.headerLhaHeader のインスタンスの生成式

生成式は以下のように定義される。
<生成式>::= <コンストラクタ> | <配列> | <置換文字列> | <クラス名> | <文字列>
<コンストラクタ>::= <クラス名> '(' 引数 ')'
<引数>::= [ <生成式> [ ',' <引数> ] ]
<配列>::= '[' <要素> ']'
<要素>::= [ <生成式> [ ',' <要素> ] ]

クラス名は "lha.packages" に対応する値を使用して完全修飾名へと変換される。
置換文字列 はライブラリ内部でオブジェクトに置換される文字列で 現在以下の4種類が定義されている。
lha.???.encoderout圧縮後のデータを受け取る java.io.OutputStream
lha.???.decoderin圧縮データを供給する java.io.InputStream
length復号化されたデータのバイト数
lha.headerdataヘッダデータを格納した byte配列
encodingヘッダ内の文字データを String に変換する際に使用するエンコーディング

 -- revision history --
 $Log: LhaProperty.java,v $
 Revision 1.0.2.2  2005/04/29 02:15:53  dangan
 [bug fix]
     createDefaultProperty() で圧縮法識別子 -lhd- 用のエンコーダどデコーダが設定されていなかった。

 Revision 1.0.2.1  2004/06/27 12:09:49  dangan
 [bugfix]
     生成式でカンマを使うべき部分でピリオドを使っていたのを修正。

 Revision 1.0  2002/12/05 00:00:00  dangan
 first edition
 add to version control

 
LhaRetainedOutputStream 接続されたRandomAccessFileに 圧縮データを出力するためのユーティリティクラス。
java.util.zip.ZipOutputStream と似たインターフェイスを持つように作った。
圧縮失敗時( 圧縮後サイズが圧縮前サイズを上回った場合 )の処理を自動的に行う。 進捗報告を実装する場合、このような処理をクラス内に隠蔽すると進捗報告は何秒間か 時によっては何十分も応答しなくなる。(例えばギガバイト級のデータを扱った場合) このような事態を避けたい場合は LhaImmediateOutputStreamを使用すること。
また、JDK 1.1 以前では RandomAccessFile が setLength を持たないため、 書庫データの後ろに他のデータがある場合でもファイルサイズを切り詰めることが出来ない。 この問題点は常にサイズ0の新しいファイルを開く事によって回避する事ができる。
 -- revision history --
 $Log: LhaRetainedOutputStream.java,v $
 Revision 1.2  2002/12/11 02:25:14  dangan
 [bug fix]
     jdk1.2 でコンパイルできなかった箇所を修正。

 Revision 1.1  2002/12/08 00:00:00  dangan
 [maintenance]
     LhaConstants から CompressMethod へのクラス名の変更に合わせて修正。

 Revision 1.0  2002/08/05 00:00:00  dangan
 add to version control
 [change]
     コンストラクタから 引数に String encode を取るものを廃止、
     Properties を引数に取るものを追加。
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
LzssInputStream LZSS 圧縮されたデータを解凍しながら供給する入力ストリーム。
 -- revision history --
 $Log: LzssInputStream.java,v $
 Revision 1.1  2002/12/08 00:00:00  dangan
 [bug fix]
     mark() 内で接続された PreLzssDecoder の 
     mark に与える readLimit の計算が甘かったのを修正。

 Revision 1.0  2002/07/25 00:00:00  dangan
 add to version control
 [bug fix]
     available() のスペルミスを修正。
     skip() において decode() を呼ぶ判定条件が間違っていたのを修正。
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
LzssOutputStream データを LZSS圧縮しながら 指定された PostLzssEncoder に出力する圧縮用出力ストリーム。
 -- revision history --
 $Log: LzssOutputStream.java,v $
 Revision 1.2  2002/12/06 00:00:00  dangan
 [change]
     flush() で write() された全てのデータを 
     接続された PostLzssEncoder に出力するように修正。
 [maintenance]
     slide幅が常に DictionarySize バイトになるように修正。

 Revision 1.1  2002/10/20 00:00:00  dangan
 [bug fix]
     初期状態で flush() したり 連続で flush() すると
     ( lastsearchret が NEEDSEARCH の時に encode() が呼ばれると )
     直後の 1バイトが化けていた。
     flush() 時に putLength() を考慮していなかったため
     検索機構を破壊するような searchAndPut を行っていたのを修正。
     flush() 時に TextBuffer 最後尾のMaxMatchバイトのデータを出力していなかった。

 Revision 1.0  2002/07/25 00:00:00  dangan
 add to version control
 [bug fix]
     getMatchLen() で searchret >> 22 とすべきところが 
     searchret >>> 22 となっていたのを修正。
 [maintenance]
     LhaUtil.createInstance() の使用をやめ
     代わりに Factory.createInstance() を使用する。
     ソース整備
     タブ廃止
     ライセンス文の修正

 
PatriciaTrieSearch PATRICIA Trie を使用した LzssSearchMethod の実装。
 -- revision history --
 $Log: PatriciaTrieSearch.java,v $
 Revision 1.2  2002/12/10 22:28:55  dangan
 [bug fix]
     put( DictionarySize * 2 )
     searchAndPut( DictionarySize * 2 ) に対応していなかったのを修正。

 Revision 1.1  2002/12/04 00:00:00  dangan
 [change]
     LzssSearchMethod のインタフェイス変更に合わせてインタフェイス変更。
 [maintenance]
     ソース整備

 Revision 1.0  2002/08/15 00:00:00  dangan
 add to version control
 [bug fix]
     contractNode で hashtable からの連結リストに繋ぐのを忘れていた修正。
     配列 に PatriciaTrieSearch.ROOT_NODE(-1) でアクセスしていたのを修正。
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
PostLh1Encoder -lh1- 圧縮用の PostLzssEncoder。
 -- revision history --
 $Log: PostLh1Encoder.java,v $
 Revision 1.1  2002/12/01 00:00:00  dangan
 [maintenance]
     ソース整備

 Revision 1.0  2002/07/31 00:00:00  dangan
 add to version control
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
PostLh2Encoder -lh2- 圧縮用 PostLzssEncoder。
 -- revision history --
 $Log: PostLh2Encoder.java,v $
 Revision 1.1  2002/12/01 00:00:00  dangan
 [maintenance]
     ソース整備

 Revision 1.0  2002/07/31 00:00:00  dangan
 add to version control
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
PostLh3Encoder -lh3- 圧縮用 PostLzssEncoder。
 $Log: PostLh3Encoder.java,v $
 Revision 1.2  2002/12/06 00:00:00  dangan
 [maintenance]
     ソース整備

 Revision 1.1  2002/12/01 00:00:00  dangan
 [change]
     flush() されないかぎり 
     接続された OutputStream をflush() しないように変更。
 [maintenance]
     ソース整備。

 Revision 1.0  2002/07/31 00:00:00  dangan
 add to version control
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
PostLh5Encoder -lh4-, -lh5-, -lh6-, -lh7- 圧縮用 PostLzssEncoder。
 -- revision history --
 $Log: PostLh5Encoder.java,v $
 Revision 1.4  2002/12/08 00:00:00  dangan
 [change]
     クラス名 を PostLh5EncoderCombo から PostLh5Encoder に変更。

 Revision 1.3  2002/12/06 00:00:00  dangan
 [maintenance]
     ソース整備

 Revision 1.2  2002/12/01 00:00:00  dangan
 [change]
     flush() されないかぎり 
     接続された OutputStream をflush() しないように変更。

 Revision 1.1  2002/12/01 00:00:00  dangan
 [bug fix] 
     writeOutGroup でローカル変数 offLenFreq を使用しなければ
     ならない部分で this.offLenFreq を使用していた。
 [maintenance]
     PostLh5Encoder から受け継いだインスタンスフィールド
     buffer, codeFreq, offLenFreq 廃止
     ソース整備

 Revision 1.0  2002/07/31 00:00:00  dangan
 add to version control
 [improvement]
     DivideNum を導入する事によって処理するパターン数の減少を図る。
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
PostLz5Encoder -lz5- 圧縮用 PostLzssEncoder。
 -- revision history --
 $Log: PostLz5Encoder.java,v $
 Revision 1.1  2002/12/01 00:00:00  dangan
 [maintenance]
     ソース整備

 Revision 1.0  2002/07/31 00:00:00  dangan
 add to version control
 [bug fix]
     -lz5- の MaxMatch は 16 でなく 18 だった。
     flush() で出力できるデータを出力していなかったのを修正。
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
PostLzsEncoder -lzs- 圧縮用 PostLzssEncoder。
 -- revision history --
 $Log: PostLzsEncoder.java,v $
 Revision 1.1  2002/12/01 00:00:00  dangan
 [maintenance]
     ソース整備

 Revision 1.0  2002/07/31 00:00:00  dangan
 add to version control
 [bug fix]
     -lzs- の MaxMatch は 16 でなく 17 だったのを修正。
 [maintenance]
     ソース整備
     タブの廃止
     ライセンス文の修正

 
PreLh1Decoder -lh1- 解凍用の PreLzssDecoder。
 -- revision history --
 $Log: PreLh1Decoder.java,v $
 Revision 1.1  2002/12/01 00:00:00  dangan
 [maintenance]
     ソース整備

 Revision 1.0  2002/08/05 00:00:00  dangan
 add to version control
 [bug fix]
     available の計算が甘かったのを修正。
 [maintenance]
     ソース整備

 
PreLh2Decoder -lh2- 解凍用 PreLzssDecoder。
 -- revision history --
 $Log: PreLh2Decoder.java,v $
 Revision 1.1  2002/12/06 00:00:00  dangan
 [maintenance]
     ソース整備

 Revision 1.0  2002/08/05 00:00:00  dangan
 [bug fix]
     available() の計算が甘かったのを修正。
 [maintenance]
     ソース整備

 
PreLh3Decoder -lh3- 解凍用の PreLzssDecoder。
 -- revision history --
 $Log: PreLh3Decoder.java,v $
 Revision 1.1  2002/12/01 00:00:00  dangan
 [maintenance]
     ソース整備

 Revision 1.0  2002/08/05 00:00:00  dangan
 add to version control
 [bug fix]
     available の計算が甘かったのを修正。
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
PreLh5Decoder -lh4-, -lh5-, -lh6-, -lh7- 解凍用の PreLzssDecoder。
 -- revision history --
 $Log: PreLh5Decoder.java,v $
 Revision 1.3  2002/12/08 00:00:00  dangan
 [bug fix]
     readCode でハフマン符号読み込み途中で
     EndOfStream に達した場合に EOFException を投げていなかった。

 Revision 1.2  2002/12/08 00:00:00  dangan
 [change]
     クラス名 を PreLh5DecoderFast から PreLh5Decoder に変更。

 Revision 1.1  2002/12/06 00:00:00  dangan
 [maintenance]
     ソース整備

 Revision 1.0  2002/08/05 00:00:00  dangan
 add to version control
 [maintenance]
     最新の BitInputStream と PreLh5Decoder からソースを取り込む。
     ソース整備
     タブ廃止
     ライセンス文の修正

 
PreLz5Decoder -lz5- 解凍用 PreLzssDecoder。
 -- revision history --
 $Log: PreLz5Decoder.java,v $
 Revision 1.1  2002/12/01 00:00:00  dangan
 [maintenance]
     ソース整備

 Revision 1.0  2002/08/05 00:00:00  dangan
 add to version control
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
PreLzsDecoder -lzs- 解凍用 PreLzssDecoder。
 -- revision history --
 $Log: PreLzsDecoder.java,v $
 Revision 1.1  2002/12/06 00:00:00  dangan
 [maintenance]
     ソース整備

 Revision 1.0  2002/08/05 00:00:00  dangan
 add to version control
 [bug fix]
     -lzs- の MaxMatch が 17 であるべきが 16 となっていたのを修正。
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
SimpleSearch 特別な検索機構を用いない LzssSearchMethod の最もシンプルな実装。
検索機構を用いないため、 他の検索機構を用いる実装と比べると遅いが、 メモリ消費量も非常に少ない。
 -- revision history --
 $Log: SimpleSearch.java,v $
 Revision 1.0  2002/08/05 00:00:00  dangan
 add to version control
 [change]
     LzssSearchMethod のインタフェイス変更にあわせてインタフェイス変更。
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
StaticHuffman 静的ハフマン用ユーティリティ関数群を保持する。
ハフマン符号は最大16ビットに§限される。
 -- revision history --
 $Log: StaticHuffman.java,v $
 Revision 1.0  2002/07/24 00:00:00  dangan
 add to version control
 [maintenance]
     ソース整備
     タブ廃止
     ライセンス文の修正

 
TwoLevelHashSearch 二段階ハッシュと単方向連結リストを使って高速化された LzssSearchMethod。
定兼氏の論文 を参考にした。
 -- revision history --
 $Log: TwoLevelHashSearch.java,v $
 Revision 1.1  2002/12/10 22:06:40  dangan
 [bug fix]
     searchAndPut() で最近の最長一致を取れなかったバグを修正。

 Revision 1.0  2002/12/03 00:00:00  dangan
 first edition
 add to version control

 

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.