00001 00002 // X3D_X3DLoader.h // 00004 00005 #ifndef X3DLOADER_H 00006 #define X3DLOADER_H 00007 00008 #include "X3DTypes.h" 00009 00010 #include <list> 00011 00012 namespace X3DTK { 00013 00014 class X3DComponentWalker; 00015 class X3DComponentVisitor; 00016 00017 namespace X3D { 00018 00019 class Creator; 00020 class X3DComponentCreator; 00021 class Scene; 00022 class X3DFileValidator; 00023 class X3DXmlLoader; 00024 00025 } 00026 00028 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); 00048 00050 template <class L> 00051 static L *getInstanceOf(); 00052 00054 template <class L> 00055 static void removeInstanceOf(); 00056 00058 static void removeAllInstances(); 00059 00060 protected: 00062 X3D::Creator *creator; 00064 X3D::X3DFileValidator *fileValidator; 00066 X3D::X3DXmlLoader *xmlLoader; 00067 00068 private: 00069 static std::list<X3DLoader *> _X3DLoaderList; 00070 }; 00071 00072 } 00073 00074 #include "X3D_X3DLoader.inl" 00075 00076 #endif