Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

NodeVisitingProxy.h

Go to the documentation of this file.
00001 
00002 //                            NodeVisitingProxy.h                             //
00004 
00005 #ifndef NODEVISITINGPROXY_H
00006 #define NODEVISITINGPROXY_H
00007 
00008 #include "X3DAbstractNode.h"
00009 #include "VisitingFunctions.h"
00010 #include "EnterFunction.h"
00011 #include "WalkOnFunction.h"
00012 #include "LeaveFunction.h"
00013 #include "X3DNodeProxy.h"
00014 
00015 #include <list>
00016 
00017 namespace X3DTK {
00018 
00019 class Type;
00020 class X3DComponentVisitor;
00021 
00023 
00024 class NodeVisitingProxy : public X3DNodeProxy
00025 {
00026 public:  
00028   NodeVisitingProxy();
00030   virtual ~NodeVisitingProxy();
00031   
00033   void setComponentVisitor(X3DComponentVisitor *component);
00035   inline void enter(SFAbstractNode N) const {visitingArray_[N->getType()->getId()]->enter(N);};
00037   inline bool walkOn(SFAbstractNode N, SFAbstractNode child = 0) const {return visitingArray_[N->getType()->getId()]->walkOn(N, child);};
00039   inline void leave(SFAbstractNode N) const {visitingArray_[N->getType()->getId()]->leave(N);};
00041   void reset();
00042   
00043   friend NodeVisitingProxy *joinNodeVisitingProxies(NodeVisitingProxy *N0, NodeVisitingProxy *N1);
00044   
00045 private:  
00047   virtual void addType(const Type *type);
00049   EnterFunction *getEnterFunctionOf(const Type *type) const;
00050   WalkOnFunction *getWalkOnFunctionOf(const Type *type) const;
00051   LeaveFunction *getLeaveFunctionOf(const Type *type) const;
00052   
00053   //Dictionary of all the creation functions used.
00054   VisitingArray visitingArray_;
00055   std::list<X3DComponentVisitor *> componentList_;
00056 };
00057 
00058 }
00059 
00060 #endif

Generated on Tue Jul 15 16:46:52 2003 for X3DToolKit by doxygen1.3