00001 00002 00003 00005 00006 00011 00016 00021 // VisitingFunctions.h // 00023 00024 #ifndef VISITINGFUNCTIONS_H 00025 #define VISITINGFUNCTIONS_H 00026 00027 #include "EnterFunction.h" 00028 #include "WalkOnFunction.h" 00029 #include "LeaveFunction.h" 00030 00031 namespace X3DTK { 00032 00035 00036 class VisitingFunctions 00037 { 00038 public: 00040 VisitingFunctions(const EnterFunction *enter, const WalkOnFunction *walkon, const LeaveFunction *leave); 00042 ~VisitingFunctions(); 00043 00045 void setEnterFunction(const EnterFunction *enter); 00047 void setWalkOnFunction(const WalkOnFunction *walkon); 00049 void setLeaveFunction(const LeaveFunction *leave); 00050 00052 inline void enter(SFAbstractNode N) const {enter_->enter(N);}; 00054 inline bool walkOn(SFAbstractNode N, SFAbstractNode child = 0) const {return walkon_->walkOn(N, child);}; 00056 inline void leave(SFAbstractNode N) const {leave_->leave(N);}; 00057 00058 private: 00059 EnterFunction *enter_; 00060 WalkOnFunction *walkon_; 00061 LeaveFunction *leave_; 00062 }; 00063 00064 } 00065 00066 #endif