#ifdef __cplusplus
#define CEXTERN extern "C"
#else  /* __cplusplus */
#define CEXTERN extern
#endif /* __cplusplus */

// 正規表現にマッチしているかを調べる
CEXTERN unsigned int cpp_regex_match(const char *str, const char *re, const char *option);

// 正規表現でサーチを行う
CEXTERN unsigned int cpp_regex_search(const char *str, const char *re, const char *option, const char *startpoints, const char *lengths);

// 正規表現で文字列置換を行う
CEXTERN char *cpp_regex_replace(const char *str, const char *re, const char *rep, const char *option);

// フォルダの中のファイル・フォルダを再帰的に削除する。書込禁止属性は解除する。使用中等で削除できない場合は無視して処理続行
// 指定フォルダそのものを削除するのではなく、指定フォルダの中身を空にする事に注意。
CEXTERN int emptyDir(const char *folder, FILETIME *bf_ft);

/*

上記関数の引数は、以下の通り。

str : 対象文字列
re  : 正規表現を指定
option : 次の文字が入っているかどうかで判断
         'i' : case-sensitive でない判定を行う
		 's' : すべてを１行として扱う
		 'g' : 全マッチ
rep : 置き換え文字列
startpoints - lengths : 検索対象の部分を表すポインタ

	 ただし、今のところ有効性を確認できているオプションは 'i' のみ

 戻り値は以下の通り。

cpp_regex_match:
cpp_regex_search:
	マッチor見つかった…TRUE(1)
	アンマッチor見つからなかった…FALSE(0)
	エラー…ERRORVALUE(0xffffffff)

cpp_regex_replace:
	置換成功…置換後文字列をstrdupで複製してから返す（あとでfreeすること）
	置換失敗…NULLを返す

*/

CEXTERN INT_PTR ShowOutputDlg( HWND hDlg, LPCSTR szMessage, LPCSTR szTitle, LPCSTR szOutput, int flag );

