OpenShot Library | libopenshot-audio 0.2.0
juce::ListenerList< ListenerClass, ArrayType > Class Template Reference

Holds a set of objects and can invoke a member function callback on each object in the set with a single call. More...

#include <juce_ListenerList.h>

Classes

struct  DummyBailOutChecker
 A dummy bail-out checker that always returns false. More...
 
struct  Iterator
 Iterates the listeners in a ListenerList. More...
 

Public Types

using ThisType = ListenerList< ListenerClass, ArrayType >
 
using ListenerType = ListenerClass
 

Public Member Functions

 ListenerList ()=default
 Creates an empty list.
 
 ~ListenerList ()=default
 Destructor.
 
void add (ListenerClass *listenerToAdd)
 Adds a listener to the list.
 
void remove (ListenerClass *listenerToRemove)
 Removes a listener from the list.
 
int size () const noexcept
 Returns the number of registered listeners.
 
bool isEmpty () const noexcept
 Returns true if no listeners are registered, false otherwise.
 
void clear ()
 Clears the list.
 
bool contains (ListenerClass *listener) const noexcept
 Returns true if the specified listener has been added to the list.
 
const ArrayTypegetListeners () const noexcept
 Returns the raw array of listeners.
 
template<typename Callback >
void call (Callback &&callback)
 Calls a member function on each listener in the list, with multiple parameters.
 
template<typename Callback >
void callExcluding (ListenerClass *listenerToExclude, Callback &&callback)
 Calls a member function with 1 parameter, on all but the specified listener in the list.
 
template<typename Callback , typename BailOutCheckerType >
void callChecked (const BailOutCheckerType &bailOutChecker, Callback &&callback)
 Calls a member function on each listener in the list, with 1 parameter and a bail-out-checker.
 
template<typename Callback , typename BailOutCheckerType >
void callCheckedExcluding (ListenerClass *listenerToExclude, const BailOutCheckerType &bailOutChecker, Callback &&callback)
 Calls a member function, with 1 parameter, on all but the specified listener in the list with a bail-out-checker.
 

Detailed Description

template<class ListenerClass, class ArrayType = Array<ListenerClass*>>
class juce::ListenerList< ListenerClass, ArrayType >

Holds a set of objects and can invoke a member function callback on each object in the set with a single call.

Use a ListenerList to manage a set of objects which need a callback, and you can invoke a member function by simply calling call() or callChecked().

E.g.

{
public:
void myCallbackMethod (int foo, bool bar);
};
listeners.add (someCallbackObjects...);
// This will invoke myCallbackMethod (1234, true) on each of the objects
// in the list...
listeners.call ([] (MyListenerType& l) { l.myCallbackMethod (1234, true); });
Holds a resizable array of primitive or copy-by-value objects.
Definition juce_Array.h:60
void add(const ElementType &newElement)
Appends a new element at the end of the array.
Definition juce_Array.h:375

If you add or remove listeners from the list during one of the callbacks - i.e. while it's in the middle of iterating the listeners, then it's guaranteed that no listeners will be mistakenly called after they've been removed, but it may mean that some of the listeners could be called more than once, or not at all, depending on the list's order.

Sometimes, there's a chance that invoking one of the callbacks might result in the list itself being deleted while it's still iterating - to survive this situation, you can use callChecked() instead of call(), passing it a local object to act as a "BailOutChecker". The BailOutChecker must implement a method of the form "bool shouldBailOut()", and the list will check this after each callback to determine whether it should abort the operation. For an example of a bail-out checker, see the Component::BailOutChecker class, which can be used to check when a Component has been deleted. See also ListenerList::DummyBailOutChecker, which is a dummy checker that always returns false.

Definition at line 72 of file juce_ListenerList.h.

Member Typedef Documentation

◆ ThisType

Definition at line 189 of file juce_ListenerList.h.

◆ ListenerType

template<class ListenerClass , class ArrayType = Array<ListenerClass*>>
using juce::ListenerList< ListenerClass, ArrayType >::ListenerType = ListenerClass

Definition at line 190 of file juce_ListenerList.h.

Member Function Documentation

◆ add()

template<class ListenerClass , class ArrayType = Array<ListenerClass*>>
void juce::ListenerList< ListenerClass, ArrayType >::add ( ListenerClass listenerToAdd)
inline

