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/mysql/common.cxx | 29 ++++++++++++++++------------- odb/relational/mysql/common.hxx | 9 ++++++--- odb/relational/mysql/context.cxx | 24 +++++++++++++++--------- odb/relational/mysql/context.hxx | 5 ++++- 4 files changed, 41 insertions(+), 26 deletions(-) (limited to 'odb/relational/mysql') diff --git a/odb/relational/mysql/common.cxx b/odb/relational/mysql/common.cxx index 98edfcd..a8f4668 100644 --- a/odb/relational/mysql/common.cxx +++ b/odb/relational/mysql/common.cxx @@ -152,17 +152,18 @@ namespace relational member_image_type:: member_image_type (base const& x) : member_base::base (x), // virtual base - base (x) - { - } + base (x) {} + + member_image_type:: + member_image_type () + : relational::member_base (0, 0, string (), string ()) {} member_image_type:: member_image_type (semantics::type* type, + const custom_cxx_type* ct, string const& fq_type, string const& key_prefix) - : relational::member_base (type, fq_type, key_prefix) - { - } + : relational::member_base (type, ct, fq_type, key_prefix) {} string member_image_type:: image_type (semantics::data_member& m) @@ -294,18 +295,20 @@ namespace relational member_database_type_id:: member_database_type_id (base const& x) : member_base::base (x), // virtual base - base (x) - { - } + base (x) {} + + member_database_type_id:: + member_database_type_id () + : member_base::base (0, 0, string (), string ()), // virtual base + base (0, 0, string (), string ()) {} member_database_type_id:: member_database_type_id (semantics::type* type, + const custom_cxx_type* ct, string const& fq_type, string const& key_prefix) - : member_base::base (type, fq_type, key_prefix), // virtual base - base (type, fq_type, key_prefix) - { - } + : member_base::base (type, ct, fq_type, key_prefix), // virtual base + base (type, ct, fq_type, key_prefix) {} string member_database_type_id:: database_type_id (type& m) diff --git a/odb/relational/mysql/common.hxx b/odb/relational/mysql/common.hxx index cf159c1..38ee0b1 100644 --- a/odb/relational/mysql/common.hxx +++ b/odb/relational/mysql/common.hxx @@ -85,7 +85,9 @@ namespace relational member_base { member_image_type (base const&); - member_image_type (semantics::type* type = 0, + member_image_type (); + member_image_type (semantics::type* type, + const custom_cxx_type*, string const& fq_type = string (), string const& key_prefix = string ()); virtual string @@ -126,8 +128,9 @@ namespace relational member_base { member_database_type_id (base const&); - - member_database_type_id (semantics::type* type = 0, + member_database_type_id (); + member_database_type_id (semantics::type* type, + const custom_cxx_type*, string const& fq_type = string (), string const& key_prefix = string ()); diff --git a/odb/relational/mysql/context.cxx b/odb/relational/mysql/context.cxx index d2232bc..c03a77a 100644 --- a/odb/relational/mysql/context.cxx +++ b/odb/relational/mysql/context.cxx @@ -199,14 +199,17 @@ namespace relational struct has_grow_member: member_base { + has_grow_member (bool& r, user_section* section = 0) + : relational::member_base (0, 0, string (), string (), section), + r_ (r) {} + has_grow_member (bool& r, - user_section* section = 0, - semantics::type* type = 0, + user_section* section, + semantics::type* t, + const custom_cxx_type* ct, string const& key_prefix = string ()) - : relational::member_base (type, string (), key_prefix, section), - r_ (r) - { - } + : relational::member_base (t, ct, string (), key_prefix, section), + r_ (r) {} virtual bool pre (member_info& mi) @@ -279,16 +282,19 @@ namespace relational grow_impl (semantics::data_member& m) { bool r (false); - has_grow_member mt (r); + has_grow_member mt (r); mt.traverse (m); return r; } bool context:: - grow_impl (semantics::data_member& m, semantics::type& t, string const& kp) + grow_impl (semantics::data_member& m, + semantics::type& t, + const custom_cxx_type* ct, + string const& kp) { bool r (false); - has_grow_member mt (r, 0, &t, kp); + has_grow_member mt (r, 0, &t, ct, kp); mt.traverse (m); return r; } diff --git a/odb/relational/mysql/context.hxx b/odb/relational/mysql/context.hxx index 6fd8bd6..d7e1dc4 100644 --- a/odb/relational/mysql/context.hxx +++ b/odb/relational/mysql/context.hxx @@ -119,7 +119,10 @@ namespace relational grow_impl (semantics::data_member&); virtual bool - grow_impl (semantics::data_member&, semantics::type&, string const&); + grow_impl (semantics::data_member&, + semantics::type&, + const custom_cxx_type*, + string const&); protected: virtual string -- cgit v1.1