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

Visitor.h

Go to the documentation of this file.
00001 #ifndef X3DTK_VISITOR_H
00002 #define X3DTK_VISITOR_H
00003 
00004 #include "X3DAbstractNode.h"
00005 #include "VisitingFunctions.h"
00006 #include "EnterFunction.h"
00007 #include "WalkOnFunction.h"
00008 #include "LeaveFunction.h"
00009 #include "X3DActor.h"
00010 
00011 #include <list>
00012 
00013 namespace X3DTK {
00014 
00015 class SFType;
00016 class X3DComponentVisitor;
00017 
00024 class Visitor : public X3DActor
00025 {
00026 public:  
00028   Visitor();
00030   virtual ~Visitor();
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   
00044   friend Visitor *joinVisitors(Visitor *N0, Visitor *N1);
00045   
00046 private:  
00048   virtual void addType(const SFType *type);
00050   EnterFunction *getEnterFunctionOf(const SFType *type) const;
00051   WalkOnFunction *getWalkOnFunctionOf(const SFType *type) const;
00052   LeaveFunction *getLeaveFunctionOf(const SFType *type) const;
00053   
00054   //Dictionary of all the creation functions used.
00055   VisitingArray _visitingArray;
00056   std::list<X3DComponentVisitor *> _componentList;
00057 };
00058 
00059 }
00060 
00061 #endif

Generated on Wed Apr 7 12:15:21 2004 for X3DToolKit by doxygen 1.3.3