00001 #ifndef X3DTK_X3DMULTIPASSPROCESSOR_H 00002 #define X3DTK_X3DMULTIPASSPROCESSOR_H 00003 00004 #include "X3DProcessor.h" 00005 #include "GraphTraversal.h" 00006 00007 #include <map> 00008 00009 namespace X3DTK { 00010 00021 class X3DMultiPassProcessor : public X3DProcessor 00022 { 00023 typedef std::map<SFString, GraphTraversal *, ltSFString> MFGraphTraversal; 00024 public: 00026 X3DMultiPassProcessor(); 00028 virtual ~X3DMultiPassProcessor() = 0; 00029 00031 virtual void setWalker(const SFString &processor, Walker *walker); 00034 virtual void setComponentVisitor(const SFString &processor, X3DComponentVisitor *component); 00035 00038 void setGraphTraversal(const SFString &processor, GraphTraversal *graphTraversal); 00040 GraphTraversal *getGraphTraversal(const SFString &processor) const; 00042 void traverse(const SFString &processor, X3DAbstractNode *N); 00043 00044 private: 00045 MFGraphTraversal _graphTraversalMap; 00046 }; 00047 00048 } 00049 00050 #endif