Adds a listener to the list.

A listener can only be added once, so if the listener is already in the list, this method has no effect.

See also
remove

Definition at line 88 of file juce_ListenerList.h.

References juce::Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::addIfNotAlreadyThere().

◆ remove()

template<class ListenerClass , class ArrayType = Array<ListenerClass*>>
void juce::ListenerList< ListenerClass, ArrayType >::remove ( ListenerClass listenerToRemove)
inline

Removes a listener from the list.

If the listener wasn't in the list, this has no effect.

Definition at line 99 of file juce_ListenerList.h.

References juce::Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::removeFirstMatchingValue().

◆ size()

template<class ListenerClass , class ArrayType = Array<ListenerClass*>>
int juce::ListenerList< ListenerClass, ArrayType >::size ( ) const
inlinenoexcept

Returns the number of registered listeners.

Definition at line 106 of file juce_ListenerList.h.

References juce::Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::size().

◆ isEmpty()

template<class ListenerClass , class ArrayType = Array<ListenerClass*>>
bool juce::ListenerList< ListenerClass, ArrayType >::isEmpty ( ) const
inlinenoexcept

Returns true if no listeners are registered, false otherwise.

Definition at line 109 of file juce_ListenerList.h.

References juce::Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::isEmpty().

◆ clear()

template<class ListenerClass , class ArrayType = Array<ListenerClass*>>
void juce::ListenerList< ListenerClass, ArrayType >::clear ( )
inline

◆ contains()

template<class ListenerClass , class ArrayType = Array<ListenerClass*>>
bool juce::ListenerList< ListenerClass, ArrayType >::contains ( ListenerClass listener) const
inlinenoexcept

Returns true if the specified listener has been added to the list.

Definition at line 115 of file juce_ListenerList.h.

References juce::Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::contains().

◆ getListeners()

template<class ListenerClass , class ArrayType = Array<ListenerClass*>>
const ArrayType & juce::ListenerList< ListenerClass, ArrayType >::getListeners ( ) const
inlinenoexcept

Returns the raw array of listeners.

Definition at line 118 of file juce_ListenerList.h.

◆ call()

template<class ListenerClass , class ArrayType = Array<ListenerClass*>>
template<typename Callback >
void juce::ListenerList< ListenerClass, ArrayType >::call ( Callback &&  callback)
inline

Calls a member function on each listener in the list, with multiple parameters.

Definition at line 123 of file juce_ListenerList.h.

References juce::Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::getLock().

◆ callExcluding()

template<class ListenerClass , class ArrayType = Array<ListenerClass*>>
template<typename Callback >
void juce::ListenerList< ListenerClass, ArrayType >::callExcluding ( ListenerClass listenerToExclude,
Callback &&  callback 
)
inline

Calls a member function with 1 parameter, on all but the specified listener in the list.

This can be useful if the caller is also a listener and needs to exclude itself.

Definition at line 135 of file juce_ListenerList.h.

References juce::Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::getLock().

◆ callChecked()

template<class ListenerClass , class ArrayType = Array<ListenerClass*>>
template<typename Callback , typename BailOutCheckerType >
void juce::ListenerList< ListenerClass, ArrayType >::callChecked ( const BailOutCheckerType bailOutChecker,
Callback &&  callback 
)
inline

Calls a member function on each listener in the list, with 1 parameter and a bail-out-checker.

See the class description for info about writing a bail-out checker.

Definition at line 152 of file juce_ListenerList.h.

References juce::Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::getLock().

◆ callCheckedExcluding()

template<class ListenerClass , class ArrayType = Array<ListenerClass*>>
template<typename Callback , typename BailOutCheckerType >
void juce::ListenerList< ListenerClass, ArrayType >::callCheckedExcluding ( ListenerClass listenerToExclude,
const BailOutCheckerType bailOutChecker,
Callback &&  callback 
)
inline

Calls a member function, with 1 parameter, on all but the specified listener in the list with a bail-out-checker.

This can be useful if the caller is also a listener and needs to exclude itself. See the class description for info about writing a bail-out checker.

Definition at line 165 of file juce_ListenerList.h.

References juce::Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::getLock().


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