83 jassert (getReferenceCount() > 0);
95 jassert (getReferenceCount() > 0);
96 return --refCount == 0;
121 jassert (getReferenceCount() == 0);
135 friend struct ContainerDeletePolicy<ReferenceCountedObject>;
171 jassert (getReferenceCount() > 0);
183 jassert (getReferenceCount() > 0);
184 return --refCount == 0;
209 jassert (getReferenceCount() == 0);
244template <
class ObjectType>
289 other.referencedObject =
nullptr;
295 template <
typename Convertible>
315 template <
typename Convertible>
416 #if JUCE_STRICT_REFCOUNTEDPOINTER
441 o->incReferenceCount();
446 if (o !=
nullptr && o->decReferenceCountWithoutDeleting())
447 ContainerDeletePolicy<ReferencedType>::destroy (o);
454template <
typename Type>
455bool operator== (
const Type* object1,
const ReferenceCountedObjectPtr<Type>& object2)
noexcept
457 return object1 == object2.get();
461template <
typename Type>
462bool operator!= (
const Type* object1,
const ReferenceCountedObjectPtr<Type>& object2)
noexcept
464 return object1 != object2.get();
Holds a resizable array of primitive or copy-by-value objects.
A smart-pointer class which points to a reference-counted object.
~ReferenceCountedObjectPtr()
Destructor.
ReferenceCountedObjectPtr & operator=(const ReferenceCountedObjectPtr &other)
Changes this pointer to point at a different object.
ObjectType ReferencedType
The class being referenced by this pointer.
bool operator!=(decltype(nullptr)) const noexcept
Checks whether this pointer is null.
ReferenceCountedObjectPtr(ReferenceCountedObjectPtr &&other) noexcept
Takes-over the object from another pointer.
bool operator==(decltype(nullptr)) const noexcept
Checks whether this pointer is null.
ReferenceCountedObjectPtr(ReferencedType *refCountedObject) noexcept
Creates a pointer to an object.
ReferenceCountedObjectPtr(ReferencedType &refCountedObject) noexcept
Creates a pointer to an object.
ReferenceCountedObjectPtr()=default
Creates a pointer to a null object.
ReferenceCountedObjectPtr(const ReferenceCountedObjectPtr< Convertible > &other) noexcept
Copies another pointer.
void reset() noexcept
Resets this object to a null pointer.
ReferenceCountedObjectPtr(decltype(nullptr)) noexcept
Creates a pointer to a null object.
ReferencedType & operator*() const noexcept
Dereferences the object that this pointer references.
ReferenceCountedObjectPtr(const ReferenceCountedObjectPtr &other) noexcept
Copies another pointer.
ReferencedType * get() const noexcept
Returns the object that this pointer references.
A base class which provides methods for reference-counting.
ReferenceCountedObject(const ReferenceCountedObject &) noexcept
Copying from another object does not affect this one's reference-count.
ReferenceCountedObject(ReferenceCountedObject &&) noexcept
Copying from another object does not affect this one's reference-count.
void resetReferenceCount() noexcept
Resets the reference count to zero without deleting the object.
bool decReferenceCountWithoutDeleting() noexcept
Decreases the object's reference count.
ReferenceCountedObject()=default
Creates the reference-counted object (with an initial ref count of zero).
void incReferenceCount() noexcept
Increments the object's reference count.
int getReferenceCount() const noexcept
Returns the object's current reference count.
void decReferenceCount() noexcept
Decreases the object's reference count.
virtual ~ReferenceCountedObject()
Destructor.
Adds reference-counting to an object.
virtual ~SingleThreadedReferenceCountedObject()
Destructor.
SingleThreadedReferenceCountedObject(SingleThreadedReferenceCountedObject &&)
Copying from another object does not affect this one's reference-count.
SingleThreadedReferenceCountedObject(const SingleThreadedReferenceCountedObject &)
Copying from another object does not affect this one's reference-count.
SingleThreadedReferenceCountedObject()=default
Creates the reference-counted object (with an initial ref count of zero).
void decReferenceCount() noexcept
Decreases the object's reference count.
void incReferenceCount() noexcept
Increments the object's reference count.
int getReferenceCount() const noexcept
Returns the object's current reference count.
bool decReferenceCountWithoutDeleting() noexcept
Decreases the object's reference count.
#define JUCE_API
This macro is added to all JUCE public class declarations.
Used by container classes as an indirect way to delete an object of a particular type.