summaryrefslogtreecommitdiff
path: root/odb/traversal/relational/elements.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'odb/traversal/relational/elements.hxx')
-rw-r--r--odb/traversal/relational/elements.hxx162
1 files changed, 0 insertions, 162 deletions
diff --git a/odb/traversal/relational/elements.hxx b/odb/traversal/relational/elements.hxx
deleted file mode 100644
index 9ecdc6a..0000000
--- a/odb/traversal/relational/elements.hxx
+++ /dev/null
@@ -1,162 +0,0 @@
-// file : odb/traversal/relational/elements.hxx
-// license : GNU GPL v3; see accompanying LICENSE file
-
-#ifndef ODB_TRAVERSAL_RELATIONAL_ELEMENTS_HXX
-#define ODB_TRAVERSAL_RELATIONAL_ELEMENTS_HXX
-
-#include <cutl/compiler/traversal.hxx>
-#include <odb/semantics/relational/elements.hxx>
-
-namespace traversal
-{
- namespace relational
- {
- using namespace cutl;
-
- //
- //
- typedef compiler::dispatcher<semantics::relational::node> node_dispatcher;
- typedef compiler::dispatcher<semantics::relational::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::relational::node>,
- virtual node_base
- {
- virtual void
- traverse (X&) {}
- };
-
- template <typename X>
- struct edge: compiler::traverser_impl<X, semantics::relational::edge>,
- virtual edge_base
- {
- };
-
- //
- // Edges
- //
-
- template <typename N>
- struct names: edge<semantics::relational::names<N> >
- {
- names ()
- {
- }
-
- names (node_dispatcher& n)
- {
- this->node_traverser (n);
- }
-
- virtual void
- traverse (semantics::relational::names<N>& e)
- {
- this->dispatch (e.nameable ());
- }
- };
-
- typedef names<semantics::relational::uname> unames;
- typedef names<semantics::relational::qname> qnames;
-
- //
- // Nodes
- //
-
- template <typename N>
- struct nameable: node<semantics::relational::nameable<N> > {};
-
- typedef nameable<semantics::relational::uname> unameable;
- typedef nameable<semantics::relational::qname> qnameable;
-
- //
- //
- 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);
- }
- };
-
- template <typename N>
- struct scope: scope_template<semantics::relational::scope<N> > {};
-
- typedef scope<semantics::relational::uname> uscope;
- typedef scope<semantics::relational::qname> qscope;
- }
-}
-
-#endif // ODB_TRAVERSAL_RELATIONAL_ELEMENTS_HXX