summaryrefslogtreecommitdiff
path: root/odb/relational/pgsql/common.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2011-10-19 10:47:41 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2011-10-21 19:25:06 +0200
commit6bd95f51beb26d87fd5d5db22391c73f333eee6e (patch)
tree59621cec994f55fce7a1ced5c3b9edb93a41b084 /odb/relational/pgsql/common.cxx
parent7623fb5259da19c33ffe6623b0f306f6c39ede27 (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.cxx27
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))
{