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 namespace log4cpp 00012 { 00013 class LOG4CPP_EXPORT TriggeringEventEvaluatorFactory 00014 { 00015 public: 00016 typedef FactoryParams params_t; 00017 typedef std::auto_ptr<TriggeringEventEvaluator> (*create_function_t)(const params_t& params); 00018 00019 static TriggeringEventEvaluatorFactory& getInstance(); 00020 void registerCreator(const std::string& class_name, create_function_t create_function); 00021 std::auto_ptr<TriggeringEventEvaluator> create(const std::string& class_name, const params_t& params); 00022 bool registered(const std::string& class_name) const; 00023 00024 private: 00025 TriggeringEventEvaluatorFactory(){}; 00026 00027 typedef std::map<std::string, create_function_t> creators_t; 00028 typedef creators_t::const_iterator const_iterator; 00029 00030 creators_t creators_; 00031 }; 00032 } 00033 00034 #endif // h_dd233b8b_5c59_4956_9393_6581c95f9779