summaryrefslogtreecommitdiff
path: root/src/traverser.h
diff options
context:
space:
mode:
authorMarius Kintel <kintel@sim.no>2010-03-02 18:22:31 (GMT)
committerMarius Kintel <marius@kintel.net>2010-10-31 00:42:34 (GMT)
commit393c5a19fedfa4f97ca939fbcf52c2ccab1cde6a (patch)
treefbcb75d32e8763aac3f0ad28528936a0ec11930b /src/traverser.h
parent746159d1838e895e80725cdc892f7bef85feb1af (diff)
Committed current version of visitor refactoring
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..80913e3
--- /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();
+private:
+ // FIXME: reverse parameters
+ void traverse(const class State &state, const AbstractNode &node);
+
+ Visitor &visitor;
+ const AbstractNode &root;
+ TraversalType traversaltype;
+};
+
+#endif
contact: Jan Huwald // Impressum