summaryrefslogtreecommitdiff
path: root/apt-pkg
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2010-05-30 07:57:32 +0200
committerDavid Kalnischkies <kalnischkies@gmail.com>2010-05-30 07:57:32 +0200
commite1dbde8dd006ca0ed6b7a6c383af7bbc60014912 (patch)
tree404a3c469869f9cf4a67ee43fbda8a7ed1bfdc6a /apt-pkg
parentf5cd2dbfc493127b18d9ea2b0bb258b736b91cd4 (diff)
* apt-pkg/packageset.h:
- add a simple wrapper around std::set for packages with it
Diffstat (limited to 'apt-pkg')
-rw-r--r--apt-pkg/makefile3
-rw-r--r--apt-pkg/packageset.h53
2 files changed, 55 insertions, 1 deletions
diff --git a/apt-pkg/makefile b/apt-pkg/makefile
index 148ad581b..d4537859d 100644
--- a/apt-pkg/makefile
+++ b/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..
diff --git a/apt-pkg/packageset.h b/apt-pkg/packageset.h
new file mode 100644
index 000000000..d80536942
--- /dev/null
+++ b/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