CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Private Member Functions | Private Attributes
MixedReference< T > Class Template Reference

#include <ReferenceCounted.h>

Private Member Functions

void destroy () noexcept
 
T const * get () const
 
 MixedReference (T const *ip=nullptr) noexcept
 
 MixedReference (MixedReference &&rh) noexcept
 
 MixedReference (MixedReference const &rh)
 
T const & operator* () const
 
MixedReferenceoperator= (MixedReference &&rh) noexcept
 
MixedReferenceoperator= (MixedReference const &rh)
 
 ~MixedReference () noexcept
 

Private Attributes

T const * p
 

Detailed Description

template<typename T>
class MixedReference< T >

Definition at line 93 of file ReferenceCounted.h.

Constructor & Destructor Documentation

template<typename T >
MixedReference< T >::MixedReference ( T const *  ip = nullptr)
inlineexplicitprivatenoexcept

Definition at line 94 of file ReferenceCounted.h.

94 : p(ip){}
template<typename T >
MixedReference< T >::~MixedReference ( )
inlineprivatenoexcept

Definition at line 95 of file ReferenceCounted.h.

References MixedReference< T >::destroy().

95 { destroy();}
void destroy() noexcept
template<typename T >
MixedReference< T >::MixedReference ( MixedReference< T > &&  rh)
inlineprivatenoexcept

Definition at line 98 of file ReferenceCounted.h.

98 : p(rh.p){rh.p=0;}
template<typename T >
MixedReference< T >::MixedReference ( MixedReference< T > const &  rh)
inlineprivate

Definition at line 106 of file ReferenceCounted.h.

106 : p(rh.p? rh.p->clone(): nullptr ){}
#define nullptr

Member Function Documentation

template<typename T >
void MixedReference< T >::destroy ( )
inlineprivatenoexcept

Definition at line 120 of file ReferenceCounted.h.

References MixedReference< T >::p.

Referenced by MixedReference< T >::operator=(), and MixedReference< T >::~MixedReference().

120  {
121  if (p && p->references()==0) { delete const_cast<T*>(p); }
122  }
long double T
template<typename T >
T const* MixedReference< T >::get ( void  ) const
inlineprivate
template<typename T >
T const& MixedReference< T >::operator* ( ) const
inlineprivate

Definition at line 117 of file ReferenceCounted.h.

References MixedReference< T >::p.

117 { return *p;}
template<typename T >
MixedReference& MixedReference< T >::operator= ( MixedReference< T > &&  rh)
inlineprivatenoexcept

Definition at line 99 of file ReferenceCounted.h.

References MixedReference< T >::destroy(), and MixedReference< T >::p.

99  {
100  destroy();
101  p=rh.p; rh.p=0;
102  return *this;
103 }
void destroy() noexcept
template<typename T >
MixedReference& MixedReference< T >::operator= ( MixedReference< T > const &  rh)
inlineprivate

Definition at line 107 of file ReferenceCounted.h.

References MixedReference< T >::destroy(), and MixedReference< T >::p.

107  {
108  if (rh.p!=p) {
109  destroy();
110  p = rh.p? rh.p->clone(): nullptr;
111  }
112  return * this;
113  }
void destroy() noexcept

Member Data Documentation

template<typename T >
T const* MixedReference< T >::p
private