49 #ifndef CARTOBASE_SMART_WEAKPTR_H 
   50 #define CARTOBASE_SMART_WEAKPTR_H 
   61 template <
typename T> 
class weak_ptr;
 
   73 #if !defined( CARTO_NO_MEMBER_TEMPLATES ) && \ 
   74     !defined( CARTO_NO_MEMBER_TEMPLATE_FRIENDS ) 
   78 #if defined( CARTO_BROKEN_FRIEND_TEMPLATE_FUNCTION ) 
   79     template <
typename U, 
typename V>
 
   82     template < 
typename U, 
typename V >
 
   86 #ifndef DOXYGEN_HIDE_INTERNAL_CLASSES 
   87     class InsipidProxyPointer
 
   90         void operator delete( 
void* );
 
   91         void operator delete[]( 
void* );
 
  100         pointee->attachWeakPtr( *
this );
 
  109           pointee->detachWeakPtr( *
this );
 
  114           r->attachWeakPtr( *
this );
 
  120 #if !defined( CARTO_NO_MEMBER_TEMPLATES ) 
  122     template <
typename Y>
 
  126         pointee->attachWeakPtr( *
this );
 
  129     template <
typename Y>
 
  133         pointee->attachWeakPtr( *
this );
 
  136     template <
typename Y>
 
  137     explicit weak_ptr( 
const std::unique_ptr<Y>& r ) : pointee( r.
get() )
 
  140         pointee->attachWeakPtr( *
this );
 
  143     template <
typename Y>
 
  150     template <
typename Y>
 
  157     template <
typename Y>
 
  169         pointee->attachWeakPtr( *
this );
 
  172     explicit weak_ptr( 
const std::unique_ptr<T>& r ) : pointee( r.
get() )
 
  175         pointee->attachWeakPtr( *
this );
 
  195         pointee->attachWeakPtr( *
this );
 
  207         pointee->detachWeakPtr( *
this );
 
  210 #ifndef DOXYGEN_HIDE_INTERNAL_CLASSES 
  211     operator InsipidProxyPointer*() 
const 
  213       return reinterpret_cast<InsipidProxyPointer*
>( pointee );
 
  235         pointee->detachWeakPtr( *
this );
 
  242     { 
return pointee == x.
get(); }
 
  244     { 
return pointee == x.
get(); }
 
  246     { 
return pointee == x.
get(); }
 
  248     { 
return pointee == x.
get(); }
 
  250     { 
return pointee != x.
get(); }
 
  252     { 
return pointee != x.
get(); }
 
  254     { 
return pointee != x.
get(); }
 
  256     { 
return pointee != x.
get(); }
 
  258     { 
return pointee < x.
get(); }
 
  260     { 
return pointee < x.
get(); }
 
  262     { 
return pointee < x.
get(); }
 
  264     { 
return pointee < x.
get(); }
 
  273 #if defined( CARTO_NO_MEMBER_TEMPLATES) || \ 
  274     !defined( CARTO_NO_MEMBER_TEMPLATE_FRIENDS ) 
  288 template <
typename T, 
typename U>
 
  292   return weak_ptr<U>( 
dynamic_cast<U*
>( r.pointee ) );
 
Base class for weakly referenced objects.
Reference-counting pointer.
A multi-purpose general smart pointer, which can act as either a rc_ptr, a weak_ptr or a weak_shared_...
Observer pointer, observing a shfj::WeakObject.
weak_ptr(const weak_ptr &r)
weak_ptr & operator=(const rc_ptr< Y > &r)
weak_ptr & operator=(const weak_ptr &w)
weak_ptr(const rc_ptr< Y > &r)
bool operator!=(const weak_ptr< T > &x) const
friend weak_ptr< V > weak_cast(const weak_ptr< U > &)
weak_ptr(const weak_ptr< Y > &r)
weak_ptr & operator=(const std::unique_ptr< Y > &r)
weak_ptr(const std::unique_ptr< Y > &r)
weak_ptr & operator=(const weak_ptr< Y > &r)
bool operator<(const weak_ptr< T > &x) const
bool operator==(const weak_ptr< T > &x) const
weak_shared_ptr: increments a reference count, is told and becomes null whenever the shared object is...
weak_ptr< U > weak_cast(const weak_ptr< T > &)