00001 #ifndef X3DTK_X3DCOMPONENTWALKER_H 00002 #define X3DTK_X3DCOMPONENTWALKER_H 00003 00004 #include "X3DComponent.h" 00005 #include "WalkingFunction.h" 00006 #include "X3DAbstractNode.h" 00007 #include "Walker.h" 00008 #include "Visitor.h" 00009 #include "SFSceneGraph.h" 00010 00011 namespace X3DTK { 00012 00018 class X3DComponentWalker : public X3DComponent 00019 { 00020 public: 00022 X3DComponentWalker(); 00024 virtual ~X3DComponentWalker() = 0; 00025 00027 void setWalker(Walker *walker); 00029 void setVisitor(Visitor *visitor); 00030 00032 WalkingFunction *getWalkingFunctionOf(const SFType *type) const; 00033 00034 protected: 00036 Walker *walker; 00038 Visitor *visitor; 00040 template<class C, class T> 00041 void defineWalkingFunction(void (C::*ptrF)(T *) const); 00042 00043 private: 00044 WalkingDict _walkingDict; 00045 }; 00046 00047 } 00048 00049 #include "X3DComponentWalker.inl" 00050 00051 #endif