#ifndef __RegNodeEnumChar_h
#define __RegNodeEnumChar_h

#include "RegExpNode.h"		// Superclass.

/*************************************************************************
 * <_xZkqqHx_iDhEiDeAiDeDiDiL_xHqqkZx_>	RegNodeEnumChar.h
 *
 * <_xZkqqHx_iLeAjEfM_xHqqkZx_>	_xZkqqHx_jAlDiLeLjFfMiMlLiOkOjCiGiCmMiBeBjHpBiLjDjFlGiOjKiDeOiDiJiDfIiDgNiBfLiDgI_xHqqkZx_([]_xZkqqHx_iCmFiImNiCnMiCoKiCoJ_xHqqkZx_)_xZkqqHx_iCmM_xHqqkZx_
 *			_xZkqqHx_iDeJiDhFiDfHiDeGiDeOiDgHiCpAjCoIiLgAiClHiCoJiDhHiDgCiDfPiBfLiDhEiDeAiDeDiDiLiBeC_xHqqkZx_
 *
 * <_xZkqqHx_jHjKjHpA_xHqqkZx_>	01.01.16 Fukushiro M. _xZkqqHx_iNoMjAkM_xHqqkZx_
 *************************************************************************/

/*************************************************************************
 * <_xZkqqHx_iDeOiDiJiDfI_xHqqkZx_>	RegEnumAtom
 *
 * <_xZkqqHx_iLeAjEfM_xHqqkZx_>	RegNodeEnumChar_xZkqqHx_iDeOiDiJiDfIjCiGiCmJiOgHiCoNiCoKiCoJiBeBiCfAiDeHiDiMiDiBiDjDiDgHiDeOiDiJiDfIiBeC_xHqqkZx_
 *			[ABCF-K]_xZkqqHx_iCmMiPoKiNiHiBeB_xHqqkZx_"A", "B", "C", "F-K" _xZkqqHx_iCmMiClLiCoKiClMiCoKiCkKiCfAiCmCiCmM_xHqqkZx_
 *			_xZkqqHx_iDeHiDiMiDiBiDjDiDgHiCmGiClFiCmEiIlFiCoNiCoKiCoJiBeC_xHqqkZx_
 *
 * <_xZkqqHx_jHjKjHpA_xHqqkZx_>	01.01.16 Fukushiro M. _xZkqqHx_iNoMjAkM_xHqqkZx_
 *************************************************************************/
class RegEnumAtom
{
public:
	RegEnumAtom (WORD wCharFrom, WORD wCharUntil) :
				m_wCharFrom(wCharFrom), m_wCharUntil(wCharUntil) {}
	BOOL	IsMatch (WORD wChar);
public:
	WORD	m_wCharFrom;
	WORD	m_wCharUntil;
}; // class RegEnumAtom.

typedef vector<RegEnumAtom> RegEnumAtomVector;

/*************************************************************************
 * <_xZkqqHx_iDeOiDiJiDfI_xHqqkZx_>	RegNodeEnumChar
 *
 * <_xZkqqHx_iLeAjEfM_xHqqkZx_>	_xZkqqHx_jHpBiLjDjFlGiOjKiDeOiDiJiDfIiDgNiBfLiDgIiCmMiDeOiDiJiDfIiBeC_xHqqkZx_
 *
 * <_xZkqqHx_jHjKjHpA_xHqqkZx_>	01.01.16 Fukushiro M. _xZkqqHx_iNoMjAkM_xHqqkZx_
 *************************************************************************/
class RegNodeEnumChar : public RegNodeAnyChar
{
public:
	RegNodeEnumChar (WORD wFlags);
	virtual BOOL	SetExpression (CTCP& tcpHead);
	virtual BOOL	IsKindOf (NODE_TYPE type);
	virtual BOOL	IsMatch (WORD& wPreChar, CTCP& tcpStr, CTCP tcpStrEnd);
public:
	WORD	m_wFlags;
	BOOL	m_bInvert;		// _xZkqqHx_jElNjDfNiBeIiBgJ_xHqqkZx_[^_xZkqqHx_iBgK_xHqqkZx_
	RegEnumAtomVector	m_vElement;
}; // class RegNodeEnumChar.

#endif//!__RegNodeEnumChar_h
