76 template <
class ObjectType,
class ReferenceCountingType = ReferenceCountedObject>
102 ObjectType*
get()
const noexcept {
return holder !=
nullptr ? holder->
get() :
nullptr; }
105 operator ObjectType*()
const noexcept {
return get(); }
119 bool operator== (ObjectType*
object)
const noexcept {
return get() ==
object; }
120 bool operator!= (ObjectType*
object)
const noexcept {
return get() !=
object; }
130 explicit SharedPointer (ObjectType* obj) noexcept : owner (obj) {}
132 inline ObjectType*
get()
const noexcept {
return owner; }
133 void clearPointer() noexcept { owner =
nullptr; }
158 jassert (sharedPointer ==
nullptr || sharedPointer->get() ==
nullptr);
166 if (sharedPointer ==
nullptr)
173 jassert (sharedPointer->get() !=
nullptr);
176 return sharedPointer;
185 if (sharedPointer !=
nullptr)
186 sharedPointer->clearPointer();
192 return sharedPointer ==
nullptr ? 0 : (sharedPointer->getReferenceCount() - 1);
198 JUCE_DECLARE_NON_COPYABLE (
Master)
204 static inline SharedRef getRef (ObjectType* o)
207 return o->masterReference.getSharedPointer (o);
234 #define JUCE_DECLARE_WEAK_REFERENCEABLE(Class) \ 235 struct WeakRefMaster : public juce::WeakReference<Class>::Master { ~WeakRefMaster() { this->clear(); } }; \ 236 WeakRefMaster masterReference; \ 237 friend class juce::WeakReference<Class>; \
bool wasObjectDeleted() const noexcept
SharedRef getSharedPointer(ObjectType *object)
int getNumActiveWeakReferences() const noexcept
ObjectType * operator->() const noexcept
ReferencedType * get() const noexcept
WeakReference(ObjectType *object)
WeakReference(WeakReference &&other) noexcept
WeakReference(const WeakReference &other) noexcept
WeakReference & operator=(const WeakReference &other)