+ public:
+ // Iteration
+ void operator ++(int) {if (S != Owner->PkgFileP) S = Owner->PkgFileP + S->NextFile;};
+ inline void operator ++() {operator ++(0);};
+
+ // Accessors
+ inline const char *FileName() const {return S->FileName == 0?0:Owner->StrP + S->FileName;};
+ inline const char *Archive() const {return S->Archive == 0?0:Owner->StrP + S->Archive;};
+ inline const char *Component() const {return S->Component == 0?0:Owner->StrP + S->Component;};
+ inline const char *Version() const {return S->Version == 0?0:Owner->StrP + S->Version;};
+ inline const char *Origin() const {return S->Origin == 0?0:Owner->StrP + S->Origin;};
+ inline const char *Codename() const {return S->Codename ==0?0:Owner->StrP + S->Codename;};
+ inline const char *Label() const {return S->Label == 0?0:Owner->StrP + S->Label;};
+ inline const char *Site() const {return S->Site == 0?0:Owner->StrP + S->Site;};
+ inline const char *Architecture() const {return S->Architecture == 0?0:Owner->StrP + S->Architecture;};
+ inline const char *IndexType() const {return S->IndexType == 0?0:Owner->StrP + S->IndexType;};
+
+ bool IsOk();
+ string RelStr();
+
+ // Constructors
+ inline PkgFileIterator() : Iterator<PackageFile, PkgFileIterator>() {};
+ inline PkgFileIterator(pkgCache &Owner,PackageFile *Trg = 0) : Iterator<PackageFile, PkgFileIterator>(Owner, Trg) {};
+};
+ /*}}}*/
+// Version File /*{{{*/
+class pkgCache::VerFileIterator : public pkgCache::Iterator<VerFile, VerFileIterator> {
+ protected:
+ inline VerFile* OwnerPointer() const {
+ return Owner->VerFileP;
+ };
+
+ public:
+ // Iteration
+ void operator ++(int) {if (S != Owner->VerFileP) S = Owner->VerFileP + S->NextFile;};
+ inline void operator ++() {operator ++(0);};
+
+ // Accessors
+ inline PkgFileIterator File() const {return PkgFileIterator(*Owner,S->File + Owner->PkgFileP);};
+
+ inline VerFileIterator() : Iterator<VerFile, VerFileIterator>() {};
+ inline VerFileIterator(pkgCache &Owner,VerFile *Trg) : Iterator<VerFile, VerFileIterator>(Owner, Trg) {};
+};
+ /*}}}*/
+// Description File /*{{{*/
+class pkgCache::DescFileIterator : public Iterator<DescFile, DescFileIterator> {
+ protected:
+ inline DescFile* OwnerPointer() const {
+ return Owner->DescFileP;
+ };
+
+ public:
+ // Iteration
+ void operator ++(int) {if (S != Owner->DescFileP) S = Owner->DescFileP + S->NextFile;};
+ inline void operator ++() {operator ++(0);};
+
+ // Accessors
+ inline PkgFileIterator File() const {return PkgFileIterator(*Owner,S->File + Owner->PkgFileP);};
+
+ inline DescFileIterator() : Iterator<DescFile, DescFileIterator>() {};
+ inline DescFileIterator(pkgCache &Owner,DescFile *Trg) : Iterator<DescFile, DescFileIterator>(Owner, Trg) {};
+};
+ /*}}}*/
+// Inlined Begin functions cant be in the class because of order problems /*{{{*/
+inline pkgCache::PkgIterator pkgCache::GrpIterator::PackageList() const
+ {return PkgIterator(*Owner,Owner->PkgP + S->FirstPackage);};