aboutsummaryrefslogtreecommitdiff
path: root/src/ArchiveFile.hxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-01-29 23:36:58 +0100
committerMax Kellermann <max@duempel.org>2013-01-30 15:30:19 +0100
commit16afdfd8747a1bd5af2d1acb4e0845bf9d0b89e7 (patch)
tree39afbcabd53af0000a8b200301bbfc1178fdadd5 /src/ArchiveFile.hxx
parent701fff03d27be629f416534744217eadbde11da4 (diff)
ArchivePlugin: move instance methods to class ArchiveFile
Diffstat (limited to 'src/ArchiveFile.hxx')
-rw-r--r--src/ArchiveFile.hxx25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/ArchiveFile.hxx b/src/ArchiveFile.hxx
index 52e5a491..c7933ebd 100644
--- a/src/ArchiveFile.hxx
+++ b/src/ArchiveFile.hxx
@@ -26,6 +26,31 @@ public:
ArchiveFile(const struct archive_plugin &_plugin)
:plugin(_plugin) {}
+
+protected:
+ /**
+ * Use Close() instead of delete.
+ */
+ ~ArchiveFile() {}
+
+public:
+ virtual void Close() = 0;
+
+ /**
+ * Visit all entries inside this archive.
+ */
+ virtual void Visit(ArchiveVisitor &visitor) = 0;
+
+ /**
+ * Opens an input_stream of a file within the archive.
+ *
+ * @param path the path within the archive
+ * @param error_r location to store the error occurring, or
+ * NULL to ignore errors
+ */
+ virtual input_stream *OpenStream(const char *path,
+ Mutex &mutex, Cond &cond,
+ GError **error_r) = 0;
};
#endif