00001 #if !defined(h_dd233b8b_5c59_4956_9393_6581c95f9779) 00002 #define h_dd233b8b_5c59_4956_9393_6581c95f9779 00003 00004 #include <string> 00005 #include <map> 00006 #include <memory> 00007 #include "Portability.hh" 00008 #include "TriggeringEventEvaluator.hh" 00009 #include "FactoryParams.hh" 00010 00011 LOG4CPP_NS_BEGIN 00012 class LOG4CPP_EXPORT TriggeringEventEvaluatorFactory 00013 { 00014 public: 00015 typedef FactoryParams params_t; 00016 typedef std::auto_ptr<TriggeringEventEvaluator>(*create_function_t)(const params_t& params); 00017 00018 static TriggeringEventEvaluatorFactory& getInstance(); 00019 void registerCreator(const std::string& class_name, create_function_t create_function); 00020 std::auto_ptr<TriggeringEventEvaluator> create(const std::string& class_name, const params_t& params); 00021 bool registered(const std::string& class_name) const; 00022 00023 private: 00024 TriggeringEventEvaluatorFactory(){}; 00025 00026 typedef std::map<std::string, create_function_t> creators_t; 00027 typedef creators_t::const_iterator const_iterator; 00028 00029 creators_t creators_; 00030 }; 00031 LOG4CPP_NS_END 00032 00033 #endif // h_dd233b8b_5c59_4956_9393_6581c95f9779