|
|
|
@@ -237,12 +237,12 @@ private: |
|
|
|
|
|
|
|
@tags{Core}
|
|
|
|
*/
|
|
|
|
template <class ReferenceCountedObjectClass>
|
|
|
|
template <class ObjectType>
|
|
|
|
class ReferenceCountedObjectPtr
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
/** The class being referenced by this pointer. */
|
|
|
|
typedef ReferenceCountedObjectClass ReferencedType;
|
|
|
|
typedef ObjectType ReferencedType;
|
|
|
|
|
|
|
|
//==============================================================================
|
|
|
|
/** Creates a pointer to a null object. */
|
|
|
|
@@ -274,7 +274,7 @@ public: |
|
|
|
*/
|
|
|
|
template <typename Convertible>
|
|
|
|
ReferenceCountedObjectPtr (const ReferenceCountedObjectPtr<Convertible>& other) noexcept
|
|
|
|
: referencedObject (static_cast<ReferencedType*> (other.get()))
|
|
|
|
: referencedObject (other.get())
|
|
|
|
{
|
|
|
|
incIfNotNull (referencedObject);
|
|
|
|
}
|
|
|
|
@@ -295,7 +295,7 @@ public: |
|
|
|
template <typename Convertible>
|
|
|
|
ReferenceCountedObjectPtr& operator= (const ReferenceCountedObjectPtr<Convertible>& other)
|
|
|
|
{
|
|
|
|
return operator= (static_cast<ReferencedType*> (other.get()));
|
|
|
|
return operator= (other.get());
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Changes this pointer to point at a different object.
|
|
|
|
@@ -303,7 +303,7 @@ public: |
|
|
|
The reference count of the old object is decremented, and it might be
|
|
|
|
deleted if it hits zero. The new object's count is incremented.
|
|
|
|
*/
|
|
|
|
ReferenceCountedObjectPtr& operator= (ReferencedType* const newObject)
|
|
|
|
ReferenceCountedObjectPtr& operator= (ReferencedType* newObject)
|
|
|
|
{
|
|
|
|
if (referencedObject != newObject)
|
|
|
|
{
|
|
|
|
@@ -382,43 +382,43 @@ private: |
|
|
|
|
|
|
|
//==============================================================================
|
|
|
|
/** Compares two ReferenceCountedObjectPtrs. */
|
|
|
|
template <typename ReferenceCountedObjectClass>
|
|
|
|
bool operator== (const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object1, ReferenceCountedObjectClass* const object2) noexcept
|
|
|
|
template <typename ObjectType>
|
|
|
|
bool operator== (const ReferenceCountedObjectPtr<ObjectType>& object1, ObjectType* const object2) noexcept
|
|
|
|
{
|
|
|
|
return object1.get() == object2;
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Compares two ReferenceCountedObjectPtrs. */
|
|
|
|
template <typename ReferenceCountedObjectClass>
|
|
|
|
bool operator== (const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object1, const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object2) noexcept
|
|
|
|
template <typename ObjectType>
|
|
|
|
bool operator== (const ReferenceCountedObjectPtr<ObjectType>& object1, const ReferenceCountedObjectPtr<ObjectType>& object2) noexcept
|
|
|
|
{
|
|
|
|
return object1.get() == object2.get();
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Compares two ReferenceCountedObjectPtrs. */
|
|
|
|
template <typename ReferenceCountedObjectClass>
|
|
|
|
bool operator== (ReferenceCountedObjectClass* object1, const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object2) noexcept
|
|
|
|
template <typename ObjectType>
|
|
|
|
bool operator== (ObjectType* object1, const ReferenceCountedObjectPtr<ObjectType>& object2) noexcept
|
|
|
|
{
|
|
|
|
return object1 == object2.get();
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Compares two ReferenceCountedObjectPtrs. */
|
|
|
|
template <typename ReferenceCountedObjectClass>
|
|
|
|
bool operator!= (const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object1, const ReferenceCountedObjectClass* object2) noexcept
|
|
|
|
template <typename ObjectType>
|
|
|
|
bool operator!= (const ReferenceCountedObjectPtr<ObjectType>& object1, const ObjectType* object2) noexcept
|
|
|
|
{
|
|
|
|
return object1.get() != object2;
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Compares two ReferenceCountedObjectPtrs. */
|
|
|
|
template <typename ReferenceCountedObjectClass>
|
|
|
|
bool operator!= (const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object1, const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object2) noexcept
|
|
|
|
template <typename ObjectType>
|
|
|
|
bool operator!= (const ReferenceCountedObjectPtr<ObjectType>& object1, const ReferenceCountedObjectPtr<ObjectType>& object2) noexcept
|
|
|
|
{
|
|
|
|
return object1.get() != object2.get();
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Compares two ReferenceCountedObjectPtrs. */
|
|
|
|
template <typename ReferenceCountedObjectClass>
|
|
|
|
bool operator!= (ReferenceCountedObjectClass* object1, const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object2) noexcept
|
|
|
|
template <typename ObjectType>
|
|
|
|
bool operator!= (ObjectType* object1, const ReferenceCountedObjectPtr<ObjectType>& object2) noexcept
|
|
|
|
{
|
|
|
|
return object1 != object2.get();
|
|
|
|
}
|
|
|
|
|