/*	
 *	cliplzss.h
 *
 *	LZSS展開ルーチン
 *
 *	CLiP - Common Library for P/ECE
 *	Copyright (C) 2001-2009 Naoyuki Sawa
 *
 *	* Thu Sep 10 00:42:56 JST 2009 Naoyuki Sawa
 *	- 新規作成。
 */
#ifndef __CLIP_LZSS_H__
#define __CLIP_LZSS_H__

/****************************************************************************
 *	
 ****************************************************************************/

/* 「tool/dlzss12.exe -1 -e」で圧縮されたデータを、展開します。
 * [in]
 *	dst_data	出力バッファ。
 *	dst_lim		出力バッファの最大バイト数。
 *	src_data	入力データ。
 *	src_len		入力データのバイト数。
 * [out]
 *	戻り値		展開データのバイト数。
 * [note]
 *	* 「tool/dlzss12.exe -1 -e」は、ウインドウサイズ15、最大一致長17で、バイト単位の圧縮を行います。
 *	  圧縮データの詳細は、「tool/dlzss12/main.c」を参照してください。
 *	* 出力バッファのバイト数が、展開データのバイト数よりも小さい場合、超過した分は格納しません。
 *	  その場合も、展開データのバイト数は、本来の展開データのバイト数を返します。
 *	- dst_limに0を指定して、展開データのバイト数の情報を取得することも可能です。
 *	  その場合、dst_dataは参照されないので、NULLを指定しても構いません。
 *	  <例>
 *		dst_len = lzss_uncompress1(NULL, 0, src_data, src_len); // 展開データのバイト数を取得する
 *		dst_data = malloc(dst_len);                             // 出力バッファを確保する
 *		lzss_uncompress1(dst_data, dst_len, src_data, src_len); // 展開データを取得する
 */
int lzss_uncompress1(void* dst_data/*[dst_lim]*/, int dst_lim, const void* src_data/*[src_len]*/, int src_len);

/* 「tool/dlzss12.exe -2 -e」で圧縮されたデータを、展開します。
 * [in]
 *	dst_data	出力バッファ。
 *	dst_lim		出力バッファの最大バイト数。
 *	src_data	入力データ。
 *	src_len		入力データのバイト数。
 * [out]
 *	戻り値		展開データのバイト数。
 * [note]
 *	* 「tool/dlzss12.exe -2 -e」は、ウインドウサイズ4096、最大一致長17で、ハーフワード単位の圧縮を行います。
 *	  圧縮データの詳細は、「tool/dlzss12/main.c」を参照してください。
 *	* 出力バッファのバイト数が、展開データのバイト数よりも小さい場合、超過した分は格納しません。
 *	  その場合も、展開データのバイト数は、本来の展開データのバイト数を返します。
 *	- dst_limに0を指定して、展開データのバイト数の情報を取得することも可能です。
 *	  その場合、dst_dataは参照されないので、NULLを指定しても構いません。
 *	  <例>
 *		dst_len = lzss_uncompress2(NULL, 0, src_data, src_len); // 展開データのバイト数を取得する
 *		dst_data = malloc(dst_len);                             // 出力バッファを確保する
 *		lzss_uncompress2(dst_data, dst_len, src_data, src_len); // 展開データを取得する
 */
int lzss_uncompress2(void* dst_data/*[dst_lim]*/, int dst_lim, const void* src_data/*[src_len]*/, int src_len);

#endif /*__CLIP_LZSS_H__*/
