00001 00002 // X3DTTAlgorithm.h // 00004 00005 #ifndef X3DTTALGORITHM_H 00006 #define X3DTTALGORITHM_H 00007 00008 #include "X3DTypes.h" 00009 00010 namespace X3DTK { 00011 00012 class NodeWalkingProxy; 00013 class NodeVisitingProxy; 00014 class X3DComponentWalker; 00015 class X3DComponentVisitor; 00016 00018 00019 class X3DTTAlgorithm 00020 { 00021 public: 00023 X3DTTAlgorithm(); 00025 virtual ~X3DTTAlgorithm(); 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 X3DTTAlgorithm *joinTTAlgorithms(X3DTTAlgorithm *A1, X3DTTAlgorithm *A2); 00039 friend X3DTTAlgorithm *mergeTTAlgorithms(X3DTTAlgorithm *A1, X3DTTAlgorithm *A2); 00040 00041 protected: 00043 NodeVisitingProxy *nvp; 00045 NodeWalkingProxy *nwp; 00046 }; 00047 00048 } 00049 00050 #endif