このページの内容

ユーティリティ関数



以下のユーティリティ関数は、基本的なストリーム指向の関数を使って実装しています。 インターフェイスを簡単にするため、圧縮レベル、メモリ使用量、標準のメモリ確保関数には 既定のオプションを想定しています。特別なオプションが必要なら、これらの関数のソースコードを 変更できます。関数の_z版は、長さにsize_t型を使います。Windowsではlongが32ビットであることに 注意してください。


ZEXTERN int ZEXPORT compress(Bytef *dest, uLongf *destLen,
                             const Bytef *source, uLong sourceLen);
ZEXTERN int ZEXPORT compress_z(Bytef *dest, z_size_t *destLen,
                               const Bytef *source, z_size_t sourceLen);
元バッファーを宛先バッファーへ圧縮します。sourceLenは元バッファーのバイト長です。 呼び出し時のdestLenは宛先バッファーの総サイズであり、少なくとも compressBound(sourceLen)の戻り値以上でなければなりません。戻る際のdestLenは、 圧縮データの実際のサイズです。compress()は、levelにZ_DEFAULT_COMPRESSIONを 指定したcompress2()と同等です。 compressは、成功時にZ_OK、メモリ不足時にZ_MEM_ERROR、出力バッファーの 空きが足りなければZ_BUF_ERRORを返します。


ZEXTERN int ZEXPORT compress2(Bytef *dest, uLongf *destLen,
                              const Bytef *source, uLong sourceLen,
                              int level);
ZEXTERN int ZEXPORT compress2_z(Bytef *dest, z_size_t *destLen,
                                const Bytef *source, z_size_t sourceLen,
                                int level);
元バッファーを宛先バッファーへ圧縮します。levelの意味はdeflateInitと同じです。 sourceLenは元バッファーのバイト長です。呼び出し時のdestLenは宛先バッファーの総サイズであり、 少なくともcompressBound(sourceLen)の戻り値以上でなければなりません。 戻る際のdestLenは圧縮データの実際のサイズです。 compress2は、成功時にZ_OK、メモリ不足時にZ_MEM_ERROR、出力バッファーの 空きが足りなければZ_BUF_ERROR、levelが不正ならZ_STREAM_ERRORを返します。


ZEXTERN uLong ZEXPORT compressBound(uLong sourceLen);
ZEXTERN z_size_t ZEXPORT compressBound_z(z_size_t sourceLen);
compressBound()は、sourceLenバイトにcompress()またはcompress2()を適用した後の 圧縮サイズの上限を返します。宛先バッファーを確保するために、compress()または compress2()より前に呼び出します。


ZEXTERN int ZEXPORT uncompress(Bytef *dest, uLongf *destLen,
                               const Bytef *source, uLong sourceLen);
ZEXTERN int ZEXPORT uncompress_z(Bytef *dest, z_size_t *destLen,
                                 const Bytef *source, z_size_t sourceLen);
元バッファーを宛先バッファーへ展開します。sourceLenは元バッファーのバイト長です。 呼び出し時の*destLenは宛先バッファーの総サイズであり、展開データ全体を保持できるだけの 大きさが必要です。(非圧縮データのサイズは、圧縮側が事前に保存し、この圧縮ライブラリの 範囲外の仕組みで展開側へ伝えておかなければなりません。)戻る際の*destLenは、 展開データの実際のサイズです。 uncompressは、成功時にZ_OK、メモリ不足時にZ_MEM_ERROR、出力バッファーの 空きが足りなければZ_BUF_ERROR、入力データが破損しているか不完全ならZ_DATA_ERRORを返します。 空きが足りない場合、uncompress()はその時点までの展開データで出力バッファーを満たします。


ZEXTERN int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen,
                                const Bytef *source, uLong *sourceLen);
ZEXTERN int ZEXPORT uncompress2_z(Bytef *dest, z_size_t *destLen,
                                  const Bytef *source, z_size_t *sourceLen);
uncompressと同じですが、sourceLenがポインターであり、元データの長さは*sourceLenです。 戻る際の*sourceLenは、消費した元データのバイト数です。