103 #define DPTR_INIT(p) dptr(p) 105 #define DPTR_DECLARE(Class) DPtrInterface<Class, Class##Private> dptr; 107 #define DPTR_DECLARE_PRIVATE(Class) \ 108 inline Class##Private& d_func() { return dptr.pri<Class##Private>(); } \ 109 inline const Class##Private& d_func() const { return dptr.pri<Class##Private>(); } \ 110 friend class Class##Private; 112 #define DPTR_DECLARE_PUBLIC(Class) \ 113 inline Class& q_func() { return *static_cast<Class*>(dptr_ptr()); } \ 114 inline const Class& q_func() const { return *static_cast<const Class*>(dptr_ptr()); } \ 117 #define DPTR_INIT_PRIVATE(Class) dptr.setPublic(this); 118 #define DPTR_D(Class) Class##Private& d = dptr.pri<Class##Private>() 119 #define DPTR_P(Class) Class& p = *static_cast<Class*>(dptr_ptr()) 122 template <
typename PUB>
129 inline PUB&
dptr_p() {
return *dptr_p_ptr; }
130 inline const PUB&
dptr_p()
const {
return *dptr_p_ptr; }
132 inline const PUB*
dptr_ptr()
const {
return dptr_p_ptr; }
138 template <
typename PUB,
typename PVT>
151 inline void setPublic(PUB* pub) { pvt->DPTR_setPublic(pub); }
152 template <
typename T>
153 inline T&
pri() {
return *
reinterpret_cast<T*
>(pvt); }
154 template <
typename T>
155 inline const T&
pri()
const {
return *
reinterpret_cast<T*
>(pvt); }
157 inline const PVT&
operator()()
const {
return *
static_cast<PVT*
>(pvt); }
159 inline const PVT *
operator->()
const {
return static_cast<PVT*
>(pvt); }
T & pri()
Definition: dptr.h:153
PVT & operator()()
Definition: dptr.h:156
DPtrInterface(PVT *d)
Definition: dptr.h:143
void setPublic(PUB *pub)
Definition: dptr.h:151
PUB & dptr_p()
Definition: dptr.h:129
~DPtrInterface()
Definition: dptr.h:145
const PUB & dptr_p() const
Definition: dptr.h:130
PVT * operator->()
Definition: dptr.h:158
const PVT & operator()() const
Definition: dptr.h:157
PUB * dptr_ptr()
Definition: dptr.h:131
virtual ~DPtrPrivate()
Definition: dptr.h:126
void DPTR_setPublic(PUB *pub)
Definition: dptr.h:127
DPtrInterface()
Definition: dptr.h:144
const PVT * operator->() const
Definition: dptr.h:159
const T & pri() const
Definition: dptr.h:155
const PUB * dptr_ptr() const
Definition: dptr.h:132