summaryrefslogtreecommitdiffhomepage
path: root/ArchiveEx/Archive.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ArchiveEx/Archive.cpp')
-rw-r--r--ArchiveEx/Archive.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/ArchiveEx/Archive.cpp b/ArchiveEx/Archive.cpp
index 808b6fc..b39de88 100644
--- a/ArchiveEx/Archive.cpp
+++ b/ArchiveEx/Archive.cpp
@@ -3,6 +3,7 @@
#include <cstdint>
#include <cstdio>
#include <cstring>
+#include <functional>
#include <memory>
#include <zlib.h>
@@ -292,27 +293,27 @@ Archive::FindFreeSpot(const std::size_t bytes) const
void
-Archive::PrintNamesOfEntries() const
+Archive::ForEachEntry(std::function<void(const char*)> func) const
{
for (const auto& entry : entries)
- std::printf("%s\n", entry.name);
+ func(entry.name);
}
void
-Archive::PrintBlocks() const
+Archive::ForEachBlock(std::function<void(const char*)> func) const
{
- for (std::size_t i = 0; i < blocks.size(); ++i) {
- std::printf("%ld\t", i);
- switch (blocks[i]) {
+ for (const int content : blocks) {
+ switch (content) {
case UNUSED_BLOCK:
- std::printf("(unused)\n");
+ func("(unused)");
break;
case DIRECTORY_BLOCK:
- std::printf("(dir)\n");
+ func("(directory)");
break;
default:
- std::printf("%s\n", entries[blocks[i]].name);
+ func(entries[content].name);
+ break;
}
}
}