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>; \
ReferencedType * get() const noexcept
int getNumActiveWeakReferences() const noexcept
SharedRef getSharedPointer(ObjectType *object)
WeakReference(WeakReference &&other) noexcept
ObjectType * get() const noexcept
WeakReference & operator=(const WeakReference &other)
WeakReference(const WeakReference &other) noexcept
bool wasObjectDeleted() const noexcept
ObjectType * operator->() const noexcept
WeakReference(ObjectType *object)