/** @file JCFileTable.cpp @brief @author James @version 1.0 @date 2016_5_11 */ #include "JCFileTable.h" #include "../fileSystem/JCFileSystem.h" #include namespace laya { JCFileTable::JCFileTable(){ } JCFileTable::~JCFileTable(){ } void JCFileTable::init(){ } //fileid chksum \r\n //数字都是10进制的 int JCFileTable::initByString( const char* p_pszStr ){ //split by \r\n const char* pCur = p_pszStr; const char* pCurData=pCur; std::vector allData; allData.reserve(1024); while(*pCur!=0){ while(*pCur==' '||*pCur=='\r'||*pCur=='\n'){ pCur++; } if(*pCur==0) break; const char* pData=pCur; while(*pCur!=' '&&*pCur!='\r'&&*pCur!='\n'&&*pCur!=0){ pCur++; } int len = (long)pCur-(long)pData-1; //之所以用strtoul是为了能得到unsigned int的值,如果用atoi的话,会出错。 allData.push_back( strtoul(pData,0,16)); } if( allData.size()%2!=0){ //printf("fileTable::initByString 不合理的参数,应该为偶数个数据"); //throw -1; return 0; } for( int i=0,sz=(int)allData.size()/2; ichksum; return true; } p_nChkSum = 0; return false; } void JCFileTable::_addFile( unsigned int p_nFileID, unsigned int p_nChkSum ){ unsigned char idx = (p_nFileID>>24)&0xff; std::vector& b = m_AllItem[idx]; for( int i=0,sz=(int)b.size(); i