00001 #ifndef X3DTK_X3DLOADER_H 00002 #define X3DTK_X3DLOADER_H 00003 00004 #include "X3DTypes.h" 00005 00006 #include <list> 00007 00008 namespace X3DTK { 00009 00010 class X3DComponentWalker; 00011 class X3DComponentVisitor; 00012 00013 namespace X3D { 00014 00015 class Creator; 00016 class X3DComponentCreator; 00017 class Scene; 00018 class X3DFileValidator; 00019 class X3DXmlLoader; 00020 00021 } 00022 00029 class X3DLoader 00030 { 00031 public: 00033 X3DLoader(); 00035 virtual ~X3DLoader() = 0; 00036 00040 X3D::Scene *load(const char *file, bool fileValidation = true) const; 00041 00043 void setComponentCreator(X3D::X3DComponentCreator *component); 00045 void setComponentWalkerForFileValidator(X3DComponentWalker *component); 00047 void setComponentVisitorForFileValidator(X3DComponentVisitor *component); 00049 void X3DLoader::setFileValidator(X3D::X3DFileValidator *fileValidator); 00050 00052 template<class L> 00053 static L *getInstanceOf(); 00054 00056 template<class L> 00057 static void removeInstanceOf(); 00058 00060 static void removeAllInstances(); 00061 00062 protected: 00064 X3D::Creator *creator; 00066 X3D::X3DFileValidator *fileValidator; 00068 X3D::X3DXmlLoader *xmlLoader; 00069 00070 private: 00071 static std::list<X3DLoader *> _X3DLoaderList; 00072 }; 00073 00074 } 00075 00076 #include "X3DLoader.inl" 00077 00078 #endif