00001 #ifndef X3DTK_CREATOR_H 00002 #define X3DTK_CREATOR_H 00003 00004 #include "X3D_CreationFunction.h" 00005 #include "X3DActor.h" 00006 00007 namespace X3DTK { 00008 namespace X3D { 00009 00010 class X3DComponentCreator; 00011 00019 class Creator : public X3DActor 00020 { 00021 public: 00023 Creator(); 00025 virtual ~Creator(); 00026 00028 void setComponentCreator(X3DComponentCreator *component); 00030 X3D::SFNode createFromName(const SFString &name) const; 00032 void reset(); 00033 00035 SFString getComponentNameOf(const SFString &name) const; 00036 00037 friend Creator *joinCreator(Creator *N0, Creator *N1); 00038 00039 private: 00041 virtual void addType(const SFType *type); 00043 CreationFunction *getCreationFunctionOf(const SFString &name) const; 00044 00045 //Dictionary of all the creation functions used. 00046 CreationDict creationDict_; 00047 std::list<X3DComponentCreator *> componentList_; 00048 }; 00049 00050 } 00051 } 00052 00053 #endif