mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-24 22:14:36 +02:00
vcmi: modernize lib/filesystem
This commit is contained in:
parent
c142bf1072
commit
462599a5c6
@ -48,7 +48,7 @@ std::unordered_set<ResourceID> CMappedFileLoader::getFilteredFiles(std::function
|
||||
{
|
||||
std::unordered_set<ResourceID> foundID;
|
||||
|
||||
for (auto & file : fileList)
|
||||
for(const auto & file : fileList)
|
||||
{
|
||||
if (filter(file.first))
|
||||
foundID.insert(file.first);
|
||||
@ -69,7 +69,7 @@ CFilesystemList::~CFilesystemList()
|
||||
std::unique_ptr<CInputStream> CFilesystemList::load(const ResourceID & resourceName) const
|
||||
{
|
||||
// load resource from last loader that have it (last overridden version)
|
||||
for (auto & loader : boost::adaptors::reverse(loaders))
|
||||
for(const auto & loader : boost::adaptors::reverse(loaders))
|
||||
{
|
||||
if (loader->existsResource(resourceName))
|
||||
return loader->load(resourceName);
|
||||
@ -81,7 +81,7 @@ std::unique_ptr<CInputStream> CFilesystemList::load(const ResourceID & resourceN
|
||||
|
||||
bool CFilesystemList::existsResource(const ResourceID & resourceName) const
|
||||
{
|
||||
for (auto & loader : loaders)
|
||||
for(const auto & loader : loaders)
|
||||
if (loader->existsResource(resourceName))
|
||||
return true;
|
||||
return false;
|
||||
@ -115,7 +115,7 @@ std::set<boost::filesystem::path> CFilesystemList::getResourceNames(const Resour
|
||||
|
||||
void CFilesystemList::updateFilteredFiles(std::function<bool(const std::string &)> filter) const
|
||||
{
|
||||
for (auto & loader : loaders)
|
||||
for(const auto & loader : loaders)
|
||||
loader->updateFilteredFiles(filter);
|
||||
}
|
||||
|
||||
@ -123,8 +123,8 @@ std::unordered_set<ResourceID> CFilesystemList::getFilteredFiles(std::function<b
|
||||
{
|
||||
std::unordered_set<ResourceID> ret;
|
||||
|
||||
for (auto & loader : loaders)
|
||||
for (auto & entry : loader->getFilteredFiles(filter))
|
||||
for(const auto & loader : loaders)
|
||||
for(const auto & entry : loader->getFilteredFiles(filter))
|
||||
ret.insert(entry);
|
||||
|
||||
return ret;
|
||||
@ -155,7 +155,7 @@ std::vector<const ISimpleResourceLoader *> CFilesystemList::getResourcesWithName
|
||||
{
|
||||
std::vector<const ISimpleResourceLoader *> ret;
|
||||
|
||||
for (auto & loader : loaders)
|
||||
for(const auto & loader : loaders)
|
||||
boost::range::copy(loader->getResourcesWithName(resourceName), std::back_inserter(ret));
|
||||
|
||||
return ret;
|
||||
|
@ -125,7 +125,7 @@ void CArchiveLoader::initVIDArchive(const std::string &mountPoint, CFileInputStr
|
||||
offsets.insert(entry.offset);
|
||||
entries[ResourceID(mountPoint + entry.name)] = entry;
|
||||
}
|
||||
offsets.insert((int)fileStream.getSize());
|
||||
offsets.insert(static_cast<int>(fileStream.getSize()));
|
||||
|
||||
// now when we know position of all files their sizes can be set correctly
|
||||
for (auto & entry : entries)
|
||||
@ -201,7 +201,7 @@ std::unordered_set<ResourceID> CArchiveLoader::getFilteredFiles(std::function<bo
|
||||
{
|
||||
std::unordered_set<ResourceID> foundID;
|
||||
|
||||
for (auto & file : entries)
|
||||
for(const auto & file : entries)
|
||||
{
|
||||
if (filter(file.first))
|
||||
foundID.insert(file.first);
|
||||
@ -209,7 +209,7 @@ std::unordered_set<ResourceID> CArchiveLoader::getFilteredFiles(std::function<bo
|
||||
return foundID;
|
||||
}
|
||||
|
||||
void CArchiveLoader::extractToFolder(const std::string & outputSubFolder, CInputStream & fileStream, ArchiveEntry entry)
|
||||
void CArchiveLoader::extractToFolder(const std::string & outputSubFolder, CInputStream & fileStream, const ArchiveEntry & entry) const
|
||||
{
|
||||
si64 currentPosition = fileStream.tell(); // save filestream position
|
||||
|
||||
@ -222,12 +222,12 @@ void CArchiveLoader::extractToFolder(const std::string & outputSubFolder, CInput
|
||||
// writeToOutputFile
|
||||
std::ofstream out(extractedFilePath.string(), std::ofstream::binary);
|
||||
out.exceptions(std::ifstream::failbit | std::ifstream::badbit);
|
||||
out.write((char*)data.data(), entry.fullSize);
|
||||
out.write(reinterpret_cast<char *>(data.data()), entry.fullSize);
|
||||
|
||||
fileStream.seek(currentPosition); // restore filestream position
|
||||
}
|
||||
|
||||
void CArchiveLoader::extractToFolder(const std::string & outputSubFolder, const std::string & mountPoint, ArchiveEntry entry)
|
||||
void CArchiveLoader::extractToFolder(const std::string & outputSubFolder, const std::string & mountPoint, ArchiveEntry entry) const
|
||||
{
|
||||
std::unique_ptr<CInputStream> inputStream = load(ResourceID(mountPoint + entry.name));
|
||||
|
||||
|
@ -68,9 +68,9 @@ public:
|
||||
void updateFilteredFiles(std::function<bool(const std::string &)> filter) const override {}
|
||||
std::unordered_set<ResourceID> getFilteredFiles(std::function<bool(const ResourceID &)> filter) const override;
|
||||
/** Extracts one archive entry to the specified subfolder. Used for Video and Sound */
|
||||
void extractToFolder(const std::string & outputSubFolder, CInputStream & fileStream, ArchiveEntry entry);
|
||||
void extractToFolder(const std::string & outputSubFolder, CInputStream & fileStream, const ArchiveEntry & entry) const;
|
||||
/** Extracts one archive entry to the specified subfolder. Used for Images, Sprites, etc */
|
||||
void extractToFolder(const std::string & outputSubFolder, const std::string & mountPoint, ArchiveEntry entry);
|
||||
void extractToFolder(const std::string & outputSubFolder, const std::string & mountPoint, ArchiveEntry entry) const;
|
||||
|
||||
private:
|
||||
/**
|
||||
|
@ -54,7 +54,7 @@ si64 CBinaryReader::read(ui8 * data, si64 size)
|
||||
si64 bytesRead = stream->read(data, size);
|
||||
if(bytesRead != size)
|
||||
{
|
||||
throw std::runtime_error(getEndOfStreamExceptionMsg((long)size));
|
||||
throw std::runtime_error(getEndOfStreamExceptionMsg(static_cast<long>(size)));
|
||||
}
|
||||
return bytesRead;
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ si64 CBufferedStream::read(ui8 * data, si64 size)
|
||||
{
|
||||
ensureSize(position + size);
|
||||
|
||||
auto start = buffer.data() + position;
|
||||
auto * start = buffer.data() + position;
|
||||
si64 toRead = std::min<si64>(size, buffer.size() - position);
|
||||
|
||||
std::copy(start, start + toRead, data);
|
||||
@ -62,7 +62,7 @@ si64 CBufferedStream::getSize()
|
||||
|
||||
void CBufferedStream::ensureSize(si64 size)
|
||||
{
|
||||
while ((si64)buffer.size() < size && !endOfFileReached)
|
||||
while(static_cast<si64>(buffer.size()) < size && !endOfFileReached)
|
||||
{
|
||||
si64 initialSize = buffer.size();
|
||||
si64 currentStep = std::min<si64>(size, buffer.size());
|
||||
@ -127,7 +127,7 @@ si64 CCompressedStream::readMore(ui8 *data, si64 size)
|
||||
|
||||
int decompressed = inflateState->total_out;
|
||||
|
||||
inflateState->avail_out = (uInt)size;
|
||||
inflateState->avail_out = static_cast<uInt>(size);
|
||||
inflateState->next_out = data;
|
||||
|
||||
do
|
||||
@ -140,7 +140,7 @@ si64 CCompressedStream::readMore(ui8 *data, si64 size)
|
||||
if (availSize != compressedBuffer.size())
|
||||
gzipStream.reset();
|
||||
|
||||
inflateState->avail_in = (uInt)availSize;
|
||||
inflateState->avail_in = static_cast<uInt>(availSize);
|
||||
inflateState->next_in = compressedBuffer.data();
|
||||
}
|
||||
|
||||
@ -162,7 +162,7 @@ si64 CCompressedStream::readMore(ui8 *data, si64 size)
|
||||
break;
|
||||
default:
|
||||
if (inflateState->msg == nullptr)
|
||||
throw std::runtime_error("Decompression error. Return code was " + boost::lexical_cast<std::string>(ret));
|
||||
throw std::runtime_error("Decompression error. Return code was " + std::to_string(ret));
|
||||
else
|
||||
throw std::runtime_error(std::string("Decompression error: ") + inflateState->msg);
|
||||
}
|
||||
|
@ -19,11 +19,6 @@ VCMI_LIB_NAMESPACE_BEGIN
|
||||
class DLL_LINKAGE CInputStream : public virtual CStream
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* D-tor.
|
||||
*/
|
||||
virtual ~CInputStream() {}
|
||||
|
||||
/**
|
||||
* Reads n bytes from the stream into the data buffer.
|
||||
*
|
||||
|
@ -20,7 +20,7 @@ VCMI_LIB_NAMESPACE_BEGIN
|
||||
class DLL_LINKAGE CMemoryBuffer : public CInputOutputStream
|
||||
{
|
||||
public:
|
||||
typedef std::vector<ui8> TBuffer;
|
||||
using TBuffer = std::vector<ui8>;
|
||||
|
||||
/**
|
||||
* C-tor.
|
||||
|
@ -19,11 +19,6 @@ VCMI_LIB_NAMESPACE_BEGIN
|
||||
class DLL_LINKAGE COutputStream : public virtual CStream
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* D-tor.
|
||||
*/
|
||||
virtual ~COutputStream() {}
|
||||
|
||||
/**
|
||||
* Write n bytes from the stream into the data buffer.
|
||||
*
|
||||
|
@ -17,7 +17,7 @@ public:
|
||||
/**
|
||||
* D-tor.
|
||||
*/
|
||||
virtual ~CStream() {}
|
||||
virtual ~CStream() = default;
|
||||
|
||||
/**
|
||||
* Seeks to the specified position.
|
||||
|
@ -15,7 +15,7 @@
|
||||
|
||||
VCMI_LIB_NAMESPACE_BEGIN
|
||||
|
||||
CZipStream::CZipStream(std::shared_ptr<CIOApi> api, const boost::filesystem::path & archive, unz64_file_pos filepos)
|
||||
CZipStream::CZipStream(const std::shared_ptr<CIOApi> & api, const boost::filesystem::path & archive, unz64_file_pos filepos)
|
||||
{
|
||||
zlib_filefunc64_def zlibApi;
|
||||
|
||||
@ -34,7 +34,7 @@ CZipStream::~CZipStream()
|
||||
|
||||
si64 CZipStream::readMore(ui8 * data, si64 size)
|
||||
{
|
||||
return unzReadCurrentFile(file, data, (unsigned int)size);
|
||||
return unzReadCurrentFile(file, data, static_cast<unsigned int>(size));
|
||||
}
|
||||
|
||||
si64 CZipStream::getSize()
|
||||
@ -53,11 +53,11 @@ ui32 CZipStream::calculateCRC32()
|
||||
|
||||
///CZipLoader
|
||||
CZipLoader::CZipLoader(const std::string & mountPoint, const boost::filesystem::path & archive, std::shared_ptr<CIOApi> api):
|
||||
ioApi(api),
|
||||
zlibApi(ioApi->getApiStructure()),
|
||||
archiveName(archive),
|
||||
mountPoint(mountPoint),
|
||||
files(listFiles(mountPoint, archive))
|
||||
ioApi(std::move(api)),
|
||||
zlibApi(ioApi->getApiStructure()),
|
||||
archiveName(archive),
|
||||
mountPoint(mountPoint),
|
||||
files(listFiles(mountPoint, archive))
|
||||
{
|
||||
logGlobal->trace("Zip archive loaded, %d files found", files.size());
|
||||
}
|
||||
@ -82,7 +82,7 @@ std::unordered_map<ResourceID, unz64_file_pos> CZipLoader::listFiles(const std::
|
||||
|
||||
filename.resize(info.size_filename);
|
||||
// Get name of current file. Contrary to docs "info" parameter can't be null
|
||||
unzGetCurrentFileInfo64 (file, &info, filename.data(), (uLong)filename.size(), nullptr, 0, nullptr, 0);
|
||||
unzGetCurrentFileInfo64(file, &info, filename.data(), static_cast<uLong>(filename.size()), nullptr, 0, nullptr, 0);
|
||||
|
||||
std::string filenameString(filename.data(), filename.size());
|
||||
unzGetFilePos64(file, &ret[ResourceID(mountPoint + filenameString)]);
|
||||
@ -113,7 +113,7 @@ std::unordered_set<ResourceID> CZipLoader::getFilteredFiles(std::function<bool(c
|
||||
{
|
||||
std::unordered_set<ResourceID> foundID;
|
||||
|
||||
for (auto & file : files)
|
||||
for(const auto & file : files)
|
||||
{
|
||||
if (filter(file.first))
|
||||
foundID.insert(file.first);
|
||||
@ -124,13 +124,13 @@ std::unordered_set<ResourceID> CZipLoader::getFilteredFiles(std::function<bool(c
|
||||
/// extracts currently selected file from zip into stream "where"
|
||||
static bool extractCurrent(unzFile file, std::ostream & where)
|
||||
{
|
||||
std::array<char, 8 * 1024> buffer;
|
||||
std::array<char, 8 * 1024> buffer{};
|
||||
|
||||
unzOpenCurrentFile(file);
|
||||
|
||||
while (1)
|
||||
while(true)
|
||||
{
|
||||
int readSize = unzReadCurrentFile(file, buffer.data(), (unsigned int)buffer.size());
|
||||
int readSize = unzReadCurrentFile(file, buffer.data(), static_cast<unsigned int>(buffer.size()));
|
||||
|
||||
if (readSize < 0) // error
|
||||
break;
|
||||
@ -151,7 +151,7 @@ static bool extractCurrent(unzFile file, std::ostream & where)
|
||||
return false;
|
||||
}
|
||||
|
||||
std::vector<std::string> ZipArchive::listFiles(boost::filesystem::path filename)
|
||||
std::vector<std::string> ZipArchive::listFiles(const boost::filesystem::path & filename)
|
||||
{
|
||||
std::vector<std::string> ret;
|
||||
|
||||
@ -168,9 +168,9 @@ std::vector<std::string> ZipArchive::listFiles(boost::filesystem::path filename)
|
||||
|
||||
zipFilename.resize(info.size_filename);
|
||||
// Get name of current file. Contrary to docs "info" parameter can't be null
|
||||
unzGetCurrentFileInfo64 (file, &info, zipFilename.data(), (uLong)zipFilename.size(), nullptr, 0, nullptr, 0);
|
||||
unzGetCurrentFileInfo64(file, &info, zipFilename.data(), static_cast<uLong>(zipFilename.size()), nullptr, 0, nullptr, 0);
|
||||
|
||||
ret.push_back(std::string(zipFilename.data(), zipFilename.size()));
|
||||
ret.emplace_back(zipFilename.data(), zipFilename.size());
|
||||
}
|
||||
while (unzGoToNextFile(file) == UNZ_OK);
|
||||
}
|
||||
@ -179,14 +179,14 @@ std::vector<std::string> ZipArchive::listFiles(boost::filesystem::path filename)
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool ZipArchive::extract(boost::filesystem::path from, boost::filesystem::path where)
|
||||
bool ZipArchive::extract(const boost::filesystem::path & from, const boost::filesystem::path & where)
|
||||
{
|
||||
// Note: may not be fast enough for large archives (should NOT happen with mods)
|
||||
// because locating each file by name may be slow. Unlikely slower than decompression though
|
||||
return extract(from, where, listFiles(from));
|
||||
}
|
||||
|
||||
bool ZipArchive::extract(boost::filesystem::path from, boost::filesystem::path where, std::vector<std::string> what)
|
||||
bool ZipArchive::extract(const boost::filesystem::path & from, const boost::filesystem::path & where, const std::vector<std::string> & what)
|
||||
{
|
||||
unzFile archive = unzOpen2_64(from.c_str(), FileStream::GetMinizipFilefunc());
|
||||
|
||||
|
@ -29,7 +29,7 @@ public:
|
||||
* @param archive path to archive to open
|
||||
* @param filepos position of file to open
|
||||
*/
|
||||
CZipStream(std::shared_ptr<CIOApi> api, const boost::filesystem::path & archive, unz64_file_pos filepos);
|
||||
CZipStream(const std::shared_ptr<CIOApi> & api, const boost::filesystem::path & archive, unz64_file_pos filepos);
|
||||
~CZipStream();
|
||||
|
||||
si64 getSize() override;
|
||||
@ -64,13 +64,13 @@ public:
|
||||
namespace ZipArchive
|
||||
{
|
||||
/// List all files present in archive
|
||||
std::vector<std::string> DLL_LINKAGE listFiles(boost::filesystem::path filename);
|
||||
std::vector<std::string> DLL_LINKAGE listFiles(const boost::filesystem::path & filename);
|
||||
|
||||
/// extracts all files from archive "from" into destination directory "where". Directory must exist
|
||||
bool DLL_LINKAGE extract(boost::filesystem::path from, boost::filesystem::path where);
|
||||
bool DLL_LINKAGE extract(const boost::filesystem::path & from, const boost::filesystem::path & where);
|
||||
|
||||
///same as above, but extracts only files mentioned in "what" list
|
||||
bool DLL_LINKAGE extract(boost::filesystem::path from, boost::filesystem::path where, std::vector<std::string> what);
|
||||
bool DLL_LINKAGE extract(const boost::filesystem::path & from, const boost::filesystem::path & where, const std::vector<std::string> & what);
|
||||
}
|
||||
|
||||
VCMI_LIB_NAMESPACE_END
|
||||
|
@ -72,7 +72,7 @@ CZipOutputStream::~CZipOutputStream()
|
||||
|
||||
si64 CZipOutputStream::write(const ui8 * data, si64 size)
|
||||
{
|
||||
int ret = zipWriteInFileInZip(handle, (const void*)data, (unsigned)size);
|
||||
int ret = zipWriteInFileInZip(handle, data, static_cast<unsigned>(size));
|
||||
|
||||
if (ret == ZIP_OK)
|
||||
return size;
|
||||
@ -82,12 +82,11 @@ si64 CZipOutputStream::write(const ui8 * data, si64 size)
|
||||
|
||||
///CZipSaver
|
||||
CZipSaver::CZipSaver(std::shared_ptr<CIOApi> api, const boost::filesystem::path & path):
|
||||
ioApi(api),
|
||||
ioApi(std::move(api)),
|
||||
zipApi(ioApi->getApiStructure()),
|
||||
handle(nullptr),
|
||||
handle(zipOpen2_64(path.c_str(), APPEND_STATUS_CREATE, nullptr, &zipApi)),
|
||||
activeStream(nullptr)
|
||||
{
|
||||
handle = zipOpen2_64((const void *) & path, APPEND_STATUS_CREATE, nullptr, &zipApi);
|
||||
|
||||
if (handle == nullptr)
|
||||
throw std::runtime_error("CZipSaver: Failed to create archive");
|
||||
|
@ -166,7 +166,7 @@ std::streamoff FileBuf::seek(std::streamoff off, std::ios_base::seekdir way)
|
||||
throw std::ios_base::failure("bad seek direction");
|
||||
}
|
||||
}();
|
||||
if(std::fseek(GETFILE, (long)off, src))
|
||||
if(std::fseek(GETFILE, static_cast<long>(off), src))
|
||||
throw std::ios_base::failure("bad seek offset");
|
||||
|
||||
return static_cast<std::streamsize>(std::ftell(GETFILE));
|
||||
|
@ -17,11 +17,11 @@ VCMI_LIB_NAMESPACE_BEGIN
|
||||
class DLL_LINKAGE FileBuf
|
||||
{
|
||||
public:
|
||||
typedef char char_type;
|
||||
typedef struct category_ :
|
||||
using char_type = char;
|
||||
using category = struct category_ :
|
||||
boost::iostreams::seekable_device_tag,
|
||||
boost::iostreams::closable_tag
|
||||
{} category;
|
||||
{};
|
||||
|
||||
FileBuf(const boost::filesystem::path& filename, std::ios_base::openmode mode);
|
||||
|
||||
@ -37,7 +37,7 @@ private:
|
||||
VCMI_LIB_NAMESPACE_END
|
||||
|
||||
struct zlib_filefunc64_def_s;
|
||||
typedef zlib_filefunc64_def_s zlib_filefunc64_def;
|
||||
using zlib_filefunc64_def = zlib_filefunc64_def_s;
|
||||
|
||||
#ifdef VCMI_DLL
|
||||
#ifdef _MSC_VER
|
||||
|
@ -29,7 +29,7 @@ CResourceHandler CResourceHandler::globalResourceHandler;
|
||||
|
||||
CFilesystemGenerator::CFilesystemGenerator(std::string prefix, bool extractArchives):
|
||||
filesystem(new CFilesystemList()),
|
||||
prefix(prefix),
|
||||
prefix(std::move(prefix)),
|
||||
extractArchives(extractArchives)
|
||||
{
|
||||
}
|
||||
@ -48,9 +48,9 @@ CFilesystemGenerator::TLoadFunctorMap CFilesystemGenerator::genFunctorMap()
|
||||
|
||||
void CFilesystemGenerator::loadConfig(const JsonNode & config)
|
||||
{
|
||||
for(auto & mountPoint : config.Struct())
|
||||
for(const auto & mountPoint : config.Struct())
|
||||
{
|
||||
for(auto & entry : mountPoint.second.Vector())
|
||||
for(const auto & entry : mountPoint.second.Vector())
|
||||
{
|
||||
CStopWatch timer;
|
||||
logGlobal->trace("\t\tLoading resource at %s%s", prefix, entry["path"].String());
|
||||
@ -82,7 +82,7 @@ void CFilesystemGenerator::loadDirectory(const std::string &mountPoint, const Js
|
||||
std::string URI = prefix + config["path"].String();
|
||||
int depth = 16;
|
||||
if (!config["depth"].isNull())
|
||||
depth = (int)config["depth"].Float();
|
||||
depth = static_cast<int>(config["depth"].Float());
|
||||
|
||||
ResourceID resID(URI, EResType::DIRECTORY);
|
||||
|
||||
@ -117,7 +117,7 @@ void CFilesystemGenerator::loadJsonMap(const std::string &mountPoint, const Json
|
||||
if (filename)
|
||||
{
|
||||
auto configData = CResourceHandler::get("initial")->load(ResourceID(URI, EResType::TEXT))->readAll();
|
||||
const JsonNode configInitial((char*)configData.first.get(), configData.second);
|
||||
const JsonNode configInitial(reinterpret_cast<char *>(configData.first.get()), configData.second);
|
||||
filesystem->addLoader(new CMappedFileLoader(mountPoint, configInitial), false);
|
||||
}
|
||||
}
|
||||
@ -126,10 +126,10 @@ ISimpleResourceLoader * CResourceHandler::createInitial()
|
||||
{
|
||||
//temporary filesystem that will be used to initialize main one.
|
||||
//used to solve several case-sensivity issues like Mp3 vs MP3
|
||||
auto initialLoader = new CFilesystemList();
|
||||
auto * initialLoader = new CFilesystemList();
|
||||
|
||||
//recurse only into specific directories
|
||||
auto recurseInDir = [&](std::string URI, int depth)
|
||||
auto recurseInDir = [&](const std::string & URI, int depth)
|
||||
{
|
||||
ResourceID ID(URI, EResType::DIRECTORY);
|
||||
|
||||
@ -138,7 +138,7 @@ ISimpleResourceLoader * CResourceHandler::createInitial()
|
||||
auto filename = loader->getResourceName(ID);
|
||||
if (filename)
|
||||
{
|
||||
auto dir = new CFilesystemLoader(URI + '/', *filename, depth, true);
|
||||
auto * dir = new CFilesystemLoader(URI + '/', *filename, depth, true);
|
||||
initialLoader->addLoader(dir, false);
|
||||
}
|
||||
}
|
||||
@ -183,7 +183,7 @@ void CResourceHandler::initialize()
|
||||
knownLoaders["saves"] = new CFilesystemLoader("SAVES/", VCMIDirs::get().userSavePath());
|
||||
knownLoaders["config"] = new CFilesystemLoader("CONFIG/", VCMIDirs::get().userConfigPath());
|
||||
|
||||
auto localFS = new CFilesystemList();
|
||||
auto * localFS = new CFilesystemList();
|
||||
localFS->addLoader(knownLoaders["saves"], true);
|
||||
localFS->addLoader(knownLoaders["config"], true);
|
||||
|
||||
@ -197,7 +197,7 @@ ISimpleResourceLoader * CResourceHandler::get()
|
||||
return get("root");
|
||||
}
|
||||
|
||||
ISimpleResourceLoader * CResourceHandler::get(std::string identifier)
|
||||
ISimpleResourceLoader * CResourceHandler::get(const std::string & identifier)
|
||||
{
|
||||
return knownLoaders.at(identifier);
|
||||
}
|
||||
@ -206,7 +206,7 @@ void CResourceHandler::load(const std::string &fsConfigURI, bool extractArchives
|
||||
{
|
||||
auto fsConfigData = get("initial")->load(ResourceID(fsConfigURI, EResType::TEXT))->readAll();
|
||||
|
||||
const JsonNode fsConfig((char*)fsConfigData.first.get(), fsConfigData.second);
|
||||
const JsonNode fsConfig(reinterpret_cast<char *>(fsConfigData.first.get()), fsConfigData.second);
|
||||
|
||||
addFilesystem("data", CModHandler::scopeBuiltin(), createFileSystem("", fsConfig["filesystem"], extractArchives));
|
||||
}
|
||||
@ -227,7 +227,7 @@ void CResourceHandler::addFilesystem(const std::string & parent, const std::stri
|
||||
return;
|
||||
}
|
||||
|
||||
auto list = dynamic_cast<CFilesystemList *>(knownLoaders.at(parent));
|
||||
auto * list = dynamic_cast<CFilesystemList *>(knownLoaders.at(parent));
|
||||
assert(list);
|
||||
list->addLoader(loader, false);
|
||||
knownLoaders[identifier] = loader;
|
||||
@ -240,8 +240,8 @@ bool CResourceHandler::removeFilesystem(const std::string & parent, const std::s
|
||||
|
||||
if(knownLoaders.count(parent) == 0)
|
||||
return false;
|
||||
|
||||
auto list = dynamic_cast<CFilesystemList *>(knownLoaders.at(parent));
|
||||
|
||||
auto * list = dynamic_cast<CFilesystemList *>(knownLoaders.at(parent));
|
||||
assert(list);
|
||||
list->removeLoader(knownLoaders[identifier]);
|
||||
knownLoaders.erase(identifier);
|
||||
|
@ -72,7 +72,7 @@ public:
|
||||
* @return Returns an instance of resource loader.
|
||||
*/
|
||||
static ISimpleResourceLoader * get();
|
||||
static ISimpleResourceLoader * get(std::string identifier);
|
||||
static ISimpleResourceLoader * get(const std::string & identifier);
|
||||
|
||||
/**
|
||||
* Creates instance of initial resource loader.
|
||||
|
@ -15,63 +15,68 @@
|
||||
|
||||
VCMI_LIB_NAMESPACE_BEGIN
|
||||
|
||||
template <class _Stream> inline uLong streamRead(voidpf opaque, voidpf stream, void * buf, uLong size)
|
||||
template<class Stream>
|
||||
inline uLong streamRead(voidpf opaque, voidpf stream, void * buf, uLong size)
|
||||
{
|
||||
assert(opaque != nullptr);
|
||||
assert(stream != nullptr);
|
||||
|
||||
_Stream * actualStream = static_cast<_Stream *>(stream);
|
||||
auto * actualStream = static_cast<Stream *>(stream);
|
||||
|
||||
return (uLong)actualStream->read((ui8 *)buf, (uLong)size);
|
||||
return static_cast<uLong>(actualStream->read(static_cast<ui8 *>(buf), size));
|
||||
}
|
||||
|
||||
template <class _Stream> inline ZPOS64_T streamTell(voidpf opaque, voidpf stream)
|
||||
template<class Stream>
|
||||
inline ZPOS64_T streamTell(voidpf opaque, voidpf stream)
|
||||
{
|
||||
assert(opaque != nullptr);
|
||||
assert(stream != nullptr);
|
||||
|
||||
_Stream * actualStream = static_cast<_Stream *>(stream);
|
||||
return actualStream->tell();
|
||||
auto * actualStream = static_cast<Stream *>(stream);
|
||||
return actualStream->tell();
|
||||
}
|
||||
|
||||
template <class _Stream> inline long streamSeek(voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)
|
||||
template<class Stream>
|
||||
inline long streamSeek(voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)
|
||||
{
|
||||
assert(opaque != nullptr);
|
||||
assert(stream != nullptr);
|
||||
|
||||
_Stream * actualStream = static_cast<_Stream *>(stream);
|
||||
auto * actualStream = static_cast<Stream *>(stream);
|
||||
|
||||
long ret = 0;
|
||||
switch (origin)
|
||||
{
|
||||
case ZLIB_FILEFUNC_SEEK_CUR :
|
||||
if(actualStream->skip(offset) != offset)
|
||||
ret = -1;
|
||||
break;
|
||||
case ZLIB_FILEFUNC_SEEK_END:
|
||||
{
|
||||
const si64 pos = actualStream->getSize() - offset;
|
||||
if(actualStream->seek(pos) != pos)
|
||||
long ret = 0;
|
||||
switch(origin)
|
||||
{
|
||||
case ZLIB_FILEFUNC_SEEK_CUR:
|
||||
if(actualStream->skip(offset) != offset)
|
||||
ret = -1;
|
||||
}
|
||||
break;
|
||||
case ZLIB_FILEFUNC_SEEK_SET :
|
||||
if(actualStream->seek(offset) != offset)
|
||||
break;
|
||||
case ZLIB_FILEFUNC_SEEK_END:
|
||||
{
|
||||
const si64 pos = actualStream->getSize() - offset;
|
||||
if(actualStream->seek(pos) != pos)
|
||||
ret = -1;
|
||||
}
|
||||
break;
|
||||
case ZLIB_FILEFUNC_SEEK_SET:
|
||||
if(actualStream->seek(offset) != offset)
|
||||
ret = -1;
|
||||
break;
|
||||
default:
|
||||
ret = -1;
|
||||
break;
|
||||
default: ret = -1;
|
||||
}
|
||||
if(ret == -1)
|
||||
}
|
||||
if(ret == -1)
|
||||
logGlobal->error("Stream seek failed");
|
||||
return ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
template <class _Stream> inline int streamProxyClose(voidpf opaque, voidpf stream)
|
||||
template<class Stream>
|
||||
inline int streamProxyClose(voidpf opaque, voidpf stream)
|
||||
{
|
||||
assert(opaque != nullptr);
|
||||
assert(stream != nullptr);
|
||||
|
||||
_Stream * actualStream = static_cast<_Stream *>(stream);
|
||||
auto * actualStream = static_cast<Stream *>(stream);
|
||||
|
||||
logGlobal->trace("Proxy stream closed");
|
||||
|
||||
@ -81,15 +86,6 @@ template <class _Stream> inline int streamProxyClose(voidpf opaque, voidpf strea
|
||||
}
|
||||
|
||||
///CDefaultIOApi
|
||||
CDefaultIOApi::CDefaultIOApi()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CDefaultIOApi::~CDefaultIOApi()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
zlib_filefunc64_def CDefaultIOApi::getApiStructure()
|
||||
{
|
||||
@ -102,11 +98,8 @@ CProxyIOApi::CProxyIOApi(CInputOutputStream * buffer):
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CProxyIOApi::~CProxyIOApi()
|
||||
{
|
||||
|
||||
}
|
||||
//must be instantiated in .cpp file for access to complete types of all member fields
|
||||
CProxyIOApi::~CProxyIOApi() = default;
|
||||
|
||||
zlib_filefunc64_def CProxyIOApi::getApiStructure()
|
||||
{
|
||||
@ -132,7 +125,7 @@ voidpf ZCALLBACK CProxyIOApi::openFileProxy(voidpf opaque, const void * filename
|
||||
if(filename != nullptr)
|
||||
path = static_cast<const boost::filesystem::path::value_type *>(filename);
|
||||
|
||||
return ((CProxyIOApi *)opaque)->openFile(path, mode);
|
||||
return (static_cast<CProxyIOApi *>(opaque))->openFile(path, mode);
|
||||
}
|
||||
|
||||
uLong ZCALLBACK CProxyIOApi::readFileProxy(voidpf opaque, voidpf stream, void * buf, uLong size)
|
||||
@ -145,8 +138,8 @@ uLong ZCALLBACK CProxyIOApi::writeFileProxy(voidpf opaque, voidpf stream, const
|
||||
assert(opaque != nullptr);
|
||||
assert(stream != nullptr);
|
||||
|
||||
CInputOutputStream * actualStream = static_cast<CInputOutputStream *>(stream);
|
||||
return (uLong)actualStream->write((const ui8 *)buf, size);
|
||||
auto * actualStream = static_cast<CInputOutputStream *>(stream);
|
||||
return static_cast<uLong>(actualStream->write(static_cast<const ui8 *>(buf), size));
|
||||
}
|
||||
|
||||
ZPOS64_T ZCALLBACK CProxyIOApi::tellFileProxy(voidpf opaque, voidpf stream)
|
||||
@ -184,10 +177,8 @@ CProxyROIOApi::CProxyROIOApi(CInputStream * buffer):
|
||||
|
||||
}
|
||||
|
||||
CProxyROIOApi::~CProxyROIOApi()
|
||||
{
|
||||
|
||||
}
|
||||
//must be instantiated in .cpp file for access to complete types of all member fields
|
||||
CProxyROIOApi::~CProxyROIOApi() = default;
|
||||
|
||||
zlib_filefunc64_def CProxyROIOApi::getApiStructure()
|
||||
{
|
||||
@ -221,7 +212,7 @@ voidpf ZCALLBACK CProxyROIOApi::openFileProxy(voidpf opaque, const void* filenam
|
||||
if(filename != nullptr)
|
||||
path = static_cast<const boost::filesystem::path::value_type *>(filename);
|
||||
|
||||
return ((CProxyROIOApi *)opaque)->openFile(path, mode);
|
||||
return (static_cast<CProxyROIOApi *>(opaque))->openFile(path, mode);
|
||||
}
|
||||
|
||||
uLong ZCALLBACK CProxyROIOApi::readFileProxy(voidpf opaque, voidpf stream, void * buf, uLong size)
|
||||
|
@ -28,7 +28,7 @@ class CMemoryBuffer;
|
||||
class DLL_LINKAGE CIOApi
|
||||
{
|
||||
public:
|
||||
virtual ~CIOApi(){};
|
||||
virtual ~CIOApi() = default;
|
||||
|
||||
virtual zlib_filefunc64_def getApiStructure() = 0;
|
||||
};
|
||||
@ -38,9 +38,6 @@ public:
|
||||
class DLL_LINKAGE CDefaultIOApi: public CIOApi
|
||||
{
|
||||
public:
|
||||
CDefaultIOApi();
|
||||
~CDefaultIOApi();
|
||||
|
||||
zlib_filefunc64_def getApiStructure() override;
|
||||
};
|
||||
|
||||
@ -49,7 +46,7 @@ class DLL_LINKAGE CProxyIOApi: public CIOApi
|
||||
{
|
||||
public:
|
||||
CProxyIOApi(CInputOutputStream * buffer);
|
||||
~CProxyIOApi();
|
||||
~CProxyIOApi() override;
|
||||
|
||||
zlib_filefunc64_def getApiStructure() override;
|
||||
private:
|
||||
@ -71,7 +68,7 @@ class DLL_LINKAGE CProxyROIOApi: public CIOApi
|
||||
{
|
||||
public:
|
||||
CProxyROIOApi(CInputStream * buffer);
|
||||
~CProxyROIOApi();
|
||||
~CProxyROIOApi() override;
|
||||
|
||||
zlib_filefunc64_def getApiStructure() override;
|
||||
private:
|
||||
|
Loading…
Reference in New Issue
Block a user