diff options
Diffstat (limited to 'odb/tr1')
-rw-r--r-- | odb/tr1/lazy-ptr.hxx | 10 | ||||
-rw-r--r-- | odb/tr1/lazy-ptr.ixx | 14 |
2 files changed, 24 insertions, 0 deletions
diff --git a/odb/tr1/lazy-ptr.hxx b/odb/tr1/lazy-ptr.hxx index d877998..5e040cf 100644 --- a/odb/tr1/lazy-ptr.hxx +++ b/odb/tr1/lazy-ptr.hxx @@ -98,6 +98,11 @@ namespace odb // void unload () const; + // Get the underlying eager pointer. If this is an unloaded pointer + // to a persistent object, then the returned pointer will be NULL. + // + std::tr1::shared_ptr<T> get_eager () const; + template <class DB, class ID> lazy_shared_ptr (DB&, const ID&); template <class DB, class Y> lazy_shared_ptr (DB&, Y*); template <class DB, class Y, class D> lazy_shared_ptr (DB&, Y*, D); @@ -207,6 +212,11 @@ namespace odb // void unload () const; + // Get the underlying eager pointer. If this is an unloaded pointer + // to a persistent object, then the returned pointer will be NULL. + // + std::tr1::weak_ptr<T> get_eager () const; + template <class DB, class ID> lazy_weak_ptr (DB&, const ID&); template <class DB, class Y> lazy_weak_ptr (DB&, const std::tr1::shared_ptr<Y>&); template <class DB, class Y> lazy_weak_ptr (DB&, const std::tr1::weak_ptr<Y>&); diff --git a/odb/tr1/lazy-ptr.ixx b/odb/tr1/lazy-ptr.ixx index b33a12d..59d72c0 100644 --- a/odb/tr1/lazy-ptr.ixx +++ b/odb/tr1/lazy-ptr.ixx @@ -207,6 +207,13 @@ namespace odb } template <class T> + inline std::tr1::shared_ptr<T> lazy_shared_ptr<T>:: + get_eager () const + { + return p_; + } + + template <class T> template <class DB, class ID> inline lazy_shared_ptr<T>:: lazy_shared_ptr (DB& db, const ID& id): i_ (db, id) {} @@ -518,6 +525,13 @@ namespace odb } template <class T> + inline std::tr1::weak_ptr<T> lazy_weak_ptr<T>:: + get_eager () const + { + return p_; + } + + template <class T> template <class DB, class ID> inline lazy_weak_ptr<T>:: lazy_weak_ptr (DB& db, const ID& id): i_ (db, id) {} |