TracktionEngine
Loading...
Searching...
No Matches
Public Member Functions | List of all members
tracktion::engine::SafeScopedListener Class Reference

Manages adding and removing listeners in an RAII way so you don't forget to unregister a listener. More...

#include <tracktion_SafeScopedListener.h>

Public Member Functions

 SafeScopedListener ()=default
 Creates an empty ScopedListener.
 
 SafeScopedListener (SafeScopedListener &&o)
 Move-constructor.
 
SafeScopedListeneroperator= (SafeScopedListener &&o)
 Move-assignment.
 
template<typename BroadcasterType , typename ListenerType >
requires WeakReferenceable<BroadcasterType>
 SafeScopedListener (BroadcasterType b, ListenerType &l)
 Creates a ScopedListener which makes ListenerType listen to BroadcasterType.
 
template<typename BroadcasterType , typename ListenerType >
requires WeakReferenceable<BroadcasterType>
void reset (BroadcasterType b, ListenerType &l)
 Unregisters any previous listener and registers the new one.
 
void reset ()
 Unregisters the listener.
 
 SafeScopedListener (const SafeScopedListener &)=delete
 Non-copyable.
 
SafeScopedListeneroperator= (const SafeScopedListener &)=delete
 Non-copyable.
 

Detailed Description

Manages adding and removing listeners in an RAII way so you don't forget to unregister a listener.

This is similar to a ScopedListener except that BroadcasterType is expected to be some kind of safe-pointer that is boolean checkable. This way, you can't forget to remove a registered listener and if the broadcaster gets deleted, this won't attempt to unregister itself and thus avoids a dangling reference.

The BroadcasterType must have the following functions: BroadcasterType::addListener (ListenerType*); BroadcasterType::removeListener (ListenerType*);

// In members section
// Then when you want to register the listener
listener.reset (broadcasterSafePtr, *this);
// Listener will automatically be unregistered when the SafeScopedListener goes out of scope but you can manually remove the listener as follows:
listener.reset();
Manages adding and removing listeners in an RAII way so you don't forget to unregister a listener.
Definition tracktion_SafeScopedListener.h:50
void reset(BroadcasterType b, ListenerType &l)
Unregisters any previous listener and registers the new one.
Definition tracktion_SafeScopedListener.h:79

Constructor & Destructor Documentation

◆ SafeScopedListener() [1/4]

tracktion::engine::SafeScopedListener::SafeScopedListener ( )
default

Creates an empty ScopedListener.

◆ SafeScopedListener() [2/4]

tracktion::engine::SafeScopedListener::SafeScopedListener ( SafeScopedListener &&  o)

Move-constructor.

◆ SafeScopedListener() [3/4]

template<typename BroadcasterType , typename ListenerType >
requires WeakReferenceable<BroadcasterType>
tracktion::engine::SafeScopedListener::SafeScopedListener ( BroadcasterType  b,
ListenerType &  l 
)

Creates a ScopedListener which makes ListenerType listen to BroadcasterType.

References reset().

◆ SafeScopedListener() [4/4]

tracktion::engine::SafeScopedListener::SafeScopedListener ( const SafeScopedListener )
delete

Non-copyable.

Member Function Documentation

◆ operator=() [1/2]

SafeScopedListener & tracktion::engine::SafeScopedListener::operator= ( SafeScopedListener &&  o)

Move-assignment.

◆ reset() [1/2]

template<typename BroadcasterType , typename ListenerType >
requires WeakReferenceable<BroadcasterType>
void tracktion::engine::SafeScopedListener::reset ( BroadcasterType  b,
ListenerType &  l 
)

Unregisters any previous listener and registers the new one.

References reset().

◆ reset() [2/2]

void tracktion::engine::SafeScopedListener::reset ( )

Unregisters the listener.

Referenced by reset(), and SafeScopedListener().

◆ operator=() [2/2]

SafeScopedListener & tracktion::engine::SafeScopedListener::operator= ( const SafeScopedListener )
delete

Non-copyable.


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