00001 // Emacs -*- C++ -*- 00002 #ifndef ANAPHE_AIDA_FILTER 00003 #define ANAPHE_AIDA_FILTER 1 00004 00005 #include "AIDA/IFilter.h" 00006 #include "IFilterExpressionBase.h" 00007 #include <memory> 00008 00009 namespace Anaphe { 00010 namespace AIDA_Tuple_native { 00011 class CompiledExpressionManager; 00012 00013 class AIDA_Filter : virtual public AIDA::IFilter { 00014 public: 00015 // Constructor 00016 AIDA_Filter( CompiledExpressionManager& manager, 00017 const std::string& expression ); 00018 // Destructor 00019 virtual ~AIDA_Filter(){}; 00020 00021 // Methods inherited from AIDA/IFilter 00022 virtual bool initialize( AIDA::ITuple & tuple ); 00023 virtual bool accept() const; 00024 const std::string & expression() const; 00025 00026 private: 00027 CompiledExpressionManager& m_manager; 00028 std::string m_expression; 00029 std::auto_ptr<IFilterExpressionBase> m_filter; 00030 }; 00031 00032 } 00033 } 00034 00035 #endif /* ifndef ANAPHE_AIDA_FILTER */