]> git.saurik.com Git - apt-legacy.git/blobdiff - apt-pkg/pkgcache.h
Attempt to skip and resync any seriously broken semantics in package sections.
[apt-legacy.git] / apt-pkg / pkgcache.h
index 59d5003bba4f7ecc0f151b1c8e82ba94639d13eb..fc492e2f0f0c42ae3a48995729e114f62790957d 100644 (file)
 #include <string>
 #include <time.h>
 #include <apt-pkg/mmap.h>
+#include <apt-pkg/srkstring.h>
 
 using std::string;
-    
+
 class pkgVersioningSystem;
-class pkgCache
+class pkgCache                                                         /*{{{*/
 {
    public:
    // Cache element predeclarations
@@ -41,6 +42,7 @@ class pkgCache
    struct StringItem;
    struct VerFile;
    struct DescFile;
+   struct Tag;
    
    // Iterators
    class PkgIterator;
@@ -51,6 +53,7 @@ class pkgCache
    class PkgFileIterator;
    class VerFileIterator;
    class DescFileIterator;
+   class TagIterator;
    friend class PkgIterator;
    friend class VerIterator;
    friend class DescInterator;
@@ -59,6 +62,7 @@ class pkgCache
    friend class PkgFileIterator;
    friend class VerFileIterator;
    friend class DescFileIterator;
+   friend class TagIterator;
    
    class Namespace;
    
@@ -70,7 +74,7 @@ class pkgCache
    struct Dep
    {
       enum DepType {Depends=1,PreDepends=2,Suggests=3,Recommends=4,
-        Conflicts=5,Replaces=6,Obsoletes=7,DpkgBreaks=8};
+        Conflicts=5,Replaces=6,Obsoletes=7,DpkgBreaks=8,Enhances=9};
       enum DepCompareOp {Or=0x10,NoOp=0,LessEq=0x1,GreaterEq=0x2,Less=0x3,
         Greater=0x4,Equals=0x5,NotEquals=0x6};
    };
@@ -99,6 +103,7 @@ class pkgCache
 
    unsigned long sHash(const string &S) const;
    unsigned long sHash(const char *S) const;
+   unsigned long sHash(const srkString &S) const;
    
    public:
    
@@ -109,6 +114,7 @@ class pkgCache
    DescFile *DescFileP;
    PackageFile *PkgFileP;
    Version *VerP;
+   Tag *TagP;
    Description *DescP;
    Provides *ProvideP;
    Dependency *DepP;
@@ -123,12 +129,14 @@ class pkgCache
    // String hashing function (512 range)
    inline unsigned long Hash(const string &S) const {return sHash(S);};
    inline unsigned long Hash(const char *S) const {return sHash(S);};
+   inline unsigned long Hash(const srkString &S) const {return sHash(S);};
 
    // Usefull transformation things
    const char *Priority(unsigned char Priority);
    
    // Accessors
    PkgIterator FindPkg(const string &Name);
+   PkgIterator FindPkg(const srkString &Name);
    Header &Head() {return *HeaderP;};
    inline PkgIterator PkgBegin();
    inline PkgIterator PkgEnd();
@@ -146,8 +154,8 @@ class pkgCache
    pkgCache(MMap *Map,bool DoMap = true);
    virtual ~pkgCache() {};
 };
-
-// Header structure
+                                                                       /*}}}*/
+// Header structure                                                    /*{{{*/
 struct pkgCache::Header
 {
    // Signature information
@@ -161,6 +169,7 @@ struct pkgCache::Header
    unsigned short PackageSz;
    unsigned short PackageFileSz;
    unsigned short VersionSz;
+   unsigned short TagSz;
    unsigned short DescriptionSz;
    unsigned short DependencySz;
    unsigned short ProvidesSz;
@@ -170,6 +179,7 @@ struct pkgCache::Header
    // Structure counts
    unsigned long PackageCount;
    unsigned long VersionCount;
+   unsigned long TagCount;
    unsigned long DescriptionCount;
    unsigned long DependsCount;
    unsigned long PackageFileCount;
@@ -195,11 +205,12 @@ struct pkgCache::Header
    bool CheckSizes(Header &Against) const;
    Header();
 };
