aboutsummaryrefslogtreecommitdiff
path: root/odb/traversal
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2012-01-26 12:43:16 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2012-01-26 12:43:16 +0200
commitaf12ffe836de09ec84f666effa4df347eeb07a43 (patch)
treedc0aec9f8fee545c84be098414772cf2b277c30d /odb/traversal
parentc1d2ec5bbd5969332f3278f39d2a7a8f0abc0493 (diff)
Implement support for database schema
New pragma qualifier: namespace. New pragma specifier: schema. The table specifier was extended to accept a schema prefix. New option: --default- schema. The common/schema test was extended to cover the new functionality.
Diffstat (limited to 'odb/traversal')
-rw-r--r--odb/traversal/relational/elements.cxx18
-rw-r--r--odb/traversal/relational/elements.hxx25
2 files changed, 20 insertions, 23 deletions
diff --git a/odb/traversal/relational/elements.cxx b/odb/traversal/relational/elements.cxx
deleted file mode 100644
index de9c259..0000000
--- a/odb/traversal/relational/elements.cxx
+++ /dev/null
@@ -1,18 +0,0 @@
-// file : odb/traversal/relational/elements.cxx
-// author : Boris Kolpackov <boris@codesynthesis.com>
-// copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC
-// license : GNU GPL v3; see accompanying LICENSE file
-
-#include <odb/traversal/relational/elements.hxx>
-
-namespace traversal
-{
- namespace relational
- {
- void names::
- traverse (type& e)
- {
- dispatch (e.nameable ());
- }
- }
-}
diff --git a/odb/traversal/relational/elements.hxx b/odb/traversal/relational/elements.hxx
index 72b8c39..e40a9f6 100644
--- a/odb/traversal/relational/elements.hxx
+++ b/odb/traversal/relational/elements.hxx
@@ -94,7 +94,8 @@ namespace traversal
// Edges
//
- struct names: edge<semantics::relational::names>
+ template <typename N>
+ struct names: edge<semantics::relational::names<N> >
{
names ()
{
@@ -102,18 +103,28 @@ namespace traversal
names (node_dispatcher& n)
{
- node_traverser (n);
+ this->node_traverser (n);
}
virtual void
- traverse (type&);
+ traverse (semantics::relational::names<N>& e)
+ {
+ dispatch (e.nameable ());
+ }
};
+ typedef names<semantics::relational::uname> unames;
+ typedef names<semantics::relational::qname> qnames;
+
//
// Nodes
//
- struct nameable: node<semantics::relational::nameable> {};
+ template <typename N>
+ struct nameable: node<semantics::relational::nameable<N> > {};
+
+ typedef nameable<semantics::relational::uname> unameable;
+ typedef nameable<semantics::relational::qname> qnameable;
//
//
@@ -140,7 +151,11 @@ namespace traversal
}
};
- struct scope: scope_template<semantics::relational::scope> {};
+ template <typename N>
+ struct scope: scope_template<semantics::relational::scope<N> > {};
+
+ typedef scope<semantics::relational::uname> uscope;
+ typedef scope<semantics::relational::qname> qscope;
}
}