OpenShot Library | libopenshot-audio
0.2.0
|
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);
244 template <
class ObjectType>
262 : referencedObject (refCountedObject)
264 incIfNotNull (refCountedObject);
271 : referencedObject (&refCountedObject)
273 refCountedObject.incReferenceCount();
280 : referencedObject (other.referencedObject)
282 incIfNotNull (referencedObject);
287 : referencedObject (other.referencedObject)
289 other.referencedObject =
nullptr;
295 template <
typename Convertible>
297 : referencedObject (other.get())
299 incIfNotNull (referencedObject);
308 return operator= (other.referencedObject);
315 template <
typename Convertible>
328 if (newObject !=
nullptr)
342 if (referencedObject != &newObject)
344 newObject.incReferenceCount();
345 auto* oldObject = referencedObject;
346 referencedObject = &newObject;
347 decIfNotNull (oldObject);
363 std::swap (referencedObject, other.referencedObject);
373 decIfNotNull (referencedObject);
385 auto oldObject = referencedObject;
386 referencedObject =
nullptr;
387 decIfNotNull (oldObject);
393 jassert (referencedObject !=
nullptr);
394 return referencedObject;
403 bool operator== (decltype (
nullptr)) const noexcept {
return referencedObject ==
nullptr; }
405 bool operator!= (decltype (
nullptr)) const noexcept {
return referencedObject !=
nullptr; }
408 bool operator== (
const ObjectType* other)
const noexcept {
return referencedObject == other; }
412 bool operator!= (
const ObjectType* other)
const noexcept {
return referencedObject != other; }
416 #if JUCE_STRICT_REFCOUNTEDPOINTER
418 explicit operator bool() const noexcept {
return referencedObject !=
nullptr; }
441 o->incReferenceCount();
446 if (o !=
nullptr && o->decReferenceCountWithoutDeleting())
447 ContainerDeletePolicy<ReferencedType>::destroy (o);
454 template <
typename Type>
455 bool operator== (
const Type* object1,
const ReferenceCountedObjectPtr<Type>& object2) noexcept
457 return object1 == object2.get();
461 template <
typename Type>
462 bool operator!= (
const Type* object1,
const ReferenceCountedObjectPtr<Type>& object2) noexcept
464 return object1 != object2.get();
ReferencedType & operator*() const noexcept
Dereferences the object that this pointer references.
virtual ~SingleThreadedReferenceCountedObject()
Destructor.
SingleThreadedReferenceCountedObject(SingleThreadedReferenceCountedObject &&)
Copying from another object does not affect this one's reference-count.
ReferenceCountedObjectPtr(decltype(nullptr)) noexcept
Creates a pointer to a null object.
bool decReferenceCountWithoutDeleting() noexcept
Decreases the object's reference count.
void incReferenceCount() noexcept
Increments the object's reference count.
ReferenceCountedObject(ReferenceCountedObject &&) noexcept
Copying from another object does not affect this one's reference-count.
A base class which provides methods for reference-counting.
bool operator!=(decltype(nullptr)) const noexcept
Checks whether this pointer is null.
ReferenceCountedObjectPtr & operator=(const ReferenceCountedObjectPtr &other)
Changes this pointer to point at a different object.
virtual ~ReferenceCountedObject()
Destructor.
ReferenceCountedObjectPtr(ReferencedType &refCountedObject) noexcept
Creates a pointer to an object.
Adds reference-counting to an object.
void incReferenceCount() noexcept
Increments the object's reference count.
#define JUCE_API
This macro is added to all JUCE public class declarations.
ObjectType ReferencedType
The class being referenced by this pointer.
~ReferenceCountedObjectPtr()
Destructor.
bool decReferenceCountWithoutDeleting() noexcept
Decreases the object's reference count.
bool operator==(decltype(nullptr)) const noexcept
Checks whether this pointer is null.
SingleThreadedReferenceCountedObject(const SingleThreadedReferenceCountedObject &)
Copying from another object does not affect this one's reference-count.
ReferenceCountedObjectPtr(const ReferenceCountedObjectPtr< Convertible > &other) noexcept
Copies another pointer.
ReferenceCountedObjectPtr()=default
Creates a pointer to a null object.
ReferenceCountedObjectPtr(ReferencedType *refCountedObject) noexcept
Creates a pointer to an object.
void decReferenceCount() noexcept
Decreases the object's reference count.
A smart-pointer class which points to a reference-counted object.
int getReferenceCount() const noexcept
Returns the object's current reference count.
Used by container classes as an indirect way to delete an object of a particular type.
int getReferenceCount() const noexcept
Returns the object's current reference count.
void resetReferenceCount() noexcept
Resets the reference count to zero without deleting the object.
ReferencedType * get() const noexcept
Returns the object that this pointer references.
void decReferenceCount() noexcept
Decreases the object's reference count.
ReferenceCountedObjectPtr(ReferenceCountedObjectPtr &&other) noexcept
Takes-over the object from another pointer.
ReferenceCountedObjectPtr(const ReferenceCountedObjectPtr &other) noexcept
Copies another pointer.
ReferenceCountedObject(const ReferenceCountedObject &) noexcept
Copying from another object does not affect this one's reference-count.
void reset() noexcept
Resets this object to a null pointer.