in blingfireclient.library/src/FADictConfKeeper.cpp [57:228]
void FADictConfKeeper::Init (const int * pValues, const int Size)
{
LogAssert (m_pLDB);
LogAssert (pValues || 0 >= Size);
FADictConfKeeper::Clear ();
int i2info_mode = FAFsmConst::MODE_PACK_TRIV;
for (int i = 0; i < Size; ++i) {
const int Param = pValues [i];
switch (Param) {
case FAFsmConst::PARAM_NO_TR:
{
m_NoTrUse = true;
break;
}
case FAFsmConst::PARAM_IGNORE_CASE:
{
m_IgnoreCase = true;
break;
}
case FAFsmConst::PARAM_USE_BYTE_ENCODING:
{
m_UseRawBytes = true;
break;
}
case FAFsmConst::PARAM_NO_DUMMY_PREFIX:
{
m_fNoDummyPrefix = true;
break;
}
case FAFsmConst::PARAM_DIRECTION:
{
m_Direction = pValues [++i];
LogAssert (FAFsmConst::DIR_L2R == m_Direction || \
FAFsmConst::DIR_R2L == m_Direction);
break;
}
case FAFsmConst::PARAM_TOKENIZATION_TYPE:
{
m_TokAlgo = pValues [++i];
LogAssert (FAFsmConst::TOKENIZE_DEFAULT <= m_TokAlgo && \
FAFsmConst::TOKENIZE_COUNT > m_TokAlgo);
break;
}
case FAFsmConst::PARAM_ID_OFFSET:
{
m_IdOffset = pValues [++i];
break;
}
case FAFsmConst::PARAM_FSM_TYPE:
{
m_FsmType = pValues [++i];
LogAssert (FAFsmConst::TYPE_MOORE_DFA == m_FsmType || \
FAFsmConst::TYPE_MEALY_DFA == m_FsmType);
break;
}
case FAFsmConst::PARAM_MAP_MODE:
{
i2info_mode = pValues [++i];
LogAssert (FAFsmConst::MODE_PACK_TRIV == i2info_mode || \
FAFsmConst::MODE_PACK_MPH == i2info_mode || \
FAFsmConst::MODE_PACK_FIXED == i2info_mode);
break;
}
case FAFsmConst::PARAM_FSM:
{
const int DumpNum = pValues [++i];
const unsigned char * pDump = m_pLDB->GetDump (DumpNum);
LogAssert (pDump);
if (!m_pRsDfa) {
m_pRsDfa = NEW FARSDfa_pack_triv;
}
m_pRsDfa->SetImage (pDump);
if (FAFsmConst::TYPE_MEALY_DFA == m_FsmType) {
if (!m_pMealy) {
m_pMealy = NEW FAMealyDfa_pack_triv;
}
m_pMealy->SetImage (pDump);
} else {
LogAssert (FAFsmConst::TYPE_MOORE_DFA == m_FsmType);
if (!m_pState2Ow) {
m_pState2Ow = NEW FAState2Ow_pack_triv;
}
m_pState2Ow->SetImage (pDump);
}
break;
}
case FAFsmConst::PARAM_ARRAY:
{
const int DumpNum = pValues [++i];
const unsigned char * pDump = m_pLDB->GetDump (DumpNum);
LogAssert (pDump);
if (!m_pK2I) {
m_pK2I = NEW FAArray_pack;
}
m_pK2I->SetImage (pDump);
break;
}
case FAFsmConst::PARAM_CHARMAP:
{
const int DumpNum = pValues [++i];
const unsigned char * pDump = m_pLDB->GetDump (DumpNum);
LogAssert (pDump);
if (!m_pCharMap)
m_pCharMap = NEW FAMultiMap_pack_fixed;
m_pCharMap->SetImage (pDump);
break;
}
case FAFsmConst::PARAM_MULTI_MAP:
{
const int DumpNum = pValues [++i];
const unsigned char * pDump = m_pLDB->GetDump (DumpNum);
LogAssert (pDump);
if (FAFsmConst::MODE_PACK_TRIV == i2info_mode) {
if (!m_pI2Info_triv) {
m_pI2Info_triv = NEW FAMultiMap_pack;
}
m_pI2Info_triv->SetImage (pDump);
m_pI2Info = m_pI2Info_triv;
} else if (FAFsmConst::MODE_PACK_FIXED == i2info_mode) {
if (!m_pI2Info_fixed) {
m_pI2Info_fixed = NEW FAMultiMap_pack_fixed;
}
m_pI2Info_fixed->SetImage (pDump);
m_pI2Info = m_pI2Info_fixed;
} else {
DebugLogAssert (FAFsmConst::MODE_PACK_MPH == i2info_mode);
if (!m_pI2Info_mph) {
m_pI2Info_mph = NEW FAMultiMap_pack_mph;
}
m_pI2Info_mph->SetImage (pDump);
m_pI2Info = m_pI2Info_mph;
}
break;
}
default:
LogAssert (0);
}
} // of for (int i = 0; ...
}