summaryrefslogtreecommitdiff
path: root/src/traverser.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/traverser.h')
-rw-r--r--src/traverser.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/traverser.h b/src/traverser.h
new file mode 100644
index 0000000..85373cc
--- /dev/null
+++ b/src/traverser.h
@@ -0,0 +1,26 @@
+#ifndef TRAVERSER_H_
+#define TRAVERSER_H_
+
+enum Response {ContinueTraversal, AbortTraversal, PruneTraversal};
+
+class Traverser
+{
+public:
+ enum TraversalType {PREFIX, POSTFIX, PRE_AND_POSTFIX};
+
+ Traverser(class Visitor &visitor, const class AbstractNode &root, TraversalType travtype)
+ : visitor(visitor), root(root), traversaltype(travtype) {
+ }
+ virtual ~Traverser() { }
+
+ void execute();
+ // FIXME: reverse parameters
+ void traverse(const AbstractNode &node, const class State &state);
+private:
+
+ Visitor &visitor;
+ const AbstractNode &root;
+ TraversalType traversaltype;
+};
+
+#endif
contact: Jan Huwald // Impressum