summaryrefslogtreecommitdiff
path: root/odb/traversal/elements.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'odb/traversal/elements.hxx')
-rw-r--r--odb/traversal/elements.hxx238
1 files changed, 0 insertions, 238 deletions
diff --git a/odb/traversal/elements.hxx b/odb/traversal/elements.hxx
deleted file mode 100644
index c4236ce..0000000
--- a/odb/traversal/elements.hxx
+++ /dev/null
@@ -1,238 +0,0 @@
-// file : odb/traversal/elements.hxx
-// license : GNU GPL v3; see accompanying LICENSE file
-
-#ifndef ODB_TRAVERSAL_ELEMENTS_HXX
-#define ODB_TRAVERSAL_ELEMENTS_HXX
-
-#include <cutl/compiler/traversal.hxx>
-#include <odb/semantics/elements.hxx>
-
-namespace traversal
-{
- using namespace cutl;
-
- //
- //
- typedef compiler::dispatcher<semantics::node> node_dispatcher;
- typedef compiler::dispatcher<semantics::edge> edge_dispatcher;
-
- //
- //
- struct node_base: node_dispatcher, edge_dispatcher
- {
- void
- edge_traverser (edge_dispatcher& d)
- {
- edge_dispatcher::traverser (d);
- }
-
- edge_dispatcher&
- edge_traverser ()
- {
- return *this;
- }
-
- using node_dispatcher::dispatch;
- using edge_dispatcher::dispatch;
-
- using edge_dispatcher::iterate_and_dispatch;
- };
-
- struct edge_base: edge_dispatcher, node_dispatcher
- {
- void
- node_traverser (node_dispatcher& d)
- {
- node_dispatcher::traverser (d);
- }
-
- node_dispatcher&
- node_traverser ()
- {
- return *this;
- }
-
- using edge_dispatcher::dispatch;
- using node_dispatcher::dispatch;
-
- using node_dispatcher::iterate_and_dispatch;
- };
-
- inline edge_base&
- operator>> (node_base& n, edge_base& e)
- {
- n.edge_traverser (e);
- return e;
- }
-
- inline node_base&
- operator>> (edge_base& e, node_base& n)
- {
- e.node_traverser (n);
- return n;
- }
-
- //
- //
- template <typename X>
- struct node: compiler::traverser_impl<X, semantics::node>,
- virtual node_base
- {
- };
-
- template <typename X>
- struct edge: compiler::traverser_impl<X, semantics::edge>,
- virtual edge_base
- {
- };
-
- //
- // Edges
- //
-
- struct names: edge<semantics::names>
- {
- names ()
- {
- }
-
- names (node_dispatcher& n)
- {
- node_traverser (n);
- }
-
- virtual void
- traverse (type&);
- };
-
- struct declares: edge<semantics::declares>
- {
- declares ()
- {
- }
-
- declares (node_dispatcher& n)
- {
- node_traverser (n);
- }
-
- virtual void
- traverse (type&);
- };
-
- struct defines: edge<semantics::defines>
- {
- defines ()
- {
- }
-
- defines (node_dispatcher& n)
- {
- node_traverser (n);
- }
-
- virtual void
- traverse (type&);
- };
-
- struct typedefs: edge<semantics::typedefs>
- {
- typedefs ()
- {
- }
-
- typedefs (node_dispatcher& n)
- {
- node_traverser (n);
- }
-
- virtual void
- traverse (type&);
- };
-
- struct belongs: edge<semantics::belongs>
- {
- belongs ()
- {
- }
-
- belongs (node_dispatcher& n)
- {
- node_traverser (n);
- }
-
- virtual void
- traverse (type&);
- };
-
- //
- // Nodes
- //
-
- struct nameable: node<semantics::nameable> {};
-
- //
- //
- template <typename T>
- struct scope_template: node<T>
- {
- public:
- virtual void
- traverse (T& s)
- {
- names (s);
- }
-
- virtual void
- names (T& s)
- {
- names (s, *this);
- }
-
- virtual void
- names (T& s, edge_dispatcher& d)
- {
- this->iterate_and_dispatch (s.names_begin (), s.names_end (), d);
- }
- };
-
- struct scope: scope_template<semantics::scope> {};
-
- //
- //
- struct type: node<semantics::type> {};
-
- //
- //
- struct instance: node<semantics::instance>
- {
- virtual void
- traverse (type&);
-
- virtual void
- belongs (type&);
-
- virtual void
- belongs (type&, edge_dispatcher&);
- };
-
- //
- //
- struct data_member: node<semantics::data_member>
- {
- virtual void
- traverse (type&);
-
- virtual void
- belongs (type&);
-
- virtual void
- belongs (type&, edge_dispatcher&);
- };
-
- //
- //
- struct unsupported_type: node<semantics::unsupported_type> {};
-}
-
-#endif // ODB_TRAVERSAL_ELEMENTS_HXX