diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2012-01-26 12:43:16 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2012-01-26 12:43:16 +0200 |
commit | af12ffe836de09ec84f666effa4df347eeb07a43 (patch) | |
tree | dc0aec9f8fee545c84be098414772cf2b277c30d /odb/traversal/relational/elements.hxx | |
parent | c1d2ec5bbd5969332f3278f39d2a7a8f0abc0493 (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/relational/elements.hxx')
-rw-r--r-- | odb/traversal/relational/elements.hxx | 25 |
1 files changed, 20 insertions, 5 deletions
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; } } |