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.