Просмотр исходного кода

* apt-pkg/policy.h:
- add another round of const& madness as the previous round accidently
NOT override the virtual GetCandidateVer() method (Closes: #587725)

David Kalnischkies лет назад: 16
Родитель
Сommit
e841200b93
7 измененных файлов с 32 добавлено и 30 удалено
  1. 1 1
      apt-pkg/algorithms.h
  2. 16 16
      apt-pkg/cacheiterators.h
  3. 2 2
      apt-pkg/depcache.cc
  4. 3 3
      apt-pkg/depcache.h
  5. 6 6
      apt-pkg/pkgcache.cc
  6. 1 1
      apt-pkg/policy.h
  7. 3 1
      debian/changelog

+ 1 - 1
apt-pkg/algorithms.h

@@ -48,7 +48,7 @@ class pkgSimulate : public pkgPackageManager				/*{{{*/
       pkgDepCache *Cache;
       pkgDepCache *Cache;
       public:
       public:
       
       
-      virtual VerIterator GetCandidateVer(PkgIterator Pkg)
+      virtual VerIterator GetCandidateVer(PkgIterator const &Pkg)
       {
       {
 	 return (*Cache)[Pkg].CandidateVerIter(*Cache);
 	 return (*Cache)[Pkg].CandidateVerIter(*Cache);
       }
       }

+ 16 - 16
apt-pkg/cacheiterators.h

@@ -105,13 +105,13 @@ class pkgCache::GrpIterator: public Iterator<Group, GrpIterator> {
 
 
 	inline const char *Name() const {return S->Name == 0?0:Owner->StrP + S->Name;};
 	inline const char *Name() const {return S->Name == 0?0:Owner->StrP + S->Name;};
 	inline PkgIterator PackageList() const;
 	inline PkgIterator PackageList() const;
-	PkgIterator FindPkg(string Arch = "any");
+	PkgIterator FindPkg(string Arch = "any") const;
 	/** \brief find the package with the "best" architecture
 	/** \brief find the package with the "best" architecture
 
 
 	    The best architecture is either the "native" or the first
 	    The best architecture is either the "native" or the first
 	    in the list of Architectures which is not an end-Pointer */
 	    in the list of Architectures which is not an end-Pointer */
-	PkgIterator FindPreferredPkg();
-	PkgIterator NextPkg(PkgIterator const &Pkg);
+	PkgIterator FindPreferredPkg() const;
+	PkgIterator NextPkg(PkgIterator const &Pkg) const;
 
 
 	// Constructors
 	// Constructors
 	inline GrpIterator(pkgCache &Owner, Group *Trg) : Iterator<Group, GrpIterator>(Owner, Trg), HashIndex(0) {
 	inline GrpIterator(pkgCache &Owner, Group *Trg) : Iterator<Group, GrpIterator>(Owner, Trg), HashIndex(0) {
@@ -272,17 +272,17 @@ class pkgCache::DepIterator : public Iterator<Dependency, DepIterator> {
 
 
 	// Accessors
 	// Accessors
 	inline const char *TargetVer() const {return S->Version == 0?0:Owner->StrP + S->Version;};
 	inline const char *TargetVer() const {return S->Version == 0?0:Owner->StrP + S->Version;};
-	inline PkgIterator TargetPkg() {return PkgIterator(*Owner,Owner->PkgP + S->Package);};
-	inline PkgIterator SmartTargetPkg() {PkgIterator R(*Owner,0);SmartTargetPkg(R);return R;};
-	inline VerIterator ParentVer() {return VerIterator(*Owner,Owner->VerP + S->ParentVer);};
-	inline PkgIterator ParentPkg() {return PkgIterator(*Owner,Owner->PkgP + Owner->VerP[S->ParentVer].ParentPkg);};
-	inline bool Reverse() {return Type == DepRev;};
-	bool IsCritical();
+	inline PkgIterator TargetPkg() const {return PkgIterator(*Owner,Owner->PkgP + S->Package);};
+	inline PkgIterator SmartTargetPkg() const {PkgIterator R(*Owner,0);SmartTargetPkg(R);return R;};
+	inline VerIterator ParentVer() const {return VerIterator(*Owner,Owner->VerP + S->ParentVer);};
+	inline PkgIterator ParentPkg() const {return PkgIterator(*Owner,Owner->PkgP + Owner->VerP[S->ParentVer].ParentPkg);};
+	inline bool Reverse() const {return Type == DepRev;};
+	bool IsCritical() const;
 	void GlobOr(DepIterator &Start,DepIterator &End);
 	void GlobOr(DepIterator &Start,DepIterator &End);
-	Version **AllTargets();
-	bool SmartTargetPkg(PkgIterator &Result);
-	inline const char *CompType() {return Owner->CompType(S->CompareOp);};
-	inline const char *DepType() {return Owner->DepType(S->Type);};
+	Version **AllTargets() const;
+	bool SmartTargetPkg(PkgIterator &Result) const;
+	inline const char *CompType() const {return Owner->CompType(S->CompareOp);};
+	inline const char *DepType() const {return Owner->DepType(S->Type);};
 
 
 	inline DepIterator(pkgCache &Owner, Dependency *Trg, Version* = 0) :
 	inline DepIterator(pkgCache &Owner, Dependency *Trg, Version* = 0) :
 		Iterator<Dependency, DepIterator>(Owner, Trg), Type(DepVer) {
 		Iterator<Dependency, DepIterator>(Owner, Trg), Type(DepVer) {
@@ -315,9 +315,9 @@ class pkgCache::PrvIterator : public Iterator<Provides, PrvIterator> {
 	// Accessors
 	// Accessors
 	inline const char *Name() const {return Owner->StrP + Owner->PkgP[S->ParentPkg].Name;};
 	inline const char *Name() const {return Owner->StrP + Owner->PkgP[S->ParentPkg].Name;};
 	inline const char *ProvideVersion() const {return S->ProvideVersion == 0?0:Owner->StrP + S->ProvideVersion;};
 	inline const char *ProvideVersion() const {return S->ProvideVersion == 0?0:Owner->StrP + S->ProvideVersion;};
-	inline PkgIterator ParentPkg() {return PkgIterator(*Owner,Owner->PkgP + S->ParentPkg);};
-	inline VerIterator OwnerVer() {return VerIterator(*Owner,Owner->VerP + S->Version);};
-	inline PkgIterator OwnerPkg() {return PkgIterator(*Owner,Owner->PkgP + Owner->VerP[S->Version].ParentPkg);};
+	inline PkgIterator ParentPkg() const {return PkgIterator(*Owner,Owner->PkgP + S->ParentPkg);};
+	inline VerIterator OwnerVer() const {return VerIterator(*Owner,Owner->VerP + S->Version);};
+	inline PkgIterator OwnerPkg() const {return PkgIterator(*Owner,Owner->PkgP + Owner->VerP[S->Version].ParentPkg);};
 
 
 	inline PrvIterator() : Iterator<Provides, PrvIterator>(), Type(PrvVer) {};
 	inline PrvIterator() : Iterator<Provides, PrvIterator>(), Type(PrvVer) {};
 
 

+ 2 - 2
apt-pkg/depcache.cc

@@ -1585,7 +1585,7 @@ const char *pkgDepCache::StateCache::StripEpoch(const char *Ver)
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
 /* The default just returns the highest available version that is not
 /* The default just returns the highest available version that is not
    a source and automatic. */
    a source and automatic. */
-pkgCache::VerIterator pkgDepCache::Policy::GetCandidateVer(PkgIterator Pkg)
+pkgCache::VerIterator pkgDepCache::Policy::GetCandidateVer(PkgIterator const &Pkg)
 {
 {
    /* Not source/not automatic versions cannot be a candidate version 
    /* Not source/not automatic versions cannot be a candidate version 
       unless they are already installed */
       unless they are already installed */
@@ -1620,7 +1620,7 @@ pkgCache::VerIterator pkgDepCache::Policy::GetCandidateVer(PkgIterator Pkg)
 // Policy::IsImportantDep - True if the dependency is important		/*{{{*/
 // Policy::IsImportantDep - True if the dependency is important		/*{{{*/
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
 /* */
 /* */
-bool pkgDepCache::Policy::IsImportantDep(DepIterator Dep)
+bool pkgDepCache::Policy::IsImportantDep(DepIterator const &Dep)
 {
 {
    if(Dep.IsCritical())
    if(Dep.IsCritical())
       return true;
       return true;

+ 3 - 3
apt-pkg/depcache.h

@@ -256,8 +256,8 @@ class pkgDepCache : protected pkgCache::Namespace
    {
    {
       public:
       public:
       
       
-      virtual VerIterator GetCandidateVer(PkgIterator Pkg);
-      virtual bool IsImportantDep(DepIterator Dep);
+      virtual VerIterator GetCandidateVer(PkgIterator const &Pkg);
+      virtual bool IsImportantDep(DepIterator const &Dep);
       
       
       virtual ~Policy() {};
       virtual ~Policy() {};
    };
    };
@@ -334,7 +334,7 @@ class pkgDepCache : protected pkgCache::Namespace
    inline pkgVersioningSystem &VS() {return *Cache->VS;};
    inline pkgVersioningSystem &VS() {return *Cache->VS;};
    
    
    // Policy implementation
    // Policy implementation
-   inline VerIterator GetCandidateVer(PkgIterator Pkg) {return LocalPolicy->GetCandidateVer(Pkg);};
+   inline VerIterator GetCandidateVer(PkgIterator const &Pkg) {return LocalPolicy->GetCandidateVer(Pkg);};
    inline bool IsImportantDep(DepIterator Dep) {return LocalPolicy->IsImportantDep(Dep);};
    inline bool IsImportantDep(DepIterator Dep) {return LocalPolicy->IsImportantDep(Dep);};
    inline Policy &GetPolicy() {return *LocalPolicy;};
    inline Policy &GetPolicy() {return *LocalPolicy;};
    
    

+ 6 - 6
apt-pkg/pkgcache.cc

@@ -307,7 +307,7 @@ const char *pkgCache::Priority(unsigned char Prio)
 // GrpIterator::FindPkg - Locate a package by arch			/*{{{*/
 // GrpIterator::FindPkg - Locate a package by arch			/*{{{*/
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
 /* Returns an End-Pointer on error, pointer to the package otherwise */
 /* Returns an End-Pointer on error, pointer to the package otherwise */
-pkgCache::PkgIterator pkgCache::GrpIterator::FindPkg(string Arch) {
+pkgCache::PkgIterator pkgCache::GrpIterator::FindPkg(string Arch) const {
 	if (unlikely(IsGood() == false || S->FirstPackage == 0))
 	if (unlikely(IsGood() == false || S->FirstPackage == 0))
 		return PkgIterator(*Owner, 0);
 		return PkgIterator(*Owner, 0);
 
 
@@ -346,7 +346,7 @@ pkgCache::PkgIterator pkgCache::GrpIterator::FindPkg(string Arch) {
 // GrpIterator::FindPreferredPkg - Locate the "best" package		/*{{{*/
 // GrpIterator::FindPreferredPkg - Locate the "best" package		/*{{{*/
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
 /* Returns an End-Pointer on error, pointer to the package otherwise */
 /* Returns an End-Pointer on error, pointer to the package otherwise */
-pkgCache::PkgIterator pkgCache::GrpIterator::FindPreferredPkg() {
+pkgCache::PkgIterator pkgCache::GrpIterator::FindPreferredPkg() const {
 	pkgCache::PkgIterator Pkg = FindPkg("native");
 	pkgCache::PkgIterator Pkg = FindPkg("native");
 	if (Pkg.end() == false)
 	if (Pkg.end() == false)
 		return Pkg;
 		return Pkg;
@@ -367,7 +367,7 @@ pkgCache::PkgIterator pkgCache::GrpIterator::FindPreferredPkg() {
 /* Returns an End-Pointer on error, pointer to the package otherwise.
 /* Returns an End-Pointer on error, pointer to the package otherwise.
    We can't simply ++ to the next as the next package of the last will
    We can't simply ++ to the next as the next package of the last will
    be from a different group (with the same hash value) */
    be from a different group (with the same hash value) */
-pkgCache::PkgIterator pkgCache::GrpIterator::NextPkg(pkgCache::PkgIterator const &LastPkg) {
+pkgCache::PkgIterator pkgCache::GrpIterator::NextPkg(pkgCache::PkgIterator const &LastPkg) const {
 	if (unlikely(IsGood() == false || S->FirstPackage == 0 ||
 	if (unlikely(IsGood() == false || S->FirstPackage == 0 ||
 	    LastPkg.end() == true))
 	    LastPkg.end() == true))
 		return PkgIterator(*Owner, 0);
 		return PkgIterator(*Owner, 0);
@@ -504,7 +504,7 @@ std::string pkgCache::PkgIterator::FullName(bool const &Pretty) const
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
 /* Currently critical deps are defined as depends, predepends and
 /* Currently critical deps are defined as depends, predepends and
    conflicts (including dpkg's Breaks fields). */
    conflicts (including dpkg's Breaks fields). */
-bool pkgCache::DepIterator::IsCritical()
+bool pkgCache::DepIterator::IsCritical() const
 {
 {
    if (S->Type == pkgCache::Dep::Conflicts ||
    if (S->Type == pkgCache::Dep::Conflicts ||
        S->Type == pkgCache::Dep::DpkgBreaks ||
        S->Type == pkgCache::Dep::DpkgBreaks ||
@@ -528,7 +528,7 @@ bool pkgCache::DepIterator::IsCritical()
    In Conjunction with the DepCache the value of Result may not be 
    In Conjunction with the DepCache the value of Result may not be 
    super-good since the policy may have made it uninstallable. Using
    super-good since the policy may have made it uninstallable. Using
    AllTargets is better in this case. */
    AllTargets is better in this case. */
-bool pkgCache::DepIterator::SmartTargetPkg(PkgIterator &Result)
+bool pkgCache::DepIterator::SmartTargetPkg(PkgIterator &Result) const
 {
 {
    Result = TargetPkg();
    Result = TargetPkg();
    
    
@@ -577,7 +577,7 @@ bool pkgCache::DepIterator::SmartTargetPkg(PkgIterator &Result)
    provides. It includes every possible package-version that could satisfy
    provides. It includes every possible package-version that could satisfy
    the dependency. The last item in the list has a 0. The resulting pointer
    the dependency. The last item in the list has a 0. The resulting pointer
    must be delete [] 'd */
    must be delete [] 'd */
-pkgCache::Version **pkgCache::DepIterator::AllTargets()
+pkgCache::Version **pkgCache::DepIterator::AllTargets() const
 {
 {
    Version **Res = 0;
    Version **Res = 0;
    unsigned long Size =0;
    unsigned long Size =0;

+ 1 - 1
apt-pkg/policy.h

@@ -76,7 +76,7 @@ class pkgPolicy : public pkgDepCache::Policy
 
 
    // Things for the cache interface.
    // Things for the cache interface.
    virtual pkgCache::VerIterator GetCandidateVer(pkgCache::PkgIterator const &Pkg);
    virtual pkgCache::VerIterator GetCandidateVer(pkgCache::PkgIterator const &Pkg);
-   virtual bool IsImportantDep(pkgCache::DepIterator Dep) {return pkgDepCache::Policy::IsImportantDep(Dep);};
+   virtual bool IsImportantDep(pkgCache::DepIterator const &Dep) {return pkgDepCache::Policy::IsImportantDep(Dep);};
    bool InitDefaults();
    bool InitDefaults();
    
    
    pkgPolicy(pkgCache *Owner);
    pkgPolicy(pkgCache *Owner);

+ 3 - 1
debian/changelog

@@ -32,7 +32,9 @@ apt (0.7.26~exp8) UNRELEASED; urgency=low
   * apt-pkg/contrib/fileutl.cc:
   * apt-pkg/contrib/fileutl.cc:
     - show notice about ignored file instead of being always silent
     - show notice about ignored file instead of being always silent
     - add a Dir::Ignore-Files-Silently list option to control the notice
     - add a Dir::Ignore-Files-Silently list option to control the notice
-  * 
+  * apt-pkg/policy.h:
+    - add another round of const& madness as the previous round accidently
+      NOT override the virtual GetCandidateVer() method (Closes: #587725)
 
 
  -- David Kalnischkies <kalnischkies@gmail.com>  Mon, 28 Jun 2010 22:12:24 +0200
  -- David Kalnischkies <kalnischkies@gmail.com>  Mon, 28 Jun 2010 22:12:24 +0200