00001 00002 // NodeCreationProxy.h // 00004 00005 #ifndef NODECREATIONPROXY_H 00006 #define NODECREATIONPROXY_H 00007 00008 #include "X3DNodeProxy.h" 00009 #include "Type.h" 00010 00011 namespace X3DTK { 00012 00013 class X3DComponentCreator; 00014 00016 00017 class NodeCreationProxy : public X3DNodeProxy 00018 { 00019 public: 00021 NodeCreationProxy(); 00023 virtual ~NodeCreationProxy(); 00024 00026 void setComponentCreator(X3DComponentCreator *component); 00028 X3D::SFNode createFromName(const SFString &name) const; 00030 void reset(); 00031 00033 SFString getComponentNameOf(const SFString &name) const; 00034 00035 friend NodeCreationProxy *joinNodeCreationProxy(NodeCreationProxy *N0, NodeCreationProxy *N1); 00036 00037 private: 00039 virtual void addType(const Type *type); 00041 CreationFunction *getCreationFunctionOf(const SFString &name) const; 00042 00043 //Dictionary of all the creation functions used. 00044 CreationDict creationDict_; 00045 std::list<X3DComponentCreator *> componentList_; 00046 }; 00047 00048 } 00049 00050 #endif