]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/cacheiterators.h
make all d-pointer * const pointers
[apt.git] / apt-pkg / cacheiterators.h
index f2aae7272f4f1b9677951654041c996bcfa2fbb2..f3b107699e35c68a20a1f6f975a4fb6b33e88916 100644 (file)
@@ -107,7 +107,7 @@ class pkgCache::GrpIterator: public Iterator<Group, GrpIterator> {
 
        public:
        // This constructor is the 'begin' constructor, never use it.
-       inline GrpIterator(pkgCache &Owner) : Iterator<Group, GrpIterator>(Owner), HashIndex(-1) {
+       explicit inline GrpIterator(pkgCache &Owner) : Iterator<Group, GrpIterator>(Owner), HashIndex(-1) {
                S = OwnerPointer();
                operator ++(0);
        }
@@ -148,7 +148,7 @@ class pkgCache::PkgIterator: public Iterator<Package, PkgIterator> {
 
        public:
        // This constructor is the 'begin' constructor, never use it.
-       inline PkgIterator(pkgCache &Owner) : Iterator<Package, PkgIterator>(Owner), HashIndex(-1) {
+       explicit inline PkgIterator(pkgCache &Owner) : Iterator<Package, PkgIterator>(Owner), HashIndex(-1) {
                S = OwnerPointer();
                operator ++(0);
        }
@@ -159,12 +159,14 @@ class pkgCache::PkgIterator: public Iterator<Package, PkgIterator> {
        enum OkState {NeedsNothing,NeedsUnpack,NeedsConfigure};
 
        // Accessors
-       inline const char *Name() const {return S->Name == 0?0:Owner->StrP + S->Name;}
+       inline const char *Name() const { return Group().Name(); }
        // Versions have sections - and packages can have different versions with different sections
-       // so this interface is broken by design. It used to return the section of the "first parsed
-       // package stanza", but as this can potentially be anything it now returns the section of the
-       // newest version instead (if any). aka: Run as fast as you can to Version.Section().
-       APT_DEPRECATED const char *Section() const;
+       // so this interface is broken by design. Run as fast as you can to Version.Section().
+       APT_DEPRECATED inline const char *Section() const {
+          APT_IGNORE_DEPRECATED_PUSH
+          return S->Section == 0?0:Owner->StrP + S->Section;
+          APT_IGNORE_DEPRECATED_POP
+       }
        inline bool Purge() const {return S->CurrentState == pkgCache::State::Purge ||
                (S->CurrentVer == 0 && S->CurrentState == pkgCache::State::NotInstalled);}
        inline const char *Arch() const {return S->Arch == 0?0:Owner->StrP + S->Arch;}
@@ -215,6 +217,14 @@ class pkgCache::VerIterator : public Iterator<Version, VerIterator> {
        // Accessors
        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;}
+#if APT_PKG_ABI >= 413
+       /** \brief source package name this version comes from
+          Always contains the name, even if it is the same as the binary name */
+       inline const char *SourcePkgName() const {return Owner->StrP + S->SourcePkgName;}
+       /** \brief source version this version comes from
+          Always contains the version string, even if it is the same as the binary version */
+       inline const char *SourceVerStr() const {return Owner->StrP + S->SourceVerStr;}
+#endif
        inline const char *Arch() const {
                if ((S->MultiArch & pkgCache::Version::All) == pkgCache::Version::All)
                        return "all";
@@ -336,7 +346,7 @@ class pkgCache::PrvIterator : public Iterator<Provides, PrvIterator> {
        inline void operator ++() {operator ++(0);}
 
        // Accessors
-       inline const char *Name() const {return Owner->StrP + Owner->PkgP[S->ParentPkg].Name;}
+       inline const char *Name() const {return ParentPkg().Name();}
        inline const char *ProvideVersion() const {return S->ProvideVersion == 0?0:Owner->StrP + S->ProvideVersion;}
        inline PkgIterator ParentPkg() const {return PkgIterator(*Owner,Owner->PkgP + S->ParentPkg);}
        inline VerIterator OwnerVer() const {return VerIterator(*Owner,Owner->VerP + S->Version);}
@@ -357,27 +367,61 @@ class pkgCache::PrvIterator : public Iterator<Provides, PrvIterator> {
        }
 };
                                                                        /*}}}*/
-// Package file                                                                /*{{{*/
-class pkgCache::PkgFileIterator : public Iterator<PackageFile, PkgFileIterator> {
+// Release file                                                                /*{{{*/
+class pkgCache::RlsFileIterator : public Iterator<ReleaseFile, RlsFileIterator> {
        protected:
-       inline PackageFile* OwnerPointer() const {
-               return (Owner != 0) ? Owner->PkgFileP : 0;
+       inline ReleaseFile* OwnerPointer() const {
+               return (Owner != 0) ? Owner->RlsFileP : 0;
        }
 
        public:
        // Iteration
-       void operator ++(int) {if (S != Owner->PkgFileP) S = Owner->PkgFileP + S->NextFile;}
+       void operator ++(int) {if (S != Owner->RlsFileP) S = Owner->RlsFileP + 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 bool Flagged(pkgCache::Flag::ReleaseFileFlags const flag) const {return (S->Flags & flag) == flag; }
+
+       bool IsOk();
+       std::string RelStr();
+
+       // Constructors
+       inline RlsFileIterator() : Iterator<ReleaseFile, RlsFileIterator>() {}
+       explicit inline RlsFileIterator(pkgCache &Owner) : Iterator<ReleaseFile, RlsFileIterator>(Owner, Owner.RlsFileP) {}
+       inline RlsFileIterator(pkgCache &Owner,ReleaseFile *Trg) : Iterator<ReleaseFile, RlsFileIterator>(Owner, Trg) {}
+};
+                                                                       /*}}}*/
+// Package file                                                                /*{{{*/
+class pkgCache::PkgFileIterator : public Iterator<PackageFile, PkgFileIterator> {
+       protected:
+       inline PackageFile* OwnerPointer() const {
+               return (Owner != 0) ? Owner->PkgFileP : 0;
+       }
+
+       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 pkgCache::RlsFileIterator ReleaseFile() const {return RlsFileIterator(*Owner, Owner->RlsFileP + S->Release);}
+       inline const char *Archive() const {return S->Release == 0 ? Component() : ReleaseFile().Archive();}
+       inline const char *Version() const {return S->Release == 0 ? NULL : ReleaseFile().Version();}
+       inline const char *Origin() const {return S->Release == 0 ? NULL : ReleaseFile().Origin();}
+       inline const char *Codename() const {return S->Release == 0 ? NULL : ReleaseFile().Codename();}
+       inline const char *Label() const {return S->Release == 0 ? NULL : ReleaseFile().Label();}
+       inline const char *Site() const {return S->Release == 0 ? NULL : ReleaseFile().Site();}
+       inline bool Flagged(pkgCache::Flag::ReleaseFileFlags const flag) const {return S->Release== 0 ? false : ReleaseFile().Flagged(flag);}
+       inline bool Flagged(pkgCache::Flag::PkgFFlags const flag) const {return (S->Flags & flag) == flag;}
+       inline const char *Component() const {return S->Component == 0?0:Owner->StrP + S->Component;}
        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;}
 
@@ -386,7 +430,7 @@ class pkgCache::PkgFileIterator : public Iterator<PackageFile, PkgFileIterator>
 
        // Constructors
        inline PkgFileIterator() : Iterator<PackageFile, PkgFileIterator>() {}
-       inline PkgFileIterator(pkgCache &Owner) : Iterator<PackageFile, PkgFileIterator>(Owner, Owner.PkgFileP) {}
+       explicit inline PkgFileIterator(pkgCache &Owner) : Iterator<PackageFile, PkgFileIterator>(Owner, Owner.PkgFileP) {}
        inline PkgFileIterator(pkgCache &Owner,PackageFile *Trg) : Iterator<PackageFile, PkgFileIterator>(Owner, Trg) {}
 };
                                                                        /*}}}*/