inline bool IsGood() const { return S && Owner && ! end();};
inline unsigned long Index() const {return S - OwnerPointer();};
+ void ReMap(void const * const oldMap, void const * const newMap) {
+ if (Owner == 0 || S == 0)
+ return;
+ S += (Str*)(newMap) - (Str*)(oldMap);
+ }
+
// Constructors - look out for the variable assigning
inline Iterator() : S(0), Owner(0) {};
inline Iterator(pkgCache &Owner,Str *T = 0) : S(T), Owner(&Owner) {};
protected:
inline Group* OwnerPointer() const {
- return Owner->GrpP;
+ return (Owner != 0) ? Owner->GrpP : 0;
};
public:
/** \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
protected:
inline Package* OwnerPointer() const {
- return Owner->PkgP;
+ return (Owner != 0) ? Owner->PkgP : 0;
};
public:
class pkgCache::VerIterator : public Iterator<Version, VerIterator> {
protected:
inline Version* OwnerPointer() const {
- return Owner->VerP;
+ return (Owner != 0) ? Owner->VerP : 0;
};
public:
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);};
string RelStr() const;
bool Automatic() const;
- bool Pseudo() const;
+ __deprecated bool Pseudo() const;
VerFileIterator NewestFile() const;
inline VerIterator(pkgCache &Owner,Version *Trg = 0) : Iterator<Version, VerIterator>(Owner, Trg) {
class pkgCache::DescIterator : public Iterator<Description, DescIterator> {
protected:
inline Description* OwnerPointer() const {
- return Owner->DescP;
+ return (Owner != 0) ? Owner->DescP : 0;
};
public:
protected:
inline Dependency* OwnerPointer() const {
- return Owner->DepP;
+ return (Owner != 0) ? Owner->DepP : 0;
};
public:
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<Dependency, DepIterator>(Owner, Trg), Type(DepVer) {
if (S == 0)
protected:
inline Provides* OwnerPointer() const {
- return Owner->ProvideP;
+ return (Owner != 0) ? Owner->ProvideP : 0;
};
public:
class pkgCache::PkgFileIterator : public Iterator<PackageFile, PkgFileIterator> {
protected:
inline PackageFile* OwnerPointer() const {
- return Owner->PkgFileP;
+ return (Owner != 0) ? Owner->PkgFileP : 0;
};
public:
class pkgCache::VerFileIterator : public pkgCache::Iterator<VerFile, VerFileIterator> {
protected:
inline VerFile* OwnerPointer() const {
- return Owner->VerFileP;
+ return (Owner != 0) ? Owner->VerFileP : 0;
};
public:
class pkgCache::DescFileIterator : public Iterator<DescFile, DescFileIterator> {
protected:
inline DescFile* OwnerPointer() const {
- return Owner->DescFileP;
+ return (Owner != 0) ? Owner->DescFileP : 0;
};
public: