21 #include "equeue/equeue.h" 22 #include "platform/Callback.h" 23 #include "platform/NonCopyable.h" 34 #define EVENTS_EVENT_SIZE \ 35 (EQUEUE_EVENT_SIZE - 2*sizeof(void*) + sizeof(mbed::Callback<void()>)) 40 #define EVENTS_QUEUE_SIZE (32*EVENTS_EVENT_SIZE) 64 EventQueue(
unsigned size = EVENTS_QUEUE_SIZE,
unsigned char *buffer = NULL);
192 #if defined(DOXYGEN_ONLY) 224 template <
typename F,
typename ...Args>
225 int call(F f, Args ...args);
275 template <
typename T,
typename R,
typename ...Args>
276 int call(T *obj, R (T::*method)(Args ...args), Args ...args);
308 template <
typename F,
typename ...Args>
309 int call_in(
int ms, Args ...args);
358 template <
typename T,
typename R,
typename ...Args>
359 int call_in(
int ms, T *obj, R (T::*method)(Args ...args), Args ...args);
405 template <
typename F,
typename ...Args>
455 template <
typename T,
typename R,
typename ...Args>
456 int call_every(
int ms, T *obj, R (T::*method)(Args ...args), Args ...args);
501 template <
typename R,
typename ...BoundArgs,
typename ...Args>
502 Event<void(Args...)>
event(R (*func)(BoundArgs...), Args ...args);
549 template <
typename T,
typename R,
typename ...BoundArgs,
typename ...ContextArgs,
typename ...Args>
550 Event<void(Args...)>
event(T *obj, R (T::*method)(BoundArgs..., Args...), ContextArgs ...context_args);
588 template <
typename R,
typename ...BoundArgs,
typename ...ContextArgs,
typename ...Args>
624 template <
typename F>
627 void *p = equeue_alloc(&_equeue,
sizeof(F));
633 equeue_event_dtor(e, &EventQueue::function_dtor<F>);
634 return equeue_post(&_equeue, &EventQueue::function_call<F>, e);
643 template <
typename F,
typename A0>
646 return call(context10<F, A0>(f, a0));
654 template <
typename F,
typename A0,
typename A1>
655 int call(F f, A0 a0, A1 a1)
657 return call(context20<F, A0, A1>(f, a0, a1));
665 template <
typename F,
typename A0,
typename A1,
typename A2>
666 int call(F f, A0 a0, A1 a1, A2 a2)
668 return call(context30<F, A0, A1, A2>(f, a0, a1, a2));
676 template <
typename F,
typename A0,
typename A1,
typename A2,
typename A3>
677 int call(F f, A0 a0, A1 a1, A2 a2, A3 a3)
679 return call(context40<F, A0, A1, A2, A3>(f, a0, a1, a2, a3));
687 template <
typename F,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
688 int call(F f, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
690 return call(context50<F, A0, A1, A2, A3, A4>(f, a0, a1, a2, a3, a4));
696 template <
typename T,
typename R>
697 int call(T *obj, R(T::*method)())
705 template <
typename T,
typename R>
706 int call(
const T *obj, R(T::*method)()
const)
714 template <
typename T,
typename R>
715 int call(
volatile T *obj, R(T::*method)()
volatile)
723 template <
typename T,
typename R>
724 int call(
const volatile T *obj, R(T::*method)()
const volatile)
732 template <
typename T,
typename R,
typename A0>
733 int call(T *obj, R(T::*method)(A0), A0 a0)
741 template <
typename T,
typename R,
typename A0>
742 int call(
const T *obj, R(T::*method)(A0)
const, A0 a0)
750 template <
typename T,
typename R,
typename A0>
751 int call(
volatile T *obj, R(T::*method)(A0)
volatile, A0 a0)
759 template <
typename T,
typename R,
typename A0>
760 int call(
const volatile T *obj, R(T::*method)(A0)
const volatile, A0 a0)
768 template <
typename T,
typename R,
typename A0,
typename A1>
769 int call(T *obj, R(T::*method)(A0, A1), A0 a0, A1 a1)
777 template <
typename T,
typename R,
typename A0,
typename A1>
778 int call(
const T *obj, R(T::*method)(A0, A1)
const, A0 a0, A1 a1)
786 template <
typename T,
typename R,
typename A0,
typename A1>
787 int call(
volatile T *obj, R(T::*method)(A0, A1)
volatile, A0 a0, A1 a1)
795 template <
typename T,
typename R,
typename A0,
typename A1>
796 int call(
const volatile T *obj, R(T::*method)(A0, A1)
const volatile, A0 a0, A1 a1)
804 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2>
805 int call(T *obj, R(T::*method)(A0, A1, A2), A0 a0, A1 a1, A2 a2)
813 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2>
814 int call(
const T *obj, R(T::*method)(A0, A1, A2)
const, A0 a0, A1 a1, A2 a2)
822 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2>
823 int call(
volatile T *obj, R(T::*method)(A0, A1, A2)
volatile, A0 a0, A1 a1, A2 a2)
831 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2>
832 int call(
const volatile T *obj, R(T::*method)(A0, A1, A2)
const volatile, A0 a0, A1 a1, A2 a2)
840 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3>
841 int call(T *obj, R(T::*method)(A0, A1, A2, A3), A0 a0, A1 a1, A2 a2, A3 a3)
849 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3>
850 int call(
const T *obj, R(T::*method)(A0, A1, A2, A3)
const, A0 a0, A1 a1, A2 a2, A3 a3)
858 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3>
859 int call(
volatile T *obj, R(T::*method)(A0, A1, A2, A3)
volatile, A0 a0, A1 a1, A2 a2, A3 a3)
867 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3>
868 int call(
const volatile T *obj, R(T::*method)(A0, A1, A2, A3)
const volatile, A0 a0, A1 a1, A2 a2, A3 a3)
876 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
877 int call(T *obj, R(T::*method)(A0, A1, A2, A3, A4), A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
885 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
886 int call(
const T *obj, R(T::*method)(A0, A1, A2, A3, A4)
const, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
894 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
895 int call(
volatile T *obj, R(T::*method)(A0, A1, A2, A3, A4)
volatile, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
903 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
904 int call(
const volatile T *obj, R(T::*method)(A0, A1, A2, A3, A4)
const volatile, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
923 template <
typename F>
926 void *p = equeue_alloc(&_equeue,
sizeof(F));
932 equeue_event_delay(e, ms);
933 equeue_event_dtor(e, &EventQueue::function_dtor<F>);
934 return equeue_post(&_equeue, &EventQueue::function_call<F>, e);
943 template <
typename F,
typename A0>
944 int call_in(
int ms, F f, A0 a0)
946 return call_in(ms, context10<F, A0>(f, a0));
955 template <
typename F,
typename A0,
typename A1>
956 int call_in(
int ms, F f, A0 a0, A1 a1)
958 return call_in(ms, context20<F, A0, A1>(f, a0, a1));
967 template <
typename F,
typename A0,
typename A1,
typename A2>
968 int call_in(
int ms, F f, A0 a0, A1 a1, A2 a2)
970 return call_in(ms, context30<F, A0, A1, A2>(f, a0, a1, a2));
979 template <
typename F,
typename A0,
typename A1,
typename A2,
typename A3>
980 int call_in(
int ms, F f, A0 a0, A1 a1, A2 a2, A3 a3)
982 return call_in(ms, context40<F, A0, A1, A2, A3>(f, a0, a1, a2, a3));
991 template <
typename F,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
992 int call_in(
int ms, F f, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
994 return call_in(ms, context50<F, A0, A1, A2, A3, A4>(f, a0, a1, a2, a3, a4));
1000 template <
typename T,
typename R>
1001 int call_in(
int ms, T *obj, R(T::*method)())
1009 template <
typename T,
typename R>
1010 int call_in(
int ms,
const T *obj, R(T::*method)()
const)
1018 template <
typename T,
typename R>
1019 int call_in(
int ms,
volatile T *obj, R(T::*method)()
volatile)
1027 template <
typename T,
typename R>
1028 int call_in(
int ms,
const volatile T *obj, R(T::*method)()
const volatile)
1036 template <
typename T,
typename R,
typename A0>
1037 int call_in(
int ms, T *obj, R(T::*method)(A0), A0 a0)
1045 template <
typename T,
typename R,
typename A0>
1046 int call_in(
int ms,
const T *obj, R(T::*method)(A0)
const, A0 a0)
1054 template <
typename T,
typename R,
typename A0>
1055 int call_in(
int ms,
volatile T *obj, R(T::*method)(A0)
volatile, A0 a0)
1063 template <
typename T,
typename R,
typename A0>
1064 int call_in(
int ms,
const volatile T *obj, R(T::*method)(A0)
const volatile, A0 a0)
1072 template <
typename T,
typename R,
typename A0,
typename A1>
1073 int call_in(
int ms, T *obj, R(T::*method)(A0, A1), A0 a0, A1 a1)
1081 template <
typename T,
typename R,
typename A0,
typename A1>
1082 int call_in(
int ms,
const T *obj, R(T::*method)(A0, A1)
const, A0 a0, A1 a1)
1090 template <
typename T,
typename R,
typename A0,
typename A1>
1091 int call_in(
int ms,
volatile T *obj, R(T::*method)(A0, A1)
volatile, A0 a0, A1 a1)
1099 template <
typename T,
typename R,
typename A0,
typename A1>
1100 int call_in(
int ms,
const volatile T *obj, R(T::*method)(A0, A1)
const volatile, A0 a0, A1 a1)
1108 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2>
1109 int call_in(
int ms, T *obj, R(T::*method)(A0, A1, A2), A0 a0, A1 a1, A2 a2)
1117 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2>
1118 int call_in(
int ms,
const T *obj, R(T::*method)(A0, A1, A2)
const, A0 a0, A1 a1, A2 a2)
1126 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2>
1127 int call_in(
int ms,
volatile T *obj, R(T::*method)(A0, A1, A2)
volatile, A0 a0, A1 a1, A2 a2)
1135 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2>
1136 int call_in(
int ms,
const volatile T *obj, R(T::*method)(A0, A1, A2)
const volatile, A0 a0, A1 a1, A2 a2)
1144 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3>
1145 int call_in(
int ms, T *obj, R(T::*method)(A0, A1, A2, A3), A0 a0, A1 a1, A2 a2, A3 a3)
1153 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3>
1154 int call_in(
int ms,
const T *obj, R(T::*method)(A0, A1, A2, A3)
const, A0 a0, A1 a1, A2 a2, A3 a3)
1162 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3>
1163 int call_in(
int ms,
volatile T *obj, R(T::*method)(A0, A1, A2, A3)
volatile, A0 a0, A1 a1, A2 a2, A3 a3)
1171 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3>
1172 int call_in(
int ms,
const volatile T *obj, R(T::*method)(A0, A1, A2, A3)
const volatile, A0 a0, A1 a1, A2 a2, A3 a3)
1180 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
1181 int call_in(
int ms, T *obj, R(T::*method)(A0, A1, A2, A3, A4), A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
1189 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
1190 int call_in(
int ms,
const T *obj, R(T::*method)(A0, A1, A2, A3, A4)
const, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
1198 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
1199 int call_in(
int ms,
volatile T *obj, R(T::*method)(A0, A1, A2, A3, A4)
volatile, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
1207 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
1208 int call_in(
int ms,
const volatile T *obj, R(T::*method)(A0, A1, A2, A3, A4)
const volatile, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
1230 template <
typename F>
1233 void *p = equeue_alloc(&_equeue,
sizeof(F));
1238 F *e =
new (p) F(f);
1239 equeue_event_delay(e, ms);
1240 equeue_event_period(e, ms);
1241 equeue_event_dtor(e, &EventQueue::function_dtor<F>);
1242 return equeue_post(&_equeue, &EventQueue::function_call<F>, e);
1251 template <
typename F,
typename A0>
1254 return call_every(ms, context10<F, A0>(f, a0));
1263 template <
typename F,
typename A0,
typename A1>
1266 return call_every(ms, context20<F, A0, A1>(f, a0, a1));
1275 template <
typename F,
typename A0,
typename A1,
typename A2>
1276 int call_every(
int ms, F f, A0 a0, A1 a1, A2 a2)
1278 return call_every(ms, context30<F, A0, A1, A2>(f, a0, a1, a2));
1287 template <
typename F,
typename A0,
typename A1,
typename A2,
typename A3>
1288 int call_every(
int ms, F f, A0 a0, A1 a1, A2 a2, A3 a3)
1290 return call_every(ms, context40<F, A0, A1, A2, A3>(f, a0, a1, a2, a3));
1299 template <
typename F,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
1300 int call_every(
int ms, F f, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
1302 return call_every(ms, context50<F, A0, A1, A2, A3, A4>(f, a0, a1, a2, a3, a4));
1308 template <
typename T,
typename R>
1309 int call_every(
int ms, T *obj, R(T::*method)())
1317 template <
typename T,
typename R>
1318 int call_every(
int ms,
const T *obj, R(T::*method)()
const)
1326 template <
typename T,
typename R>
1327 int call_every(
int ms,
volatile T *obj, R(T::*method)()
volatile)
1335 template <
typename T,
typename R>
1336 int call_every(
int ms,
const volatile T *obj, R(T::*method)()
const volatile)
1344 template <
typename T,
typename R,
typename A0>
1345 int call_every(
int ms, T *obj, R(T::*method)(A0), A0 a0)
1353 template <
typename T,
typename R,
typename A0>
1354 int call_every(
int ms,
const T *obj, R(T::*method)(A0)
const, A0 a0)
1362 template <
typename T,
typename R,
typename A0>
1363 int call_every(
int ms,
volatile T *obj, R(T::*method)(A0)
volatile, A0 a0)
1371 template <
typename T,
typename R,
typename A0>
1372 int call_every(
int ms,
const volatile T *obj, R(T::*method)(A0)
const volatile, A0 a0)
1380 template <
typename T,
typename R,
typename A0,
typename A1>
1381 int call_every(
int ms, T *obj, R(T::*method)(A0, A1), A0 a0, A1 a1)
1389 template <
typename T,
typename R,
typename A0,
typename A1>
1390 int call_every(
int ms,
const T *obj, R(T::*method)(A0, A1)
const, A0 a0, A1 a1)
1398 template <
typename T,
typename R,
typename A0,
typename A1>
1399 int call_every(
int ms,
volatile T *obj, R(T::*method)(A0, A1)
volatile, A0 a0, A1 a1)
1407 template <
typename T,
typename R,
typename A0,
typename A1>
1408 int call_every(
int ms,
const volatile T *obj, R(T::*method)(A0, A1)
const volatile, A0 a0, A1 a1)
1416 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2>
1417 int call_every(
int ms, T *obj, R(T::*method)(A0, A1, A2), A0 a0, A1 a1, A2 a2)
1425 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2>
1426 int call_every(
int ms,
const T *obj, R(T::*method)(A0, A1, A2)
const, A0 a0, A1 a1, A2 a2)
1434 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2>
1435 int call_every(
int ms,
volatile T *obj, R(T::*method)(A0, A1, A2)
volatile, A0 a0, A1 a1, A2 a2)
1443 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2>
1444 int call_every(
int ms,
const volatile T *obj, R(T::*method)(A0, A1, A2)
const volatile, A0 a0, A1 a1, A2 a2)
1452 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3>
1453 int call_every(
int ms, T *obj, R(T::*method)(A0, A1, A2, A3), A0 a0, A1 a1, A2 a2, A3 a3)
1461 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3>
1462 int call_every(
int ms,
const T *obj, R(T::*method)(A0, A1, A2, A3)
const, A0 a0, A1 a1, A2 a2, A3 a3)
1470 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3>
1471 int call_every(
int ms,
volatile T *obj, R(T::*method)(A0, A1, A2, A3)
volatile, A0 a0, A1 a1, A2 a2, A3 a3)
1479 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3>
1480 int call_every(
int ms,
const volatile T *obj, R(T::*method)(A0, A1, A2, A3)
const volatile, A0 a0, A1 a1, A2 a2, A3 a3)
1488 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
1489 int call_every(
int ms, T *obj, R(T::*method)(A0, A1, A2, A3, A4), A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
1497 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
1498 int call_every(
int ms,
const T *obj, R(T::*method)(A0, A1, A2, A3, A4)
const, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
1506 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
1507 int call_every(
int ms,
volatile T *obj, R(T::*method)(A0, A1, A2, A3, A4)
volatile, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
1515 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
1516 int call_every(
int ms,
const volatile T *obj, R(T::*method)(A0, A1, A2, A3, A4)
const volatile, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
1530 template <
typename R>
1536 template <
typename T,
typename R>
1542 template <
typename T,
typename R>
1548 template <
typename T,
typename R>
1554 template <
typename T,
typename R>
1560 template <
typename R>
1566 template <
typename R,
typename B0,
typename C0>
1572 template <
typename T,
typename R,
typename B0,
typename C0>
1578 template <
typename T,
typename R,
typename B0,
typename C0>
1584 template <
typename T,
typename R,
typename B0,
typename C0>
1590 template <
typename T,
typename R,
typename B0,
typename C0>
1596 template <
typename R,
typename B0,
typename C0>
1602 template <
typename R,
typename B0,
typename B1,
typename C0,
typename C1>
1608 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1>
1614 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1>
1620 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1>
1626 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1>
1627 Event<void()> event(
const volatile T *obj, R(T::*method)(B0, B1)
const volatile, C0 c0, C1 c1);
1632 template <
typename R,
typename B0,
typename B1,
typename C0,
typename C1>
1638 template <
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2>
1644 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2>
1650 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2>
1651 Event<void()> event(
const T *obj, R(T::*method)(B0, B1, B2)
const, C0 c0, C1 c1, C2 c2);
1656 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2>
1657 Event<void()> event(
volatile T *obj, R(T::*method)(B0, B1, B2)
volatile, C0 c0, C1 c1, C2 c2);
1662 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2>
1663 Event<void()> event(
const volatile T *obj, R(T::*method)(B0, B1, B2)
const volatile, C0 c0, C1 c1, C2 c2);
1668 template <
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2>
1674 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3>
1680 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3>
1681 Event<void()> event(T *obj, R(T::*method)(B0, B1, B2, B3), C0 c0, C1 c1, C2 c2, C3 c3);
1686 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3>
1687 Event<void()> event(
const T *obj, R(T::*method)(B0, B1, B2, B3)
const, C0 c0, C1 c1, C2 c2, C3 c3);
1692 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3>
1693 Event<void()> event(
volatile T *obj, R(T::*method)(B0, B1, B2, B3)
volatile, C0 c0, C1 c1, C2 c2, C3 c3);
1698 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3>
1699 Event<void()> event(
const volatile T *obj, R(T::*method)(B0, B1, B2, B3)
const volatile, C0 c0, C1 c1, C2 c2, C3 c3);
1704 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3>
1710 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4>
1711 Event<void()> event(R(*func)(B0, B1, B2, B3, B4), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
1716 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4>
1717 Event<void()> event(T *obj, R(T::*method)(B0, B1, B2, B3, B4), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
1722 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4>
1723 Event<void()> event(
const T *obj, R(T::*method)(B0, B1, B2, B3, B4)
const, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
1728 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4>
1729 Event<void()> event(
volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4)
volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
1734 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4>
1735 Event<void()> event(
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4)
const volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
1740 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4>
1746 template <
typename R,
typename A0>
1752 template <
typename T,
typename R,
typename A0>
1758 template <
typename T,
typename R,
typename A0>
1764 template <
typename T,
typename R,
typename A0>
1770 template <
typename T,
typename R,
typename A0>
1776 template <
typename R,
typename A0>
1782 template <
typename R,
typename B0,
typename C0,
typename A0>
1788 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0>
1794 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0>
1800 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0>
1806 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0>
1812 template <
typename R,
typename B0,
typename C0,
typename A0>
1818 template <
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0>
1824 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0>
1830 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0>
1836 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0>
1842 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0>
1843 Event<void(A0)> event(
const volatile T *obj, R(T::*method)(B0, B1, A0)
const volatile, C0 c0, C1 c1);
1848 template <
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0>
1854 template <
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0>
1860 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0>
1866 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0>
1872 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0>
1873 Event<void(A0)> event(
volatile T *obj, R(T::*method)(B0, B1, B2, A0)
volatile, C0 c0, C1 c1, C2 c2);
1878 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0>
1879 Event<void(A0)> event(
const volatile T *obj, R(T::*method)(B0, B1, B2, A0)
const volatile, C0 c0, C1 c1, C2 c2);
1884 template <
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0>
1890 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0>
1896 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0>
1902 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0>
1903 Event<void(A0)> event(
const T *obj, R(T::*method)(B0, B1, B2, B3, A0)
const, C0 c0, C1 c1, C2 c2, C3 c3);
1908 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0>
1909 Event<void(A0)> event(
volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0)
volatile, C0 c0, C1 c1, C2 c2, C3 c3);
1914 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0>
1915 Event<void(A0)> event(
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0)
const volatile, C0 c0, C1 c1, C2 c2, C3 c3);
1920 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0>
1926 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0>
1927 Event<void(A0)> event(R(*func)(B0, B1, B2, B3, B4, A0), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
1932 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0>
1933 Event<void(A0)> event(T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
1938 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0>
1939 Event<void(A0)> event(
const T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0)
const, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
1944 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0>
1945 Event<void(A0)> event(
volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0)
volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
1950 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0>
1951 Event<void(A0)> event(
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0)
const volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
1956 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0>
1957 Event<void(A0)> event(
mbed::Callback<R(B0, B1, B2, B3, B4, A0)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
1962 template <
typename R,
typename A0,
typename A1>
1968 template <
typename T,
typename R,
typename A0,
typename A1>
1974 template <
typename T,
typename R,
typename A0,
typename A1>
1980 template <
typename T,
typename R,
typename A0,
typename A1>
1986 template <
typename T,
typename R,
typename A0,
typename A1>
1992 template <
typename R,
typename A0,
typename A1>
1998 template <
typename R,
typename B0,
typename C0,
typename A0,
typename A1>
2004 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0,
typename A1>
2010 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0,
typename A1>
2016 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0,
typename A1>
2022 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0,
typename A1>
2028 template <
typename R,
typename B0,
typename C0,
typename A0,
typename A1>
2034 template <
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1>
2040 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1>
2046 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1>
2052 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1>
2058 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1>
2064 template <
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1>
2070 template <
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1>
2076 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1>
2082 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1>
2088 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1>
2094 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1>
2095 Event<void(A0, A1)> event(
const volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1)
const volatile, C0 c0, C1 c1, C2 c2);
2100 template <
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1>
2106 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1>
2107 Event<void(A0, A1)> event(R(*func)(B0, B1, B2, B3, A0, A1), C0 c0, C1 c1, C2 c2, C3 c3);
2112 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1>
2113 Event<void(A0, A1)> event(T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1), C0 c0, C1 c1, C2 c2, C3 c3);
2118 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1>
2119 Event<void(A0, A1)> event(
const T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1)
const, C0 c0, C1 c1, C2 c2, C3 c3);
2124 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1>
2125 Event<void(A0, A1)> event(
volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1)
volatile, C0 c0, C1 c1, C2 c2, C3 c3);
2130 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1>
2131 Event<void(A0, A1)> event(
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1)
const volatile, C0 c0, C1 c1, C2 c2, C3 c3);
2136 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1>
2137 Event<void(A0, A1)> event(
mbed::Callback<R(B0, B1, B2, B3, A0, A1)> cb, C0 c0, C1 c1, C2 c2, C3 c3);
2142 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1>
2143 Event<void(A0, A1)> event(R(*func)(B0, B1, B2, B3, B4, A0, A1), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2148 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1>
2149 Event<void(A0, A1)> event(T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2154 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1>
2155 Event<void(A0, A1)> event(
const T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1)
const, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2160 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1>
2161 Event<void(A0, A1)> event(
volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1)
volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2166 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1>
2167 Event<void(A0, A1)> event(
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1)
const volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2172 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1>
2173 Event<void(A0, A1)> event(
mbed::Callback<R(B0, B1, B2, B3, B4, A0, A1)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2178 template <
typename R,
typename A0,
typename A1,
typename A2>
2184 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2>
2190 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2>
2196 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2>
2202 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2>
2208 template <
typename R,
typename A0,
typename A1,
typename A2>
2214 template <
typename R,
typename B0,
typename C0,
typename A0,
typename A1,
typename A2>
2220 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0,
typename A1,
typename A2>
2226 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0,
typename A1,
typename A2>
2232 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0,
typename A1,
typename A2>
2238 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0,
typename A1,
typename A2>
2244 template <
typename R,
typename B0,
typename C0,
typename A0,
typename A1,
typename A2>
2250 template <
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2>
2256 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2>
2262 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2>
2268 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2>
2274 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2>
2280 template <
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2>
2286 template <
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2>
2287 Event<void(A0, A1, A2)> event(R(*func)(B0, B1, B2, A0, A1, A2), C0 c0, C1 c1, C2 c2);
2292 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2>
2293 Event<void(A0, A1, A2)> event(T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2), C0 c0, C1 c1, C2 c2);
2298 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2>
2299 Event<void(A0, A1, A2)> event(
const T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2)
const, C0 c0, C1 c1, C2 c2);
2304 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2>
2305 Event<void(A0, A1, A2)> event(
volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2)
volatile, C0 c0, C1 c1, C2 c2);
2310 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2>
2311 Event<void(A0, A1, A2)> event(
const volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2)
const volatile, C0 c0, C1 c1, C2 c2);
2316 template <
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2>
2317 Event<void(A0, A1, A2)> event(
mbed::Callback<R(B0, B1, B2, A0, A1, A2)> cb, C0 c0, C1 c1, C2 c2);
2322 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2>
2323 Event<void(A0, A1, A2)> event(R(*func)(B0, B1, B2, B3, A0, A1, A2), C0 c0, C1 c1, C2 c2, C3 c3);
2328 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2>
2329 Event<void(A0, A1, A2)> event(T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2), C0 c0, C1 c1, C2 c2, C3 c3);
2334 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2>
2335 Event<void(A0, A1, A2)> event(
const T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2)
const, C0 c0, C1 c1, C2 c2, C3 c3);
2340 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2>
2341 Event<void(A0, A1, A2)> event(
volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2)
volatile, C0 c0, C1 c1, C2 c2, C3 c3);
2346 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2>
2347 Event<void(A0, A1, A2)> event(
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2)
const volatile, C0 c0, C1 c1, C2 c2, C3 c3);
2352 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2>
2353 Event<void(A0, A1, A2)> event(
mbed::Callback<R(B0, B1, B2, B3, A0, A1, A2)> cb, C0 c0, C1 c1, C2 c2, C3 c3);
2358 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2>
2359 Event<void(A0, A1, A2)> event(R(*func)(B0, B1, B2, B3, B4, A0, A1, A2), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2364 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2>
2365 Event<void(A0, A1, A2)> event(T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2370 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2>
2371 Event<void(A0, A1, A2)> event(
const T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2)
const, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2376 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2>
2377 Event<void(A0, A1, A2)> event(
volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2)
volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2382 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2>
2383 Event<void(A0, A1, A2)> event(
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2)
const volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2388 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2>
2389 Event<void(A0, A1, A2)> event(
mbed::Callback<R(B0, B1, B2, B3, B4, A0, A1, A2)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2394 template <
typename R,
typename A0,
typename A1,
typename A2,
typename A3>
2400 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3>
2406 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3>
2412 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3>
2418 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3>
2424 template <
typename R,
typename A0,
typename A1,
typename A2,
typename A3>
2430 template <
typename R,
typename B0,
typename C0,
typename A0,
typename A1,
typename A2,
typename A3>
2436 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0,
typename A1,
typename A2,
typename A3>
2442 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0,
typename A1,
typename A2,
typename A3>
2448 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0,
typename A1,
typename A2,
typename A3>
2454 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0,
typename A1,
typename A2,
typename A3>
2460 template <
typename R,
typename B0,
typename C0,
typename A0,
typename A1,
typename A2,
typename A3>
2466 template <
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2,
typename A3>
2467 Event<void(A0, A1, A2, A3)> event(R(*func)(B0, B1, A0, A1, A2, A3), C0 c0, C1 c1);
2472 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2,
typename A3>
2473 Event<void(A0, A1, A2, A3)> event(T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3), C0 c0, C1 c1);
2478 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2,
typename A3>
2479 Event<void(A0, A1, A2, A3)> event(
const T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3)
const, C0 c0, C1 c1);
2484 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2,
typename A3>
2485 Event<void(A0, A1, A2, A3)> event(
volatile T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3)
volatile, C0 c0, C1 c1);
2490 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2,
typename A3>
2491 Event<void(A0, A1, A2, A3)> event(
const volatile T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3)
const volatile, C0 c0, C1 c1);
2496 template <
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2,
typename A3>
2497 Event<void(A0, A1, A2, A3)> event(
mbed::Callback<R(B0, B1, A0, A1, A2, A3)> cb, C0 c0, C1 c1);
2502 template <
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2,
typename A3>
2503 Event<void(A0, A1, A2, A3)> event(R(*func)(B0, B1, B2, A0, A1, A2, A3), C0 c0, C1 c1, C2 c2);
2508 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2,
typename A3>
2509 Event<void(A0, A1, A2, A3)> event(T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3), C0 c0, C1 c1, C2 c2);
2514 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2,
typename A3>
2515 Event<void(A0, A1, A2, A3)> event(
const T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3)
const, C0 c0, C1 c1, C2 c2);
2520 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2,
typename A3>
2521 Event<void(A0, A1, A2, A3)> event(
volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3)
volatile, C0 c0, C1 c1, C2 c2);
2526 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2,
typename A3>
2527 Event<void(A0, A1, A2, A3)> event(
const volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3)
const volatile, C0 c0, C1 c1, C2 c2);
2532 template <
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2,
typename A3>
2533 Event<void(A0, A1, A2, A3)> event(
mbed::Callback<R(B0, B1, B2, A0, A1, A2, A3)> cb, C0 c0, C1 c1, C2 c2);
2538 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2,
typename A3>
2539 Event<void(A0, A1, A2, A3)> event(R(*func)(B0, B1, B2, B3, A0, A1, A2, A3), C0 c0, C1 c1, C2 c2, C3 c3);
2544 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2,
typename A3>
2545 Event<void(A0, A1, A2, A3)> event(T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3), C0 c0, C1 c1, C2 c2, C3 c3);
2550 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2,
typename A3>
2551 Event<void(A0, A1, A2, A3)> event(
const T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3)
const, C0 c0, C1 c1, C2 c2, C3 c3);
2556 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2,
typename A3>
2557 Event<void(A0, A1, A2, A3)> event(
volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3)
volatile, C0 c0, C1 c1, C2 c2, C3 c3);
2562 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2,
typename A3>
2563 Event<void(A0, A1, A2, A3)> event(
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3)
const volatile, C0 c0, C1 c1, C2 c2, C3 c3);
2568 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2,
typename A3>
2569 Event<void(A0, A1, A2, A3)> event(
mbed::Callback<R(B0, B1, B2, B3, A0, A1, A2, A3)> cb, C0 c0, C1 c1, C2 c2, C3 c3);
2574 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2,
typename A3>
2575 Event<void(A0, A1, A2, A3)> event(R(*func)(B0, B1, B2, B3, B4, A0, A1, A2, A3), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2580 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2,
typename A3>
2581 Event<void(A0, A1, A2, A3)> event(T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2586 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2,
typename A3>
2587 Event<void(A0, A1, A2, A3)> event(
const T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3)
const, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2592 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2,
typename A3>
2593 Event<void(A0, A1, A2, A3)> event(
volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3)
volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2598 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2,
typename A3>
2599 Event<void(A0, A1, A2, A3)> event(
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3)
const volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2604 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2,
typename A3>
2605 Event<void(A0, A1, A2, A3)> event(
mbed::Callback<R(B0, B1, B2, B3, B4, A0, A1, A2, A3)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2610 template <
typename R,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2616 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2622 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2628 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2634 template <
typename T,
typename R,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2640 template <
typename R,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2646 template <
typename R,
typename B0,
typename C0,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2647 Event<void(A0, A1, A2, A3, A4)> event(R(*func)(B0, A0, A1, A2, A3, A4), C0 c0);
2652 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2653 Event<void(A0, A1, A2, A3, A4)> event(T *obj, R(T::*method)(B0, A0, A1, A2, A3, A4), C0 c0);
2658 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2659 Event<void(A0, A1, A2, A3, A4)> event(
const T *obj, R(T::*method)(B0, A0, A1, A2, A3, A4)
const, C0 c0);
2664 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2665 Event<void(A0, A1, A2, A3, A4)> event(
volatile T *obj, R(T::*method)(B0, A0, A1, A2, A3, A4)
volatile, C0 c0);
2670 template <
typename T,
typename R,
typename B0,
typename C0,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2671 Event<void(A0, A1, A2, A3, A4)> event(
const volatile T *obj, R(T::*method)(B0, A0, A1, A2, A3, A4)
const volatile, C0 c0);
2676 template <
typename R,
typename B0,
typename C0,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2677 Event<void(A0, A1, A2, A3, A4)> event(
mbed::Callback<R(B0, A0, A1, A2, A3, A4)> cb, C0 c0);
2682 template <
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2683 Event<void(A0, A1, A2, A3, A4)> event(R(*func)(B0, B1, A0, A1, A2, A3, A4), C0 c0, C1 c1);
2688 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2689 Event<void(A0, A1, A2, A3, A4)> event(T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3, A4), C0 c0, C1 c1);
2694 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2695 Event<void(A0, A1, A2, A3, A4)> event(
const T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3, A4)
const, C0 c0, C1 c1);
2700 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2701 Event<void(A0, A1, A2, A3, A4)> event(
volatile T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3, A4)
volatile, C0 c0, C1 c1);
2706 template <
typename T,
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2707 Event<void(A0, A1, A2, A3, A4)> event(
const volatile T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3, A4)
const volatile, C0 c0, C1 c1);
2712 template <
typename R,
typename B0,
typename B1,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2713 Event<void(A0, A1, A2, A3, A4)> event(
mbed::Callback<R(B0, B1, A0, A1, A2, A3, A4)> cb, C0 c0, C1 c1);
2718 template <
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2719 Event<void(A0, A1, A2, A3, A4)> event(R(*func)(B0, B1, B2, A0, A1, A2, A3, A4), C0 c0, C1 c1, C2 c2);
2724 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2725 Event<void(A0, A1, A2, A3, A4)> event(T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3, A4), C0 c0, C1 c1, C2 c2);
2730 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2731 Event<void(A0, A1, A2, A3, A4)> event(
const T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3, A4)
const, C0 c0, C1 c1, C2 c2);
2736 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2737 Event<void(A0, A1, A2, A3, A4)> event(
volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3, A4)
volatile, C0 c0, C1 c1, C2 c2);
2742 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2743 Event<void(A0, A1, A2, A3, A4)> event(
const volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3, A4)
const volatile, C0 c0, C1 c1, C2 c2);
2748 template <
typename R,
typename B0,
typename B1,
typename B2,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2749 Event<void(A0, A1, A2, A3, A4)> event(
mbed::Callback<R(B0, B1, B2, A0, A1, A2, A3, A4)> cb, C0 c0, C1 c1, C2 c2);
2754 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2755 Event<void(A0, A1, A2, A3, A4)> event(R(*func)(B0, B1, B2, B3, A0, A1, A2, A3, A4), C0 c0, C1 c1, C2 c2, C3 c3);
2760 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2761 Event<void(A0, A1, A2, A3, A4)> event(T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3, A4), C0 c0, C1 c1, C2 c2, C3 c3);
2766 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2767 Event<void(A0, A1, A2, A3, A4)> event(
const T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3, A4)
const, C0 c0, C1 c1, C2 c2, C3 c3);
2772 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2773 Event<void(A0, A1, A2, A3, A4)> event(
volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3, A4)
volatile, C0 c0, C1 c1, C2 c2, C3 c3);
2778 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2779 Event<void(A0, A1, A2, A3, A4)> event(
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3, A4)
const volatile, C0 c0, C1 c1, C2 c2, C3 c3);
2784 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2785 Event<void(A0, A1, A2, A3, A4)> event(
mbed::Callback<R(B0, B1, B2, B3, A0, A1, A2, A3, A4)> cb, C0 c0, C1 c1, C2 c2, C3 c3);
2790 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2791 Event<void(A0, A1, A2, A3, A4)> event(R(*func)(B0, B1, B2, B3, B4, A0, A1, A2, A3, A4), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2796 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2797 Event<void(A0, A1, A2, A3, A4)> event(T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3, A4), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2802 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2803 Event<void(A0, A1, A2, A3, A4)> event(
const T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3, A4)
const, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2808 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2809 Event<void(A0, A1, A2, A3, A4)> event(
volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3, A4)
volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2814 template <
typename T,
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2815 Event<void(A0, A1, A2, A3, A4)> event(
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3, A4)
const volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2820 template <
typename R,
typename B0,
typename B1,
typename B2,
typename B3,
typename B4,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
2821 Event<void(A0, A1, A2, A3, A4)> event(
mbed::Callback<R(B0, B1, B2, B3, B4, A0, A1, A2, A3, A4)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
2825 #if !defined(DOXYGEN_ONLY) 2826 template <
typename F>
2832 template <
typename F>
2833 static void function_call(
void *p)
2838 template <
typename F>
2839 static void function_dtor(
void *p)
2845 template <
typename F>
2858 template <
typename F,
typename C0>
2863 context10(F f, C0 c0)
2872 template <
typename F,
typename C0,
typename C1>
2878 context20(F f, C0 c0, C1 c1)
2879 : f(f), c0(c0), c1(c1) {}
2887 template <
typename F,
typename C0,
typename C1,
typename C2>
2894 context30(F f, C0 c0, C1 c1, C2 c2)
2895 : f(f), c0(c0), c1(c1), c2(c2) {}
2903 template <
typename F,
typename C0,
typename C1,
typename C2,
typename C3>
2911 context40(F f, C0 c0, C1 c1, C2 c2, C3 c3)
2912 : f(f), c0(c0), c1(c1), c2(c2), c3(c3) {}
2920 template <
typename F,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4>
2929 context50(F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
2930 : f(f), c0(c0), c1(c1), c2(c2), c3(c3), c4(c4) {}
2934 f(c0, c1, c2, c3, c4);
2938 template <
typename F,
typename A0>
2945 void operator()(A0 a0)
2951 template <
typename F,
typename C0,
typename A0>
2956 context11(F f, C0 c0)
2959 void operator()(A0 a0)
2965 template <
typename F,
typename C0,
typename C1,
typename A0>
2971 context21(F f, C0 c0, C1 c1)
2972 : f(f), c0(c0), c1(c1) {}
2974 void operator()(A0 a0)
2980 template <
typename F,
typename C0,
typename C1,
typename C2,
typename A0>
2987 context31(F f, C0 c0, C1 c1, C2 c2)
2988 : f(f), c0(c0), c1(c1), c2(c2) {}
2990 void operator()(A0 a0)
2996 template <
typename F,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0>
3004 context41(F f, C0 c0, C1 c1, C2 c2, C3 c3)
3005 : f(f), c0(c0), c1(c1), c2(c2), c3(c3) {}
3007 void operator()(A0 a0)
3009 f(c0, c1, c2, c3, a0);
3013 template <
typename F,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0>
3022 context51(F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
3023 : f(f), c0(c0), c1(c1), c2(c2), c3(c3), c4(c4) {}
3025 void operator()(A0 a0)
3027 f(c0, c1, c2, c3, c4, a0);
3031 template <
typename F,
typename A0,
typename A1>
3038 void operator()(A0 a0, A1 a1)
3044 template <
typename F,
typename C0,
typename A0,
typename A1>
3049 context12(F f, C0 c0)
3052 void operator()(A0 a0, A1 a1)
3058 template <
typename F,
typename C0,
typename C1,
typename A0,
typename A1>
3064 context22(F f, C0 c0, C1 c1)
3065 : f(f), c0(c0), c1(c1) {}
3067 void operator()(A0 a0, A1 a1)
3073 template <
typename F,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1>
3080 context32(F f, C0 c0, C1 c1, C2 c2)
3081 : f(f), c0(c0), c1(c1), c2(c2) {}
3083 void operator()(A0 a0, A1 a1)
3085 f(c0, c1, c2, a0, a1);
3089 template <
typename F,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1>
3097 context42(F f, C0 c0, C1 c1, C2 c2, C3 c3)
3098 : f(f), c0(c0), c1(c1), c2(c2), c3(c3) {}
3100 void operator()(A0 a0, A1 a1)
3102 f(c0, c1, c2, c3, a0, a1);
3106 template <
typename F,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1>
3115 context52(F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
3116 : f(f), c0(c0), c1(c1), c2(c2), c3(c3), c4(c4) {}
3118 void operator()(A0 a0, A1 a1)
3120 f(c0, c1, c2, c3, c4, a0, a1);
3124 template <
typename F,
typename A0,
typename A1,
typename A2>
3131 void operator()(A0 a0, A1 a1, A2 a2)
3137 template <
typename F,
typename C0,
typename A0,
typename A1,
typename A2>
3142 context13(F f, C0 c0)
3145 void operator()(A0 a0, A1 a1, A2 a2)
3151 template <
typename F,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2>
3157 context23(F f, C0 c0, C1 c1)
3158 : f(f), c0(c0), c1(c1) {}
3160 void operator()(A0 a0, A1 a1, A2 a2)
3162 f(c0, c1, a0, a1, a2);
3166 template <
typename F,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2>
3173 context33(F f, C0 c0, C1 c1, C2 c2)
3174 : f(f), c0(c0), c1(c1), c2(c2) {}
3176 void operator()(A0 a0, A1 a1, A2 a2)
3178 f(c0, c1, c2, a0, a1, a2);
3182 template <
typename F,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2>
3190 context43(F f, C0 c0, C1 c1, C2 c2, C3 c3)
3191 : f(f), c0(c0), c1(c1), c2(c2), c3(c3) {}
3193 void operator()(A0 a0, A1 a1, A2 a2)
3195 f(c0, c1, c2, c3, a0, a1, a2);
3199 template <
typename F,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2>
3208 context53(F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
3209 : f(f), c0(c0), c1(c1), c2(c2), c3(c3), c4(c4) {}
3211 void operator()(A0 a0, A1 a1, A2 a2)
3213 f(c0, c1, c2, c3, c4, a0, a1, a2);
3217 template <
typename F,
typename A0,
typename A1,
typename A2,
typename A3>
3224 void operator()(A0 a0, A1 a1, A2 a2, A3 a3)
3230 template <
typename F,
typename C0,
typename A0,
typename A1,
typename A2,
typename A3>
3235 context14(F f, C0 c0)
3238 void operator()(A0 a0, A1 a1, A2 a2, A3 a3)
3240 f(c0, a0, a1, a2, a3);
3244 template <
typename F,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2,
typename A3>
3250 context24(F f, C0 c0, C1 c1)
3251 : f(f), c0(c0), c1(c1) {}
3253 void operator()(A0 a0, A1 a1, A2 a2, A3 a3)
3255 f(c0, c1, a0, a1, a2, a3);
3259 template <
typename F,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2,
typename A3>
3266 context34(F f, C0 c0, C1 c1, C2 c2)
3267 : f(f), c0(c0), c1(c1), c2(c2) {}
3269 void operator()(A0 a0, A1 a1, A2 a2, A3 a3)
3271 f(c0, c1, c2, a0, a1, a2, a3);
3275 template <
typename F,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2,
typename A3>
3283 context44(F f, C0 c0, C1 c1, C2 c2, C3 c3)
3284 : f(f), c0(c0), c1(c1), c2(c2), c3(c3) {}
3286 void operator()(A0 a0, A1 a1, A2 a2, A3 a3)
3288 f(c0, c1, c2, c3, a0, a1, a2, a3);
3292 template <
typename F,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2,
typename A3>
3301 context54(F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
3302 : f(f), c0(c0), c1(c1), c2(c2), c3(c3), c4(c4) {}
3304 void operator()(A0 a0, A1 a1, A2 a2, A3 a3)
3306 f(c0, c1, c2, c3, c4, a0, a1, a2, a3);
3310 template <
typename F,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
3317 void operator()(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
3319 f(a0, a1, a2, a3, a4);
3323 template <
typename F,
typename C0,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
3328 context15(F f, C0 c0)
3331 void operator()(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
3333 f(c0, a0, a1, a2, a3, a4);
3337 template <
typename F,
typename C0,
typename C1,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
3343 context25(F f, C0 c0, C1 c1)
3344 : f(f), c0(c0), c1(c1) {}
3346 void operator()(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
3348 f(c0, c1, a0, a1, a2, a3, a4);
3352 template <
typename F,
typename C0,
typename C1,
typename C2,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
3359 context35(F f, C0 c0, C1 c1, C2 c2)
3360 : f(f), c0(c0), c1(c1), c2(c2) {}
3362 void operator()(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
3364 f(c0, c1, c2, a0, a1, a2, a3, a4);
3368 template <
typename F,
typename C0,
typename C1,
typename C2,
typename C3,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
3376 context45(F f, C0 c0, C1 c1, C2 c2, C3 c3)
3377 : f(f), c0(c0), c1(c1), c2(c2), c3(c3) {}
3379 void operator()(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
3381 f(c0, c1, c2, c3, a0, a1, a2, a3, a4);
3385 template <
typename F,
typename C0,
typename C1,
typename C2,
typename C3,
typename C4,
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
3394 context55(F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
3395 : f(f), c0(c0), c1(c1), c2(c2), c3(c3), c4(c4) {}
3397 void operator()(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
3399 f(c0, c1, c2, c3, c4, a0, a1, a2, a3, a4);
void dispatch_forever()
Dispatch events without a timeout.
int time_left(int id)
Query how much time is left for delayed event.
void break_dispatch()
Break out of a running event loop.
EventQueue(unsigned size=(32 *((sizeof(struct equeue_event)+2 *sizeof(void *))-2 *sizeof(void *)+sizeof(mbed::Callback< void()>))), unsigned char *buffer=NULL)
Create an EventQueue.
Event< void(Args...)> event(R(*func)(BoundArgs...), Args...args)
Creates an event bound to the event queue.
int chain(EventQueue *target)
Chain an event queue onto another event queue.
Prevents generation of copy constructor and copy assignment operator in derived classes.
void cancel(int id)
Cancel an in-flight event.
unsigned tick()
Millisecond counter.
void background(mbed::Callback< void(int)> update)
Background an event queue onto a single-shot timer-interrupt.
int call(F f, Args...args)
Calls an event on the queue.
~EventQueue()
Destroy an EventQueue.
Callback class based on template specialization.
int call_every(int ms, F f, Args...args)
Calls an event on the queue periodically.
int call_in(int ms, Args...args)
Calls an event on the queue after a specified delay.
void dispatch(int ms=-1)
Dispatch events.