]> git.saurik.com Git - apt.git/commitdiff
add PACKAGE_MATCHER_ABI_COMPAT mode for now so that this branch can be merged without...
authorMichael Vogt <mvo@debian.org>
Thu, 15 Aug 2013 11:39:32 +0000 (13:39 +0200)
committerMichael Vogt <mvo@debian.org>
Thu, 15 Aug 2013 11:39:32 +0000 (13:39 +0200)
apt-pkg/cachefilter.h
apt-private/private-list.cc

index ddd8df16eda6d7f79e58d527b864e85f8b6e54ef..34b7d0b46eb634f4b67ddf9bb7470ecf9b50c33e 100644 (file)
 namespace APT {
 namespace CacheFilter {
 
 namespace APT {
 namespace CacheFilter {
 
+#define PACKAGE_MATCHER_ABI_COMPAT 1
+#ifdef PACKAGE_MATCHER_ABI_COMPAT
+
+// PackageNameMatchesRegEx                                             /*{{{*/
+class PackageNameMatchesRegEx {
+         /** \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();
+};
+                                                                       /*}}}*/
+// PackageNameMatchesFnmatch                                           /*{{{*/
+ class PackageNameMatchesFnmatch {
+         /** \brief dpointer placeholder (for later in case we need it) */
+         void *d;
+         const std::string Pattern;
+public:
+         PackageNameMatchesFnmatch(std::string const &Pattern) 
+            : Pattern(Pattern) {};
+        bool operator() (pkgCache::PkgIterator const &Pkg);
+       bool operator() (pkgCache::GrpIterator const &Grp);
+       ~PackageNameMatchesFnmatch() {};
+};
+                                                                       /*}}}*/
+// PackageArchitectureMatchesSpecification                             /*{{{*/
+/** \class PackageArchitectureMatchesSpecification
+   \brief matching against architecture specification strings
+
+   The strings are of the format <kernel>-<cpu> where either component,
+   or the whole string, can be the wildcard "any" as defined in
+   debian-policy ยง11.1 "Architecture specification strings".
+
+   Examples: i386, mipsel, linux-any, any-amd64, any */
+class PackageArchitectureMatchesSpecification {
+       std::string literal;
+       std::string complete;
+       bool isPattern;
+       /** \brief dpointer placeholder (for later in case we need it) */
+       void *d;
+public:
+       /** \brief matching against architecture specification strings
+        *
+        * @param pattern is the architecture specification string
+        * @param isPattern defines if the given \b pattern is a
+        *        architecture specification pattern to match others against
+        *        or if it is the fixed string and matched against patterns
+        */
+       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();
+};
+
+#else
+
 class PackageMatcher {
  public:
    virtual bool operator() (pkgCache::PkgIterator const &Pkg) { return false; };
 class PackageMatcher {
  public:
    virtual bool operator() (pkgCache::PkgIterator const &Pkg) { return false; };
@@ -37,7 +97,7 @@ public:
 };
                                                                        /*}}}*/
 // PackageNameMatchesFnmatch                                           /*{{{*/
 };
                                                                        /*}}}*/
 // PackageNameMatchesFnmatch                                           /*{{{*/
- class PackageNameMatchesFnmatch : public PackageMatcher{
  class PackageNameMatchesFnmatch : public PackageMatcher{
          /** \brief dpointer placeholder (for later in case we need it) */
          void *d;
          const std::string Pattern;
          /** \brief dpointer placeholder (for later in case we need it) */
          void *d;
          const std::string Pattern;
@@ -78,6 +138,7 @@ public:
        virtual bool operator() (pkgCache::VerIterator const &Ver);
        virtual ~PackageArchitectureMatchesSpecification();
 };
        virtual bool operator() (pkgCache::VerIterator const &Ver);
        virtual ~PackageArchitectureMatchesSpecification();
 };
+#endif
                                                                        /*}}}*/
 }
 }
                                                                        /*}}}*/
 }
 }
index ac72ce51a6c7013bdc9783ee3cee4ea471fdb3f1..c3a21aafcdea22e41c3b5db47d558435155467b5 100644 (file)
@@ -53,6 +53,9 @@ struct PackageSortAlphabetic
     }
 };
 
     }
 };
 
+#ifdef PACKAGE_MATCHER_ABI_COMPAT
+#define PackageMatcher PackageNameMatchesFnmatch
+#endif
 class PackageNameMatcher : public Matcher
 {
   public:
 class PackageNameMatcher : public Matcher
 {
   public:
@@ -61,11 +64,16 @@ class PackageNameMatcher : public Matcher
       for(int i=0; patterns[i] != NULL; i++)
       {
          std::string pattern = patterns[i];
       for(int i=0; patterns[i] != NULL; i++)
       {
          std::string pattern = patterns[i];
+#ifdef PACKAGE_MATCHER_ABI_COMPAT
+            APT::CacheFilter::PackageNameMatchesFnmatch *cachefilter = NULL;
+            cachefilter = new APT::CacheFilter::PackageNameMatchesFnmatch(pattern);
+#else
          APT::CacheFilter::PackageMatcher *cachefilter = NULL;
          if(_config->FindB("APT::Cmd::UseRegexp", false) == true)
             cachefilter = new APT::CacheFilter::PackageNameMatchesRegEx(pattern);
          else
             cachefilter = new APT::CacheFilter::PackageNameMatchesFnmatch(pattern);
          APT::CacheFilter::PackageMatcher *cachefilter = NULL;
          if(_config->FindB("APT::Cmd::UseRegexp", false) == true)
             cachefilter = new APT::CacheFilter::PackageNameMatchesRegEx(pattern);
          else
             cachefilter = new APT::CacheFilter::PackageNameMatchesFnmatch(pattern);
+#endif
          filters.push_back(cachefilter);
       }
    }
          filters.push_back(cachefilter);
       }
    }
@@ -88,6 +96,7 @@ class PackageNameMatcher : public Matcher
 private:
    std::vector<APT::CacheFilter::PackageMatcher*> filters;   
    std::vector<APT::CacheFilter::PackageMatcher*>::const_iterator J;
 private:
    std::vector<APT::CacheFilter::PackageMatcher*> filters;   
    std::vector<APT::CacheFilter::PackageMatcher*>::const_iterator J;
+   #undef PackageMatcher
 };
 
 
 };