public:
// Cache element predeclarations
struct Header;
+ struct Group;
struct Package;
struct PackageFile;
struct Version;
struct DescFile;
// Iterators
+ template<typename Str, typename Itr> class Iterator;
+ class GrpIterator;
class PkgIterator;
class VerIterator;
class DescIterator;
class PkgFileIterator;
class VerFileIterator;
class DescFileIterator;
- friend class PkgIterator;
- friend class VerIterator;
- friend class DescInterator;
- friend class DepIterator;
- friend class PrvIterator;
- friend class PkgFileIterator;
- friend class VerFileIterator;
- friend class DescFileIterator;
class Namespace;
// Pointers to the arrays of items
Header *HeaderP;
+ Group *GrpP;
Package *PkgP;
VerFile *VerFileP;
DescFile *DescFileP;
const char *Priority(unsigned char Priority);
// Accessors
- PkgIterator FindPkg(const string &Name);
+ GrpIterator FindGrp(const string &Name);
+ PkgIterator FindPkg(const string &Name, string Arch = "native");
+
Header &Head() {return *HeaderP;};
inline PkgIterator PkgBegin();
inline PkgIterator PkgEnd();
unsigned short DescFileSz;
// Structure counts
+ unsigned long GroupCount;
unsigned long PackageCount;
unsigned long VersionCount;
unsigned long DescriptionCount;
/* Allocation pools, there should be one of these for each structure
excluding the header */
- DynamicMMap::Pool Pools[8];
+ DynamicMMap::Pool Pools[9];
- // Rapid package name lookup
- map_ptrloc HashTable[2*1048];
+ // Rapid package and group name lookup
+ // Notice: Increase only both table sizes as the
+ // hashmethod assume the size of the Pkg one
+ map_ptrloc PkgHashTable[2*1048];
+ map_ptrloc GrpHashTable[2*1048];
bool CheckSizes(Header &Against) const;
Header();
};
/*}}}*/
+struct pkgCache::Group { /*{{{*/
+ map_ptrloc Name; // Stringtable
+
+ // Linked List
+ map_ptrloc FirstPackage;// Package
+ map_ptrloc LastPackage; // Package
+ map_ptrloc Next; // Group
+};
+ /*}}}*/
struct pkgCache::Package /*{{{*/
{
// Pointers
map_ptrloc Name; // Stringtable
+ map_ptrloc Arch; // StringTable (StringItem)
map_ptrloc VersionList; // Version
map_ptrloc CurrentVer; // Version
map_ptrloc Section; // StringTable (StringItem)
+ map_ptrloc Group; // Group the Package belongs to
// Linked list
map_ptrloc NextPackage; // Package
map_ptrloc VerStr; // Stringtable
map_ptrloc Section; // StringTable (StringItem)
map_ptrloc Arch; // StringTable
-
+
// Lists
map_ptrloc FileList; // VerFile
map_ptrloc NextVer; // Version