X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Ffactory_filter.cpp;h=8b69ae11011592f71a512a8741ccdd95c671797e;hb=743341841a21a695d08c99b27a30329119030db5;hp=de786ff61fd9d76f12022bdf86339495c1d41ad0;hpb=14d0e634d5061208301502d813d488d1e82f190b;p=metaproxy-moved-to-github.git diff --git a/src/factory_filter.cpp b/src/factory_filter.cpp index de786ff..8b69ae1 100644 --- a/src/factory_filter.cpp +++ b/src/factory_filter.cpp @@ -1,4 +1,4 @@ -/* $Id: factory_filter.cpp,v 1.1 2006-01-04 14:30:51 adam Exp $ +/* $Id: factory_filter.cpp,v 1.3 2006-01-19 09:41:01 adam Exp $ Copyright (c) 2005, Index Data. %LICENSE% @@ -29,8 +29,8 @@ namespace yp2 { }; } -yp2::FactoryFilterException::FactoryFilterException(const std::string message) - : std::runtime_error("FilterException: " + message) +yp2::FactoryFilter::NotFound::NotFound(const std::string message) + : std::runtime_error(message) { } @@ -64,22 +64,42 @@ bool yp2::FactoryFilter::drop_creator(std::string fi) return m_p->m_fcm.erase(fi) == 1; } +bool yp2::FactoryFilter::exist(std::string fi) +{ + Rep::CallbackMap::const_iterator it = m_p->m_fcm.find(fi); + + if (it == m_p->m_fcm.end()) + { + return false; + } + return true; +} + yp2::filter::Base* yp2::FactoryFilter::create(std::string fi) { Rep::CallbackMap::const_iterator it = m_p->m_fcm.find(fi); if (it == m_p->m_fcm.end()){ std::string msg = "filter type '" + fi + "' not found"; - throw yp2::FactoryFilterException(msg); + throw NotFound(msg); } // call create function return (it->second()); } +bool yp2::FactoryFilter::have_dl_support() +{ #if HAVE_DLFCN_H -bool yp2::FactoryFilter::add_creator_dyn(const std::string &fi, - const std::string &path) + return true; +#else + return false; +#endif +} + +bool yp2::FactoryFilter::add_creator_dl(const std::string &fi, + const std::string &path) { +#if HAVE_DLFCN_H if (m_p->m_fcm.find(fi) != m_p->m_fcm.end()) { return true; @@ -105,8 +125,10 @@ bool yp2::FactoryFilter::add_creator_dyn(const std::string &fi, } struct yp2_filter_struct *s = (struct yp2_filter_struct *) dlsym_ptr; return add_creator(fi, s->creator); -} +#else + return false; #endif +} /* * Local variables: