X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/358f10d9d47a88cbf0568f042caccfef8678cbc8..bda94cb8432b3905f5757e92573fd16e73cb183f:/apt-pkg/cacheiterators.h?ds=inline diff --git a/apt-pkg/cacheiterators.h b/apt-pkg/cacheiterators.h index eb8dee5e3..8f9f811da 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: @@ -203,13 +206,13 @@ class pkgCache::VerIterator : public Iterator { inline const char *VerStr() const {return S->VerStr == 0?0:Owner->StrP + S->VerStr;}; inline const char *Section() const {return S->Section == 0?0:Owner->StrP + S->Section;}; inline const char *Arch() const { - if(S->MultiArch == pkgCache::Version::All) + if (S->MultiArch == pkgCache::Version::All || + S->MultiArch == pkgCache::Version::AllForeign || + S->MultiArch == pkgCache::Version::AllAllowed) return "all"; return S->ParentPkg == 0?0:Owner->StrP + ParentPkg()->Arch; }; - inline const char *Arch(bool const pseudo) const { - if(pseudo == false) - return Arch(); + __deprecated inline const char *Arch(bool const pseudo) const { return S->ParentPkg == 0?0:Owner->StrP + ParentPkg()->Arch; }; inline PkgIterator ParentPkg() const {return PkgIterator(*Owner,Owner->PkgP + S->ParentPkg);}; @@ -224,7 +227,7 @@ class pkgCache::VerIterator : public Iterator { string RelStr() const; bool Automatic() const; - bool Pseudo() const; + __deprecated bool Pseudo() const; VerFileIterator NewestFile() const; inline VerIterator(pkgCache &Owner,Version *Trg = 0) : Iterator(Owner, Trg) { @@ -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: