28 #define DtDECLARE_DEFINE_SMART_PTR(ClassName) \
29 class DT_DLL_VLUTIL ClassName##Ptr : public DtObserver \
33 ClassName##Ptr(ClassName* pointedAt); \
35 virtual ~ClassName##Ptr(); \
37 ClassName##Ptr(const ClassName##Ptr& orig); \
39 ClassName##Ptr& operator=(const ClassName##Ptr& orig); \
41 bool stillGood() const; \
43 bool operator!() const; \
45 ClassName* operator->() const; \
47 operator ClassName*() const; \
51 virtual bool startObserving(DtObservee* toObserve); \
53 virtual bool stopObserving(DtObservee* observed); \
57 ClassName##Ptr::ClassName##Ptr(ClassName* pointedAt) : \
60 internalStartObserving(pointedAt); \
63 ClassName##Ptr::~ClassName##Ptr() \
67 ClassName##Ptr::ClassName##Ptr(const ClassName##Ptr& orig) : \
72 ClassName##Ptr& ClassName##Ptr::operator=(const ClassName##Ptr& orig) \
79 DtObserver::operator=(orig); \
84 bool ClassName##Ptr::startObserving(DtObservee* toObserve) \
86 return DtObserver::startObserving(toObserve); \
89 bool ClassName##Ptr::stopObserving(DtObservee* toObserve) \
91 return DtObserver::stopObserving(toObserve); \
94 bool ClassName##Ptr::stillGood() const \
96 return operator->() ? true : false; \
99 bool ClassName##Ptr::operator!() const \
101 return !operator->() ? true : false; \
104 ClassName* ClassName##Ptr::operator->() const \
106 DtListItem* item = myObjectsAmObserving.first(); \
111 return (ClassName*)item->data(); \
114 ClassName##Ptr::operator ClassName*() const \
116 return operator->(); \
This file contains the declaration of DtObserver.