unsigned CArchiveBase::FindFile(const std::string& name) const { const std::string fileName = StringToLower(name); std::map<std::string, unsigned>::const_iterator it = lcNameIndex.find(fileName); if (it != lcNameIndex.end()) return it->second; else return NumFiles(); }
unsigned int IArchive::FindFile(const std::string& filePath) const { const std::string normalizedFilePath = StringToLower(filePath); const std::map<std::string, unsigned int>::const_iterator it = lcNameIndex.find(normalizedFilePath); if (it != lcNameIndex.end()) { return it->second; } else { return NumFiles(); } }
unsigned int IArchive::FindFile(const std::string& filePath) const { const std::string& normalizedFilePath = StringToLower(filePath); const auto it = lcNameIndex.find(normalizedFilePath); if (it != lcNameIndex.end()) return it->second; return NumFiles(); }
bool CArchiveBase::GetFile(const std::string& name, std::vector<boost::uint8_t>& buffer) { unsigned fid = FindFile(name); if (fid < NumFiles()) { GetFile(fid, buffer); return true; } else return false; }
bool IArchive::GetFile(const std::string& name, std::vector<boost::uint8_t>& buffer) { const unsigned int fid = FindFile(name); const bool found = (fid < NumFiles()); if (found) { GetFile(fid, buffer); return true; } return found; }
void CArchiveDir::FileInfo(unsigned fid, std::string& name, int& size) const { assert(fid >= 0 && fid < NumFiles()); name = searchFiles[fid]; const std::string rawpath = filesystem.LocateFile(archiveName+name); std::ifstream ifs(rawpath.c_str(), std::ios::in | std::ios::binary); if (!ifs.bad() && ifs.is_open()) { ifs.seekg(0, std::ios_base::end); size = ifs.tellg(); } else size = 0; }
bool CArchiveDir::GetFile(unsigned fid, std::vector<boost::uint8_t>& buffer) { assert(fid >= 0 && fid < NumFiles()); const std::string rawpath = filesystem.LocateFile(archiveName+searchFiles[fid]); std::ifstream ifs(rawpath.c_str(), std::ios::in | std::ios::binary); if (!ifs.bad() && ifs.is_open()) { ifs.seekg(0, std::ios_base::end); buffer.resize(ifs.tellg()); ifs.seekg(0, std::ios_base::beg); ifs.clear(); ifs.read((char*)&buffer[0], buffer.size()); return true; } else return false; }