00001 // Emacs -*- C++ -*- 00002 #ifndef ANAPHE_FILTEREXPRESSIONBASE 00003 #define ANAPHE_FILTEREXPRESSIONBASE 1 00004 00005 #include <string> 00006 #include <map> 00007 00008 namespace Anaphe { 00009 namespace AIDA_Tuple_native { 00010 00011 class IFilterExpressionBase { 00012 public: 00013 virtual ~IFilterExpressionBase() {}; 00014 virtual bool bind( const std::map<std::string, void*>& args ) = 0; 00015 virtual bool accept() const = 0; 00016 }; 00017 00018 class IFilterExpressionBaseFactory { 00019 public: 00020 virtual ~IFilterExpressionBaseFactory() {}; 00021 virtual IFilterExpressionBase* create() = 0; 00022 }; 00023 00024 template<class T> 00025 class IFilterExpressionFactory : virtual public IFilterExpressionBaseFactory { 00026 public: 00027 IFilterExpressionFactory() {}; 00028 ~IFilterExpressionFactory() {}; 00029 IFilterExpressionBase* create() { return new T; } 00030 }; 00031 00032 } 00033 } 00034 00035 #endif /* ifndef ANAPHE_FILTEREXPRESSIONBASE */