summaryrefslogtreecommitdiff
path: root/cli/traversal/option.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'cli/traversal/option.cxx')
-rw-r--r--cli/traversal/option.cxx60
1 files changed, 60 insertions, 0 deletions
diff --git a/cli/traversal/option.cxx b/cli/traversal/option.cxx
new file mode 100644
index 0000000..64e728c
--- /dev/null
+++ b/cli/traversal/option.cxx
@@ -0,0 +1,60 @@
+// file : cli/traversal/option.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2009 Code Synthesis Tools CC
+// license : MIT; see accompanying LICENSE file
+
+#include <traversal/option.hxx>
+#include <traversal/expression.hxx>
+
+namespace traversal
+{
+ // belongs
+ //
+ void belongs::
+ traverse (type& e)
+ {
+ dispatch (e.type ());
+ }
+
+ // initialized
+ //
+ void initialized::
+ traverse (type& e)
+ {
+ dispatch (e.expression ());
+ }
+
+ // option
+ //
+ void option::
+ traverse (type& o)
+ {
+ pre (o);
+ belongs (o);
+ if (o.initialized_p ())
+ initialized (o);
+ post (o);
+ }
+
+ void option::
+ pre (type&)
+ {
+ }
+
+ void option::
+ belongs (type& o)
+ {
+ belongs (o, edge_traverser ());
+ }
+
+ void option::
+ initialized (type& o)
+ {
+ initialized (o, edge_traverser ());
+ }
+
+ void option::
+ post (type&)
+ {
+ }
+}