00001 00002 // X3DComponentWalker.h // 00004 00005 #ifndef X3DCOMPONENTWALKER_H 00006 #define X3DCOMPONENTWALKER_H 00007 00008 #include "X3DComponent.h" 00009 #include "WalkingFunction.h" 00010 #include "X3DAbstractNode.h" 00011 #include "Walker.h" 00012 #include "Visitor.h" 00013 #include "SFSceneGraph.h" 00014 00015 namespace X3DTK { 00016 00018 00019 class X3DComponentWalker : public X3DComponent 00020 { 00021 public: 00023 X3DComponentWalker(); 00025 virtual ~X3DComponentWalker() = 0; 00026 00028 void setWalker(Walker *walker); 00030 void setVisitor(Visitor *visitor); 00031 00033 WalkingFunction *getWalkingFunctionOf(const SFType *type) const; 00034 00035 protected: 00037 Walker *walker; 00039 Visitor *visitor; 00041 template<class C, class T> 00042 void defineWalkingFunction(void (C::*ptrF)(T *) const); 00043 00044 private: 00045 WalkingDict _walkingDict; 00046 }; 00047 00048 } 00049 00050 #include "X3DComponentWalker.inl" 00051 00052 #endif