in blingfireclient.library/src/FAWbdConfKeeper.cpp [56:232]
void FAWbdConfKeeper::Initialize (const FALDB * pLDB, const int * pValues, const int Size)
{
LogAssert (pLDB);
LogAssert (pValues || 0 >= Size);
int FsmType = FAFsmConst::TYPE_MOORE_DFA;
const unsigned char * pFsmDump = NULL;
FAWbdConfKeeper::Clear ();
for (int i = 0; i < Size; ++i) {
const int Param = pValues [i];
switch (Param) {
case FAFsmConst::PARAM_MAP_MODE:
{
const int MMType = pValues [++i];
LogAssert (FAFsmConst::MODE_PACK_TRIV == MMType);
break;
}
case FAFsmConst::PARAM_DEPTH:
{
m_MaxDepth = pValues [++i];
LogAssert (0 <= m_MaxDepth);
break;
}
case FAFsmConst::PARAM_MAX_LENGTH:
{
m_MaxTokenLength = pValues [++i];
LogAssert (0 <= m_MaxTokenLength);
break;
}
case FAFsmConst::PARAM_IGNORE_CASE:
{
m_IgnoreCase = true;
break;
}
case FAFsmConst::PARAM_FSM_TYPE:
{
FsmType = pValues [++i];
LogAssert (FAFsmConst::TYPE_MOORE_DFA == FsmType ||
FAFsmConst::TYPE_MOORE_MULTI_DFA == FsmType);
break;
}
case FAFsmConst::PARAM_FSM:
{
const int DumpNum = pValues [++i];
pFsmDump = pLDB->GetDump (DumpNum);
LogAssert (pFsmDump);
if (!m_pRsDfa) {
m_pRsDfa = new FARSDfa_pack_triv;
LogAssert (m_pRsDfa);
}
m_pRsDfa->SetImage (pFsmDump);
m_pRsDfaA = m_pRsDfa;
break;
}
case FAFsmConst::PARAM_MULTI_MAP:
{
const int DumpNum = pValues [++i];
const unsigned char * pDump = pLDB->GetDump (DumpNum);
LogAssert (pDump);
if (!m_pMMapTriv) {
m_pMMapTriv = new FAMultiMap_pack;
LogAssert (m_pMMapTriv);
}
m_pMMapTriv->SetImage (pDump);
m_pMMapA = m_pMMapTriv;
break;
}
case FAFsmConst::PARAM_CHARMAP:
{
const int DumpNum = pValues [++i];
const unsigned char * pDump = pLDB->GetDump (DumpNum);
LogAssert (pDump);
if (!m_pCharMap) {
m_pCharMap = new FAMultiMap_pack_fixed;
LogAssert (m_pCharMap);
}
m_pCharMap->SetImage (pDump);
break;
}
case FAFsmConst::PARAM_ACT_DATA:
{
const int DumpNum = pValues [++i];
const unsigned char * pDump = pLDB->GetDump (DumpNum);
LogAssert (pDump);
if (!m_pActData) {
m_pActData = new FAMultiMap_pack;
LogAssert (m_pActData);
}
m_pActData->SetImage (pDump);
m_pActDataCA = m_pActData;
break;
}
case FAFsmConst::PARAM_PUNKT:
{
m_TagPunkt = pValues [++i];
break;
}
case FAFsmConst::PARAM_EOS:
{
m_TagEos = pValues [++i];
break;
}
case FAFsmConst::PARAM_EOP:
{
m_TagEop = pValues [++i];
break;
}
case FAFsmConst::PARAM_WORD:
{
m_TagWord = pValues [++i];
break;
}
case FAFsmConst::PARAM_XWORD:
{
m_TagXWord = pValues [++i];
break;
}
case FAFsmConst::PARAM_SEG:
{
const int Tag = pValues [++i];
m_TagSeg = Tag;
break;
}
case FAFsmConst::PARAM_IGNORE:
{
m_TagIgnore = pValues [++i];
break;
}
case FAFsmConst::PARAM_MAX_TAG:
{
m_MaxTag = pValues [++i];
break;
}
default:
LogAssert (false);
}
} // of for (int i = 0; ...
/// create an appropriate reaction map, if needed
if (NULL == pFsmDump) {
return;
}
if (FAFsmConst::TYPE_MOORE_DFA == FsmType) {
if (!m_pState2Ow) {
m_pState2Ow = new FAState2Ow_pack_triv;
LogAssert (m_pState2Ow);
}
m_pState2Ow->SetImage (pFsmDump);
m_pState2OwA = m_pState2Ow;
} else if (FAFsmConst::TYPE_MOORE_MULTI_DFA == FsmType) {
if (!m_pState2Ows) {
m_pState2Ows = new FAState2Ows_pack_triv;
LogAssert (m_pState2Ows);
}
m_pState2Ows->SetImage (pFsmDump);
} else {
// wrong FsmType value
LogAssert (false);
}
// calculates functions' initial states
CalcFnIniStates ();
}