CVS commit by mornfall: Convert the filters to newish macros. Flag them as appropriate. Move the default parseArgs into FilterGrouper, so it's not duplicated and regulate its use by using HasFlags appropriately. Most filters work like before now.
M +6 -6 filters.cpp 1.20 M +29 -12 filters.h 1.16 --- kdenonbeta/kdedebian/kapture/libcapture/filters.cpp #1.19:1.20 @@ -67,4 +67,10 @@ void FilterGrouper::addNode (TreeNode *n } /* }}} */ +Param::Map FilterGrouper::parseArgs (string s) +{ + Param::Map r; + Param::set (r, "string", ParamStr::create (s)); + return r; +}; /* === PkgExistFilter === */ @@ -106,10 +112,4 @@ bool PkgNameFilter::filterCondition (Tre } /* }}} */ -Param::Map PkgNameFilter::parseArgs (string s) -{ - Param::Map r; - Param::set (r, "string", ParamStr::create (s)); - return r; -}; /* === PkgDescrFilter === */ --- kdenonbeta/kdedebian/kapture/libcapture/filters.h #1.15:1.16 @@ -34,4 +34,5 @@ GRP_CLASS(t,_n) \ bool filterCondition (TreeNode *); +#define FILT_FLAGS(f) unsigned flags () { return IsFilter | f; }; namespace capture { @@ -47,4 +48,5 @@ namespace capture { virtual void addNode (TreeNode *, TreeNode *); virtual bool filterCondition (TreeNode *) = 0; + Param::Map parseArgs (string s); virtual unsigned flags () { return IsFilter; }; }; @@ -59,5 +61,5 @@ namespace capture { public: FILT_CLASS (PkgExistFilter, "Remove ghost packages"); - GRP_FLAGS (IsSystem); + FILT_FLAGS (IsSystem); }; /* }}} */ @@ -68,6 +70,5 @@ namespace capture { public: FILT_CLASS (PkgNameFilter, "Package Name"); - GRP_FLAGS (IsFilter | HasParser); - Param::Map parseArgs (string s); + FILT_FLAGS (HasParser); protected: std::string m_str; @@ -77,15 +78,31 @@ namespace capture { * ---------------------------------------------------------------------- */ - FILTER_DEF (PkgDescrFilter, "Short Description", FilterGrouper, 0, std::string m_str;); + class PkgDescrFilter : public FilterGrouper { + public: + FILT_CLASS (PkgDescrFilter, "Short Description"); + FILT_FLAGS (HasParser); + protected: + std::string m_str; + }; /* }}} */ - /* PkgTagFilter - match package tags against expression {{{ - * ---------------------------------------------------------------------- - */ - FILTER_DEF (PkgTagFilter, "Package Tags", FilterGrouper, PkgManager::TagsChange, bool m_filter; Tagexpr *m_expr;); + // PkgTagFilter - match package tags against expression {{{ + // ---------------------------------------------------------------------- + class PkgTagFilter : public FilterGrouper { + public: + FILT_CLASS (PkgTagFilter, "Package Tags"); + GRP_AFFECT (PkgManager::TagsChange); + FILT_FLAGS (HasParser); + protected: + bool m_filter; + Tagexpr *m_expr; + }; /* }}} */ - /* PkgChangedFilter - filter to remove unchanged packages {{{ - * ---------------------------------------------------------------------- - */ - FILTER_DEF (PkgChangedFilter, "Changed Only", FilterGrouper, PkgManager::InstallChange); + // PkgChangedFilter - filter to remove unchanged packages {{{ + // ---------------------------------------------------------------------- + class PkgChangedFilter : public FilterGrouper { + public: + FILT_CLASS (PkgChangedFilter, "Changed Only"); + GRP_AFFECT (PkgManager::InstallChange); + }; /* }}} */ /* PkgStatusFilter - filter on the status field of package {{{