Miam-Player  0.8.0
A nice music player
dptr.h File Reference

Go to the source code of this file.

Classes

class  DPtrPrivate< PUB >
 
class  DPtrInterface< PUB, PVT >
 

Macros

#define DPTR_INIT(p)   dptr(p)
 requrement: Base class must have default ctor. More...
 
#define DPTR_DECLARE(Class)   DPtrInterface<Class, Class##Private> dptr;
 
#define DPTR_DECLARE_PRIVATE(Class)
 
#define DPTR_DECLARE_PUBLIC(Class)
 
#define DPTR_INIT_PRIVATE(Class)   dptr.setPublic(this);
 
#define DPTR_D(Class)   Class##Private& d = dptr.pri<Class##Private>()
 
#define DPTR_P(Class)   Class& p = *static_cast<Class*>(dptr_ptr())
 

Macro Definition Documentation

◆ DPTR_D

#define DPTR_D (   Class)    Class##Private& d = dptr.pri<Class##Private>()

◆ DPTR_DECLARE

#define DPTR_DECLARE (   Class)    DPtrInterface<Class, Class##Private> dptr;

◆ DPTR_DECLARE_PRIVATE

#define DPTR_DECLARE_PRIVATE (   Class)
Value:
inline Class##Private& d_func() { return dptr.pri<Class##Private>(); } \
inline const Class##Private& d_func() const { return dptr.pri<Class##Private>(); } \
friend class Class##Private;

◆ DPTR_DECLARE_PUBLIC

#define DPTR_DECLARE_PUBLIC (   Class)
Value:
inline Class& q_func() { return *static_cast<Class*>(dptr_ptr()); } \
inline const Class& q_func() const { return *static_cast<const Class*>(dptr_ptr()); } \
friend class Class;

◆ DPTR_INIT

#define DPTR_INIT (   p)    dptr(p)

requrement: Base class must have default ctor.

example: Base.h class BasePrivate class Base { DPTR_DECLARE_PRIVATE(Base) public: Base(); virtual ~Base(); protected: Base(BasePrivate& d); DPTR_DECLARE(Base) }; Base.cpp: Base::Base(){} Base::Base(BasePrivate& d):DPTR_INIT(&d){} ... Base_p.h: class Base; class BasePrivate : public DPtrPrivate<Base> { public: int data; }; Derived.h: class DerivedPrivate; class Derived : public Base { DPTR_DECLARE_PRIVATE(Derived) public: Derived(); virtual ~Derived(); protected: Derived(DerivedPrivate& d); }; Derived.cpp Derived::Derived():Base(*new DerivedPrivate()){} Derived::Derived(DerivedPrivate& d):Base(d){} Derived_p.h class DerivedPrivate : public BasePrivate { public: int more_data; };

◆ DPTR_INIT_PRIVATE

#define DPTR_INIT_PRIVATE (   Class)    dptr.setPublic(this);

◆ DPTR_P

#define DPTR_P (   Class)    Class& p = *static_cast<Class*>(dptr_ptr())