bool KItemCreate::_LoadCreateInfo(T_MAP& mapCreateInfo, const char* pFileName) { KTabfileLoader& loader = KTabfileLoader::GetInstance(); KTabFile2* pTF2 = loader.GetFileReader(pFileName); if(NULL == pTF2) { AssertFile(pFileName); return false; } KTabFile2& ItemTabFile = *pTF2; INT i = 0; while (true) { i++; int nRet = ItemTabFile.ReadLine(); if(nRet == -1) { loader.CloseFileReader(pTF2); AssertFile(pFileName); return false; } if(nRet == 0) break; typename T_MAP::value_type item; //T_CreateInfo item; int nID = _LoadItemInfo(ItemTabFile, item); if(nID < 0) { Log(LOG_ERROR, "错误的物品ID:%s第%d行错误.", pFileName, i); continue; } if(mapCreateInfo.end() == mapCreateInfo.insert(nID, item)) { Log(LOG_ERROR, "Item initilaze error, item id[%d] duplicate insert", nID); continue; } } loader.CloseFileReader(pTF2); printf("文件[%s]读取记录[%d]条。\n", pFileName, mapCreateInfo.size()); return true; }
void deleteAndClear(T_MAP& map) { for (typename T_MAP::iterator i = map.begin(); i != map.end(); ++i) delete i->second; map.clear(); }
bool contains(T_MAP const map, std::string const value) { return (map.find(value) != map.end()); }