// ★コメント未記入
// FinderBREGEXP.h: CFinderBREGEXP クラスのインターフェイス
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_FINDERBREGEXP_H__57932F3E_897B_46FA_910A_20A23A9CAD68__INCLUDED_)
#define AFX_FINDERBREGEXP_H__57932F3E_897B_46FA_910A_20A23A9CAD68__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "Finder.h"

class CFinderBREGEXP : public CFinder  
{
public:
	CFinderBREGEXP();
	virtual ~CFinderBREGEXP();


	virtual BOOL	IsAlive();
	virtual CString	Name();
	virtual BOOL	EnableCareCase(){ return( FALSE ); };
	virtual BOOL	IsRegExp(){ return( TRUE ); };

	// 行から文字列を検索
	virtual BOOL FindAtLine(
		CString&			strTarget,
		long				idxStartColumn,
		long				idxEndColumn,
		CString&			strSubString,
		long*				pidxFoundCaretColumn,
		long*				pnCaretColumn,
		BOOL				bCaseCare,
		BOOL				bToken
	);

	virtual CString GetReplaceWord(
		CShitarabianDoc*	pDoc,
		long				idxRow,
		long				idxStartColumn,
		long				idxEndColumn,
		CString&			strSubString,
		CString&			strReplaceFormat,
		BOOL				bCaseCare,
		BOOL				bToken
	);


	// 行から文字列を検索
	BOOL Match(
		const char*			pTarget,
		const char*			pSubString,		// パターンとして完成した文字列
		long*				pidxFoundByte,
		long*				pnFoundByte,
		BOOL				bCaseCare,
		BOOL				bToken
	);

	virtual long GetMatchz(
		CString&					strSrc,
		CString&					strSubString,
		CArray<TMatch, TMatch& >*	paMatchz,
		BOOL						bCaseCare,
		BOOL						bToken,
		BOOL						bNeedSubMatch = FALSE
	);

	virtual BOOL QuickMatch(
		LPCTSTR						strSrc,
		CString&					strSubString,
		TMatch*						pMatch,
		BOOL						bCaseCare,
		BOOL						bToken
	);

};

#endif // !defined(AFX_FINDERBREGEXP_H__57932F3E_897B_46FA_910A_20A23A9CAD68__INCLUDED_)
