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/pgsql | |
parent | c9531e4140c08dcb45f05698c5ff6d201f319e8f (diff) |
C++ type mapping support for container elementsas
Diffstat (limited to 'odb/relational/pgsql')
-rw-r--r-- | odb/relational/pgsql/common.cxx | 25 | ||||
-rw-r--r-- | odb/relational/pgsql/common.hxx | 9 | ||||
-rw-r--r-- | odb/relational/pgsql/context.cxx | 22 | ||||
-rw-r--r-- | odb/relational/pgsql/context.hxx | 5 | ||||
-rw-r--r-- | odb/relational/pgsql/source.cxx | 10 |
5 files changed, 44 insertions, 27 deletions
diff --git a/odb/relational/pgsql/common.cxx b/odb/relational/pgsql/common.cxx index 7611299..43adb6a 100644 --- a/odb/relational/pgsql/common.cxx +++ b/odb/relational/pgsql/common.cxx @@ -133,12 +133,15 @@ namespace relational } 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) @@ -244,18 +247,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/pgsql/common.hxx b/odb/relational/pgsql/common.hxx index be6e33b..0d22aff 100644 --- a/odb/relational/pgsql/common.hxx +++ b/odb/relational/pgsql/common.hxx @@ -73,7 +73,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 @@ -114,8 +116,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/pgsql/context.cxx b/odb/relational/pgsql/context.cxx index 1910187..f8a9fe2 100644 --- a/odb/relational/pgsql/context.cxx +++ b/odb/relational/pgsql/context.cxx @@ -155,14 +155,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) @@ -229,10 +232,13 @@ namespace relational } 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/pgsql/context.hxx b/odb/relational/pgsql/context.hxx index b49ea99..53b1c95 100644 --- a/odb/relational/pgsql/context.hxx +++ b/odb/relational/pgsql/context.hxx @@ -120,7 +120,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 diff --git a/odb/relational/pgsql/source.cxx b/odb/relational/pgsql/source.cxx index d009a7c..2bbe232 100644 --- a/odb/relational/pgsql/source.cxx +++ b/odb/relational/pgsql/source.cxx @@ -911,7 +911,7 @@ namespace relational // Statement types. // - semantics::type& vt (container_vt (t)); + semantics::type& vt (container_vt (m)); semantics::type& idt (container_idt (m)); // insert statement types. @@ -932,13 +932,13 @@ namespace relational case ck_ordered: { if (!unordered (m)) - so.traverse (m, container_it (t), "index", "index"); + so.traverse (m, container_it (m), "index", "index"); break; } case ck_map: case ck_multimap: { - so.traverse (m, container_kt (t), "key", "key"); + so.traverse (m, container_kt (m), "key", "key"); break; } case ck_set: @@ -982,7 +982,7 @@ namespace relational case ck_ordered: { if (!unordered (m)) - so.traverse (m, container_it (t), "index", "index"); + so.traverse (m, container_it (m), "index", "index"); break; } case ck_map: @@ -1018,7 +1018,7 @@ namespace relational case ck_ordered: { if (!unordered (m)) - so.traverse (m, container_it (t), "index", "index"); + so.traverse (m, container_it (m), "index", "index"); break; } case ck_map: |