]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/cachefilter.h
move ByHash into its own function
[apt.git] / apt-pkg / cachefilter.h
index 25cd43f476136dd7fd95418055e29e0b8c128031..d9b957c674dbd628e46243a2e50e6b79f2890bb6 100644 (file)
@@ -7,6 +7,7 @@
 #define APT_CACHEFILTER_H
 // Include Files                                                       /*{{{*/
 #include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
 
 #include <string>
 
                                                                        /*}}}*/
 namespace APT {
 namespace CacheFilter {
+
+class PackageMatcher {
+ public:
+   virtual bool operator() (pkgCache::PkgIterator const &/*Pkg*/) { 
+      return false; };
+   virtual bool operator() (pkgCache::GrpIterator const &/*Grp*/) { 
+      return false; };
+   virtual bool operator() (pkgCache::VerIterator const &/*Ver*/) {
+      return false; };
+   
+   virtual ~PackageMatcher() {};
+};
+
 // PackageNameMatchesRegEx                                             /*{{{*/
-class PackageNameMatchesRegEx {
+class PackageNameMatchesRegEx : public PackageMatcher {
          /** \brief dpointer placeholder (for later in case we need it) */
          void *d;
        regex_t* pattern;
 public:
        PackageNameMatchesRegEx(std::string const &Pattern);
-       bool operator() (pkgCache::PkgIterator const &Pkg);
-       bool operator() (pkgCache::GrpIterator const &Grp);
-       ~PackageNameMatchesRegEx();
+       virtual bool operator() (pkgCache::PkgIterator const &Pkg);
+       virtual bool operator() (pkgCache::GrpIterator const &Grp);
+       virtual ~PackageNameMatchesRegEx();
+};
+                                                                       /*}}}*/
+// PackageNameMatchesFnmatch                                           /*{{{*/
+   class PackageNameMatchesFnmatch : public PackageMatcher{
+         /** \brief dpointer placeholder (for later in case we need it) */
+         void *d;
+         const std::string Pattern;
+public:
+         PackageNameMatchesFnmatch(std::string const &Pattern) 
+            : Pattern(Pattern) {};
+        virtual bool operator() (pkgCache::PkgIterator const &Pkg);
+       virtual bool operator() (pkgCache::GrpIterator const &Grp);
+       virtual ~PackageNameMatchesFnmatch() {};
 };
                                                                        /*}}}*/
 // PackageArchitectureMatchesSpecification                             /*{{{*/
@@ -35,7 +62,7 @@ public:
    debian-policy ยง11.1 "Architecture specification strings".
 
    Examples: i386, mipsel, linux-any, any-amd64, any */
-class PackageArchitectureMatchesSpecification {
+class PackageArchitectureMatchesSpecification : public PackageMatcher {
        std::string literal;
        std::string complete;
        bool isPattern;
@@ -51,9 +78,9 @@ public:
         */
        PackageArchitectureMatchesSpecification(std::string const &pattern, bool const isPattern = true);
        bool operator() (char const * const &arch);
-       bool operator() (pkgCache::PkgIterator const &Pkg);
-       bool operator() (pkgCache::VerIterator const &Ver);
-       ~PackageArchitectureMatchesSpecification();
+       virtual bool operator() (pkgCache::PkgIterator const &Pkg);
+       virtual bool operator() (pkgCache::VerIterator const &Ver);
+       virtual ~PackageArchitectureMatchesSpecification();
 };
                                                                        /*}}}*/
 }