]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/cachefilter.h
[ABI-Break] remove the PACKAGE_MATCHER_ABI_COMPAT defines
[apt.git] / apt-pkg / cachefilter.h
index 25cd43f476136dd7fd95418055e29e0b8c128031..8e8776ed9a4af8d1a173a29a7db4c165de4e9b57 100644 (file)
                                                                        /*}}}*/
 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 +58,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 +74,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();
 };
                                                                        /*}}}*/
 }