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

KDECore

Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
KSharedPtr< T > Class Template Reference

#include <KSharedPtr>

Inheritance diagram for KSharedPtr< T >:
Inheritance graph
[legend]

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<typename 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 38 of file kconfiggroup.h.

Constructor & Destructor Documentation

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

Creates a null pointer.

Definition at line 69 of file ksharedptr.h.

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

Creates a new pointer.

Parameters
pthe pointer

Definition at line 76 of file ksharedptr.h.

template<typename 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<typename 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<typename 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<typename 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<typename T>
T* KSharedPtr< T >::data ( )
inline
Returns
the pointer

Definition at line 111 of file ksharedptr.h.

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

Definition at line 116 of file ksharedptr.h.

template<typename 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<typename 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<typename 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<typename 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<typename T>
bool KSharedPtr< T >::operator!= ( const KSharedPtr< T > &  o) const
inline

Definition at line 94 of file ksharedptr.h.

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

Definition at line 99 of file ksharedptr.h.

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

Definition at line 123 of file ksharedptr.h.

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

Definition at line 124 of file ksharedptr.h.

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

Definition at line 125 of file ksharedptr.h.

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

Definition at line 126 of file ksharedptr.h.

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

Definition at line 95 of file ksharedptr.h.

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

Definition at line 92 of file ksharedptr.h.

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

Definition at line 97 of file ksharedptr.h.

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

Definition at line 93 of file ksharedptr.h.

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

Definition at line 98 of file ksharedptr.h.

template<typename 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<typename T>
T* KSharedPtr< T >::d
protected

Definition at line 193 of file ksharedptr.h.


The documentation for this class was generated from the following files:
  • kconfiggroup.h
  • ksharedptr.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:22:13 by doxygen 1.8.7 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 API Reference

Skip menu "kdelibs 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

Search



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