diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2010-12-09 10:36:15 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2010-12-09 10:36:15 +0200 |
commit | 5adda85ed10d9196f4d68cc4b8fee12f6ba9cfec (patch) | |
tree | 8a97d998dd8de5a4c2dbda8a171fabbf54af6c4e /odb/context.cxx | |
parent | 5789a4f7c5cee94df29e37fd1c2f7c1d9e883002 (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.cxx | 11 |
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) |