diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2015-07-02 11:43:37 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2015-07-02 11:43:37 +0200 |
commit | 1d438c0c211d21e33f3eec833a307416000b32a2 (patch) | |
tree | 38789fbe5e0dcae6f61d6f7c41d55459ec6e35e7 /odb/relational/processor.cxx | |
parent | c9531e4140c08dcb45f05698c5ff6d201f319e8f (diff) |
C++ type mapping support for container elementsas
Diffstat (limited to 'odb/relational/processor.cxx')
-rw-r--r-- | odb/relational/processor.cxx | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/odb/relational/processor.cxx b/odb/relational/processor.cxx index 09a468b..2979a34 100644 --- a/odb/relational/processor.cxx +++ b/odb/relational/processor.cxx @@ -400,25 +400,16 @@ namespace relational process_container (semantics::data_member& m, semantics::type& t) { container_kind_type ck (t.get<container_kind_type> ("container-kind")); - semantics::type* vt (t.get<semantics::type*> ("value-tree-type")); - semantics::type* it (0); - semantics::type* kt (0); - semantics::names* vh (t.get<semantics::names*> ("value-tree-hint")); + semantics::names* vh (0); semantics::names* ih (0); semantics::names* kh (0); - if (ck == ck_ordered) - { - it = t.get<semantics::type*> ("index-tree-type"); - ih = t.get<semantics::names*> ("index-tree-hint"); - } - - if (ck == ck_map || ck == ck_multimap) - { - kt = t.get<semantics::type*> ("key-tree-type"); - kh = t.get<semantics::names*> ("key-tree-hint"); - } + semantics::type* vt (&utype (m, vh, "value")); + semantics::type* it (ck == ck_ordered ? &utype (m, ih, "index") : 0); + semantics::type* kt (ck == ck_map || ck == ck_multimap + ? &utype (m, kh, "key") + : 0); // Process member data. // @@ -1483,10 +1474,10 @@ namespace relational } virtual void - traverse_container (semantics::data_member& m, semantics::type& t) + traverse_container (semantics::data_member& m, semantics::type&) { if (semantics::class_* c = - object_pointer (context::container_vt (t))) + object_pointer (context::container_vt (m))) { if (inverse (m, "value")) return; |