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