diff options
Diffstat (limited to 'rst_parser/arc_ff_factory.h')
-rw-r--r-- | rst_parser/arc_ff_factory.h | 42 |
1 files changed, 0 insertions, 42 deletions
diff --git a/rst_parser/arc_ff_factory.h b/rst_parser/arc_ff_factory.h deleted file mode 100644 index 4237fd5d..00000000 --- a/rst_parser/arc_ff_factory.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef _ARC_FF_FACTORY_H_ -#define _ARC_FF_FACTORY_H_ - -#include <string> -#include <map> -#include <boost/shared_ptr.hpp> - -struct ArcFFFactoryBase { - virtual boost::shared_ptr<ArcFeatureFunction> Create(const std::string& param) const = 0; -}; - -template<class FF> -struct ArcFFFactory : public ArcFFFactoryBase { - boost::shared_ptr<ArcFeatureFunction> Create(const std::string& param) const { - return boost::shared_ptr<ArcFeatureFunction>(new FF(param)); - } -}; - -struct ArcFFRegistry { - boost::shared_ptr<ArcFeatureFunction> Create(const std::string& name, const std::string& param) const { - std::map<std::string, ArcFFFactoryBase*>::const_iterator it = facts.find(name); - assert(it != facts.end()); - return it->second->Create(param); - } - - void Register(const std::string& name, ArcFFFactoryBase* fact) { - ArcFFFactoryBase*& f = facts[name]; - assert(f == NULL); - f = fact; - } - std::map<std::string, ArcFFFactoryBase*> facts; -}; - -std::ostream& operator<<(std::ostream& os, const ArcFFRegistry& reg) { - for (std::map<std::string, ArcFFFactoryBase*>::const_iterator it = reg.facts.begin(); - it != reg.facts.end(); ++it) { - os << " " << it->first << std::endl; - } - return os; -} - -#endif |