00001 #ifndef X3DTK_GRAPHTRAVERSAL_H 00002 #define X3DTK_GRAPHTRAVERSAL_H 00003 00004 #include "StateVariables.h" 00005 #include "X3DTypes.h" 00006 00007 #include <list> 00008 #include <typeinfo> 00009 #include <iostream> 00010 00011 namespace X3DTK { 00012 00013 class Walker; 00014 class Visitor; 00015 class X3DComponentVisitor; 00016 00025 class GraphTraversal 00026 { 00027 public: 00029 GraphTraversal(); 00031 virtual ~GraphTraversal(); 00032 00034 void setWalker(Walker *walker); 00036 void setComponentVisitor(X3DComponentVisitor *component); 00038 void setAutoDeleteComponents(bool value); 00040 void traverse(SFAbstractNode N) const; 00041 00043 template <class S> 00044 static S *getInstanceOf(); 00045 00047 template <class S> 00048 static void removeInstanceOf(); 00049 00050 protected: 00052 Visitor *visitor; 00054 Walker *walker; 00055 00056 private: 00057 static std::list<StateVariables *> _stateVariablesList; 00058 }; 00059 00060 } 00061 00062 #include "GraphTraversal.inl" 00063 00064 #endif