1 // -*- mode: cpp; mode: fold -*-
3 /** \file cachefilter.h
4 Collection of functor classes */
6 #ifndef APT_CACHEFILTER_H
7 #define APT_CACHEFILTER_H
8 // Include Files /*{{{*/
9 #include <apt-pkg/pkgcache.h>
10 #include <apt-pkg/cacheiterators.h>
17 namespace CacheFilter
{
19 #define PACKAGE_MATCHER_ABI_COMPAT 1
20 #ifdef PACKAGE_MATCHER_ABI_COMPAT
22 // PackageNameMatchesRegEx /*{{{*/
23 class PackageNameMatchesRegEx
{
24 /** \brief dpointer placeholder (for later in case we need it) */
28 PackageNameMatchesRegEx(std::string
const &Pattern
);
29 bool operator() (pkgCache::PkgIterator
const &Pkg
);
30 bool operator() (pkgCache::GrpIterator
const &Grp
);
31 ~PackageNameMatchesRegEx();
34 // PackageNameMatchesFnmatch /*{{{*/
35 class PackageNameMatchesFnmatch
{
36 /** \brief dpointer placeholder (for later in case we need it) */
38 const std::string Pattern
;
40 PackageNameMatchesFnmatch(std::string
const &Pattern
)
41 : Pattern(Pattern
) {};
42 bool operator() (pkgCache::PkgIterator
const &Pkg
);
43 bool operator() (pkgCache::GrpIterator
const &Grp
);
44 ~PackageNameMatchesFnmatch() {};
47 // PackageArchitectureMatchesSpecification /*{{{*/
48 /** \class PackageArchitectureMatchesSpecification
49 \brief matching against architecture specification strings
51 The strings are of the format \<kernel\>-\<cpu\> where either component,
52 or the whole string, can be the wildcard "any" as defined in
53 debian-policy §11.1 "Architecture specification strings".
55 Examples: i386, mipsel, linux-any, any-amd64, any */
56 class PackageArchitectureMatchesSpecification
{
60 /** \brief dpointer placeholder (for later in case we need it) */
63 /** \brief matching against architecture specification strings
65 * @param pattern is the architecture specification string
66 * @param isPattern defines if the given \b pattern is a
67 * architecture specification pattern to match others against
68 * or if it is the fixed string and matched against patterns
70 PackageArchitectureMatchesSpecification(std::string
const &pattern
, bool const isPattern
= true);
71 bool operator() (char const * const &arch
);
72 bool operator() (pkgCache::PkgIterator
const &Pkg
);
73 bool operator() (pkgCache::VerIterator
const &Ver
);
74 ~PackageArchitectureMatchesSpecification();
80 class PackageMatcher
{
82 virtual bool operator() (pkgCache::PkgIterator
const &Pkg
) { return false; };
83 virtual bool operator() (pkgCache::GrpIterator
const &Grp
) { return false; };
84 virtual bool operator() (pkgCache::VerIterator
const &Ver
) { return false; };
86 virtual ~PackageMatcher() {};
89 // PackageNameMatchesRegEx /*{{{*/
90 class PackageNameMatchesRegEx
: public PackageMatcher
{
91 /** \brief dpointer placeholder (for later in case we need it) */
95 PackageNameMatchesRegEx(std::string
const &Pattern
);
96 virtual bool operator() (pkgCache::PkgIterator
const &Pkg
);
97 virtual bool operator() (pkgCache::GrpIterator
const &Grp
);
98 virtual ~PackageNameMatchesRegEx();
101 // PackageNameMatchesFnmatch /*{{{*/
102 class PackageNameMatchesFnmatch
: public PackageMatcher
{
103 /** \brief dpointer placeholder (for later in case we need it) */
105 const std::string Pattern
;
107 PackageNameMatchesFnmatch(std::string
const &Pattern
)
108 : Pattern(Pattern
) {};
109 virtual bool operator() (pkgCache::PkgIterator
const &Pkg
);
110 virtual bool operator() (pkgCache::GrpIterator
const &Grp
);
111 virtual ~PackageNameMatchesFnmatch() {};
114 // PackageArchitectureMatchesSpecification /*{{{*/
115 /** \class PackageArchitectureMatchesSpecification
116 \brief matching against architecture specification strings
118 The strings are of the format <kernel>-<cpu> where either component,
119 or the whole string, can be the wildcard "any" as defined in
120 debian-policy §11.1 "Architecture specification strings".
122 Examples: i386, mipsel, linux-any, any-amd64, any */
123 class PackageArchitectureMatchesSpecification
: public PackageMatcher
{
125 std::string complete
;
127 /** \brief dpointer placeholder (for later in case we need it) */
130 /** \brief matching against architecture specification strings
132 * @param pattern is the architecture specification string
133 * @param isPattern defines if the given \b pattern is a
134 * architecture specification pattern to match others against
135 * or if it is the fixed string and matched against patterns
137 PackageArchitectureMatchesSpecification(std::string
const &pattern
, bool const isPattern
= true);
138 bool operator() (char const * const &arch
);
139 virtual bool operator() (pkgCache::PkgIterator
const &Pkg
);
140 virtual bool operator() (pkgCache::VerIterator
const &Ver
);
141 virtual ~PackageArchitectureMatchesSpecification();