]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/pkgcachegen.h
merged lp:~mvo/apt/conflicts-on-virtuals to better deal with
[apt.git] / apt-pkg / pkgcachegen.h
index 8f7739165088e450fbb56a68958fe2c8dc18a154..ff198833a801f9cd601e25980ff5470d303b5128 100644 (file)
@@ -23,6 +23,8 @@
 #include <apt-pkg/pkgcache.h>
 #include <apt-pkg/md5.h>
 
+#include <vector>
+
 class pkgSourceList;
 class OpProgress;
 class MMap;
@@ -33,18 +35,30 @@ class pkgCacheGenerator                                                     /*{{{*/
    private:
 
    pkgCache::StringItem *UniqHash[26];
-   unsigned long WriteStringInMap(std::string const &String) { return WriteStringInMap(String.c_str()); };
-   unsigned long WriteStringInMap(const char *String);
-   unsigned long WriteStringInMap(const char *String, const unsigned long &Len);
-   unsigned long AllocateInMap(const unsigned long &size);
+   map_ptrloc WriteStringInMap(std::string const &String) { return WriteStringInMap(String.c_str()); };
+   map_ptrloc WriteStringInMap(const char *String);
+   map_ptrloc WriteStringInMap(const char *String, const unsigned long &Len);
+   map_ptrloc AllocateInMap(const unsigned long &size);
 
    public:
    
    class ListParser;
    friend class ListParser;
-   
+
+   template<typename Iter> class Dynamic {
+      public:
+      static std::vector<Iter*> toReMap;
+      Dynamic(Iter &I) {
+        toReMap.push_back(&I);
+      }
+
+      ~Dynamic() {
+        toReMap.pop_back();
+      }
+   };
+
    protected:
-   
+
    DynamicMMap &Map;
    pkgCache Cache;
    OpProgress *Progress;
@@ -85,6 +99,9 @@ class pkgCacheGenerator                                                       /*{{{*/
    static bool MakeStatusCache(pkgSourceList &List,OpProgress *Progress,
                        MMap **OutMap = 0,bool AllowMem = false);
    static bool MakeOnlyStatusCache(OpProgress *Progress,DynamicMMap **OutMap);
+   static DynamicMMap* CreateDynamicMMap(FileFd *CacheF, unsigned long Flags = 0);
+
+   void ReMap(void const * const oldMap, void const * const newMap);
 
    pkgCacheGenerator(DynamicMMap *Map,OpProgress *Progress);
    ~pkgCacheGenerator();