OpenShot Audio Library | OpenShotAudio: juce::WeakReference< ObjectType, ReferenceCountingType > Class Template Reference

OpenShot Audio Library | OpenShotAudio 0.3.1

Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | List of all members
juce::WeakReference< ObjectType, ReferenceCountingType > Class Template Reference

`#include <juce_WeakReference.h>`

## Classes
class | Master
class | SharedPointer

## Public Types
using | SharedRef = ReferenceCountedObjectPtr< SharedPointer >

## Public Member Functions
| WeakReference ()=default
| WeakReference (ObjectType *object)
| WeakReference (const WeakReference &other) noexcept
| WeakReference (WeakReference &&other) noexcept
WeakReference & | operator= (const WeakReference &other)
WeakReference & | operator= (ObjectType *newObject)
WeakReference & | operator= (WeakReference &&other) noexcept
ObjectType * | get () const noexcept
| operator ObjectType * () const noexcept
ObjectType * | operator-> () const noexcept
bool | wasObjectDeleted () const noexcept
bool | operator== (ObjectType *object) const noexcept
bool | operator!= (ObjectType *object) const noexcept

## Detailed Description

template<class ObjectType, class ReferenceCountingType = ReferenceCountedObject>
class juce::WeakReference< ObjectType, ReferenceCountingType >

This class acts as a pointer which will automatically become null if the object to which it points is deleted.

To accomplish this, the source object needs to cooperate by performing a couple of simple tasks. It must embed a WeakReference::Master object, which stores a shared pointer object, and must clear this master pointer in its destructor.

Note that WeakReference is not designed to be thread-safe, so if you're accessing it from different threads, you'll need to do your own locking around all uses of the pointer and the object it refers to.

E.g.

class MyObject
{
public:
MyObject() {}
~MyObject()
{
// This will zero all the references - you need to call this in your destructor.
masterReference.clear();
}
private:
// You need to embed a variable of this type, with the name "masterReference" inside your object. If the
// variable is not public, you should make your class a friend of WeakReference<MyObject> so that the
// WeakReference class can access it.
WeakReference<MyObject>::Master masterReference;
friend class WeakReference<MyObject>;
};
OR: just use the handy JUCE_DECLARE_WEAK_REFERENCEABLE macro to do all this for you.
// Here's an example of using a pointer..
auto* n = new MyObject();
WeakReference<MyObject> myObjectRef = n;
auto pointer1 = myObjectRef.get(); // returns a valid pointer to 'n'
delete n;
auto pointer2 = myObjectRef.get(); // now returns nullptr

See also
  WeakReference::Master

Definition at line 77 of file juce_WeakReference.h.

## Member Typedef Documentation

## ◆ SharedRef

template<class ObjectType , class ReferenceCountingType = ReferenceCountedObject>

using juce::WeakReference< ObjectType, ReferenceCountingType >::SharedRef = ReferenceCountedObjectPtr<SharedPointer>

Definition at line 141 of file juce_WeakReference.h.

## Constructor & Destructor Documentation

## ◆ WeakReference() [1/4]

template<class ObjectType , class ReferenceCountingType = ReferenceCountedObject>

juce::WeakReference< ObjectType, ReferenceCountingType >::WeakReference | ( |  | ) |
| inlinedefault

Creates a null WeakReference.

## ◆ WeakReference() [2/4]

template<class ObjectType , class ReferenceCountingType = ReferenceCountedObject>

juce::WeakReference< ObjectType, ReferenceCountingType >::WeakReference | ( | ObjectType * | object | ) |
| inline

Creates a WeakReference that points at the given object.

Definition at line 84 of file juce_WeakReference.h.

## ◆ WeakReference() [3/4]

template<class ObjectType , class ReferenceCountingType = ReferenceCountedObject>

juce::WeakReference< ObjectType, ReferenceCountingType >::WeakReference | ( | const WeakReference< ObjectType, ReferenceCountingType > & | other | ) |
| inlinenoexcept

Creates a copy of another WeakReference.

Definition at line 87 of file juce_WeakReference.h.

