76template <
class ObjectType,
class ReferenceCountingType = ReferenceCountedObject>
102 ObjectType*
get() const noexcept {
return holder !=
nullptr ? holder->
get() :
nullptr; }
105 operator ObjectType*()
const noexcept {
return get(); }
127 explicit SharedPointer (ObjectType* obj) noexcept : owner (obj) {}
129 inline ObjectType* get()
const noexcept {
return owner; }
130 void clearPointer()
noexcept { owner =
nullptr; }
155 jassert (sharedPointer ==
nullptr || sharedPointer->
get() ==
nullptr);
163 if (sharedPointer ==
nullptr)
170 jassert (sharedPointer->
get() !=
nullptr);
173 return sharedPointer;
182 if (sharedPointer !=
nullptr)
183 sharedPointer->clearPointer();
189 return sharedPointer ==
nullptr ? 0 : (sharedPointer->getReferenceCount() - 1);
195 JUCE_DECLARE_NON_COPYABLE (
Master)
201 static SharedRef getRef (ObjectType* o)
204 return o->masterReference.getSharedPointer (o);
231#define JUCE_DECLARE_WEAK_REFERENCEABLE(Class) \
232 struct WeakRefMaster : public juce::WeakReference<Class>::Master { ~WeakRefMaster() { this->clear(); } }; \
233 WeakRefMaster masterReference; \
234 friend class juce::WeakReference<Class>; \
ReferencedType * get() const noexcept
int getNumActiveWeakReferences() const noexcept
SharedRef getSharedPointer(ObjectType *object)
ObjectType * operator->() const noexcept
ObjectType * get() const noexcept
WeakReference(WeakReference &&other) noexcept
WeakReference & operator=(const WeakReference &other)
WeakReference(const WeakReference &other) noexcept
bool wasObjectDeleted() const noexcept
WeakReference(ObjectType *object)