-
-struct pkgCache::Package
+                                                                       /*}}}*/
+struct pkgCache::Package                                               /*{{{*/
 {
    // Pointers
    map_ptrloc Name;              // Stringtable
+   map_ptrloc Display;           // Stringtable
    map_ptrloc VersionList;       // Version
    map_ptrloc CurrentVer;        // Version
    map_ptrloc Section;           // StringTable (StringItem)
@@ -208,6 +219,7 @@ struct pkgCache::Package
    map_ptrloc NextPackage;       // Package
    map_ptrloc RevDepends;        // Dependency
    map_ptrloc ProvidesList;      // Provides
+   map_ptrloc TagList;           // Tag
 
    // Install/Remove/Purge etc
    unsigned char SelectedState;     // What
@@ -238,26 +250,33 @@ struct pkgCache::PackageFile
    unsigned short ID;
    time_t mtime;                  // Modification time for the file
 };
-
-struct pkgCache::VerFile
+                                                                       /*}}}*/
+struct pkgCache::VerFile                                               /*{{{*/
 {
    map_ptrloc File;           // PackageFile
    map_ptrloc NextFile;       // PkgVerFile
    map_ptrloc Offset;         // File offset
    unsigned short Size;
 };
-
-struct pkgCache::DescFile
+                                                                       /*}}}*/
+struct pkgCache::Tag                                           /*{{{*/
+{
+   map_ptrloc Name;           // Stringtable
+   map_ptrloc NextTag;        // Tag
+};
+                                                                       /*}}}*/
+struct pkgCache::DescFile                                              /*{{{*/
 {
    map_ptrloc File;           // PackageFile
    map_ptrloc NextFile;       // PkgVerFile
    map_ptrloc Offset;         // File offset
    unsigned short Size;
 };
-
-struct pkgCache::Version
+                                                                       /*}}}*/
+struct pkgCache::Version                                               /*{{{*/
 {
    map_ptrloc VerStr;            // Stringtable
+   map_ptrloc Display;           // Stringtable
    map_ptrloc Section;           // StringTable (StringItem)
    map_ptrloc Arch;              // StringTable
       
@@ -275,8 +294,8 @@ struct pkgCache::Version
    unsigned short ID;
    unsigned char Priority;
 };
-
-struct pkgCache::Description
+                                                                       /*}}}*/
+struct pkgCache::Description                                           /*{{{*/
 {
    // Language Code store the description translation language code. If
    // the value has a 0 lenght then this is readed using the Package
@@ -291,8 +310,8 @@ struct pkgCache::Description
 
    unsigned short ID;
 };
-
-struct pkgCache::Dependency
+                                                                       /*}}}*/
+struct pkgCache::Dependency                                            /*{{{*/
 {
    map_ptrloc Version;         // Stringtable
    map_ptrloc Package;         // Package
@@ -305,8 +324,8 @@ struct pkgCache::Dependency
    unsigned char Type;
    unsigned char CompareOp;
 };
-
-struct pkgCache::Provides
+                                                                       /*}}}*/
+struct pkgCache::Provides                                              /*{{{*/
 {
    map_ptrloc ParentPkg;        // Pacakge
    map_ptrloc Version;          // Version
@@ -314,13 +333,13 @@ struct pkgCache::Provides
    map_ptrloc NextProvides;     // Provides
    map_ptrloc NextPkgProv;      // Provides
 };
-
-struct pkgCache::StringItem
+                                                                       /*}}}*/
+struct pkgCache::StringItem                                            /*{{{*/
 {
    map_ptrloc String;        // Stringtable
    map_ptrloc NextItem;      // StringItem
 };
-
+                                                                       /*}}}*/
 #include <apt-pkg/cacheiterators.h>
 
 inline pkgCache::PkgIterator pkgCache::PkgBegin() 
@@ -333,12 +352,13 @@ inline pkgCache::PkgFileIterator pkgCache::FileEnd()
        {return PkgFileIterator(*this,PkgFileP);};
 
 // Oh I wish for Real Name Space Support
-class pkgCache::Namespace
+class pkgCache::Namespace                                              /*{{{*/
 {   
    public:
 
    typedef pkgCache::PkgIterator PkgIterator;
    typedef pkgCache::VerIterator VerIterator;
+   typedef pkgCache::TagIterator TagIterator;
    typedef pkgCache::DescIterator DescIterator;
    typedef pkgCache::DepIterator DepIterator;
    typedef pkgCache::PrvIterator PrvIterator;
@@ -351,5 +371,5 @@ class pkgCache::Namespace
    typedef pkgCache::Dep Dep;
    typedef pkgCache::Flag Flag;
 };
-
+                                                                       /*}}}*/
 #endif