/*-----------------------------------------------------------------------------
[名称]	TokenReader.h
[概要]	BREGEXP（DLL)ヘッダ
[備考]	ＢＲＥＧＥＸＰ ＤＬＬ
		http://www.hi-ho.ne.jp/babaq/bregexp.html
[履歴]	2003-01-25	NC		コメント付加(moralog)
-----------------------------------------------------------------------------*/
#ifndef _BREGEXP_H_INCLUDED
#define _BREGEXP_H_INCLUDED

#ifdef _BREGEXP_
#define BREGEXPAPI __declspec(dllexport) 
#else
#define BREGEXPAPI __declspec(dllimport) 
#endif


/*-----------------------------------------------------------------------------
[名称]	マッチ情報構造体(BREGEXP)
[用途]	マッチ情報などを格納しているらしい。
[備考]	なし
-----------------------------------------------------------------------------*/
typedef struct bregexp{
	const char *outp;		// BSubst 置換データの先頭ポインタ
	const char *outendp;	// BSubst 置換データの最終ポインタ+1
// ▼ xxxxx BGN 2003.01.25 (moralog)
// warning C4510, C4610 を回避するために const属性をはずす
	int  splitctr;			// BSplit 配列数
// ▽ oridinal BGN
//	const int  splitctr;	// BSplit 配列数
// △ oridinal END
// ▲ xxxxx END
	const char **splitp;	// BSplit データポインタ
	int	rsv1;		// リザーブ　自由に使用可能 
	char *parap;		// パターンデータポインタ
	char *paraendp;		// パターンデータポインタ+1
	char *transtblp;	// BTrans 変換テーブルポインタ
	char **startp;		// マッチしたデータの先頭ポインタ
	char **endp;		// マッチしたデータの最終ポインタ+1
	int nparens;		// パターンの中の() の数。 $1,$2, を調べるときに使用
} BREGEXP;


//-----------------------------------------------------------------------------
// DLL I/F関数プロトタイプ
//-----------------------------------------------------------------------------
#if defined(__cplusplus)
extern "C"
{
#endif

BREGEXPAPI
int BMatch(char* str,char *target,char *targetendp,
				BREGEXP **rxp,char *msg) ;
BREGEXPAPI
int BSubst(char* str,char *target,char *targetendp,
				BREGEXP **rxp,char *msg) ;
BREGEXPAPI
int BTrans(char* str,char *target,char *targetendp,
				BREGEXP **rxp,char *msg) ;
BREGEXPAPI
int BSplit(char* str,char *target,char *targetendp,
				int limit,BREGEXP **rxp,char *msg);
BREGEXPAPI
void BRegfree(BREGEXP* rx);

BREGEXPAPI
char* BRegexpVersion(void);

#if defined(__cplusplus)
}
#endif


#undef BREGEXPAPI
#endif // _BREGEXP_H_INCLUDED
