25 #ifndef JUCE_LISTENERLIST_H_INCLUDED 26 #define JUCE_LISTENERLIST_H_INCLUDED 67 template <
class ListenerClass,
73 #if JUCE_VC8_OR_EARLIER 74 #define LL_TEMPLATE(a) typename P##a, typename Q##a 75 #define LL_PARAM(a) Q##a& param##a 77 #define LL_TEMPLATE(a) typename P##a 78 #define LL_PARAM(a) PARAMETER_TYPE(P##a) param##a 100 void add (ListenerClass*
const listenerToAdd)
103 jassert (listenerToAdd !=
nullptr);
105 if (listenerToAdd !=
nullptr)
106 listeners.addIfNotAlreadyThere (listenerToAdd);
112 void remove (ListenerClass*
const listenerToRemove)
115 jassert (listenerToRemove !=
nullptr);
117 listeners.removeFirstMatchingValue (listenerToRemove);
123 return listeners.size();
129 return listeners.size() == 0;
141 return listeners.contains (listener);
146 void call (
void (ListenerClass::*callbackFunction) ())
148 callChecked (static_cast <const DummyBailOutChecker&> (DummyBailOutChecker()), callbackFunction);
153 template <
class BailOutCheckerType>
155 void (ListenerClass::*callbackFunction) ())
157 for (Iterator<BailOutCheckerType, ThisType> iter (*
this); iter.next (bailOutChecker);)
158 (iter.getListener()->*callbackFunction) ();
163 template <LL_TEMPLATE(1)>
166 for (Iterator<DummyBailOutChecker, ThisType> iter (*
this); iter.next();)
167 (iter.getListener()->*callbackFunction) (param1);
172 template <
class BailOutCheckerType, LL_TEMPLATE(1)>
174 void (ListenerClass::*callbackFunction) (P1),
177 for (Iterator<BailOutCheckerType, ThisType> iter (*
this); iter.next (bailOutChecker);)
178 (iter.getListener()->*callbackFunction) (param1);
183 template <LL_TEMPLATE(1), LL_TEMPLATE(2)>
184 void call (
void (ListenerClass::*callbackFunction) (P1, P2),
187 for (Iterator<DummyBailOutChecker, ThisType> iter (*
this); iter.next();)
188 (iter.getListener()->*callbackFunction) (param1, param2);
193 template <
class BailOutCheckerType, LL_TEMPLATE(1), LL_TEMPLATE(2)>
195 void (ListenerClass::*callbackFunction) (P1, P2),
198 for (Iterator<BailOutCheckerType, ThisType> iter (*
this); iter.next (bailOutChecker);)
199 (iter.getListener()->*callbackFunction) (param1, param2);
204 template <LL_TEMPLATE(1), LL_TEMPLATE(2), LL_TEMPLATE(3)>
205 void call (
void (ListenerClass::*callbackFunction) (P1, P2, P3),
208 for (Iterator<DummyBailOutChecker, ThisType> iter (*
this); iter.next();)
209 (iter.getListener()->*callbackFunction) (param1, param2, param3);
214 template <
class BailOutCheckerType, LL_TEMPLATE(1), LL_TEMPLATE(2), LL_TEMPLATE(3)>
216 void (ListenerClass::*callbackFunction) (P1, P2, P3),
219 for (Iterator<BailOutCheckerType, ThisType> iter (*
this); iter.next (bailOutChecker);)
220 (iter.getListener()->*callbackFunction) (param1, param2, param3);
225 template <LL_TEMPLATE(1), LL_TEMPLATE(2), LL_TEMPLATE(3), LL_TEMPLATE(4)>
226 void call (
void (ListenerClass::*callbackFunction) (P1, P2, P3, P4),
229 for (Iterator<DummyBailOutChecker, ThisType> iter (*
this); iter.next();)
230 (iter.getListener()->*callbackFunction) (param1, param2, param3, param4);
235 template <
class BailOutCheckerType, LL_TEMPLATE(1), LL_TEMPLATE(2), LL_TEMPLATE(3), LL_TEMPLATE(4)>
237 void (ListenerClass::*callbackFunction) (P1, P2, P3, P4),
240 for (Iterator<BailOutCheckerType, ThisType> iter (*
this); iter.next (bailOutChecker);)
241 (iter.getListener()->*callbackFunction) (param1, param2, param3, param4);
246 template <LL_TEMPLATE(1), LL_TEMPLATE(2), LL_TEMPLATE(3), LL_TEMPLATE(4), LL_TEMPLATE(5)>
247 void call (
void (ListenerClass::*callbackFunction) (P1, P2, P3, P4, P5),
250 for (Iterator<DummyBailOutChecker, ThisType> iter (*
this); iter.next();)
251 (iter.getListener()->*callbackFunction) (param1, param2, param3, param4, param5);
256 template <
class BailOutCheckerType, LL_TEMPLATE(1), LL_TEMPLATE(2), LL_TEMPLATE(3), LL_TEMPLATE(4), LL_TEMPLATE(5)>
258 void (ListenerClass::*callbackFunction) (P1, P2, P3, P4, P5),
261 for (Iterator<BailOutCheckerType, ThisType> iter (*
this); iter.next (bailOutChecker);)
262 (iter.getListener()->*callbackFunction) (param1, param2, param3, param4, param5);
267 template <LL_TEMPLATE(1), LL_TEMPLATE(2), LL_TEMPLATE(3), LL_TEMPLATE(4), LL_TEMPLATE(5), LL_TEMPLATE(6)>
268 void call (
void (ListenerClass::*callbackFunction) (P1, P2, P3, P4, P5, P6),
271 for (Iterator<DummyBailOutChecker, ThisType> iter (*
this); iter.next();)
272 (iter.getListener()->*callbackFunction) (param1, param2, param3, param4, param5, param6);
277 template <
class BailOutCheckerType, LL_TEMPLATE(1), LL_TEMPLATE(2), LL_TEMPLATE(3), LL_TEMPLATE(4), LL_TEMPLATE(5), LL_TEMPLATE(6)>
279 void (ListenerClass::*callbackFunction) (P1, P2, P3, P4, P5, P6),
282 for (Iterator<BailOutCheckerType, ThisType> iter (*
this); iter.next (bailOutChecker);)
283 (iter.getListener()->*callbackFunction) (param1, param2, param3, param4, param5, param6);
299 template <
class BailOutCheckerType,
class ListType>
305 : list (listToIterate), index (listToIterate.size())
316 const int listSize = list.size();
318 if (--index < listSize)
321 index = listSize - 1;
327 return (! bailOutChecker.shouldBailOut()) && next();
332 return list.getListeners().getUnchecked (index);
337 const ListType& list;
359 #endif // JUCE_LISTENERLIST_H_INCLUDED #define LL_PARAM(a)
Definition: juce_events.h:79
void call(void(ListenerClass::*callbackFunction)(P1, P2, P3, P4, P5), LL_PARAM(1), LL_PARAM(2), LL_PARAM(3), LL_PARAM(4), LL_PARAM(5))
Definition: juce_ListenerList.h:247
bool next() noexcept
Definition: juce_ListenerList.h:311
#define noexcept
Definition: juce_CompilerSupport.h:141
const ArrayType & getListeners() const noexcept
Definition: juce_ListenerList.h:346
void callChecked(const BailOutCheckerType &bailOutChecker, void(ListenerClass::*callbackFunction)(P1, P2, P3, P4, P5, P6), LL_PARAM(1), LL_PARAM(2), LL_PARAM(3), LL_PARAM(4), LL_PARAM(5), LL_PARAM(6))
Definition: juce_ListenerList.h:278
void call(void(ListenerClass::*callbackFunction)(P1), LL_PARAM(1))
Definition: juce_ListenerList.h:164
ListType::ListenerType * getListener() const noexcept
Definition: juce_ListenerList.h:330
bool isEmpty() const noexcept
Definition: juce_ListenerList.h:127
bool contains(ListenerClass *const listener) const noexcept
Definition: juce_ListenerList.h:139
~Iterator() noexcept
Definition: juce_ListenerList.h:308
Definition: juce_ListenerList.h:291
void callChecked(const BailOutCheckerType &bailOutChecker, void(ListenerClass::*callbackFunction)(P1, P2, P3), LL_PARAM(1), LL_PARAM(2), LL_PARAM(3))
Definition: juce_ListenerList.h:215
Definition: juce_ListenerList.h:69
void callChecked(const BailOutCheckerType &bailOutChecker, void(ListenerClass::*callbackFunction)(P1, P2, P3, P4), LL_PARAM(1), LL_PARAM(2), LL_PARAM(3), LL_PARAM(4))
Definition: juce_ListenerList.h:236
void callChecked(const BailOutCheckerType &bailOutChecker, void(ListenerClass::*callbackFunction)(P1, P2, P3, P4, P5), LL_PARAM(1), LL_PARAM(2), LL_PARAM(3), LL_PARAM(4), LL_PARAM(5))
Definition: juce_ListenerList.h:257
ListenerClass ListenerType
Definition: juce_ListenerList.h:344
int size() const noexcept
Definition: juce_ListenerList.h:121
Iterator(const ListType &listToIterate) noexcept
Definition: juce_ListenerList.h:304
ListenerList()
Definition: juce_ListenerList.h:85
~ListenerList()
Definition: juce_ListenerList.h:90
Definition: juce_Array.h:60
void call(void(ListenerClass::*callbackFunction)(P1, P2, P3, P4), LL_PARAM(1), LL_PARAM(2), LL_PARAM(3), LL_PARAM(4))
Definition: juce_ListenerList.h:226
void callChecked(const BailOutCheckerType &bailOutChecker, void(ListenerClass::*callbackFunction)(P1), LL_PARAM(1))
Definition: juce_ListenerList.h:173
void clear()
Definition: juce_ListenerList.h:133
void call(void(ListenerClass::*callbackFunction)(P1, P2), LL_PARAM(1), LL_PARAM(2))
Definition: juce_ListenerList.h:184
void call(void(ListenerClass::*callbackFunction)())
Definition: juce_ListenerList.h:146
void add(ListenerClass *const listenerToAdd)
Definition: juce_ListenerList.h:100
void callChecked(const BailOutCheckerType &bailOutChecker, void(ListenerClass::*callbackFunction)())
Definition: juce_ListenerList.h:154
void call(void(ListenerClass::*callbackFunction)(P1, P2, P3, P4, P5, P6), LL_PARAM(1), LL_PARAM(2), LL_PARAM(3), LL_PARAM(4), LL_PARAM(5), LL_PARAM(6))
Definition: juce_ListenerList.h:268
bool next(const BailOutCheckerType &bailOutChecker) noexcept
Definition: juce_ListenerList.h:325
void call(void(ListenerClass::*callbackFunction)(P1, P2, P3), LL_PARAM(1), LL_PARAM(2), LL_PARAM(3))
Definition: juce_ListenerList.h:205
bool shouldBailOut() const noexcept
Definition: juce_ListenerList.h:294
void callChecked(const BailOutCheckerType &bailOutChecker, void(ListenerClass::*callbackFunction)(P1, P2), LL_PARAM(1), LL_PARAM(2))
Definition: juce_ListenerList.h:194
ListenerList< ListenerClass, ArrayType > ThisType
Definition: juce_ListenerList.h:343
Definition: juce_ListenerList.h:300