• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdelibs-4.10.5 API Reference
  • KDE Home
  • Contact Us
 

KDECore

Public Member Functions | Static Public Member Functions | Protected Attributes
KSharedPtr< T > Class Template Reference

#include <KSharedPtr>

List of all members.

Public Member Functions

 KSharedPtr ()
 KSharedPtr (T *p)
 KSharedPtr (const KSharedPtr &o)
 ~KSharedPtr ()
void attach (T *p)
void clear ()
const T * constData () const
int count () const
T * data ()
const T * data () const
bool isNull () const
bool isUnique () const
 operator bool () const
bool operator!= (const KSharedPtr &o) const
bool operator!= (const T *p) const
const T & operator* () const
T & operator* ()
const T * operator-> () const
T * operator-> ()
bool operator< (const KSharedPtr &o) const
KSharedPtr< T > & operator= (const KSharedPtr &o)
KSharedPtr< T > & operator= (T *p)
bool operator== (const KSharedPtr &o) const
bool operator== (const T *p) const

Static Public Member Functions

template<class U >
static KSharedPtr< T > dynamicCast (const KSharedPtr< U > &o)
template<class U >
static KSharedPtr< T > staticCast (const KSharedPtr< U > &o)

Protected Attributes

T * d

Detailed Description

template<class T>
class KSharedPtr< T >

Can be used to control the lifetime of an object that has derived QSharedData.

As long a someone holds a KSharedPtr on some QSharedData object it won't become deleted but is deleted once its reference count is 0. This struct emulates C++ pointers virtually perfectly. So just use it like a simple C++ pointer.

The difference with QSharedPointer is that QSharedPointer does the refcounting in the pointer, while KSharedPtr does the refcounting in the object. This allows to convert to a raw pointer temporarily and back to a KSharedPtr without deleting the object, if another reference exists. But it imposes a requirement on the object, which must inherit QSharedData.

The difference with using QSharedDataPointer is that QSharedDataPointer is a building block for implementing a value class with implicit sharing (like QString), whereas KSharedPtr provides refcounting to code that uses pointers.

Author:
Waldo Bastian basti.nosp@m.an@k.nosp@m.de.or.nosp@m.g

Definition at line 63 of file ksharedptr.h.


Constructor & Destructor Documentation

template<class T>
KSharedPtr< T >::KSharedPtr ( )
inline

Creates a null pointer.

Definition at line 69 of file ksharedptr.h.

template<class T>
KSharedPtr< T >::KSharedPtr ( T *  p)
inlineexplicit

Creates a new pointer.

Parameters:
pthe pointer

Definition at line 76 of file ksharedptr.h.

template<class T>
KSharedPtr< T >::KSharedPtr ( const KSharedPtr< T > &  o)
inline

Copies a pointer.

Parameters:
othe pointer to copy

Definition at line 83 of file ksharedptr.h.

template<class T>
KSharedPtr< T >::~KSharedPtr ( )
inline

Unreferences the object that this pointer points to.

If it was the last reference, the object will be deleted.

Definition at line 90 of file ksharedptr.h.


Member Function Documentation

template<class T>
Q_INLINE_TEMPLATE void KSharedPtr< T >::attach ( T *  p)

Attach the given pointer to the current KSharedPtr.

If the previous shared pointer is not owned by any KSharedPtr, it is deleted.

Definition at line 209 of file ksharedptr.h.

template<class T >
Q_INLINE_TEMPLATE void KSharedPtr< T >::clear ( )

Clear the pointer, i.e.

make it a null pointer.

Definition at line 220 of file ksharedptr.h.

template<class T>
const T* KSharedPtr< T >::constData ( ) const
inline
Returns:
a const pointer to the shared object.

Definition at line 121 of file ksharedptr.h.

template<class T>
int KSharedPtr< T >::count ( ) const
inline

Returns the number of references.

Returns:
the number of references

Definition at line 144 of file ksharedptr.h.

template<class T>
T* KSharedPtr< T >::data ( )
inline
Returns:
the pointer

Definition at line 111 of file ksharedptr.h.

