]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/pkgcache.h
Support for memory-only caching
[apt.git] / apt-pkg / pkgcache.h
index a7d1e9424f51a7707bce72780b88e2983d65e58a..10e68f20d8fd521e1167f89e98f3ef229e3cf78a 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: pkgcache.h,v 1.11 1998/12/07 07:26:20 jgg Exp $
+// $Id: pkgcache.h,v 1.19 1999/04/12 04:21:20 jgg Exp $
 /* ######################################################################
    
    Cache - Structure definitions for the cache file
@@ -80,9 +80,8 @@ class pkgCache
    
    struct Flag
    {
-      enum PkgFlags {Auto=(1<<0),New=(1<<1),Obsolete=(1<<2),Essential=(1<<3),
-        ImmediateConf=(1<<4)};
-      enum PkgFFlags {NotSource=(1<<0)};
+      enum PkgFlags {Auto=(1<<0),Essential=(1<<3),Important=(1<<4)};
+      enum PkgFFlags {NotSource=(1<<0),NotAutomatic=(1<<1)};
    };
    
    protected:
@@ -91,8 +90,8 @@ class pkgCache
    string CacheFile;
    MMap &Map;
 
-   static unsigned long sHash(string S);
-   static unsigned long sHash(const char *S);
+   unsigned long sHash(string S) const;
+   unsigned long sHash(const char *S) const;
    
    public:
    
@@ -109,6 +108,7 @@ class pkgCache
 
    virtual bool ReMap();
    inline bool Sync() {return Map.Sync();};
+   inline MMap &GetMap() {return Map;};
    
    // String hashing function (512 range)
    inline unsigned long Hash(string S) const {return sHash(S);};
@@ -124,6 +124,7 @@ class pkgCache
    inline PkgIterator PkgEnd();
    inline PkgFileIterator FileBegin();
    inline PkgFileIterator FileEnd();
+   VerIterator GetCandidateVer(PkgIterator Pkg,bool AllowCurrent = true);
    
    pkgCache(MMap &Map);
    virtual ~pkgCache() {};
@@ -152,6 +153,8 @@ struct pkgCache::Header
    unsigned long VersionCount;
    unsigned long DependsCount;
    unsigned long PackageFileCount;
+   unsigned long VerFileCount;
+   unsigned long ProvidesCount;
    
    // Offsets
    __apt_ptrloc FileList;              // struct PackageFile
@@ -163,7 +166,7 @@ struct pkgCache::Header
    DynamicMMap::Pool Pools[7];
    
    // Rapid package name lookup
-   __apt_ptrloc HashTable[2048];
+   __apt_ptrloc HashTable[2*1048];
 
    bool CheckSizes(Header &Against) const;
    Header();
@@ -197,14 +200,18 @@ struct pkgCache::PackageFile
 {
    // Names
    __apt_ptrloc FileName;        // Stringtable
+   __apt_ptrloc Archive;         // Stringtable
+   __apt_ptrloc Component;       // Stringtable
    __apt_ptrloc Version;         // Stringtable
-   __apt_ptrloc Distribution;    // Stringtable
-   __apt_ptrloc Size;
+   __apt_ptrloc Origin;          // Stringtable
+   __apt_ptrloc Label;           // Stringtable
+   __apt_ptrloc Architecture;    // Stringtable
+   unsigned long Size;            
+   unsigned long Flags;
    
    // Linked list
    __apt_ptrloc NextFile;        // PackageFile
    unsigned short ID;
-   unsigned long Flags;
    time_t mtime;                  // Modification time for the file
 };
 
@@ -220,7 +227,8 @@ struct pkgCache::Version
 {
    __apt_ptrloc VerStr;            // Stringtable
    __apt_ptrloc Section;           // StringTable (StringItem)
-   
+   __apt_ptrloc Arch;              // StringTable
+      
    // Lists
    __apt_ptrloc FileList;          // VerFile
    __apt_ptrloc NextVer;           // Version