lumiera::P< TAR, BASE > Class Template Reference

#include <p.hpp>

Inheritance diagram for lumiera::P< TAR, BASE >:

Inheritance graph
[legend]
Collaboration diagram for lumiera::P< TAR, BASE >:

Collaboration graph
[legend]

List of all members.


Detailed Description

template<class TAR, class BASE = shared_ptr<TAR>>
class lumiera::P< TAR, BASE >

Customised refcounting smart pointer template, built upon std::tr1::shared_ptr, but forwarding type relationships and ordering operators to the pointee objects.

Parameters:
TAR the visible pointee type
BASE the shared-ptr type used as implementation
Note:
if the BASE smart-ptr type used as implementation implies another pointer type than the one used on the interface (=type TAR), then every access to the pointee causes an dynamic cast. Thus the pointee types need to support RTTI.

Definition at line 75 of file p.hpp.


Public Member Functions

TAR * get () const
TAR & operator* () const
TAR * operator-> () const
template<class Y>
Poperator= (std::auto_ptr< Y > &ar)
template<class Y>
Poperator= (shared_ptr< Y > const &sr)
Poperator= (P const &r)
template<class Y>
 P (std::auto_ptr< Y > &ar)
template<class Y>
 P (weak_ptr< Y > const &wr)
template<class Y>
 P (shared_ptr< Y > const &r)
 P (P const &r)
template<class Y, class D>
 P (Y *p, D d)
template<class Y>
 P (Y *p)
void swap (P &b)

Friends

template<typename _O_>
bool operator!= (P const &p, P< _O_ > const &q)
template<typename _O_>
bool operator< (P const &p, P< _O_ > const &q)
template<typename _O_>
bool operator<= (P const &p, P< _O_ > const &q)
template<typename _O_>
bool operator== (P const &p, P< _O_ > const &q)
template<typename _O_>
bool operator> (P const &p, P< _O_ > const &q)
template<typename _O_>
bool operator>= (P const &p, P< _O_ > const &q)

Friends And Related Function Documentation

template<class TAR, class BASE = shared_ptr<TAR>>
template<typename _O_>
bool operator< ( P< TAR, BASE > const &  p,
P< _O_ > const &  q 
) [friend]

Note:
deliberately not allowing comparison on NIL ////TICKET #307 : problem with equality test in associative containers, where equal(a,b) := !(a < b) && !(b < a)

Definition at line 111 of file p.hpp.


The documentation for this class was generated from the following file:

Generated on Sun Aug 1 21:33:09 2010 for Lumiera by  doxygen 1.5.6