X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/3184b4cf2e8e2009ce62b8f66c666ae7da67e378..3c54407f8783d5e27363eabf41dbc3d031526ffe:/apt-pkg/cacheiterators.h?ds=sidebyside diff --git a/apt-pkg/cacheiterators.h b/apt-pkg/cacheiterators.h index eb8dee5e3..449d4b441 100644 --- a/apt-pkg/cacheiterators.h +++ b/apt-pkg/cacheiterators.h @@ -75,8 +75,8 @@ template class pkgCache::Iterator : inline bool IsGood() const { return S && Owner && ! end();}; inline unsigned long Index() const {return S - OwnerPointer();}; - void ReOwn(pkgCache &newOwner, void const * const oldMap, void const * const newMap) { - if (S == 0) + void ReMap(void const * const oldMap, void const * const newMap) { + if (Owner == 0 || S == 0) return; S += (Str*)(newMap) - (Str*)(oldMap); } @@ -96,7 +96,7 @@ class pkgCache::GrpIterator: public Iterator { protected: inline Group* OwnerPointer() const { - return Owner->GrpP; + return (Owner != 0) ? Owner->GrpP : 0; }; public: @@ -115,8 +115,11 @@ class pkgCache::GrpIterator: public Iterator { /** \brief find the package with the "best" architecture The best architecture is either the "native" or the first - in the list of Architectures which is not an end-Pointer */ - PkgIterator FindPreferredPkg() const; + in the list of Architectures which is not an end-Pointer + + \param PreferNonVirtual tries to respond with a non-virtual package + and only if this fails returns the best virtual package */ + PkgIterator FindPreferredPkg(bool const &PreferNonVirtual = true) const; PkgIterator NextPkg(PkgIterator const &Pkg) const; // Constructors @@ -134,7 +137,7 @@ class pkgCache::PkgIterator: public Iterator { protected: inline Package* OwnerPointer() const { - return Owner->PkgP; + return (Owner != 0) ? Owner->PkgP : 0; }; public: @@ -181,7 +184,7 @@ class pkgCache::PkgIterator: public Iterator { class pkgCache::VerIterator : public Iterator { protected: inline Version* OwnerPointer() const { - return Owner->VerP; + return (Owner != 0) ? Owner->VerP : 0; }; public: @@ -238,7 +241,7 @@ class pkgCache::VerIterator : public Iterator { class pkgCache::DescIterator : public Iterator { protected: inline Description* OwnerPointer() const { - return Owner->DescP; + return (Owner != 0) ? Owner->DescP : 0; }; public: @@ -267,7 +270,7 @@ class pkgCache::DepIterator : public Iterator { protected: inline Dependency* OwnerPointer() const { - return Owner->DepP; + return (Owner != 0) ? Owner->DepP : 0; }; public: @@ -290,6 +293,9 @@ class pkgCache::DepIterator : public Iterator { inline const char *CompType() const {return Owner->CompType(S->CompareOp);}; inline const char *DepType() const {return Owner->DepType(S->Type);}; + //Nice printable representation + friend std::ostream& operator <<(std::ostream& out, DepIterator D); + inline DepIterator(pkgCache &Owner, Dependency *Trg, Version* = 0) : Iterator(Owner, Trg), Type(DepVer) { if (S == 0) @@ -309,7 +315,7 @@ class pkgCache::PrvIterator : public Iterator { protected: inline Provides* OwnerPointer() const { - return Owner->ProvideP; + return (Owner != 0) ? Owner->ProvideP : 0; }; public: @@ -343,7 +349,7 @@ class pkgCache::PrvIterator : public Iterator { class pkgCache::PkgFileIterator : public Iterator { protected: inline PackageFile* OwnerPointer() const { - return Owner->PkgFileP; + return (Owner != 0) ? Owner->PkgFileP : 0; }; public: @@ -376,7 +382,7 @@ class pkgCache::PkgFileIterator : public Iterator class pkgCache::VerFileIterator : public pkgCache::Iterator { protected: inline VerFile* OwnerPointer() const { - return Owner->VerFileP; + return (Owner != 0) ? Owner->VerFileP : 0; }; public: @@ -395,7 +401,7 @@ class pkgCache::VerFileIterator : public pkgCache::Iterator { protected: inline DescFile* OwnerPointer() const { - return Owner->DescFileP; + return (Owner != 0) ? Owner->DescFileP : 0; }; public: