X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Ffilter_factory.hpp;h=320f86fe42836b0cde828cc70107e1c088768a7d;hb=77dee8966dd1304a0fb8540c3fc68d02dc6ce84a;hp=0ac8b6700e7ff2fed7029e530712a7a0bf7ac0d1;hpb=349c7da1d51fc13c35a03c0be3fd6b2b63af8875;p=metaproxy-moved-to-github.git diff --git a/src/filter_factory.hpp b/src/filter_factory.hpp index 0ac8b67..320f86f 100644 --- a/src/filter_factory.hpp +++ b/src/filter_factory.hpp @@ -1,4 +1,4 @@ -/* $Id: filter_factory.hpp,v 1.1 2005-10-28 10:35:30 marc Exp $ +/* $Id: filter_factory.hpp,v 1.6 2005-11-10 23:10:42 adam Exp $ Copyright (c) 2005, Index Data. %LICENSE% @@ -12,41 +12,43 @@ #include #include -#include "config.hpp" +#include +#include + #include "filter.hpp" namespace yp2 { - namespace filter { - class FilterFactory { - -#if 0 - public: - typedef yp2::filter::Base* (*CreateFilterCallback)(); - /// true if registration ok - bool register_filter(std::string fi, CreateFilterCallback cfc); - /// true if unregistration ok - bool unregister_filter(std::string fi); - /// factory create method - yp2::filter::Base* create(std::string fi); - - private: - typedef std::map CallbackMap; - -#endif - - }; - } - class FilterFactoryException : public std::runtime_error { public: - FilterFactoryException(const std::string message) - : std::runtime_error("FilterException: " + message){ - }; + FilterFactoryException(const std::string message); }; + + class FilterFactory : public boost::noncopyable + { + typedef yp2::filter::Base* (*CreateFilterCallback)(); + typedef std::map CallbackMap; - + class Rep; + public: + /// true if registration ok + + FilterFactory(); + ~FilterFactory(); + + bool add_creator(std::string fi, CreateFilterCallback cfc); + /// true if unregistration ok + + bool drop_creator(std::string fi); + + /// factory create method + + yp2::filter::Base* create(std::string fi); + + private: + boost::scoped_ptr m_p; + }; } #endif