00001 00002 00003 00005 00006 00011 00016 00021 // NodeCreationProxy.h // 00023 00024 #ifndef NODECREATIONPROXY_H 00025 #define NODECREATIONPROXY_H 00026 00027 #include "X3DNodeProxy.h" 00028 #include "Type.h" 00029 00030 namespace X3DTK { 00031 00032 class X3DComponentCreator; 00033 00035 00036 class NodeCreationProxy : public X3DNodeProxy 00037 { 00038 public: 00040 NodeCreationProxy(); 00042 virtual ~NodeCreationProxy(); 00043 00045 void setComponentCreator(X3DComponentCreator *component); 00047 X3D::SFNode createFromName(const SFString &name) const; 00049 void reset(); 00050 00052 SFString getComponentNameOf(const SFString &name) const; 00053 00054 friend NodeCreationProxy *joinNodeCreationProxy(NodeCreationProxy *N0, NodeCreationProxy *N1); 00055 00056 private: 00058 virtual void addType(const Type *type); 00060 CreationFunction *getCreationFunctionOf(const SFString &name) const; 00061 00062 //Dictionary of all the creation functions used. 00063 CreationDict creationDict_; 00064 std::list<X3DComponentCreator *> componentList_; 00065 }; 00066 00067 } 00068 00069 #endif