]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/packsource.h
Add a method to filter the files loaded from a pack
[libs/datafile.git] / source / packsource.h
index e2c84a0ac62135b27f3a09cbf3d6bb711880d93b..f552d2ab479ed952c47a04619b76d75bdde29e83 100644 (file)
@@ -25,6 +25,7 @@ private:
        class File;
        struct Object;
 
+       typedef std::map<std::string, const File *> FileMap;
        typedef std::map<std::string, const Object *> ObjectMap;
 
        class Pack
@@ -49,7 +50,7 @@ private:
                const std::string &get_filename() const { return filename; }
                unsigned get_base_offset() const { return base_offset; }
 
-               void collect_objects(ObjectMap &) const;
+               void collect_files(FileMap &, const std::string &) const;
        };
 
        class File
@@ -109,6 +110,9 @@ public:
        /// Adds a pack file to load objects from.  The index is read immediately.
        void add_pack_file(const std::string &);
 
+       /** Adds a pack file with a regex to filter logical files.  The index is
+       read on the first call; subsequent calls will use cached data. */
+       void add_pack_file(const std::string &, const std::string &);
 
        virtual bool is_loadable(const CollectionItemTypeBase &, const std::string &) const;
        virtual NameList get_names(const CollectionItemTypeBase &) const;