]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/packsource.h
Support adding packs from IO::Seekable objects
[libs/datafile.git] / source / packsource.h
index a599b5c0c99c985eaa8b834721f5158b8356b52d..440b45118bd66fc2af1c1d0c7b2f0a195a237fd9 100644 (file)
@@ -48,13 +48,15 @@ private:
 
        private:
                std::string filename;
+               IO::Seekable *io;
                unsigned base_offset;
                std::list<File> files;
 
        public:
-               Pack(const std::string &);
+               Pack(IO::Seekable *, const std::string &);
 
                const std::string &get_filename() const { return filename; }
+               IO::Seekable *get_io() const { return io; }
                unsigned get_base_offset() const { return base_offset; }
 
                void collect_files(FileMap &, const std::string &) const;
@@ -123,6 +125,15 @@ public:
        read on the first call; subsequent calls will use cached data. */
        void add_pack_file(const std::string &, const std::string &);
 
+       /** Adds a pack from an existing seekable I/O object.  The same object is
+       used for all accesses to the pack, so it must not be deleted before the
+       PackSource. */
+       void add_pack_io(IO::Seekable &, const std::string & = std::string());
+
+private:
+       void add_pack(IO::Seekable *, const std::string &, const std::string &);
+
+public:
        /// Returns information about the files in the pack.
        std::list<FileInfo> list_files() const;