## ◆ WeakReference() [4/4]

template<class ObjectType , class ReferenceCountingType = ReferenceCountedObject>

juce::WeakReference< ObjectType, ReferenceCountingType >::WeakReference | ( | WeakReference< ObjectType, ReferenceCountingType > && | other | ) |
| inlinenoexcept

Move constructor

Definition at line 90 of file juce_WeakReference.h.

## Member Function Documentation

## ◆ get()

template<class ObjectType , class ReferenceCountingType = ReferenceCountedObject>

ObjectType * juce::WeakReference< ObjectType, ReferenceCountingType >::get | ( |  | ) | const
| inlinenoexcept

Returns the object that this pointer refers to, or null if the object no longer exists.

Definition at line 102 of file juce_WeakReference.h.

Referenced by juce::WeakReference< juce::ActionBroadcaster >::operator juce::ActionBroadcaster *(), and juce::WeakReference< ObjectType, ReferenceCountingType >::operator->().

## ◆ operator ObjectType *()

template<class ObjectType , class ReferenceCountingType = ReferenceCountedObject>

juce::WeakReference< ObjectType, ReferenceCountingType >::operator ObjectType * | ( |  | ) | const
| inlinenoexcept

Returns the object that this pointer refers to, or null if the object no longer exists.

Definition at line 105 of file juce_WeakReference.h.

## ◆ operator!=()

template<class ObjectType , class ReferenceCountingType = ReferenceCountedObject>

bool juce::WeakReference< ObjectType, ReferenceCountingType >::operator!= | ( | ObjectType * | object | ) | const
| inlinenoexcept

Definition at line 120 of file juce_WeakReference.h.

## ◆ operator->()

template<class ObjectType , class ReferenceCountingType = ReferenceCountedObject>

ObjectType * juce::WeakReference< ObjectType, ReferenceCountingType >::operator-> | ( |  | ) | const
| inlinenoexcept

Returns the object that this pointer refers to, or null if the object no longer exists.

Definition at line 108 of file juce_WeakReference.h.

## ◆ operator=() [1/3]

template<class ObjectType , class ReferenceCountingType = ReferenceCountedObject>

WeakReference & juce::WeakReference< ObjectType, ReferenceCountingType >::operator= | ( | const WeakReference< ObjectType, ReferenceCountingType > & | other | ) |
| inline

Copies another pointer to this one.

Definition at line 93 of file juce_WeakReference.h.

## ◆ operator=() [2/3]

template<class ObjectType , class ReferenceCountingType = ReferenceCountedObject>

WeakReference & juce::WeakReference< ObjectType, ReferenceCountingType >::operator= | ( | ObjectType * | newObject | ) |
| inline

Copies another pointer to this one.

Definition at line 96 of file juce_WeakReference.h.

## ◆ operator=() [3/3]

template<class ObjectType , class ReferenceCountingType = ReferenceCountedObject>

WeakReference & juce::WeakReference< ObjectType, ReferenceCountingType >::operator= | ( | WeakReference< ObjectType, ReferenceCountingType > && | other | ) |
| inlinenoexcept

Move assignment operator

Definition at line 99 of file juce_WeakReference.h.

## ◆ operator==()

template<class ObjectType , class ReferenceCountingType = ReferenceCountedObject>

bool juce::WeakReference< ObjectType, ReferenceCountingType >::operator== | ( | ObjectType * | object | ) | const
| inlinenoexcept

Definition at line 119 of file juce_WeakReference.h.

## ◆ wasObjectDeleted()

template<class ObjectType , class ReferenceCountingType = ReferenceCountedObject>

bool juce::WeakReference< ObjectType, ReferenceCountingType >::wasObjectDeleted | ( |  | ) | const
| inlinenoexcept

This returns true if this reference has been pointing at an object, but that object has since been deleted.

If this reference was only ever pointing at a null pointer, this will return false. Using operator=() to make this refer to a different object will reset this flag to match the status of the reference from which you're copying.

Definition at line 117 of file juce_WeakReference.h.

The documentation for this class was generated from the following file:

- juce_WeakReference.h