summaryrefslogtreecommitdiff
path: root/odb/context.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2010-12-09 10:36:15 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2010-12-09 10:36:15 +0200
commit5adda85ed10d9196f4d68cc4b8fee12f6ba9cfec (patch)
tree8a97d998dd8de5a4c2dbda8a171fabbf54af6c4e /odb/context.cxx
parent5789a4f7c5cee94df29e37fd1c2f7c1d9e883002 (diff)
Add lazy pointer support
Built-in support is provided for raw, auto, and tr1 shared/weak pointers. New test: common/lazy-ptr.
Diffstat (limited to 'odb/context.cxx')
-rw-r--r--odb/context.cxx11
1 files changed, 8 insertions, 3 deletions
diff --git a/odb/context.cxx b/odb/context.cxx
index ec8dec9..b606734 100644
--- a/odb/context.cxx
+++ b/odb/context.cxx
@@ -490,19 +490,24 @@ namespace
bool context::
is_a (semantics::data_member& m,
unsigned short f,
- semantics::type&,
+ semantics::type& t,
string const& kp)
{
bool r (false);
if (f & test_pointer)
{
- r = r || object_pointer (m, kp);
+ r = r || object_pointer (t);
}
if (f & test_eager_pointer)
{
- r = r || object_pointer (m, kp);
+ r = r || (object_pointer (t) && !lazy_pointer (t));
+ }
+
+ if (f & test_lazy_pointer)
+ {
+ r = r || (object_pointer (t) && lazy_pointer (t));
}
if (f & test_container)