www.pudn.com > API Hook 工具相关代码 apihooktest.rar > DataEngine.cpp
#include "stdafx.h"
#include "dataengine.h"
CDataEngine::CDataEngine()
{
}
CDataEngine::~CDataEngine()
{
}
void CDataEngine::parser(const char* pfile)
{
m_info.empty();
if(!pfile)
return;
FILE* pf = fopen(pfile, "rb");
if(!pf)
return;
string str_line;
char c(0);
while(!feof(pf))
{
if(fread(&c, 1, 1, pf) != 1)
break;
if(c == '\r' || c == '\n')
{
if(str_line.length() == 0)
continue;
parserline(str_line);
str_line = "";
}
else
{
str_line += c;
}
}
if(str_line.length() > 0)
parserline(str_line);
}
void CDataEngine::parserline(string& str_line)
{
data_info info;
string* str_act = &info.des_module;
int nflag = 0;
char c(0);
for(int i = 0; i < str_line.length(); i++)
{
c = str_line[i];
if(i == 0 && c == ';')
{
break;
}
if(c == '|')
{
switch(nflag)
{
case 0:
str_act = &info.des_fun;
break;
case 1:
str_act = &info.mine_module;
break;
case 2:
str_act = &info.mine_fun;
break;
}
nflag++;
}
else if(c != ' ')
{
*str_act += c;
}
}
if(info.des_fun.length() > 0 &&
info.des_module.length() > 0 &&
info.mine_fun.length() > 0 &&
info.mine_module.length() > 0)
{
m_info.push_back(info);
}
}
int CDataEngine::get_size()
{
return m_info.size();
}
data_info* CDataEngine::get_info(int nindex)
{
if(m_info.size() < nindex+1)
return NULL;
return &m_info[nindex];
}