#include <atlrx.h>
typedef enum _FUN_TYPE
{
//FUN_ERR = -2,
FUN_NO = -1,
FUN_DEC = 0,
FUN_DEF,
FUN_IS
}FUN_TYPE;
#define REX_MATCH_FUNDEC "{//b+%s//b*//(.*//)//b*;}"
#define REX_MATCH_FUNDEF "{//b+%s//b*//(.*//)//b*//{}"
#define REX_MATCH_FUN "{//b+%s//b*//(.*//)}"
FUN_TYPE FunType(CString strLine,CString strStr)
{
FUN_TYPE RetCode = FUN_NO;
CString strMatch[] = {REX_MATCH_FUNDEC,
REX_MATCH_FUNDEF,
REX_MATCH_FUN};
CString strMatTemp = "";
for(UINT i =0; i < 3; i++)
{
strMatTemp.Format(strMatch[i], strStr);
CAtlRegExp<> reUrl;
REParseError status = reUrl.Parse(strMatTemp);
if (REPARSE_ERROR_OK != status)
{
RetCode = FUN_NO;
continue;
}
CAtlREMatchContext<> mcUrl;
mcUrl.m_uNumGroups = 0;
if (!reUrl.Match(strLine, &mcUrl))
{
RetCode = FUN_NO;
continue;
}
if(mcUrl.m_uNumGroups > 0)
{
//for (UINT nGroupIndex = 0; nGroupIndex < mcUrl.m_uNumGroups; ++nGroupIndex)
//{
// const CAtlREMatchContext<>::RECHAR* szStart = 0;
// const CAtlREMatchContext<>::RECHAR* szEnd = 0;
// mcUrl.GetMatch(nGroupIndex, &szStart, &szEnd);
// ptrdiff_t nLength = szEnd - szStart;
// printf("%d: /"%.*s/"/n", nGroupIndex, nLength, szStart);
//}
RetCode = (FUN_TYPE)i;
break;
}
}
return RetCode;
};