00001
00002
00003 #ifndef _NODEFACTORY_H_
00004 #define _NODEFACTORY_H_
00005
00006 #include "ParameterSet.h"
00007 #include <vector>
00008 #include <string>
00009
00010 namespace FD {
00011
00012 class Node;
00013
00019 class _NodeFactory {
00020 protected:
00021 std::string name;
00022
00023 public:
00024 _NodeFactory(std::string _name)
00025 : name(_name)
00026 {}
00027 virtual const std::string &getName() {return name;}
00028
00029 virtual Node* Create(const std::string &name, const ParameterSet ¶meters) = 0;
00030 virtual ~_NodeFactory() {;}
00031
00032 private:
00033
00034
00035 };
00036
00037
00038
00039 template <class T>
00040 class NodeFactory : public _NodeFactory {
00041 public:
00042 NodeFactory(std::string _name)
00043 : _NodeFactory(_name)
00044 {}
00045 virtual Node* Create(const std::string &name, const ParameterSet ¶meters) {
00046 return ((Node*) new T(name,parameters));
00047 }
00048 };
00049
00050 }
00051 #endif