5 #ifndef ODB_TR1_LAZY_PTR_HXX
6 #define ODB_TR1_LAZY_PTR_HXX
20 #include <odb/details/config.hxx>
56 template <
class Y>
void reset (Y*);
57 template <
class Y,
class D>
void reset (Y*, D);
69 return (p_ || i_) ? &lazy_shared_ptr::p_ : 0;
76 template <
class Y>
explicit lazy_shared_ptr (
const std::tr1::weak_ptr<Y>&);
94 std::tr1::shared_ptr<T>
load ()
const;
104 std::tr1::shared_ptr<T>
get_eager ()
const;
110 template <
class DB,
class Y>
lazy_shared_ptr (DB&,
const std::tr1::shared_ptr<Y>&);
111 template <
class DB,
class Y>
lazy_shared_ptr (DB&,
const std::tr1::weak_ptr<Y>&);
113 template <
class DB,
class ID>
void reset (DB&,
const ID&);
114 template <
class DB,
class Y>
void reset (DB&, Y*);
115 template <
class DB,
class Y,
class D>
void reset (DB&, Y*, D);
116 template <
class DB,
class Y>
void reset (DB&, std::auto_ptr<Y>&);
117 template <
class DB,
class Y>
void reset (DB&,
const std::tr1::shared_ptr<Y>&);
119 #ifdef ODB_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGUMENT
120 template <
class O = T>
137 mutable std::tr1::shared_ptr<T> p_;
143 template<
class T,
class Y>
146 template<
class T,
class Y>
151 template<
class D,
class T>
186 template <
class Y>
lazy_weak_ptr (
const std::tr1::weak_ptr<Y>&);
187 template <
class Y>
lazy_weak_ptr (
const std::tr1::shared_ptr<Y>&);
208 std::tr1::shared_ptr<T>
load ()
const;
218 std::tr1::weak_ptr<T>
get_eager ()
const;
220 template <
class DB,
class ID>
lazy_weak_ptr (DB&,
const ID&);
221 template <
class DB,
class Y>
lazy_weak_ptr (DB&,
const std::tr1::shared_ptr<Y>&);
222 template <
class DB,
class Y>
lazy_weak_ptr (DB&,
const std::tr1::weak_ptr<Y>&);
224 template <
class DB,
class ID>
void reset (DB&,
const ID&);
225 template <
class DB,
class Y>
void reset (DB&,
const std::tr1::shared_ptr<Y>&);
226 template <
class DB,
class Y>
void reset (DB&,
const std::tr1::weak_ptr<Y>&);
231 #ifdef ODB_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGUMENT
232 template <
class O = T>
244 mutable std::tr1::weak_ptr<T> p_;
254 #include <odb/tr1/lazy-ptr.ixx>
255 #include <odb/tr1/lazy-ptr.txx>
261 #endif // ODB_TR1_LAZY_PTR_HXX
database_type & database() const
object_traits< O >::id_type object_id() const
Definition: lazy-ptr-impl.hxx:115
std::tr1::shared_ptr< T > lazy_shared_ptr::* unspecified_bool_type
Definition: tr1/lazy-ptr.hxx:66
Definition: tr1/lazy-ptr.hxx:32
T element_type
Definition: tr1/lazy-ptr.hxx:162
std::tr1::shared_ptr< T > get_eager() const
std::tr1::weak_ptr< T > get_eager() const
bool operator==(const lazy_shared_ptr< T > &, const lazy_shared_ptr< Y > &)
lazy_shared_ptr< T > lock() const
odb::database database_type
Definition: tr1/lazy-ptr.hxx:83
void swap(lazy_shared_ptr< T > &, lazy_shared_ptr< T > &)
object_traits< O >::id_type object_id() const
Definition: tr1/lazy-ptr.hxx:27
Definition: forward.hxx:123
T element_type
Definition: tr1/lazy-ptr.hxx:37
std::tr1::shared_ptr< T > load() const
bool operator!=(const lazy_shared_ptr< T > &, const lazy_shared_ptr< Y > &)
std::tr1::shared_ptr< T > load() const
bool equal(const lazy_shared_ptr< Y > &) const
lazy_shared_ptr & operator=(const lazy_shared_ptr &)
void swap(lazy_weak_ptr< T > &)
lazy_weak_ptr & operator=(const lazy_weak_ptr &)
Definition: database.hxx:38
odb::database database_type
Definition: tr1/lazy-ptr.hxx:195
D * get_deleter(const lazy_shared_ptr< T > &)
void swap(lazy_shared_ptr &)
database_type & database() const