X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/258b9e512c4001e806c5c0966acecd3d742ec6e9..7cafe70555740bd0acbf0b8d2193b95423e7436b:/apt-private/private-cacheset.h?ds=sidebyside

diff --git a/apt-private/private-cacheset.h b/apt-private/private-cacheset.h
index 4cbc4efa1..37c921081 100644
--- a/apt-private/private-cacheset.h
+++ b/apt-private/private-cacheset.h
@@ -11,21 +11,30 @@
 #include <set>
 #include <string>
 
-#include <apti18n.h>
-
 class OpProgress;
 
-struct APT_PUBLIC VersionSortDescriptionLocality			/*{{{*/
+class VerIteratorWithCaching
+{
+   const pkgCache::VerIterator iter;
+   const pkgCache::DescFile * descFile;
+public:
+   VerIteratorWithCaching(const pkgCache::VerIterator& iter) :
+      iter(iter),
+      descFile(iter->DescriptionList != 0
+	 ? (const pkgCache::DescFile *) iter.TranslatedDescription().FileList()
+	 : nullptr)
+   {}
+   const pkgCache::DescFile * CachedDescFile() const { return descFile; }
+   operator pkgCache::VerIterator() const { return iter; }
+};
+
+struct VersionSortDescriptionLocality					/*{{{*/
 {
-   bool operator () (const pkgCache::VerIterator &v_lhs,
-	 const pkgCache::VerIterator &v_rhs)
+   bool operator () (const VerIteratorWithCaching &v_lhs,
+	 const VerIteratorWithCaching &v_rhs)
    {
-      pkgCache::DescFile const *A = nullptr;
-      pkgCache::DescFile const *B = nullptr;
-      if (v_lhs->DescriptionList != 0)
-	 A = v_lhs.TranslatedDescription().FileList();
-      if (v_rhs->DescriptionList != 0)
-	 B = v_rhs.TranslatedDescription().FileList();
+      pkgCache::DescFile const *A = v_lhs.CachedDescFile();
+      pkgCache::DescFile const *B = v_rhs.CachedDescFile();
 
       if (A == nullptr && B == nullptr)
 	 return false;
@@ -45,7 +54,7 @@ struct APT_PUBLIC VersionSortDescriptionLocality			/*{{{*/
 									/*}}}*/
 // sorted by locality which makes iterating much faster
 typedef APT::VersionContainer<
-   std::set<pkgCache::VerIterator,
+   std::set<VerIteratorWithCaching,
             VersionSortDescriptionLocality> > LocalitySortedVersionSet;
 
 class Matcher {
@@ -65,7 +74,7 @@ bool GetLocalitySortedVersionSet(pkgCacheFile &CacheFile,
 
 
 // CacheSetHelper saving virtual packages				/*{{{*/
-class APT_PUBLIC CacheSetHelperVirtuals: public APT::CacheSetHelper {
+class CacheSetHelperVirtuals: public APT::CacheSetHelper {
 public:
    APT::PackageSet virtualPkgs;
 
@@ -78,7 +87,7 @@ public:
 									/*}}}*/
 
 // CacheSetHelperAPTGet - responsible for message telling from the CacheSets/*{{{*/
-class APT_PUBLIC CacheSetHelperAPTGet : public APT::CacheSetHelper {
+class CacheSetHelperAPTGet : public APT::CacheSetHelper {
 	/** \brief stream message should be printed to */
 	std::ostream &out;
 	/** \brief were things like Task or RegEx used to select packages? */