00001 00002 // GraphTraversal.h // 00004 00005 #ifndef GRAPHTRAVERSAL_H 00006 #define GRAPHTRAVERSAL_H 00007 00008 #include "X3DTypes.h" 00009 00010 namespace X3DTK { 00011 00012 class Walker; 00013 class Visitor; 00014 class X3DComponentWalker; 00015 class X3DComponentVisitor; 00016 00018 00019 class GraphTraversal 00020 { 00021 public: 00023 GraphTraversal(); 00025 virtual ~GraphTraversal(); 00026 00028 void setComponentWalker(X3DComponentWalker *component); 00030 void setComponentVisitor(X3DComponentVisitor *component); 00032 void setAutoDeleteComponents(bool value); 00034 void traverse(SFAbstractNode N) const; 00035 00037 friend GraphTraversal *joinGraphTraversals(GraphTraversal *A1, GraphTraversal *A2); 00039 friend GraphTraversal *mergeGraphTraversals(GraphTraversal *A1, GraphTraversal *A2); 00040 00041 protected: 00043 Visitor *visitor; 00045 Walker *walker; 00046 }; 00047 00048 } 00049 00050 #endif