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 
00003 
00005 
00006 
00011 
00016 
00021 //                            NodeVisitingProxy.h                             //
00023 
00024 #ifndef NODEVISITINGPROXY_H
00025 #define NODEVISITINGPROXY_H
00026 
00027 #include "X3DAbstractNode.h"
00028 #include "VisitingFunctions.h"
00029 #include "EnterFunction.h"
00030 #include "WalkOnFunction.h"
00031 #include "LeaveFunction.h"
00032 #include "X3DNodeProxy.h"
00033 
00034 #include <list>
00035 
00036 namespace X3DTK {
00037 
00038 class Type;
00039 class X3DComponentVisitor;
00040 
00042 
00043 class NodeVisitingProxy : public X3DNodeProxy
00044 {
00045 public:  
00047   NodeVisitingProxy();
00049   virtual ~NodeVisitingProxy();
00050   
00052   void setComponentVisitor(X3DComponentVisitor *component);
00054   inline void enter(SFAbstractNode N) const {visitingArray_[N->getType()->getId()]->enter(N);};
00056   inline bool walkOn(SFAbstractNode N, SFAbstractNode child = 0) const {return visitingArray_[N->getType()->getId()]->walkOn(N, child);};
00058   inline void leave(SFAbstractNode N) const {visitingArray_[N->getType()->getId()]->leave(N);};
00060   void reset();
00061   
00062   friend NodeVisitingProxy *joinNodeVisitingProxies(NodeVisitingProxy *N0, NodeVisitingProxy *N1);
00063   
00064 private:  
00066   virtual void addType(const Type *type);
00068   EnterFunction *getEnterFunctionOf(const Type *type) const;
00069   WalkOnFunction *getWalkOnFunctionOf(const Type *type) const;
00070   LeaveFunction *getLeaveFunctionOf(const Type *type) const;
00071   
00072   //Dictionary of all the creation functions used.
00073   VisitingArray visitingArray_;
00074   std::list<X3DComponentVisitor *> componentList_;
00075 };
00076 
00077 }
00078 
00079 #endif

Generated on Wed Sep 10 11:25:14 2003 for X3DToolKit by doxygen1.3