diff --git a/openVulkanoCpp/IO/Archive/ArchiveReader.cpp b/openVulkanoCpp/IO/Archive/ArchiveReader.cpp index 546fc5c..9e550e2 100644 --- a/openVulkanoCpp/IO/Archive/ArchiveReader.cpp +++ b/openVulkanoCpp/IO/Archive/ArchiveReader.cpp @@ -206,6 +206,19 @@ namespace openVulkanoCpp return std::nullopt; } + std::optional>> ArchiveReader::GetNextFileAsVector() + { + if (SkipTill(std::filesystem::file_type::regular)) + { + std::pair> file = { GetNextDescription(), std::vector() }; + file.second.resize(file.first.size); + ChkErr(archive_read_data(m_archive, file.second.data(), file.second.size())); + ReadNextHeader(); + return file; + } + return std::nullopt; + } + bool ArchiveReader::GetNextFileAsStream(const std::function& streamReader) { if (SkipTill(std::filesystem::file_type::regular)) diff --git a/openVulkanoCpp/IO/Archive/ArchiveReader.hpp b/openVulkanoCpp/IO/Archive/ArchiveReader.hpp index 9f634af..13e7204 100644 --- a/openVulkanoCpp/IO/Archive/ArchiveReader.hpp +++ b/openVulkanoCpp/IO/Archive/ArchiveReader.hpp @@ -60,6 +60,8 @@ namespace openVulkanoCpp std::optional>> GetNextFile(); + std::optional>> GetNextFileAsVector(); + std::optional StreamNextFile(std::ostream& stream); bool GetNextFileAsStream(const std::function& streamReader);