diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2011-10-19 10:47:41 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2011-10-21 19:25:06 +0200 |
commit | 6bd95f51beb26d87fd5d5db22391c73f333eee6e (patch) | |
tree | 59621cec994f55fce7a1ced5c3b9edb93a41b084 /odb/relational/pgsql/common.cxx | |
parent | 7623fb5259da19c33ffe6623b0f306f6c39ede27 (diff) |
Add support for const data members
Const data members are automatically treated as readonly. New test:
const-member.
Diffstat (limited to 'odb/relational/pgsql/common.cxx')
-rw-r--r-- | odb/relational/pgsql/common.cxx | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/odb/relational/pgsql/common.cxx b/odb/relational/pgsql/common.cxx index 26f4b12..4993408 100644 --- a/odb/relational/pgsql/common.cxx +++ b/odb/relational/pgsql/common.cxx @@ -33,14 +33,20 @@ namespace relational var = name + (name[name.size () - 1] == '_' ? "" : "_"); } - semantics::type& t (type_override_ != 0 ? *type_override_ : m.type ()); + bool cq (type_override_ != 0 ? false: const_type (m.type ())); + semantics::type& t (type_override_ != 0 ? *type_override_ : utype (m)); if (semantics::class_* c = composite_wrapper (t)) { // If t is a wrapper, pass the wrapped type. Also pass the // original, wrapper type. // - member_info mi (m, *c, (wrapper (t) ? &t : 0), var, fq_type_override_); + member_info mi (m, + *c, + (wrapper (t) ? &t : 0), + cq, + var, + fq_type_override_); if (pre (mi)) { traverse_composite (mi); @@ -51,7 +57,12 @@ namespace relational { // The same unwrapping logic as for composite values. // - member_info mi (m, *c, (wrapper (t) ? &t : 0), var, fq_type_override_); + member_info mi (m, + *c, + (wrapper (t) ? &t : 0), + cq, + var, + fq_type_override_); if (pre (mi)) { traverse_container (mi); @@ -64,8 +75,12 @@ namespace relational if (semantics::class_* c = object_pointer (t)) { - member_info mi ( - m, id_member (*c)->type (), 0, var, fq_type_override_); + member_info mi (m, + utype (*id_member (*c)), + 0, + cq, + var, + fq_type_override_); mi.st = &st; if (pre (mi)) { @@ -75,7 +90,7 @@ namespace relational } else { - member_info mi (m, t, 0, var, fq_type_override_); + member_info mi (m, t, 0, cq, var, fq_type_override_); mi.st = &st; if (pre (mi)) { |