From 1d438c0c211d21e33f3eec833a307416000b32a2 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 2 Jul 2015 11:43:37 +0200 Subject: C++ type mapping support for container elements --- odb/relational/processor.cxx | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) (limited to 'odb/relational/processor.cxx') 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")); - semantics::type* vt (t.get ("value-tree-type")); - semantics::type* it (0); - semantics::type* kt (0); - semantics::names* vh (t.get ("value-tree-hint")); + semantics::names* vh (0); semantics::names* ih (0); semantics::names* kh (0); - if (ck == ck_ordered) - { - it = t.get ("index-tree-type"); - ih = t.get ("index-tree-hint"); - } - - if (ck == ck_map || ck == ck_multimap) - { - kt = t.get ("key-tree-type"); - kh = t.get ("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; -- cgit v1.1