diff --git a/openVulkanoCpp/IO/Archive/ArchiveReader.cpp b/openVulkanoCpp/IO/Archive/ArchiveReader.cpp index 2eeec6a..3acdc63 100644 --- a/openVulkanoCpp/IO/Archive/ArchiveReader.cpp +++ b/openVulkanoCpp/IO/Archive/ArchiveReader.cpp @@ -216,6 +216,18 @@ namespace OpenVulkano } return count; } + + size_t ArchiveReader::ExtractRemaining(const std::filesystem::path& targetDir, const std::function extractionCallback) + { + size_t count = 0; + std::optional fd; + while (fd = ExtractNext(targetDir)) + { + extractionCallback(fd.value()); + count++; + } + return count; + } bool ArchiveReader::HasNext() const { diff --git a/openVulkanoCpp/IO/Archive/ArchiveReader.hpp b/openVulkanoCpp/IO/Archive/ArchiveReader.hpp index c66abb2..a7f05e9 100644 --- a/openVulkanoCpp/IO/Archive/ArchiveReader.hpp +++ b/openVulkanoCpp/IO/Archive/ArchiveReader.hpp @@ -55,6 +55,8 @@ namespace OpenVulkano [[deprecated]] size_t ExtractRemaining(std::string_view targetDir); size_t ExtractRemaining(const std::filesystem::path& targetDir); + + size_t ExtractRemaining(const std::filesystem::path& targetDir, const std::function extractionCallback); // Element wise operations [[nodiscard]] bool HasNext() const;