Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy > Class Template Reference

Inheritance diagram for ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >:

Inheritance graph
[legend]
List of all members.

Detailed Description

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
class ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >

a smart pointer that handles destruction of its pointee based on policies

Parameters:
T the pointee's type
OwnershipPolicy the policy that governs the ownership. See Ownership Policies for details. The default is ReferenceCounting.
ConversionPolicy governs implicit conversion to raw pointer. See Conversion Policies for details. The default is DisallowConversion.
CheckingPolicy handles validity checks of the pointer. See Checking Policies for details. The default is AssertDereference.
StoragePolicy handles pointer storage. See Storage Policies for details. The default is DefaultStorage.
Note:
this class is based on the SmartPtr implementation presented in "Modern C++ Design" by Andrei Alexandrescu
Author:
Daniel Seibert


Public Types

typedef CheckingPolicy< typename
StoragePolicy< T >::StoredType
CheckP
typedef ConversionPolicy ConvP
typedef Selector< OwnP::OWNERSHIP_TRANSFER,
SmartPointer, const SmartPointer
>::Type 
CopyArg
typedef OwnershipPolicy< typename
StoragePolicy< T >::PointerType
OwnP
typedef StorP::PointerType PointerType
typedef StorP::ReferenceType ReferenceType
typedef StorP::StoredType StoredType
typedef StoragePolicy< T > StorP
typedef T Type

Public Member Functions

ReferenceType operator * () const
ReferenceType operator * ()
 operator AutoConv () const
 operator ByReference ()
 operator Tester * () const
bool operator! () const
template<typename T1, template< class > class OP, class CoP, template< class > class ChP, template< class > class SP>
bool operator!= (const SmartPointer< T1, OP, CoP, ChP, SP > &r) const
PointerType operator-> () const
PointerType operator-> ()
template<typename T1, template< class > class OP, class CoP, template< class > class ChP, template< class > class SP>
bool operator< (const SmartPointer< T1, OP, CoP, ChP, SP > &r) const
template<typename T1, template< class > class OP, class CoP, template< class > class ChP, template< class > class SP>
SmartPointeroperator= (SmartPointer< T1, OP, CoP, ChP, SP > &sp)
template<typename T1, template< class > class OP, class CoP, template< class > class ChP, template< class > class SP>
SmartPointeroperator= (const SmartPointer< T1, OP, CoP, ChP, SP > &sp)
SmartPointeroperator= (CopyArg &sp)
template<typename T1, template< class > class OP, class CoP, template< class > class ChP, template< class > class SP>
bool operator== (const SmartPointer< T1, OP, CoP, ChP, SP > &r) const
template<typename T1, template< class > class OP, class CoP, template< class > class ChP, template< class > class SP>
 SmartPointer (const SmartPointer< T1, OP, CoP, ChP, SP > &sp)
template<typename T1, template< class > class OP, class CoP, template< class > class ChP, template< class > class SP>
 SmartPointer (SmartPointer< T1, OP, CoP, ChP, SP > &sp)
 SmartPointer (CopyArg &sp)
 SmartPointer (ByReference< SmartPointer > sp)
 SmartPointer (const StoredType &ptr)
 SmartPointer ()
 ~SmartPointer ()

Friends

bool operator!= (const T *l, const SmartPointer &r)
bool operator!= (const SmartPointer &l, const T *r)
bool operator== (const T *l, const SmartPointer &r)
bool operator== (const SmartPointer &l, const T *r)

Classes

struct  Dummy
struct  Tester


Member Typedef Documentation

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
typedef CheckingPolicy<typename StoragePolicy<T>::StoredType> ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::CheckP
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
typedef ConversionPolicy ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::ConvP
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
typedef Selector<OwnP::OWNERSHIP_TRANSFER,SmartPointer,const SmartPointer>::Type ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::CopyArg
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
typedef OwnershipPolicy<typename StoragePolicy<T>::PointerType> ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::OwnP
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
typedef StorP::PointerType ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::PointerType
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
typedef StorP::ReferenceType ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::ReferenceType
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
typedef StorP::StoredType ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::StoredType
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
typedef StoragePolicy<T> ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::StorP
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
typedef T ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::Type
 


Constructor & Destructor Documentation

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::SmartPointer  )  [inline]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::SmartPointer const StoredType ptr  )  [inline]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::SmartPointer ByReference< SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy > >  sp  )  [inline]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::SmartPointer CopyArg sp  )  [inline]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
template<typename T1, template< class > class OP, class CoP, template< class > class ChP, template< class > class SP>
ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::SmartPointer SmartPointer< T1, OP, CoP, ChP, SP > &  sp  )  [inline]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
template<typename T1, template< class > class OP, class CoP, template< class > class ChP, template< class > class SP>
ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::SmartPointer const SmartPointer< T1, OP, CoP, ChP, SP > &  sp  )  [inline]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::~SmartPointer  )  [inline]
 


Member Function Documentation

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
ReferenceType ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::operator *  )  const [inline]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
ReferenceType ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::operator *  )  [inline]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::operator AutoConv  )  const [inline]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::operator ByReference  )  [inline]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::operator Tester *  )  const [inline]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
bool ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::operator!  )  const [inline]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
template<typename T1, template< class > class OP, class CoP, template< class > class ChP, template< class > class SP>
bool ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::operator!= const SmartPointer< T1, OP, CoP, ChP, SP > &  r  )  const [inline]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
PointerType ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::operator->  )  const [inline]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
PointerType ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::operator->  )  [inline]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
template<typename T1, template< class > class OP, class CoP, template< class > class ChP, template< class > class SP>
bool ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::operator< const SmartPointer< T1, OP, CoP, ChP, SP > &  r  )  const [inline]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
template<typename T1, template< class > class OP, class CoP, template< class > class ChP, template< class > class SP>
SmartPointer& ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::operator= SmartPointer< T1, OP, CoP, ChP, SP > &  sp  )  [inline]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
template<typename T1, template< class > class OP, class CoP, template< class > class ChP, template< class > class SP>
SmartPointer& ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::operator= const SmartPointer< T1, OP, CoP, ChP, SP > &  sp  )  [inline]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
SmartPointer& ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::operator= CopyArg sp  )  [inline]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
template<typename T1, template< class > class OP, class CoP, template< class > class ChP, template< class > class SP>
bool ONE::util::SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy >::operator== const SmartPointer< T1, OP, CoP, ChP, SP > &  r  )  const [inline]
 


Friends And Related Function Documentation

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
bool operator!= const T *  l,
const SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy > &  r
[friend]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
bool operator!= const SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy > &  l,
const T *  r
[friend]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
bool operator== const T *  l,
const SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy > &  r
[friend]
 

template<typename T, template< class > class OwnershipPolicy = ReferenceCounting, class ConversionPolicy = DisallowConversion, template< class > class CheckingPolicy = AssertDereference, template< class > class StoragePolicy = DefaultStorage>
bool operator== const SmartPointer< T, OwnershipPolicy, ConversionPolicy, CheckingPolicy, StoragePolicy > &  l,
const T *  r
[friend]
 


Generated on Wed Sep 7 19:03:33 2005 for ONEngine by  doxygen 1.4.3