Go to the documentation of this file.
29 #ifndef JUCE_REFERENCECOUNTEDOBJECT_H_INCLUDED
30 #define JUCE_REFERENCECOUNTEDOBJECT_H_INCLUDED
84 jassert (getReferenceCount() > 0);
96 jassert (getReferenceCount() > 0);
97 return --refCount == 0;
113 jassert (getReferenceCount() == 0);
163 jassert (getReferenceCount() > 0);
175 jassert (getReferenceCount() > 0);
176 return --refCount == 0;
192 jassert (getReferenceCount() == 0);
226 template <
class ReferenceCountedObjectClass>
236 : referencedObject (
nullptr)
244 : referencedObject (refCountedObject)
246 incIfNotNull (refCountedObject);
253 : referencedObject (other.referencedObject)
255 incIfNotNull (referencedObject);
261 template <
class Convertible>
265 incIfNotNull (referencedObject);
274 return operator= (other.referencedObject);
281 template <
class Convertible>
294 if (referencedObject != newObject)
296 incIfNotNull (newObject);
298 referencedObject = newObject;
299 decIfNotNull (oldObject);
305 #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS
308 : referencedObject (other.referencedObject)
310 other.referencedObject =
nullptr;
316 std::swap (referencedObject, other.referencedObject);
327 decIfNotNull (referencedObject);
349 jassert (referencedObject !=
nullptr);
350 return referencedObject;
360 o->incReferenceCount();
365 if (o !=
nullptr && o->decReferenceCountWithoutDeleting())
373 template <
class ReferenceCountedObjectClass>
376 return object1.get() == object2;
380 template <
class ReferenceCountedObjectClass>
383 return object1.get() == object2.get();
387 template <
class ReferenceCountedObjectClass>
390 return object1 == object2.get();
394 template <
class ReferenceCountedObjectClass>
397 return object1.get() != object2;
401 template <
class ReferenceCountedObjectClass>
404 return object1.get() != object2.get();
408 template <
class ReferenceCountedObjectClass>
411 return object1 != object2.get();
415 #endif // JUCE_REFERENCECOUNTEDOBJECT_H_INCLUDED
int getReferenceCount() const noexcept
Definition: juce_ReferenceCountedObject.h:180
bool operator==(const ReferenceCountedObjectPtr< ReferenceCountedObjectClass > &object1, ReferenceCountedObjectClass *const object2) noexcept
Definition: juce_ReferenceCountedObject.h:374
ReferenceCountedObjectClass ReferencedType
Definition: juce_ReferenceCountedObject.h:231
ReferenceCountedObjectPtr(const ReferenceCountedObjectPtr< Convertible > &other) noexcept
Definition: juce_ReferenceCountedObject.h:262
ReferenceCountedObject()
Definition: juce_ReferenceCountedObject.h:107
Definition: juce_ContainerDeletePolicy.h:44
ReferenceCountedObjectPtr() noexcept
Definition: juce_ReferenceCountedObject.h:235
int getReferenceCount() const noexcept
Definition: juce_ReferenceCountedObject.h:101
void decReferenceCount() noexcept
Definition: juce_ReferenceCountedObject.h:161
bool decReferenceCountWithoutDeleting() noexcept
Definition: juce_ReferenceCountedObject.h:173
#define JUCE_API
Definition: juce_StandardHeader.h:139
ReferenceCountedObjectPtr(ReferencedType *refCountedObject) noexcept
Definition: juce_ReferenceCountedObject.h:243
bool operator!=(const ReferenceCountedObjectPtr< ReferenceCountedObjectClass > &object1, const ReferenceCountedObjectClass *object2) noexcept
Definition: juce_ReferenceCountedObject.h:395
~ReferenceCountedObjectPtr()
Definition: juce_ReferenceCountedObject.h:325
#define noexcept
Definition: juce_CompilerSupport.h:141
virtual ~SingleThreadedReferenceCountedObject()
Definition: juce_ReferenceCountedObject.h:189
bool decReferenceCountWithoutDeleting() noexcept
Definition: juce_ReferenceCountedObject.h:94
ReferencedType * getObject() const noexcept
Definition: juce_ReferenceCountedObject.h:344
void incReferenceCount() noexcept
Definition: juce_ReferenceCountedObject.h:74
void incReferenceCount() noexcept
Definition: juce_ReferenceCountedObject.h:153
Definition: juce_ReferenceCountedObject.h:65
virtual ~ReferenceCountedObject()
Definition: juce_ReferenceCountedObject.h:110
static void destroy(ObjectType *object)
Definition: juce_ContainerDeletePolicy.h:46
ReferenceCountedObjectPtr(const ReferenceCountedObjectPtr &other) noexcept
Definition: juce_ReferenceCountedObject.h:252
Definition: juce_Image.h:432
Definition: juce_ReferenceCountedObject.h:227
void resetReferenceCount() noexcept
Definition: juce_ReferenceCountedObject.h:119
SingleThreadedReferenceCountedObject()
Definition: juce_ReferenceCountedObject.h:186
ReferenceCountedObjectPtr & operator=(const ReferenceCountedObjectPtr &other)
Definition: juce_ReferenceCountedObject.h:272
Definition: juce_ReferenceCountedObject.h:144
ReferencedType * operator->() const noexcept
Definition: juce_ReferenceCountedObject.h:347
void decReferenceCount() noexcept
Definition: juce_ReferenceCountedObject.h:82
ReferencedType * get() const noexcept
Definition: juce_ReferenceCountedObject.h:339