ExternalRefCountWithCustomDeleter< T, Deleter > Struct Template Reference

ExternalRefCountWithCustomDeleter< T, Deleter > Struct Template Reference

#include <qsharedpointer_impl.h>

Class Description

template<class T, typename Deleter>
struct QtSharedPointer::ExternalRefCountWithCustomDeleter< T, Deleter >

Definition at line 229 of file qsharedpointer_impl.h.

+ Inheritance diagram for ExternalRefCountWithCustomDeleter< T, Deleter >:

Classes

struct  CustomDeleter
 

Public Types

typedef ExternalRefCountWithCustomDeleter Self
 
typedef ExternalRefCountWithDestroyFn BaseClass
 
- Public Types inherited from ExternalRefCountWithDestroyFn
typedef void(* DestroyerFn) (ExternalRefCountData *)
 

Static Public Member Functions

static void deleter (ExternalRefCountData *self)
 
static void safetyCheckDeleter (ExternalRefCountData *self)
 
static Selfcreate (T *ptr, Deleter userDeleter)
 
- Static Public Member Functions inherited from ExternalRefCountData
static Q_CORE_EXPORT ExternalRefCountDatagetAndRef (const QObject *)
 

Public Attributes

CustomDeleter extra
 
- Public Attributes inherited from ExternalRefCountWithDestroyFn
DestroyerFn destroyer
 
- Public Attributes inherited from ExternalRefCountData
QBasicAtomicInt weakref
 
QBasicAtomicInt strongref
 

Additional Inherited Members

- Public Member Functions inherited from ExternalRefCountWithDestroyFn
 ExternalRefCountWithDestroyFn (DestroyerFn d)
 
bool destroy ()
 
void operator delete (void *ptr)
 
void operator delete (void *, void *)
 
- Public Member Functions inherited from ExternalRefCountData
 ExternalRefCountData ()
 
 ExternalRefCountData (Qt::Initialization)
 
virtual ~ExternalRefCountData ()
 
Q_CORE_EXPORT void setQObjectShared (const QObject *, bool enable)
 
void setQObjectShared (...)
 

Member Typedef Documentation

Definition at line 231 of file qsharedpointer_impl.h.

Member Function Documentation

static void deleter ( ExternalRefCountData self)
inlinestatic

Definition at line 246 of file qsharedpointer_impl.h.

247  {
248  Self *realself = static_cast<Self *>(self);
249  executeDeleter(realself->extra.ptr, realself->extra.deleter);
250 
251  // delete the deleter too
252  realself->extra.~CustomDeleter();
253  }
void executeDeleter(T *t, RetVal(Klass::*memberDeleter)())
static void safetyCheckDeleter ( ExternalRefCountData self)
inlinestatic

Definition at line 254 of file qsharedpointer_impl.h.

255  {
257  deleter(self);
258  }
Q_CORE_EXPORT void internalSafetyCheckRemove2(const void *)
static void deleter(ExternalRefCountData *self)
static Self* create ( T *  ptr,
Deleter  userDeleter 
)
inlinestatic

Definition at line 260 of file qsharedpointer_impl.h.

261  {
262 # ifdef QT_SHAREDPOINTER_TRACK_POINTERS
264 # else
265  DestroyerFn destroy = &deleter;
266 # endif
267  Self *d = static_cast<Self *>(::operator new(sizeof(Self)));
268 
269  // initialize the two sub-objects
270  new (&d->extra) CustomDeleter(ptr, userDeleter);
271  new (d) BaseClass(destroy); // can't throw
272 
273  return d;
274  }
static void deleter(ExternalRefCountData *self)
static void safetyCheckDeleter(ExternalRefCountData *self)

Member Data Documentation

Definition at line 241 of file qsharedpointer_impl.h.


The documentation for this struct was generated from the following file: