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

* apt-pkg/packageset.h:
- add a simple wrapper around std::set for packages with it

David Kalnischkies лет назад: 16
Родитель
Сommit
e1dbde8dd0
3 измененных файлов с 57 добавлено и 1 удалено
  1. 2 1
      apt-pkg/makefile
  2. 53 0
      apt-pkg/packageset.h
  3. 2 0
      debian/changelog

+ 2 - 1
apt-pkg/makefile

@@ -42,7 +42,8 @@ HEADERS+= algorithms.h depcache.h pkgcachegen.h cacheiterators.h \
 	  acquire.h acquire-worker.h acquire-item.h acquire-method.h \
 	  clean.h srcrecords.h cachefile.h versionmatch.h policy.h \
 	  pkgsystem.h indexfile.h metaindex.h indexrecords.h vendor.h \
-          vendorlist.h cdrom.h indexcopy.h aptconfiguration.h
+          vendorlist.h cdrom.h indexcopy.h aptconfiguration.h \
+	  packageset.h
 
 # Source code for the debian specific components
 # In theory the deb headers do not need to be exported..

+ 53 - 0
apt-pkg/packageset.h

@@ -0,0 +1,53 @@
+// -*- mode: cpp; mode: fold -*-
+// Description								/*{{{*/
+/** \class APT::PackageSet
+
+    Simple wrapper around a std::set to provide a similar interface to
+    a set of packages as to the complete set of all packages in the
+    pkgCache.
+*/
+									/*}}}*/
+#ifndef APT_PACKAGESET_H
+#define APT_PACKAGESET_H
+// Include Files							/*{{{*/
+#include <string>
+#include <apt-pkg/pkgcache.h>
+									/*}}}*/
+namespace APT {
+class PackageSet : public std::set<pkgCache::PkgIterator> {		/*{{{*/
+public:									/*{{{*/
+	/** \brief smell like a pkgCache::PkgIterator */
+	class const_iterator : public std::set<pkgCache::PkgIterator>::const_iterator {
+	public:
+		const_iterator(std::set<pkgCache::PkgIterator>::const_iterator x) :
+			 std::set<pkgCache::PkgIterator>::const_iterator(x) {}
+
+		inline const char *Name() const {return (*this)->Name(); }
+		inline std::string FullName(bool const &Pretty) const { return (*this)->FullName(Pretty); }
+		inline std::string FullName() const { return (*this)->FullName(); }
+		inline const char *Section() const {return (*this)->Section(); }
+		inline bool Purge() const {return (*this)->Purge(); }
+		inline const char *Arch() const {return (*this)->Arch(); }
+		inline pkgCache::GrpIterator Group() const { return (*this)->Group(); }
+		inline pkgCache::VerIterator VersionList() const { return (*this)->VersionList(); }
+		inline pkgCache::VerIterator CurrentVer() const { return (*this)->CurrentVer(); }
+		inline pkgCache::DepIterator RevDependsList() const { return (*this)->RevDependsList(); }
+		inline pkgCache::PrvIterator ProvidesList() const { return (*this)->ProvidesList(); }
+		inline pkgCache::PkgIterator::OkState State() const { return (*this)->State(); }
+		inline const char *CandVersion() const { return (*this)->CandVersion(); }
+		inline const char *CurVersion() const { return (*this)->CurVersion(); }
+		inline pkgCache *Cache() {return (*this)->Cache();};
+
+		friend std::ostream& operator<<(std::ostream& out, const_iterator i) { return operator<<(out, (*i)); }
+
+		inline pkgCache::PkgIterator const * operator->() const {
+			return &**this;
+		};
+	};
+	// 103. set::iterator is required to be modifiable, but this allows modification of keys
+	typedef typename APT::PackageSet::const_iterator iterator;
+									/*}}}*/
+};
+									/*}}}*/
+}
+#endif

+ 2 - 0
debian/changelog

@@ -22,6 +22,8 @@ apt (0.7.26~exp6) UNRELEASED; urgency=low
     - correct "Dangerous iterator usage." pointed out by cppcheck
   * ftparchive/writer.h:
     - add a virtual destructor to FTWScanner class (for cppcheck)
+  * apt-pkg/packageset.h:
+    - add a simple wrapper around std::set for packages with it
 
  -- David Kalnischkies <kalnischkies@gmail.com>  Sat, 29 May 2010 19:09:05 +0200