template<class T>
const T* KSharedPtr< T >::data ( ) const
inline
Returns:
the pointer

Definition at line 116 of file ksharedptr.h.

template<class T>
template<class U >
static KSharedPtr<T> KSharedPtr< T >::dynamicCast ( const KSharedPtr< U > &  o)
inlinestatic

Convert KSharedPtr<U> to KSharedPtr<T>, using a dynamic_cast.

This will compile whenever T* and U* are compatible, i.e. T is a subclass of U or vice-versa. Example syntax: KSharedPtr<T> tPtr; KSharedPtr<U> uPtr = KSharedPtr<U>::dynamicCast( tPtr ); Since a dynamic_cast is used, if U derives from T, and tPtr isn't an instance of U, uPtr will be 0.

Definition at line 188 of file ksharedptr.h.

template<class T>
bool KSharedPtr< T >::isNull ( ) const
inline

Test if the shared pointer is null.

Returns:
true if the pointer is null, false otherwise.
See also:
opertor (bool)

Definition at line 151 of file ksharedptr.h.

template<class T>
bool KSharedPtr< T >::isUnique ( ) const
inline
Returns:
Whether this is the only shared pointer pointing to to the pointee, or whether it's shared among multiple shared pointers.

Definition at line 158 of file ksharedptr.h.

template<class T>
KSharedPtr< T >::operator bool ( ) const
inline

Test if the shared pointer is NOT null.

Returns:
true if the shared pointer is NOT null, false otherwise.
See also:
isNull

Definition at line 106 of file ksharedptr.h.

template<class T>
bool KSharedPtr< T >::operator!= ( const KSharedPtr< T > &  o) const
inline

Definition at line 94 of file ksharedptr.h.

template<class T>
bool KSharedPtr< T >::operator!= ( const T *  p) const
inline

Definition at line 99 of file ksharedptr.h.

template<class T>
const T& KSharedPtr< T >::operator* ( ) const
inline

Definition at line 123 of file ksharedptr.h.

template<class T>
T& KSharedPtr< T >::operator* ( )
inline

Definition at line 124 of file ksharedptr.h.

template<class T>
const T* KSharedPtr< T >::operator-> ( ) const
inline

Definition at line 125 of file ksharedptr.h.

template<class T>
T* KSharedPtr< T >::operator-> ( )
inline

Definition at line 126 of file ksharedptr.h.

template<class T>
bool KSharedPtr< T >::operator< ( const KSharedPtr< T > &  o) const
inline

Definition at line 95 of file ksharedptr.h.

template<class T>
KSharedPtr<T>& KSharedPtr< T >::operator= ( const KSharedPtr< T > &  o)
inline

Definition at line 92 of file ksharedptr.h.

template<class T>
KSharedPtr<T>& KSharedPtr< T >::operator= ( T *  p)
inline

Definition at line 97 of file ksharedptr.h.

template<class T>
bool KSharedPtr< T >::operator== ( const KSharedPtr< T > &  o) const
inline

Definition at line 93 of file ksharedptr.h.

template<class T>
bool KSharedPtr< T >::operator== ( const T *  p) const
inline

Definition at line 98 of file ksharedptr.h.

template<class T>
template<class U >
static KSharedPtr<T> KSharedPtr< T >::staticCast ( const KSharedPtr< U > &  o)
inlinestatic

Convert KSharedPtr<U> to KSharedPtr<T>, using a static_cast.

This will compile whenever T* and U* are compatible, i.e. T is a subclass of U or vice-versa. Example syntax: KSharedPtr<T> tPtr; KSharedPtr<U> uPtr = KSharedPtr<U>::staticCast( tPtr );

Definition at line 173 of file ksharedptr.h.


Member Data Documentation

template<class T>
T* KSharedPtr< T >::d
protected

Definition at line 193 of file ksharedptr.h.


The documentation for this class was generated from the following file:
  • ksharedptr.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2013 The KDE developers.
Generated on Tue Jul 16 2013 17:47:39 by doxygen 1.8.1.1 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KDECore

Skip menu "KDECore"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdelibs-4.10.5 API Reference

Skip menu "kdelibs-4.10.5 API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal