| Home · All Classes · All Namespaces · Modules · Functions · Files

Public Member Functions | Static Public Member Functions
Tp::SharedPtr< T > Class Template Reference
Utililty classes

The SharedPtr class is a pointer to an explicitly shared object. More...

`#include <TelepathyQt/SharedPtr>`

List of all members.

## Public Member Functions

- SharedPtr ()
- SharedPtr (T *d)
- template<typename Subclass > SharedPtr (const SharedPtr< Subclass > &o)
- SharedPtr (const SharedPtr< T > &o)
- SharedPtr (const WeakPtr< T > &o)
- ~SharedPtr ()
- void reset ()
- T * data () const
- const T * constData () const
- T * operator-> ()
- T * operator-> () const
- bool isNull () const
- bool operator! () const
- operator UnspecifiedBoolType () const
- bool operator== (const SharedPtr< T > &o) const
- bool operator!= (const SharedPtr< T > &o) const
- bool operator== (const T *ptr) const
- bool operator!= (const T *ptr) const
- SharedPtr< T > & operator= (const SharedPtr< T > &o)
- void swap (SharedPtr< T > &o)

## Static Public Member Functions

- template<class X > static SharedPtr< T > staticCast (const SharedPtr< X > &src)
- template<class X > static SharedPtr< T > dynamicCast (const SharedPtr< X > &src)
- template<class X > static SharedPtr< T > constCast (const SharedPtr< X > &src)
- template<class X > static SharedPtr< T > qObjectCast (const SharedPtr< X > &src)

## Detailed Description

### template<class T>
class Tp::SharedPtr< T >

The SharedPtr class is a pointer to an explicitly shared object.

Note that from Telepathy-Qt >= 0.9.0, Tp::SharedPtr cannot be constructed from a QWeakPointer as the conversion from a QWeakPointer to a Tp::SharedPtr can't be made thread-safe. Tp::WeakPtr is reintroduced as a weak pointer class safely promoteable to a Tp::SharedPtr.

See Shared Pointer Usage

## Constructor & Destructor Documentation

template<class T>

Tp::SharedPtr< T >::SharedPtr | ( |  | ) | `[inline]`

template<class T>

Tp::SharedPtr< T >::SharedPtr | ( | T * | d | ) | `[inline, explicit]`

template<class T>
template<typename Subclass >

Tp::SharedPtr< T >::SharedPtr | ( | const SharedPtr< Subclass > & | o | ) | `[inline]`

template<class T>

Tp::SharedPtr< T >::SharedPtr | ( | const SharedPtr< T > & | o | ) | `[inline]`

template<class T>

Tp::SharedPtr< T >::SharedPtr | ( | const WeakPtr< T > & | o | ) | `[inline, explicit]`

template<class T>

Tp::SharedPtr< T >::~SharedPtr | ( |  | ) | `[inline]`

## Member Function Documentation

template<class T>

void Tp::SharedPtr< T >::reset | ( |  | ) | `[inline]`

template<class T>

T* Tp::SharedPtr< T >::data | ( |  | ) | const`[inline]`

template<class T>

const T* Tp::SharedPtr< T >::constData | ( |  | ) | const`[inline]`

template<class T>

T* Tp::SharedPtr< T >::operator-> | ( |  | ) | `[inline]`

template<class T>

T* Tp::SharedPtr< T >::operator-> | ( |  | ) | const`[inline]`

template<class T>

bool Tp::SharedPtr< T >::isNull | ( |  | ) | const`[inline]`

template<class T>

bool Tp::SharedPtr< T >::operator! | ( |  | ) | const`[inline]`

template<class T>

Tp::SharedPtr< T >::operator UnspecifiedBoolType | ( |  | ) | const`[inline]`

template<class T>

bool Tp::SharedPtr< T >::operator== | ( | const SharedPtr< T > & | o | ) | const`[inline]`

template<class T>

bool Tp::SharedPtr< T >::operator!= | ( | const SharedPtr< T > & | o | ) | const`[inline]`

template<class T>

bool Tp::SharedPtr< T >::operator== | ( | const T * | ptr | ) | const`[inline]`

template<class T>

bool Tp::SharedPtr< T >::operator!= | ( | const T * | ptr | ) | const`[inline]`

template<class T>

SharedPtr<T>& Tp::SharedPtr< T >::operator= | ( | const SharedPtr< T > & | o | ) | `[inline]`

template<class T>

void Tp::SharedPtr< T >::swap | ( | SharedPtr< T > & | o | ) | `[inline]`

template<class T>
template<class X >

static SharedPtr<T> Tp::SharedPtr< T >::staticCast | ( | const SharedPtr< X > & | src | ) | `[inline, static]`

template<class T>
template<class X >

static SharedPtr< T > Tp::SharedPtr< T >::dynamicCast | ( | const SharedPtr< X > & | src | ) | `[inline, static]`

Casts the pointer given by src to a pointer pointing to an object of type T. The cast will succeed if the C++ runtime type identification mechanism considers the type T to be the actual runtime type of the object pointed to by src or one of its (possibly indirect) parent classes. Otherwise, a null pointer is returned.

Note that this also allows down-casting a baseclass pointer to a subclass pointer.

This cast method should not be used for QObject-derived classes, as Qt provides a more portable and efficient type identification mechanism, which is used by qObjectCast().

This cast method requires the C++ dynamic runtime type identification facility to be enabled (which might be disabled by eg. the -fno-rtti flag of the GNU G++ compiler).

template<class T>
template<class X >

static SharedPtr<T> Tp::SharedPtr< T >::constCast | ( | const SharedPtr< X > & | src | ) | `[inline, static]`

template<class T>
template<class X >

static SharedPtr< T > Tp::SharedPtr< T >::qObjectCast | ( | const SharedPtr< X > & | src | ) | `[inline, static]`

Casts the pointer given by src to a pointer pointing to an object of type T. The cast will succeed if the Qt runtime type identification mechanism considers the type T to be the actual runtime type of the object pointed to by src or one of its (possibly indirect) parent classes. Otherwise, a null pointer is returned.

Note that this also allows down-casting a baseclass pointer to a subclass pointer.

This cast method MUST not be used for classes not derived from QObject. However, dynamicCast() provides the same semantics for all classes, provided the C++ runtime type identification facility is enabled. This method, on the other hand, doesn't require the standard C++ facility and is probably also faster for the types it can be used with.