// ＡＩＧライブラリ  ファイルキャッシュ関数
//	Copyright (C) 1989-1994 by AIG-SOFT

#ifndef	__AIG_CASH__
#define	__AIG_CASH__	2	/* ヘッダー読み込みシンボル */

#include <stdio.h>
#include "deftype.h"

/* type-2 cash関数 構造体 */
typedef struct cfile {
	FILE	*cfp;	/* ファイルポインター */
	short	cflag;	/* オープンフラグ:>0:memory,0:file,-1:not cash */
	unchar	*cbuff;	/* バッファー */
	long	csize;	/* サイズ */
	long	cseek;	/* シークポインター */
} CFILE;


#ifdef	__cplusplus
// 95/11 : G++対応
extern	"C" {
#endif

#ifdef	__PROTO_TYPE
	/* type-1 */
	int	cash_fclose(FILE *);
	int	cash_fmode(void);
	int	cash_fseek(FILE *,long ,int);
	int	cash_fread(unchar *,int ,int ,FILE *);
	int	cash_fgetc(FILE *);
	int	cash_rewind(FILE *);
	int	cash_read1line0(FILE *,unchar *,unchar *,int);
	int	cash_read1line1(FILE *,unchar *,int);
	int	cash_read1line2(FILE *,unchar *,int ,int);
	long	cash_ftell(FILE *);
	long	cash_filelength(int);
	unchar	*cash_fgets(unchar *,int ,FILE *);
	FILE	*cash_fopen(char *,char *);
	/* type-2 */
	int	cash2_fclose(CFILE *);
	int	cash2_fmode(CFILE *);
	int	cash2_fseek(CFILE *,long ,int);
	int	cash2_fread(unchar *,int ,int ,CFILE *);
	int	cash2_fgetc(CFILE *);
	int	cash2_rewind(CFILE *);
	int	cash2_read1line0(CFILE *,unchar *,unchar *,int);
	int	cash2_read1line1(CFILE *,unchar *,int);
	int	cash2_read1line2(CFILE *,unchar *,int ,int);
	long	cash2_ftell(CFILE *);
	long	cash2_filelength(CFILE *);
	unchar	*cash2_fgets(unchar *,int ,CFILE *);
	FILE	*cash2_fopen(CFILE *,char *,char *);
#else
	/* type-1 */
	int	cash_fclose();
	int	cash_fmode();
	int	cash_fseek();
	int	cash_fread();
	int	cash_fgetc();
	int	cash_rewind();
	int	cash_read1line0();
	int	cash_read1line1();
	int	cash_read1line2();
	long	cash_ftell();
	long	cash_filelength();
	unchar	*cash_fgets();
	FILE	*cash_fopen();
	/* type-2 */
	int	cash2_fclose();
	int	cash2_fmode();
	int	cash2_fseek();
	int	cash2_fread();
	int	cash2_fgetc();
	int	cash2_rewind();
	int	cash2_read1line0();
	int	cash2_read1line1();
	int	cash2_read1line2();
	long	cash2_ftell();
	long	cash2_filelength();
	unchar	*cash2_fgets();
	FILE	*cash2_fopen();
#endif
#ifdef	__cplusplus
}
#endif

/* マクロ関数 for type-2 cash */
#define	cash2_fmode(fp)		(fp->cflag)	// キャッシュモード確認

#endif
