diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2011-08-26 12:13:18 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2011-08-28 14:15:45 +0200 |
commit | 64d0ceffaaf5f57a3d24a5210bf0ad2a8474a618 (patch) | |
tree | 98115a01b0bd2e9ddfdc6ff3a0f7470915de483a /odb/relational/sqlite/common.cxx | |
parent | 061a16256eef2c2df53e2e145d16f17270c2de82 (diff) |
Add wrapper support for composite values
NULL semantics for composite values is not yet supported.
Diffstat (limited to 'odb/relational/sqlite/common.cxx')
-rw-r--r-- | odb/relational/sqlite/common.cxx | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/odb/relational/sqlite/common.cxx b/odb/relational/sqlite/common.cxx index 010e267..d9f79b0 100644 --- a/odb/relational/sqlite/common.cxx +++ b/odb/relational/sqlite/common.cxx @@ -35,9 +35,13 @@ namespace relational semantics::type& t (type_override_ != 0 ? *type_override_ : m.type ()); - if (comp_value (t)) + if (semantics::class_* comp = comp_value_wrapper (t)) { - member_info mi (m, t, var, fq_type_override_); + // If t is a wrapper, pass the wrapped type. Also pass the + // original, wrapper type. + // + member_info mi ( + m, *comp, (wrapper (t) ? &t : 0), var, fq_type_override_); if (pre (mi)) { traverse_composite (mi); @@ -46,7 +50,7 @@ namespace relational } else if (container (t)) { - member_info mi (m, t, var, fq_type_override_); + member_info mi (m, t, 0, var, fq_type_override_); if (pre (mi)) { traverse_container (mi); @@ -59,7 +63,8 @@ namespace relational if (semantics::class_* c = object_pointer (t)) { - member_info mi (m, id_member (*c)->type (), var, fq_type_override_); + member_info mi ( + m, id_member (*c)->type (), 0, var, fq_type_override_); mi.st = &st; if (pre (mi)) { @@ -69,7 +74,7 @@ namespace relational } else { - member_info mi (m, t, var, fq_type_override_); + member_info mi (m, t, 0, var, fq_type_override_); mi.st = &st; if (pre (mi)) { |