20 #include "events/EventQueue.h"    21 #include "platform/mbed_assert.h"    52     Event(EventQueue *q, F f)
    54         _event = 
static_cast<struct event *
>(
    55                      equeue_alloc(&q->_equeue, 
sizeof(
struct event) + 
sizeof(F)));
    58             _event->equeue = &q->_equeue;
    63             _event->post = &Event::event_post<F>;
    64             _event->dtor = &Event::event_dtor<F>;
    66             new (_event + 1) F(f);
    85     Event &operator=(
const Event &that)
    89             new (
this) Event(that);
   101             if (_event->ref == 0) {
   102                 _event->dtor(_event);
   103                 equeue_dealloc(_event->equeue, _event);
   112     void delay(
int delay)
   115             _event->delay = delay;
   123     void period(
int period)
   126             _event->period = period;
   148         _event->id = _event->post(_event);
   164     void operator()()
 const   173     static void thunk(
void *func)
   175         return static_cast<Event *
>(func)->call();
   192             equeue_cancel(_event->equeue, _event->id);
   205         int (*post)(
struct event *);
   206         void (*dtor)(
struct event *);
   212     template <
typename F>
   213     static int event_post(
struct event *e)
   215         typedef EventQueue::context00<F> C;
   216         void *p = equeue_alloc(e->equeue, 
sizeof(C));
   221         new (p) C(*(F *)(e + 1));
   222         equeue_event_delay(p, e->delay);
   223         equeue_event_period(p, e->period);
   224         equeue_event_dtor(p, &EventQueue::function_dtor<C>);
   225         return equeue_post(e->equeue, &EventQueue::function_call<C>, p);
   228     template <
typename F>
   229     static void event_dtor(
struct event *e)
   231         ((F *)(e + 1))->~F();
   243     template <
typename F, 
typename C0>
   244     Event(EventQueue *q, F f, C0 c0)
   246         new (
this) Event(q, EventQueue::context10<F, C0>(f, c0));
   257     template <
typename F, 
typename C0, 
typename C1>
   258     Event(EventQueue *q, F f, C0 c0, C1 c1)
   260         new (
this) Event(q, EventQueue::context20<F, C0, C1>(f, c0, c1));
   271     template <
typename F, 
typename C0, 
typename C1, 
typename C2>
   272     Event(EventQueue *q, F f, C0 c0, C1 c1, C2 c2)
   274         new (
this) Event(q, EventQueue::context30<F, C0, C1, C2>(f, c0, c1, c2));
   285     template <
typename F, 
typename C0, 
typename C1, 
typename C2, 
typename C3>
   286     Event(EventQueue *q, F f, C0 c0, C1 c1, C2 c2, C3 c3)
   288         new (
this) Event(q, EventQueue::context40<F, C0, C1, C2, C3>(f, c0, c1, c2, c3));
   299     template <
typename F, 
typename C0, 
typename C1, 
typename C2, 
typename C3, 
typename C4>
   300     Event(EventQueue *q, F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
   302         new (
this) Event(q, EventQueue::context50<F, C0, C1, C2, C3, C4>(f, c0, c1, c2, c3, c4));
   308     template <
typename T, 
typename R, 
typename B0>
   309     Event(EventQueue *q, T *obj, R(T::*method)(B0), B0 b0)
   317     template <
typename T, 
typename R, 
typename B0>
   318     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0) 
const, B0 b0)
   326     template <
typename T, 
typename R, 
typename B0>
   327     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0) 
volatile, B0 b0)
   335     template <
typename T, 
typename R, 
typename B0>
   336     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0) 
const volatile, B0 b0)
   344     template <
typename T, 
typename R, 
typename B0, 
typename B1>
   345     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1), B0 b0, B1 b1)
   353     template <
typename T, 
typename R, 
typename B0, 
typename B1>
   354     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1) 
const, B0 b0, B1 b1)
   362     template <
typename T, 
typename R, 
typename B0, 
typename B1>
   363     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1) 
volatile, B0 b0, B1 b1)
   371     template <
typename T, 
typename R, 
typename B0, 
typename B1>
   372     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1) 
const volatile, B0 b0, B1 b1)
   380     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
   381     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2), B0 b0, B1 b1, B2 b2)
   389     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
   390     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, B2) 
const, B0 b0, B1 b1, B2 b2)
   398     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
   399     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, B2) 
volatile, B0 b0, B1 b1, B2 b2)
   407     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
   408     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, B2) 
const volatile, B0 b0, B1 b1, B2 b2)
   416     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
   417     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, B3), B0 b0, B1 b1, B2 b2, B3 b3)
   425     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
   426     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, B2, B3) 
const, B0 b0, B1 b1, B2 b2, B3 b3)
   434     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
   435     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, B2, B3) 
volatile, B0 b0, B1 b1, B2 b2, B3 b3)
   443     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
   444     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, B2, B3) 
const volatile, B0 b0, B1 b1, B2 b2, B3 b3)
   452     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
   453     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, B3, B4), B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
   455         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
   461     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
   462     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, B2, B3, B4) 
const, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
   464         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
   470     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
   471     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4) 
volatile, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
   473         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
   479     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
   480     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4) 
const volatile, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
   482         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
   491 template <
typename A0>
   492 class Event<void(A0)> {
   503     template <
typename F>
   504     Event(EventQueue *q, F f)
   506         _event = 
static_cast<struct event *
>(
   507                      equeue_alloc(&q->_equeue, 
sizeof(
struct event) + 
sizeof(F)));
   510             _event->equeue = &q->_equeue;
   515             _event->post = &Event::event_post<F>;
   516             _event->dtor = &Event::event_dtor<F>;
   518             new (_event + 1) F(f);
   526     Event(
const Event &e)
   537     Event &operator=(
const Event &that)
   541             new (
this) Event(that);
   553             if (_event->ref == 0) {
   554                 _event->dtor(_event);
   555                 equeue_dealloc(_event->equeue, _event);
   564     void delay(
int delay)
   567             _event->delay = delay;
   575     void period(
int period)
   578             _event->period = period;
   595     int post(A0 a0)
 const   601         _event->id = _event->post(_event, a0);
   609     void call(A0 a0)
 const   619     void operator()(A0 a0)
 const   629     static void thunk(
void *func, A0 a0)
   631         return static_cast<Event *
>(func)->call(a0);
   648             equeue_cancel(_event->equeue, _event->id);
   661         int (*post)(
struct event *, A0 a0);
   662         void (*dtor)(
struct event *);
   668     template <
typename F>
   669     static int event_post(
struct event *e, A0 a0)
   671         typedef EventQueue::context10<F, A0> C;
   672         void *p = equeue_alloc(e->equeue, 
sizeof(C));
   677         new (p) C(*(F *)(e + 1), a0);
   678         equeue_event_delay(p, e->delay);
   679         equeue_event_period(p, e->period);
   680         equeue_event_dtor(p, &EventQueue::function_dtor<C>);
   681         return equeue_post(e->equeue, &EventQueue::function_call<C>, p);
   684     template <
typename F>
   685     static void event_dtor(
struct event *e)
   687         ((F *)(e + 1))->~F();
   699     template <
typename F, 
typename C0>
   700     Event(EventQueue *q, F f, C0 c0)
   702         new (
this) Event(q, EventQueue::context11<F, C0, A0>(f, c0));
   713     template <
typename F, 
typename C0, 
typename C1>
   714     Event(EventQueue *q, F f, C0 c0, C1 c1)
   716         new (
this) Event(q, EventQueue::context21<F, C0, C1, A0>(f, c0, c1));
   727     template <
typename F, 
typename C0, 
typename C1, 
typename C2>
   728     Event(EventQueue *q, F f, C0 c0, C1 c1, C2 c2)
   730         new (
this) Event(q, EventQueue::context31<F, C0, C1, C2, A0>(f, c0, c1, c2));
   741     template <
typename F, 
typename C0, 
typename C1, 
typename C2, 
typename C3>
   742     Event(EventQueue *q, F f, C0 c0, C1 c1, C2 c2, C3 c3)
   744         new (
this) Event(q, EventQueue::context41<F, C0, C1, C2, C3, A0>(f, c0, c1, c2, c3));
   755     template <
typename F, 
typename C0, 
typename C1, 
typename C2, 
typename C3, 
typename C4>
   756     Event(EventQueue *q, F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
   758         new (
this) Event(q, EventQueue::context51<F, C0, C1, C2, C3, C4, A0>(f, c0, c1, c2, c3, c4));
   764     template <
typename T, 
typename R, 
typename B0>
   765     Event(EventQueue *q, T *obj, R(T::*method)(B0, A0), B0 b0)
   773     template <
typename T, 
typename R, 
typename B0>
   774     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, A0) 
const, B0 b0)
   782     template <
typename T, 
typename R, 
typename B0>
   783     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, A0) 
volatile, B0 b0)
   791     template <
typename T, 
typename R, 
typename B0>
   792     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, A0) 
const volatile, B0 b0)
   800     template <
typename T, 
typename R, 
typename B0, 
typename B1>
   801     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, A0), B0 b0, B1 b1)
   809     template <
typename T, 
typename R, 
typename B0, 
typename B1>
   810     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, A0) 
const, B0 b0, B1 b1)
   818     template <
typename T, 
typename R, 
typename B0, 
typename B1>
   819     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, A0) 
volatile, B0 b0, B1 b1)
   827     template <
typename T, 
typename R, 
typename B0, 
typename B1>
   828     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, A0) 
const volatile, B0 b0, B1 b1)
   836     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
   837     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, A0), B0 b0, B1 b1, B2 b2)
   845     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
   846     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, B2, A0) 
const, B0 b0, B1 b1, B2 b2)
   854     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
   855     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, B2, A0) 
volatile, B0 b0, B1 b1, B2 b2)
   863     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
   864     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, B2, A0) 
const volatile, B0 b0, B1 b1, B2 b2)
   872     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
   873     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, B3, A0), B0 b0, B1 b1, B2 b2, B3 b3)
   881     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
   882     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, B2, B3, A0) 
const, B0 b0, B1 b1, B2 b2, B3 b3)
   890     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
   891     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0) 
volatile, B0 b0, B1 b1, B2 b2, B3 b3)
   899     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
   900     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0) 
const volatile, B0 b0, B1 b1, B2 b2, B3 b3)
   908     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
   909     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0), B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
   911         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
   917     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
   918     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0) 
const, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
   920         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
   926     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
   927     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0) 
volatile, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
   929         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
   935     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
   936     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0) 
const volatile, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
   938         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
   947 template <
typename A0, 
typename A1>
   948 class Event<void(A0, A1)> {
   959     template <
typename F>
   960     Event(EventQueue *q, F f)
   962         _event = 
static_cast<struct event *
>(
   963                      equeue_alloc(&q->_equeue, 
sizeof(
struct event) + 
sizeof(F)));
   966             _event->equeue = &q->_equeue;
   971             _event->post = &Event::event_post<F>;
   972             _event->dtor = &Event::event_dtor<F>;
   974             new (_event + 1) F(f);
   982     Event(
const Event &e)
   993     Event &operator=(
const Event &that)
   997             new (
this) Event(that);
  1009             if (_event->ref == 0) {
  1010                 _event->dtor(_event);
  1011                 equeue_dealloc(_event->equeue, _event);
  1020     void delay(
int delay)
  1023             _event->delay = delay;
  1031     void period(
int period)
  1034             _event->period = period;
  1051     int post(A0 a0, A1 a1)
 const  1057         _event->id = _event->post(_event, a0, a1);
  1065     void call(A0 a0, A1 a1)
 const  1075     void operator()(A0 a0, A1 a1)
 const  1077         return call(a0, a1);
  1085     static void thunk(
void *func, A0 a0, A1 a1)
  1087         return static_cast<Event *
>(func)->call(a0, a1);
  1104             equeue_cancel(_event->equeue, _event->id);
  1117         int (*post)(
struct event *, A0 a0, A1 a1);
  1118         void (*dtor)(
struct event *);
  1124     template <
typename F>
  1125     static int event_post(
struct event *e, A0 a0, A1 a1)
  1127         typedef EventQueue::context20<F, A0, A1> C;
  1128         void *p = equeue_alloc(e->equeue, 
sizeof(C));
  1133         new (p) C(*(F *)(e + 1), a0, a1);
  1134         equeue_event_delay(p, e->delay);
  1135         equeue_event_period(p, e->period);
  1136         equeue_event_dtor(p, &EventQueue::function_dtor<C>);
  1137         return equeue_post(e->equeue, &EventQueue::function_call<C>, p);
  1140     template <
typename F>
  1141     static void event_dtor(
struct event *e)
  1143         ((F *)(e + 1))->~F();
  1155     template <
typename F, 
typename C0>
  1156     Event(EventQueue *q, F f, C0 c0)
  1158         new (
this) Event(q, EventQueue::context12<F, C0, A0, A1>(f, c0));
  1169     template <
typename F, 
typename C0, 
typename C1>
  1170     Event(EventQueue *q, F f, C0 c0, C1 c1)
  1172         new (
this) Event(q, EventQueue::context22<F, C0, C1, A0, A1>(f, c0, c1));
  1183     template <
typename F, 
typename C0, 
typename C1, 
typename C2>
  1184     Event(EventQueue *q, F f, C0 c0, C1 c1, C2 c2)
  1186         new (
this) Event(q, EventQueue::context32<F, C0, C1, C2, A0, A1>(f, c0, c1, c2));
  1197     template <
typename F, 
typename C0, 
typename C1, 
typename C2, 
typename C3>
  1198     Event(EventQueue *q, F f, C0 c0, C1 c1, C2 c2, C3 c3)
  1200         new (
this) Event(q, EventQueue::context42<F, C0, C1, C2, C3, A0, A1>(f, c0, c1, c2, c3));
  1211     template <
typename F, 
typename C0, 
typename C1, 
typename C2, 
typename C3, 
typename C4>
  1212     Event(EventQueue *q, F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  1214         new (
this) Event(q, EventQueue::context52<F, C0, C1, C2, C3, C4, A0, A1>(f, c0, c1, c2, c3, c4));
  1220     template <
typename T, 
typename R, 
typename B0>
  1221     Event(EventQueue *q, T *obj, R(T::*method)(B0, A0, A1), B0 b0)
  1229     template <
typename T, 
typename R, 
typename B0>
  1230     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, A0, A1) 
const, B0 b0)
  1238     template <
typename T, 
typename R, 
typename B0>
  1239     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, A0, A1) 
volatile, B0 b0)
  1247     template <
typename T, 
typename R, 
typename B0>
  1248     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, A0, A1) 
const volatile, B0 b0)
  1256     template <
typename T, 
typename R, 
typename B0, 
typename B1>
  1257     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, A0, A1), B0 b0, B1 b1)
  1265     template <
typename T, 
typename R, 
typename B0, 
typename B1>
  1266     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, A0, A1) 
const, B0 b0, B1 b1)
  1274     template <
typename T, 
typename R, 
typename B0, 
typename B1>
  1275     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, A0, A1) 
volatile, B0 b0, B1 b1)
  1283     template <
typename T, 
typename R, 
typename B0, 
typename B1>
  1284     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, A0, A1) 
const volatile, B0 b0, B1 b1)
  1292     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
  1293     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, A0, A1), B0 b0, B1 b1, B2 b2)
  1301     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
  1302     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, B2, A0, A1) 
const, B0 b0, B1 b1, B2 b2)
  1310     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
  1311     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1) 
volatile, B0 b0, B1 b1, B2 b2)
  1319     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
  1320     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1) 
const volatile, B0 b0, B1 b1, B2 b2)
  1328     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
  1329     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1), B0 b0, B1 b1, B2 b2, B3 b3)
  1331         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3);
  1337     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
  1338     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1) 
const, B0 b0, B1 b1, B2 b2, B3 b3)
  1340         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3);
  1346     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
  1347     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1) 
volatile, B0 b0, B1 b1, B2 b2, B3 b3)
  1349         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3);
  1355     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
  1356     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1) 
const volatile, B0 b0, B1 b1, B2 b2, B3 b3)
  1358         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3);
  1364     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
  1365     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1), B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
  1367         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
  1373     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
  1374     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1) 
const, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
  1376         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
  1382     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
  1383     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1) 
volatile, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
  1385         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
  1391     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
  1392     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1) 
const volatile, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
  1394         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
  1403 template <
typename A0, 
typename A1, 
typename A2>
  1404 class Event<void(A0, A1, A2)> {
  1415     template <
typename F>
  1416     Event(EventQueue *q, F f)
  1418         _event = 
static_cast<struct event *
>(
  1419                      equeue_alloc(&q->_equeue, 
sizeof(
struct event) + 
sizeof(F)));
  1422             _event->equeue = &q->_equeue;
  1425             _event->period = -1;
  1427             _event->post = &Event::event_post<F>;
  1428             _event->dtor = &Event::event_dtor<F>;
  1430             new (_event + 1) F(f);
  1438     Event(
const Event &e)
  1449     Event &operator=(
const Event &that)
  1451         if (
this != &that) {
  1453             new (
this) Event(that);
  1465             if (_event->ref == 0) {
  1466                 _event->dtor(_event);
  1467                 equeue_dealloc(_event->equeue, _event);
  1476     void delay(
int delay)
  1479             _event->delay = delay;
  1487     void period(
int period)
  1490             _event->period = period;
  1507     int post(A0 a0, A1 a1, A2 a2)
 const  1513         _event->id = _event->post(_event, a0, a1, a2);
  1521     void call(A0 a0, A1 a1, A2 a2)
 const  1531     void operator()(A0 a0, A1 a1, A2 a2)
 const  1533         return call(a0, a1, a2);
  1541     static void thunk(
void *func, A0 a0, A1 a1, A2 a2)
  1543         return static_cast<Event *
>(func)->call(a0, a1, a2);
  1560             equeue_cancel(_event->equeue, _event->id);
  1573         int (*post)(
struct event *, A0 a0, A1 a1, A2 a2);
  1574         void (*dtor)(
struct event *);
  1580     template <
typename F>
  1581     static int event_post(
struct event *e, A0 a0, A1 a1, A2 a2)
  1583         typedef EventQueue::context30<F, A0, A1, A2> C;
  1584         void *p = equeue_alloc(e->equeue, 
sizeof(C));
  1589         new (p) C(*(F *)(e + 1), a0, a1, a2);
  1590         equeue_event_delay(p, e->delay);
  1591         equeue_event_period(p, e->period);
  1592         equeue_event_dtor(p, &EventQueue::function_dtor<C>);
  1593         return equeue_post(e->equeue, &EventQueue::function_call<C>, p);
  1596     template <
typename F>
  1597     static void event_dtor(
struct event *e)
  1599         ((F *)(e + 1))->~F();
  1611     template <
typename F, 
typename C0>
  1612     Event(EventQueue *q, F f, C0 c0)
  1614         new (
this) Event(q, EventQueue::context13<F, C0, A0, A1, A2>(f, c0));
  1625     template <
typename F, 
typename C0, 
typename C1>
  1626     Event(EventQueue *q, F f, C0 c0, C1 c1)
  1628         new (
this) Event(q, EventQueue::context23<F, C0, C1, A0, A1, A2>(f, c0, c1));
  1639     template <
typename F, 
typename C0, 
typename C1, 
typename C2>
  1640     Event(EventQueue *q, F f, C0 c0, C1 c1, C2 c2)
  1642         new (
this) Event(q, EventQueue::context33<F, C0, C1, C2, A0, A1, A2>(f, c0, c1, c2));
  1653     template <
typename F, 
typename C0, 
typename C1, 
typename C2, 
typename C3>
  1654     Event(EventQueue *q, F f, C0 c0, C1 c1, C2 c2, C3 c3)
  1656         new (
this) Event(q, EventQueue::context43<F, C0, C1, C2, C3, A0, A1, A2>(f, c0, c1, c2, c3));
  1667     template <
typename F, 
typename C0, 
typename C1, 
typename C2, 
typename C3, 
typename C4>
  1668     Event(EventQueue *q, F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  1670         new (
this) Event(q, EventQueue::context53<F, C0, C1, C2, C3, C4, A0, A1, A2>(f, c0, c1, c2, c3, c4));
  1676     template <
typename T, 
typename R, 
typename B0>
  1677     Event(EventQueue *q, T *obj, R(T::*method)(B0, A0, A1, A2), B0 b0)
  1685     template <
typename T, 
typename R, 
typename B0>
  1686     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, A0, A1, A2) 
const, B0 b0)
  1694     template <
typename T, 
typename R, 
typename B0>
  1695     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, A0, A1, A2) 
volatile, B0 b0)
  1703     template <
typename T, 
typename R, 
typename B0>
  1704     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, A0, A1, A2) 
const volatile, B0 b0)
  1712     template <
typename T, 
typename R, 
typename B0, 
typename B1>
  1713     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, A0, A1, A2), B0 b0, B1 b1)
  1721     template <
typename T, 
typename R, 
typename B0, 
typename B1>
  1722     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, A0, A1, A2) 
const, B0 b0, B1 b1)
  1730     template <
typename T, 
typename R, 
typename B0, 
typename B1>
  1731     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, A0, A1, A2) 
volatile, B0 b0, B1 b1)
  1739     template <
typename T, 
typename R, 
typename B0, 
typename B1>
  1740     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, A0, A1, A2) 
const volatile, B0 b0, B1 b1)
  1748     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
  1749     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2), B0 b0, B1 b1, B2 b2)
  1757     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
  1758     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2) 
const, B0 b0, B1 b1, B2 b2)
  1766     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
  1767     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2) 
volatile, B0 b0, B1 b1, B2 b2)
  1775     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
  1776     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2) 
const volatile, B0 b0, B1 b1, B2 b2)
  1784     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
  1785     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2), B0 b0, B1 b1, B2 b2, B3 b3)
  1787         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3);
  1793     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
  1794     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2) 
const, B0 b0, B1 b1, B2 b2, B3 b3)
  1796         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3);
  1802     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
  1803     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2) 
volatile, B0 b0, B1 b1, B2 b2, B3 b3)
  1805         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3);
  1811     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
  1812     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2) 
const volatile, B0 b0, B1 b1, B2 b2, B3 b3)
  1814         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3);
  1820     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
  1821     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2), B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
  1823         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
  1829     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
  1830     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2) 
const, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
  1832         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
  1838     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
  1839     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2) 
volatile, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
  1841         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
  1847     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
  1848     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2) 
const volatile, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
  1850         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
  1859 template <
typename A0, 
typename A1, 
typename A2, 
typename A3>
  1860 class Event<void(A0, A1, A2, A3)> {
  1871     template <
typename F>
  1872     Event(EventQueue *q, F f)
  1874         _event = 
static_cast<struct event *
>(
  1875                      equeue_alloc(&q->_equeue, 
sizeof(
struct event) + 
sizeof(F)));
  1878             _event->equeue = &q->_equeue;
  1881             _event->period = -1;
  1883             _event->post = &Event::event_post<F>;
  1884             _event->dtor = &Event::event_dtor<F>;
  1886             new (_event + 1) F(f);
  1894     Event(
const Event &e)
  1905     Event &operator=(
const Event &that)
  1907         if (
this != &that) {
  1909             new (
this) Event(that);
  1921             if (_event->ref == 0) {
  1922                 _event->dtor(_event);
  1923                 equeue_dealloc(_event->equeue, _event);
  1932     void delay(
int delay)
  1935             _event->delay = delay;
  1943     void period(
int period)
  1946             _event->period = period;
  1963     int post(A0 a0, A1 a1, A2 a2, A3 a3)
 const  1969         _event->id = _event->post(_event, a0, a1, a2, a3);
  1977     void call(A0 a0, A1 a1, A2 a2, A3 a3)
 const  1987     void operator()(A0 a0, A1 a1, A2 a2, A3 a3)
 const  1989         return call(a0, a1, a2, a3);
  1997     static void thunk(
void *func, A0 a0, A1 a1, A2 a2, A3 a3)
  1999         return static_cast<Event *
>(func)->call(a0, a1, a2, a3);
  2016             equeue_cancel(_event->equeue, _event->id);
  2029         int (*post)(
struct event *, A0 a0, A1 a1, A2 a2, A3 a3);
  2030         void (*dtor)(
struct event *);
  2036     template <
typename F>
  2037     static int event_post(
struct event *e, A0 a0, A1 a1, A2 a2, A3 a3)
  2039         typedef EventQueue::context40<F, A0, A1, A2, A3> C;
  2040         void *p = equeue_alloc(e->equeue, 
sizeof(C));
  2045         new (p) C(*(F *)(e + 1), a0, a1, a2, a3);
  2046         equeue_event_delay(p, e->delay);
  2047         equeue_event_period(p, e->period);
  2048         equeue_event_dtor(p, &EventQueue::function_dtor<C>);
  2049         return equeue_post(e->equeue, &EventQueue::function_call<C>, p);
  2052     template <
typename F>
  2053     static void event_dtor(
struct event *e)
  2055         ((F *)(e + 1))->~F();
  2059 #if !defined(DOXYGEN_ONLY)  2068     template <
typename F, 
typename C0>
  2069     Event(EventQueue *q, F f, C0 c0)
  2071         new (
this) Event(q, EventQueue::context14<F, C0, A0, A1, A2, A3>(f, c0));
  2082     template <
typename F, 
typename C0, 
typename C1>
  2083     Event(EventQueue *q, F f, C0 c0, C1 c1)
  2085         new (
this) Event(q, EventQueue::context24<F, C0, C1, A0, A1, A2, A3>(f, c0, c1));
  2096     template <
typename F, 
typename C0, 
typename C1, 
typename C2>
  2097     Event(EventQueue *q, F f, C0 c0, C1 c1, C2 c2)
  2099         new (
this) Event(q, EventQueue::context34<F, C0, C1, C2, A0, A1, A2, A3>(f, c0, c1, c2));
  2110     template <
typename F, 
typename C0, 
typename C1, 
typename C2, 
typename C3>
  2111     Event(EventQueue *q, F f, C0 c0, C1 c1, C2 c2, C3 c3)
  2113         new (
this) Event(q, EventQueue::context44<F, C0, C1, C2, C3, A0, A1, A2, A3>(f, c0, c1, c2, c3));
  2124     template <
typename F, 
typename C0, 
typename C1, 
typename C2, 
typename C3, 
typename C4>
  2125     Event(EventQueue *q, F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  2127         new (
this) Event(q, EventQueue::context54<F, C0, C1, C2, C3, C4, A0, A1, A2, A3>(f, c0, c1, c2, c3, c4));
  2133     template <
typename T, 
typename R, 
typename B0>
  2134     Event(EventQueue *q, T *obj, R(T::*method)(B0, A0, A1, A2, A3), B0 b0)
  2142     template <
typename T, 
typename R, 
typename B0>
  2143     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, A0, A1, A2, A3) 
const, B0 b0)
  2151     template <
typename T, 
typename R, 
typename B0>
  2152     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, A0, A1, A2, A3) 
volatile, B0 b0)
  2160     template <
typename T, 
typename R, 
typename B0>
  2161     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, A0, A1, A2, A3) 
const volatile, B0 b0)
  2169     template <
typename T, 
typename R, 
typename B0, 
typename B1>
  2170     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3), B0 b0, B1 b1)
  2178     template <
typename T, 
typename R, 
typename B0, 
typename B1>
  2179     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3) 
const, B0 b0, B1 b1)
  2187     template <
typename T, 
typename R, 
typename B0, 
typename B1>
  2188     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3) 
volatile, B0 b0, B1 b1)
  2196     template <
typename T, 
typename R, 
typename B0, 
typename B1>
  2197     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3) 
const volatile, B0 b0, B1 b1)
  2205     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
  2206     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3), B0 b0, B1 b1, B2 b2)
  2214     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
  2215     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3) 
const, B0 b0, B1 b1, B2 b2)
  2223     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
  2224     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3) 
volatile, B0 b0, B1 b1, B2 b2)
  2232     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
  2233     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3) 
const volatile, B0 b0, B1 b1, B2 b2)
  2241     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
  2242     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3), B0 b0, B1 b1, B2 b2, B3 b3)
  2244         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3);
  2250     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
  2251     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3) 
const, B0 b0, B1 b1, B2 b2, B3 b3)
  2253         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3);
  2259     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
  2260     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3) 
volatile, B0 b0, B1 b1, B2 b2, B3 b3)
  2262         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3);
  2268     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
  2269     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3) 
const volatile, B0 b0, B1 b1, B2 b2, B3 b3)
  2271         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3);
  2277     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
  2278     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3), B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
  2280         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
  2286     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
  2287     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3) 
const, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
  2289         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
  2295     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
  2296     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3) 
volatile, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
  2298         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
  2304     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
  2305     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3) 
const volatile, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
  2307         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
  2316 template <
typename A0, 
typename A1, 
typename A2, 
typename A3, 
typename A4>
  2317 class Event<void(A0, A1, A2, A3, A4)> {
  2328     template <
typename F>
  2329     Event(EventQueue *q, F f)
  2331         _event = 
static_cast<struct event *
>(
  2332                      equeue_alloc(&q->_equeue, 
sizeof(
struct event) + 
sizeof(F)));
  2335             _event->equeue = &q->_equeue;
  2338             _event->period = -1;
  2340             _event->post = &Event::event_post<F>;
  2341             _event->dtor = &Event::event_dtor<F>;
  2343             new (_event + 1) F(f);
  2351     Event(
const Event &e)
  2362     Event &operator=(
const Event &that)
  2364         if (
this != &that) {
  2366             new (
this) Event(that);
  2378             if (_event->ref == 0) {
  2379                 _event->dtor(_event);
  2380                 equeue_dealloc(_event->equeue, _event);
  2389     void delay(
int delay)
  2392             _event->delay = delay;
  2400     void period(
int period)
  2403             _event->period = period;
  2420     int post(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
 const  2426         _event->id = _event->post(_event, a0, a1, a2, a3, a4);
  2434     void call(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
 const  2444     void operator()(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
 const  2446         return call(a0, a1, a2, a3, a4);
  2454     static void thunk(
void *func, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
  2456         return static_cast<Event *
>(func)->call(a0, a1, a2, a3, a4);
  2473             equeue_cancel(_event->equeue, _event->id);
  2486         int (*post)(
struct event *, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4);
  2487         void (*dtor)(
struct event *);
  2493     template <
typename F>
  2494     static int event_post(
struct event *e, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
  2496         typedef EventQueue::context50<F, A0, A1, A2, A3, A4> C;
  2497         void *p = equeue_alloc(e->equeue, 
sizeof(C));
  2502         new (p) C(*(F *)(e + 1), a0, a1, a2, a3, a4);
  2503         equeue_event_delay(p, e->delay);
  2504         equeue_event_period(p, e->period);
  2505         equeue_event_dtor(p, &EventQueue::function_dtor<C>);
  2506         return equeue_post(e->equeue, &EventQueue::function_call<C>, p);
  2509     template <
typename F>
  2510     static void event_dtor(
struct event *e)
  2512         ((F *)(e + 1))->~F();
  2524     template <
typename F, 
typename C0>
  2525     Event(EventQueue *q, F f, C0 c0)
  2527         new (
this) Event(q, EventQueue::context15<F, C0, A0, A1, A2, A3, A4>(f, c0));
  2538     template <
typename F, 
typename C0, 
typename C1>
  2539     Event(EventQueue *q, F f, C0 c0, C1 c1)
  2541         new (
this) Event(q, EventQueue::context25<F, C0, C1, A0, A1, A2, A3, A4>(f, c0, c1));
  2552     template <
typename F, 
typename C0, 
typename C1, 
typename C2>
  2553     Event(EventQueue *q, F f, C0 c0, C1 c1, C2 c2)
  2555         new (
this) Event(q, EventQueue::context35<F, C0, C1, C2, A0, A1, A2, A3, A4>(f, c0, c1, c2));
  2566     template <
typename F, 
typename C0, 
typename C1, 
typename C2, 
typename C3>
  2567     Event(EventQueue *q, F f, C0 c0, C1 c1, C2 c2, C3 c3)
  2569         new (
this) Event(q, EventQueue::context45<F, C0, C1, C2, C3, A0, A1, A2, A3, A4>(f, c0, c1, c2, c3));
  2580     template <
typename F, 
typename C0, 
typename C1, 
typename C2, 
typename C3, 
typename C4>
  2581     Event(EventQueue *q, F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  2583         new (
this) Event(q, EventQueue::context55<F, C0, C1, C2, C3, C4, A0, A1, A2, A3, A4>(f, c0, c1, c2, c3, c4));
  2589     template <
typename T, 
typename R, 
typename B0>
  2590     Event(EventQueue *q, T *obj, R(T::*method)(B0, A0, A1, A2, A3, A4), B0 b0)
  2598     template <
typename T, 
typename R, 
typename B0>
  2599     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, A0, A1, A2, A3, A4) 
const, B0 b0)
  2607     template <
typename T, 
typename R, 
typename B0>
  2608     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, A0, A1, A2, A3, A4) 
volatile, B0 b0)
  2616     template <
typename T, 
typename R, 
typename B0>
  2617     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, A0, A1, A2, A3, A4) 
const volatile, B0 b0)
  2625     template <
typename T, 
typename R, 
typename B0, 
typename B1>
  2626     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3, A4), B0 b0, B1 b1)
  2634     template <
typename T, 
typename R, 
typename B0, 
typename B1>
  2635     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3, A4) 
const, B0 b0, B1 b1)
  2643     template <
typename T, 
typename R, 
typename B0, 
typename B1>
  2644     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3, A4) 
volatile, B0 b0, B1 b1)
  2652     template <
typename T, 
typename R, 
typename B0, 
typename B1>
  2653     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3, A4) 
const volatile, B0 b0, B1 b1)
  2661     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
  2662     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3, A4), B0 b0, B1 b1, B2 b2)
  2670     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
  2671     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3, A4) 
const, B0 b0, B1 b1, B2 b2)
  2679     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
  2680     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3, A4) 
volatile, B0 b0, B1 b1, B2 b2)
  2688     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2>
  2689     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3, A4) 
const volatile, B0 b0, B1 b1, B2 b2)
  2697     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
  2698     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3, A4), B0 b0, B1 b1, B2 b2, B3 b3)
  2700         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3);
  2706     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
  2707     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3, A4) 
const, B0 b0, B1 b1, B2 b2, B3 b3)
  2709         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3);
  2715     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
  2716     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3, A4) 
volatile, B0 b0, B1 b1, B2 b2, B3 b3)
  2718         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3);
  2724     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3>
  2725     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3, A4) 
const volatile, B0 b0, B1 b1, B2 b2, B3 b3)
  2727         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3);
  2733     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
  2734     Event(EventQueue *q, T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3, A4), B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
  2736         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
  2742     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
  2743     Event(EventQueue *q, 
const T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3, A4) 
const, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
  2745         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
  2751     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
  2752     Event(EventQueue *q, 
volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3, A4) 
volatile, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
  2754         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
  2760     template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4>
  2761     Event(EventQueue *q, 
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3, A4) 
const volatile, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4)
  2763         new (
this) Event(q, 
mbed::callback(obj, method), b0, b1, b2, b3, b4);
  2773 template <
typename R>
  2776     return Event<void()>(
this, func);
  2779 template <
typename T, 
typename R>
  2785 template <
typename T, 
typename R>
  2791 template <
typename T, 
typename R>
  2797 template <
typename T, 
typename R>
  2798 Event<void()> 
EventQueue::event(
const volatile T *obj, R(T::*method)() 
const volatile)
  2803 template <
typename R>
  2806     return Event<void()>(
this, cb);
  2809 template <
typename R, 
typename B0, 
typename C0>
  2812     return Event<void()>(
this, func, c0);
  2815 template <
typename T, 
typename R, 
typename B0, 
typename C0>
  2821 template <
typename T, 
typename R, 
typename B0, 
typename C0>
  2827 template <
typename T, 
typename R, 
typename B0, 
typename C0>
  2828 Event<void()> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0) 
volatile, C0 c0)
  2833 template <
typename T, 
typename R, 
typename B0, 
typename C0>
  2834 Event<void()> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0) 
const volatile, C0 c0)
  2839 template <
typename R, 
typename B0, 
typename C0>
  2842     return Event<void()>(
this, cb, c0);
  2845 template <
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1>
  2848     return Event<void()>(
this, func, c0, c1);
  2851 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1>
  2857 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1>
  2858 Event<void()> 
EventQueue::event(
const T *obj, R(T::*method)(B0, B1) 
const, C0 c0, C1 c1)
  2863 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1>
  2864 Event<void()> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, B1) 
volatile, C0 c0, C1 c1)
  2869 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1>
  2870 Event<void()> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, B1) 
const volatile, C0 c0, C1 c1)
  2875 template <
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1>
  2878     return Event<void()>(
this, cb, c0, c1);
  2881 template <
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2>
  2884     return Event<void()>(
this, func, c0, c1, c2);
  2887 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2>
  2888 Event<void()> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, B2), C0 c0, C1 c1, C2 c2)
  2890     return Event<void()>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  2893 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2>
  2894 Event<void()> 
EventQueue::event(
const T *obj, R(T::*method)(B0, B1, B2) 
const, C0 c0, C1 c1, C2 c2)
  2896     return Event<void()>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  2899 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2>
  2900 Event<void()> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, B1, B2) 
volatile, C0 c0, C1 c1, C2 c2)
  2902     return Event<void()>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  2905 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2>
  2906 Event<void()> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, B1, B2) 
const volatile, C0 c0, C1 c1, C2 c2)
  2908     return Event<void()>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  2911 template <
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2>
  2914     return Event<void()>(
this, cb, c0, c1, c2);
  2917 template <
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename C0, 
typename C1, 
typename C2, 
typename C3>
  2918 Event<void()> 
EventQueue::event(R(*func)(B0, B1, B2, B3), C0 c0, C1 c1, C2 c2, C3 c3)
  2920     return Event<void()>(
this, func, c0, c1, c2, c3);
  2923 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename C0, 
typename C1, 
typename C2, 
typename C3>
  2924 Event<void()> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, B2, B3), C0 c0, C1 c1, C2 c2, C3 c3)
  2926     return Event<void()>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  2929 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename C0, 
typename C1, 
typename C2, 
typename C3>
  2930 Event<void()> 
EventQueue::event(
const T *obj, R(T::*method)(B0, B1, B2, B3) 
const, C0 c0, C1 c1, C2 c2, C3 c3)
  2932     return Event<void()>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  2935 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename C0, 
typename C1, 
typename C2, 
typename C3>
  2936 Event<void()> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, B1, B2, B3) 
volatile, C0 c0, C1 c1, C2 c2, C3 c3)
  2938     return Event<void()>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  2941 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename C0, 
typename C1, 
typename C2, 
typename C3>
  2942 Event<void()> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, B1, B2, B3) 
const volatile, C0 c0, C1 c1, C2 c2, C3 c3)
  2944     return Event<void()>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  2947 template <
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename C0, 
typename C1, 
typename C2, 
typename C3>
  2950     return Event<void()>(
this, cb, c0, c1, c2, c3);
  2953 template <
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4, 
typename C0, 
typename C1, 
typename C2, 
typename C3, 
typename C4>
  2954 Event<void()> 
EventQueue::event(R(*func)(B0, B1, B2, B3, B4), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  2956     return Event<void()>(
this, func, c0, c1, c2, c3, c4);
  2959 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>
  2960 Event<void()> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, B2, B3, B4), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  2962     return Event<void()>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  2965 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>
  2966 Event<void()> 
EventQueue::event(
const T *obj, R(T::*method)(B0, B1, B2, B3, B4) 
const, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  2968     return Event<void()>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  2971 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>
  2972 Event<void()> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4) 
volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  2974     return Event<void()>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  2977 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>
  2978 Event<void()> 
EventQueue::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)
  2980     return Event<void()>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  2983 template <
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename B4, 
typename C0, 
typename C1, 
typename C2, 
typename C3, 
typename C4>
  2986     return Event<void()>(
this, cb, c0, c1, c2, c3, c4);
  2989 template <
typename R, 
typename A0>
  2992     return Event<void(A0)>(
this, func);
  2995 template <
typename T, 
typename R, 
typename A0>
  3001 template <
typename T, 
typename R, 
typename A0>
  3007 template <
typename T, 
typename R, 
typename A0>
  3013 template <
typename T, 
typename R, 
typename A0>
  3014 Event<void(A0)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(A0) 
const volatile)
  3019 template <
typename R, 
typename A0>
  3022     return Event<void(A0)>(
this, cb);
  3025 template <
typename R, 
typename B0, 
typename C0, 
typename A0>
  3028     return Event<void(A0)>(
this, func, c0);
  3031 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0>
  3037 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0>
  3038 Event<void(A0)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, A0) 
const, C0 c0)
  3043 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0>
  3044 Event<void(A0)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, A0) 
volatile, C0 c0)
  3049 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0>
  3050 Event<void(A0)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, A0) 
const volatile, C0 c0)
  3055 template <
typename R, 
typename B0, 
typename C0, 
typename A0>
  3058     return Event<void(A0)>(
this, cb, c0);
  3061 template <
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0>
  3064     return Event<void(A0)>(
this, func, c0, c1);
  3067 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0>
  3068 Event<void(A0)> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, A0), C0 c0, C1 c1)
  3070     return Event<void(A0)>(
this, 
mbed::callback(obj, method), c0, c1);
  3073 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0>
  3074 Event<void(A0)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, B1, A0) 
const, C0 c0, C1 c1)
  3076     return Event<void(A0)>(
this, 
mbed::callback(obj, method), c0, c1);
  3079 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0>
  3080 Event<void(A0)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, B1, A0) 
volatile, C0 c0, C1 c1)
  3082     return Event<void(A0)>(
this, 
mbed::callback(obj, method), c0, c1);
  3085 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0>
  3086 Event<void(A0)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, B1, A0) 
const volatile, C0 c0, C1 c1)
  3088     return Event<void(A0)>(
this, 
mbed::callback(obj, method), c0, c1);
  3091 template <
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0>
  3094     return Event<void(A0)>(
this, cb, c0, c1);
  3097 template <
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0>
  3098 Event<void(A0)> 
EventQueue::event(R(*func)(B0, B1, B2, A0), C0 c0, C1 c1, C2 c2)
  3100     return Event<void(A0)>(
this, func, c0, c1, c2);
  3103 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0>
  3104 Event<void(A0)> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, B2, A0), C0 c0, C1 c1, C2 c2)
  3106     return Event<void(A0)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3109 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0>
  3110 Event<void(A0)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, B1, B2, A0) 
const, C0 c0, C1 c1, C2 c2)
  3112     return Event<void(A0)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3115 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0>
  3116 Event<void(A0)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, B1, B2, A0) 
volatile, C0 c0, C1 c1, C2 c2)
  3118     return Event<void(A0)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3121 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0>
  3122 Event<void(A0)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, B1, B2, A0) 
const volatile, C0 c0, C1 c1, C2 c2)
  3124     return Event<void(A0)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3127 template <
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0>
  3130     return Event<void(A0)>(
this, cb, c0, c1, c2);
  3133 template <
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename C0, 
typename C1, 
typename C2, 
typename C3, 
typename A0>
  3134 Event<void(A0)> 
EventQueue::event(R(*func)(B0, B1, B2, B3, A0), C0 c0, C1 c1, C2 c2, C3 c3)
  3136     return Event<void(A0)>(
this, func, c0, c1, c2, c3);
  3139 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename C0, 
typename C1, 
typename C2, 
typename C3, 
typename A0>
  3140 Event<void(A0)> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, B2, B3, A0), C0 c0, C1 c1, C2 c2, C3 c3)
  3142     return Event<void(A0)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  3145 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename C0, 
typename C1, 
typename C2, 
typename C3, 
typename A0>
  3146 Event<void(A0)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, B1, B2, B3, A0) 
const, C0 c0, C1 c1, C2 c2, C3 c3)
  3148     return Event<void(A0)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  3151 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename C0, 
typename C1, 
typename C2, 
typename C3, 
typename A0>
  3152 Event<void(A0)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0) 
volatile, C0 c0, C1 c1, C2 c2, C3 c3)
  3154     return Event<void(A0)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  3157 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename C0, 
typename C1, 
typename C2, 
typename C3, 
typename A0>
  3158 Event<void(A0)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0) 
const volatile, C0 c0, C1 c1, C2 c2, C3 c3)
  3160     return Event<void(A0)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  3163 template <
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename C0, 
typename C1, 
typename C2, 
typename C3, 
typename A0>
  3166     return Event<void(A0)>(
this, cb, c0, c1, c2, c3);
  3169 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>
  3170 Event<void(A0)> 
EventQueue::event(R(*func)(B0, B1, B2, B3, B4, A0), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  3172     return Event<void(A0)>(
this, func, c0, c1, c2, c3, c4);
  3175 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>
  3176 Event<void(A0)> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  3178     return Event<void(A0)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  3181 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>
  3182 Event<void(A0)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0) 
const, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  3184     return Event<void(A0)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  3187 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>
  3188 Event<void(A0)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0) 
volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  3190     return Event<void(A0)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  3193 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>
  3194 Event<void(A0)> 
EventQueue::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)
  3196     return Event<void(A0)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  3199 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>
  3200 Event<void(A0)> 
EventQueue::event(
mbed::Callback<R(B0, B1, B2, B3, B4, A0)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  3202     return Event<void(A0)>(
this, cb, c0, c1, c2, c3, c4);
  3205 template <
typename R, 
typename A0, 
typename A1>
  3208     return Event<void(A0, A1)>(
this, func);
  3211 template <
typename T, 
typename R, 
typename A0, 
typename A1>
  3217 template <
typename T, 
typename R, 
typename A0, 
typename A1>
  3218 Event<void(A0, A1)> 
EventQueue::event(
const T *obj, R(T::*method)(A0, A1) 
const)
  3223 template <
typename T, 
typename R, 
typename A0, 
typename A1>
  3224 Event<void(A0, A1)> 
EventQueue::event(
volatile T *obj, R(T::*method)(A0, A1) 
volatile)
  3229 template <
typename T, 
typename R, 
typename A0, 
typename A1>
  3230 Event<void(A0, A1)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(A0, A1) 
const volatile)
  3235 template <
typename R, 
typename A0, 
typename A1>
  3238     return Event<void(A0, A1)>(
this, cb);
  3241 template <
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1>
  3244     return Event<void(A0, A1)>(
this, func, c0);
  3247 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1>
  3250     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0);
  3253 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1>
  3254 Event<void(A0, A1)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, A0, A1) 
const, C0 c0)
  3256     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0);
  3259 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1>
  3260 Event<void(A0, A1)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, A0, A1) 
volatile, C0 c0)
  3262     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0);
  3265 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1>
  3266 Event<void(A0, A1)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, A0, A1) 
const volatile, C0 c0)
  3268     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0);
  3271 template <
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1>
  3274     return Event<void(A0, A1)>(
this, cb, c0);
  3277 template <
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1>
  3280     return Event<void(A0, A1)>(
this, func, c0, c1);
  3283 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1>
  3284 Event<void(A0, A1)> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, A0, A1), C0 c0, C1 c1)
  3286     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0, c1);
  3289 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1>
  3290 Event<void(A0, A1)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, B1, A0, A1) 
const, C0 c0, C1 c1)
  3292     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0, c1);
  3295 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1>
  3296 Event<void(A0, A1)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, B1, A0, A1) 
volatile, C0 c0, C1 c1)
  3298     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0, c1);
  3301 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1>
  3302 Event<void(A0, A1)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, B1, A0, A1) 
const volatile, C0 c0, C1 c1)
  3304     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0, c1);
  3307 template <
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1>
  3310     return Event<void(A0, A1)>(
this, cb, c0, c1);
  3313 template <
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0, 
typename A1>
  3314 Event<void(A0, A1)> 
EventQueue::event(R(*func)(B0, B1, B2, A0, A1), C0 c0, C1 c1, C2 c2)
  3316     return Event<void(A0, A1)>(
this, func, c0, c1, c2);
  3319 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0, 
typename A1>
  3320 Event<void(A0, A1)> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, B2, A0, A1), C0 c0, C1 c1, C2 c2)
  3322     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3325 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0, 
typename A1>
  3326 Event<void(A0, A1)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, B1, B2, A0, A1) 
const, C0 c0, C1 c1, C2 c2)
  3328     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3331 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0, 
typename A1>
  3332 Event<void(A0, A1)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1) 
volatile, C0 c0, C1 c1, C2 c2)
  3334     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3337 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0, 
typename A1>
  3338 Event<void(A0, A1)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1) 
const volatile, C0 c0, C1 c1, C2 c2)
  3340     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3343 template <
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0, 
typename A1>
  3346     return Event<void(A0, A1)>(
this, cb, c0, c1, c2);
  3349 template <
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename C0, 
typename C1, 
typename C2, 
typename C3, 
typename A0, 
typename A1>
  3350 Event<void(A0, A1)> 
EventQueue::event(R(*func)(B0, B1, B2, B3, A0, A1), C0 c0, C1 c1, C2 c2, C3 c3)
  3352     return Event<void(A0, A1)>(
this, func, c0, c1, c2, c3);
  3355 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>
  3356 Event<void(A0, A1)> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1), C0 c0, C1 c1, C2 c2, C3 c3)
  3358     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  3361 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>
  3362 Event<void(A0, A1)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1) 
const, C0 c0, C1 c1, C2 c2, C3 c3)
  3364     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  3367 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>
  3368 Event<void(A0, A1)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1) 
volatile, C0 c0, C1 c1, C2 c2, C3 c3)
  3370     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  3373 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>
  3374 Event<void(A0, A1)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1) 
const volatile, C0 c0, C1 c1, C2 c2, C3 c3)
  3376     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  3379 template <
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename B3, 
typename C0, 
typename C1, 
typename C2, 
typename C3, 
typename A0, 
typename A1>
  3380 Event<void(A0, A1)> 
EventQueue::event(
mbed::Callback<R(B0, B1, B2, B3, A0, A1)> cb, C0 c0, C1 c1, C2 c2, C3 c3)
  3382     return Event<void(A0, A1)>(
this, cb, c0, c1, c2, c3);
  3385 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>
  3386 Event<void(A0, A1)> 
EventQueue::event(R(*func)(B0, B1, B2, B3, B4, A0, A1), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  3388     return Event<void(A0, A1)>(
this, func, c0, c1, c2, c3, c4);
  3391 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>
  3392 Event<void(A0, A1)> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  3394     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  3397 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>
  3398 Event<void(A0, A1)> 
EventQueue::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)
  3400     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  3403 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>
  3404 Event<void(A0, A1)> 
EventQueue::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)
  3406     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  3409 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>
  3410 Event<void(A0, A1)> 
EventQueue::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)
  3412     return Event<void(A0, A1)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  3415 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>
  3416 Event<void(A0, A1)> 
EventQueue::event(
mbed::Callback<R(B0, B1, B2, B3, B4, A0, A1)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  3418     return Event<void(A0, A1)>(
this, cb, c0, c1, c2, c3, c4);
  3421 template <
typename R, 
typename A0, 
typename A1, 
typename A2>
  3424     return Event<void(A0, A1, A2)>(
this, func);
  3427 template <
typename T, 
typename R, 
typename A0, 
typename A1, 
typename A2>
  3430     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method));
  3433 template <
typename T, 
typename R, 
typename A0, 
typename A1, 
typename A2>
  3434 Event<void(A0, A1, A2)> 
EventQueue::event(
const T *obj, R(T::*method)(A0, A1, A2) 
const)
  3436     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method));
  3439 template <
typename T, 
typename R, 
typename A0, 
typename A1, 
typename A2>
  3440 Event<void(A0, A1, A2)> 
EventQueue::event(
volatile T *obj, R(T::*method)(A0, A1, A2) 
volatile)
  3442     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method));
  3445 template <
typename T, 
typename R, 
typename A0, 
typename A1, 
typename A2>
  3446 Event<void(A0, A1, A2)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(A0, A1, A2) 
const volatile)
  3448     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method));
  3451 template <
typename R, 
typename A0, 
typename A1, 
typename A2>
  3454     return Event<void(A0, A1, A2)>(
this, cb);
  3457 template <
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1, 
typename A2>
  3460     return Event<void(A0, A1, A2)>(
this, func, c0);
  3463 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1, 
typename A2>
  3464 Event<void(A0, A1, A2)> 
EventQueue::event(T *obj, R(T::*method)(B0, A0, A1, A2), C0 c0)
  3466     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0);
  3469 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1, 
typename A2>
  3470 Event<void(A0, A1, A2)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, A0, A1, A2) 
const, C0 c0)
  3472     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0);
  3475 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1, 
typename A2>
  3476 Event<void(A0, A1, A2)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, A0, A1, A2) 
volatile, C0 c0)
  3478     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0);
  3481 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1, 
typename A2>
  3482 Event<void(A0, A1, A2)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, A0, A1, A2) 
const volatile, C0 c0)
  3484     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0);
  3487 template <
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1, 
typename A2>
  3490     return Event<void(A0, A1, A2)>(
this, cb, c0);
  3493 template <
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1, 
typename A2>
  3494 Event<void(A0, A1, A2)> 
EventQueue::event(R(*func)(B0, B1, A0, A1, A2), C0 c0, C1 c1)
  3496     return Event<void(A0, A1, A2)>(
this, func, c0, c1);
  3499 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1, 
typename A2>
  3500 Event<void(A0, A1, A2)> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, A0, A1, A2), C0 c0, C1 c1)
  3502     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0, c1);
  3505 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1, 
typename A2>
  3506 Event<void(A0, A1, A2)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, B1, A0, A1, A2) 
const, C0 c0, C1 c1)
  3508     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0, c1);
  3511 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1, 
typename A2>
  3512 Event<void(A0, A1, A2)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, B1, A0, A1, A2) 
volatile, C0 c0, C1 c1)
  3514     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0, c1);
  3517 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1, 
typename A2>
  3518 Event<void(A0, A1, A2)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, B1, A0, A1, A2) 
const volatile, C0 c0, C1 c1)
  3520     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0, c1);
  3523 template <
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1, 
typename A2>
  3526     return Event<void(A0, A1, A2)>(
this, cb, c0, c1);
  3529 template <
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0, 
typename A1, 
typename A2>
  3530 Event<void(A0, A1, A2)> 
EventQueue::event(R(*func)(B0, B1, B2, A0, A1, A2), C0 c0, C1 c1, C2 c2)
  3532     return Event<void(A0, A1, A2)>(
this, func, c0, c1, c2);
  3535 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0, 
typename A1, 
typename A2>
  3536 Event<void(A0, A1, A2)> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2), C0 c0, C1 c1, C2 c2)
  3538     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3541 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0, 
typename A1, 
typename A2>
  3542 Event<void(A0, A1, A2)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2) 
const, C0 c0, C1 c1, C2 c2)
  3544     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3547 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0, 
typename A1, 
typename A2>
  3548 Event<void(A0, A1, A2)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2) 
volatile, C0 c0, C1 c1, C2 c2)
  3550     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3553 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0, 
typename A1, 
typename A2>
  3554 Event<void(A0, A1, A2)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2) 
const volatile, C0 c0, C1 c1, C2 c2)
  3556     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3559 template <
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0, 
typename A1, 
typename A2>
  3560 Event<void(A0, A1, A2)> 
EventQueue::event(
mbed::Callback<R(B0, B1, B2, A0, A1, A2)> cb, C0 c0, C1 c1, C2 c2)
  3562     return Event<void(A0, A1, A2)>(
this, cb, c0, c1, c2);
  3565 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>
  3566 Event<void(A0, A1, A2)> 
EventQueue::event(R(*func)(B0, B1, B2, B3, A0, A1, A2), C0 c0, C1 c1, C2 c2, C3 c3)
  3568     return Event<void(A0, A1, A2)>(
this, func, c0, c1, c2, c3);
  3571 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>
  3572 Event<void(A0, A1, A2)> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2), C0 c0, C1 c1, C2 c2, C3 c3)
  3574     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  3577 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>
  3578 Event<void(A0, A1, A2)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2) 
const, C0 c0, C1 c1, C2 c2, C3 c3)
  3580     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  3583 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>
  3584 Event<void(A0, A1, A2)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2) 
volatile, C0 c0, C1 c1, C2 c2, C3 c3)
  3586     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  3589 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>
  3590 Event<void(A0, A1, A2)> 
EventQueue::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)
  3592     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  3595 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>
  3596 Event<void(A0, A1, A2)> 
EventQueue::event(
mbed::Callback<R(B0, B1, B2, B3, A0, A1, A2)> cb, C0 c0, C1 c1, C2 c2, C3 c3)
  3598     return Event<void(A0, A1, A2)>(
this, cb, c0, c1, c2, c3);
  3601 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>
  3602 Event<void(A0, A1, A2)> 
EventQueue::event(R(*func)(B0, B1, B2, B3, B4, A0, A1, A2), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  3604     return Event<void(A0, A1, A2)>(
this, func, c0, c1, c2, c3, c4);
  3607 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>
  3608 Event<void(A0, A1, A2)> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, B2, B3, B4, A0, A1, A2), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  3610     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  3613 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>
  3614 Event<void(A0, A1, A2)> 
EventQueue::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)
  3616     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  3619 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>
  3620 Event<void(A0, A1, A2)> 
EventQueue::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)
  3622     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  3625 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>
  3626 Event<void(A0, A1, A2)> 
EventQueue::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)
  3628     return Event<void(A0, A1, A2)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  3631 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>
  3632 Event<void(A0, A1, A2)> 
EventQueue::event(
mbed::Callback<R(B0, B1, B2, B3, B4, A0, A1, A2)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  3634     return Event<void(A0, A1, A2)>(
this, cb, c0, c1, c2, c3, c4);
  3637 template <
typename R, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3640     return Event<void(A0, A1, A2, A3)>(
this, func);
  3643 template <
typename T, 
typename R, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3644 Event<void(A0, A1, A2, A3)> 
EventQueue::event(T *obj, R(T::*method)(A0, A1, A2, A3))
  3646     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method));
  3649 template <
typename T, 
typename R, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3650 Event<void(A0, A1, A2, A3)> 
EventQueue::event(
const T *obj, R(T::*method)(A0, A1, A2, A3) 
const)
  3652     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method));
  3655 template <
typename T, 
typename R, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3656 Event<void(A0, A1, A2, A3)> 
EventQueue::event(
volatile T *obj, R(T::*method)(A0, A1, A2, A3) 
volatile)
  3658     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method));
  3661 template <
typename T, 
typename R, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3662 Event<void(A0, A1, A2, A3)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(A0, A1, A2, A3) 
const volatile)
  3664     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method));
  3667 template <
typename R, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3670     return Event<void(A0, A1, A2, A3)>(
this, cb);
  3673 template <
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3674 Event<void(A0, A1, A2, A3)> 
EventQueue::event(R(*func)(B0, A0, A1, A2, A3), C0 c0)
  3676     return Event<void(A0, A1, A2, A3)>(
this, func, c0);
  3679 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3680 Event<void(A0, A1, A2, A3)> 
EventQueue::event(T *obj, R(T::*method)(B0, A0, A1, A2, A3), C0 c0)
  3682     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0);
  3685 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3686 Event<void(A0, A1, A2, A3)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, A0, A1, A2, A3) 
const, C0 c0)
  3688     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0);
  3691 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3692 Event<void(A0, A1, A2, A3)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, A0, A1, A2, A3) 
volatile, C0 c0)
  3694     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0);
  3697 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3698 Event<void(A0, A1, A2, A3)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, A0, A1, A2, A3) 
const volatile, C0 c0)
  3700     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0);
  3703 template <
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3706     return Event<void(A0, A1, A2, A3)>(
this, cb, c0);
  3709 template <
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3710 Event<void(A0, A1, A2, A3)> 
EventQueue::event(R(*func)(B0, B1, A0, A1, A2, A3), C0 c0, C1 c1)
  3712     return Event<void(A0, A1, A2, A3)>(
this, func, c0, c1);
  3715 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3716 Event<void(A0, A1, A2, A3)> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3), C0 c0, C1 c1)
  3718     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0, c1);
  3721 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3722 Event<void(A0, A1, A2, A3)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3) 
const, C0 c0, C1 c1)
  3724     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0, c1);
  3727 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3728 Event<void(A0, A1, A2, A3)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3) 
volatile, C0 c0, C1 c1)
  3730     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0, c1);
  3733 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3734 Event<void(A0, A1, A2, A3)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3) 
const volatile, C0 c0, C1 c1)
  3736     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0, c1);
  3739 template <
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3740 Event<void(A0, A1, A2, A3)> 
EventQueue::event(
mbed::Callback<R(B0, B1, A0, A1, A2, A3)> cb, C0 c0, C1 c1)
  3742     return Event<void(A0, A1, A2, A3)>(
this, cb, c0, c1);
  3745 template <
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3746 Event<void(A0, A1, A2, A3)> 
EventQueue::event(R(*func)(B0, B1, B2, A0, A1, A2, A3), C0 c0, C1 c1, C2 c2)
  3748     return Event<void(A0, A1, A2, A3)>(
this, func, c0, c1, c2);
  3751 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>
  3752 Event<void(A0, A1, A2, A3)> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3), C0 c0, C1 c1, C2 c2)
  3754     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3757 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>
  3758 Event<void(A0, A1, A2, A3)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3) 
const, C0 c0, C1 c1, C2 c2)
  3760     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3763 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>
  3764 Event<void(A0, A1, A2, A3)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3) 
volatile, C0 c0, C1 c1, C2 c2)
  3766     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3769 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>
  3770 Event<void(A0, A1, A2, A3)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3) 
const volatile, C0 c0, C1 c1, C2 c2)
  3772     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3775 template <
typename R, 
typename B0, 
typename B1, 
typename B2, 
typename C0, 
typename C1, 
typename C2, 
typename A0, 
typename A1, 
typename A2, 
typename A3>
  3776 Event<void(A0, A1, A2, A3)> 
EventQueue::event(
mbed::Callback<R(B0, B1, B2, A0, A1, A2, A3)> cb, C0 c0, C1 c1, C2 c2)
  3778     return Event<void(A0, A1, A2, A3)>(
this, cb, c0, c1, c2);
  3781 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>
  3782 Event<void(A0, A1, A2, A3)> 
EventQueue::event(R(*func)(B0, B1, B2, B3, A0, A1, A2, A3), C0 c0, C1 c1, C2 c2, C3 c3)
  3784     return Event<void(A0, A1, A2, A3)>(
this, func, c0, c1, c2, c3);
  3787 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>
  3788 Event<void(A0, A1, A2, A3)> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3), C0 c0, C1 c1, C2 c2, C3 c3)
  3790     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  3793 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>
  3794 Event<void(A0, A1, A2, A3)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3) 
const, C0 c0, C1 c1, C2 c2, C3 c3)
  3796     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  3799 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>
  3800 Event<void(A0, A1, A2, A3)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3) 
volatile, C0 c0, C1 c1, C2 c2, C3 c3)
  3802     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  3805 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>
  3806 Event<void(A0, A1, A2, A3)> 
EventQueue::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)
  3808     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  3811 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>
  3812 Event<void(A0, A1, A2, A3)> 
EventQueue::event(
mbed::Callback<R(B0, B1, B2, B3, A0, A1, A2, A3)> cb, C0 c0, C1 c1, C2 c2, C3 c3)
  3814     return Event<void(A0, A1, A2, A3)>(
this, cb, c0, c1, c2, c3);
  3817 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>
  3818 Event<void(A0, A1, A2, A3)> 
EventQueue::event(R(*func)(B0, B1, B2, B3, B4, A0, A1, A2, A3), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  3820     return Event<void(A0, A1, A2, A3)>(
this, func, c0, c1, c2, c3, c4);
  3823 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>
  3824 Event<void(A0, A1, A2, A3)> 
EventQueue::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)
  3826     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  3829 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>
  3830 Event<void(A0, A1, A2, A3)> 
EventQueue::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)
  3832     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  3835 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>
  3836 Event<void(A0, A1, A2, A3)> 
EventQueue::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)
  3838     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  3841 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>
  3842 Event<void(A0, A1, A2, A3)> 
EventQueue::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)
  3844     return Event<void(A0, A1, A2, A3)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  3847 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>
  3848 Event<void(A0, A1, A2, A3)> 
EventQueue::event(
mbed::Callback<R(B0, B1, B2, B3, B4, A0, A1, A2, A3)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  3850     return Event<void(A0, A1, A2, A3)>(
this, cb, c0, c1, c2, c3, c4);
  3853 template <
typename R, 
typename A0, 
typename A1, 
typename A2, 
typename A3, 
typename A4>
  3856     return Event<void(A0, A1, A2, A3, A4)>(
this, func);
  3859 template <
typename T, 
typename R, 
typename A0, 
typename A1, 
typename A2, 
typename A3, 
typename A4>
  3860 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(T *obj, R(T::*method)(A0, A1, A2, A3, A4))
  3862     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method));
  3865 template <
typename T, 
typename R, 
typename A0, 
typename A1, 
typename A2, 
typename A3, 
typename A4>
  3866 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(
const T *obj, R(T::*method)(A0, A1, A2, A3, A4) 
const)
  3868     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method));
  3871 template <
typename T, 
typename R, 
typename A0, 
typename A1, 
typename A2, 
typename A3, 
typename A4>
  3872 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(
volatile T *obj, R(T::*method)(A0, A1, A2, A3, A4) 
volatile)
  3874     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method));
  3877 template <
typename T, 
typename R, 
typename A0, 
typename A1, 
typename A2, 
typename A3, 
typename A4>
  3878 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(A0, A1, A2, A3, A4) 
const volatile)
  3880     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method));
  3883 template <
typename R, 
typename A0, 
typename A1, 
typename A2, 
typename A3, 
typename A4>
  3886     return Event<void(A0, A1, A2, A3, A4)>(
this, cb);
  3889 template <
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1, 
typename A2, 
typename A3, 
typename A4>
  3890 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(R(*func)(B0, A0, A1, A2, A3, A4), C0 c0)
  3892     return Event<void(A0, A1, A2, A3, A4)>(
this, func, c0);
  3895 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1, 
typename A2, 
typename A3, 
typename A4>
  3896 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(T *obj, R(T::*method)(B0, A0, A1, A2, A3, A4), C0 c0)
  3898     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0);
  3901 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1, 
typename A2, 
typename A3, 
typename A4>
  3902 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, A0, A1, A2, A3, A4) 
const, C0 c0)
  3904     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0);
  3907 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1, 
typename A2, 
typename A3, 
typename A4>
  3908 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, A0, A1, A2, A3, A4) 
volatile, C0 c0)
  3910     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0);
  3913 template <
typename T, 
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1, 
typename A2, 
typename A3, 
typename A4>
  3914 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, A0, A1, A2, A3, A4) 
const volatile, C0 c0)
  3916     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0);
  3919 template <
typename R, 
typename B0, 
typename C0, 
typename A0, 
typename A1, 
typename A2, 
typename A3, 
typename A4>
  3920 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(
mbed::Callback<R(B0, A0, A1, A2, A3, A4)> cb, C0 c0)
  3922     return Event<void(A0, A1, A2, A3, A4)>(
this, cb, c0);
  3925 template <
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1, 
typename A2, 
typename A3, 
typename A4>
  3926 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(R(*func)(B0, B1, A0, A1, A2, A3, A4), C0 c0, C1 c1)
  3928     return Event<void(A0, A1, A2, A3, A4)>(
this, func, c0, c1);
  3931 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1, 
typename A2, 
typename A3, 
typename A4>
  3932 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3, A4), C0 c0, C1 c1)
  3934     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0, c1);
  3937 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1, 
typename A2, 
typename A3, 
typename A4>
  3938 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3, A4) 
const, C0 c0, C1 c1)
  3940     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0, c1);
  3943 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1, 
typename A2, 
typename A3, 
typename A4>
  3944 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3, A4) 
volatile, C0 c0, C1 c1)
  3946     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0, c1);
  3949 template <
typename T, 
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1, 
typename A2, 
typename A3, 
typename A4>
  3950 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3, A4) 
const volatile, C0 c0, C1 c1)
  3952     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0, c1);
  3955 template <
typename R, 
typename B0, 
typename B1, 
typename C0, 
typename C1, 
typename A0, 
typename A1, 
typename A2, 
typename A3, 
typename A4>
  3956 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(
mbed::Callback<R(B0, B1, A0, A1, A2, A3, A4)> cb, C0 c0, C1 c1)
  3958     return Event<void(A0, A1, A2, A3, A4)>(
this, cb, c0, c1);
  3961 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>
  3962 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(R(*func)(B0, B1, B2, A0, A1, A2, A3, A4), C0 c0, C1 c1, C2 c2)
  3964     return Event<void(A0, A1, A2, A3, A4)>(
this, func, c0, c1, c2);
  3967 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>
  3968 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3, A4), C0 c0, C1 c1, C2 c2)
  3970     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3973 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>
  3974 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(
const T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3, A4) 
const, C0 c0, C1 c1, C2 c2)
  3976     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3979 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>
  3980 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(
volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3, A4) 
volatile, C0 c0, C1 c1, C2 c2)
  3982     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3985 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>
  3986 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(
const volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2, A3, A4) 
const volatile, C0 c0, C1 c1, C2 c2)
  3988     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0, c1, c2);
  3991 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>
  3992 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(
mbed::Callback<R(B0, B1, B2, A0, A1, A2, A3, A4)> cb, C0 c0, C1 c1, C2 c2)
  3994     return Event<void(A0, A1, A2, A3, A4)>(
this, cb, c0, c1, c2);
  3997 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>
  3998 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(R(*func)(B0, B1, B2, B3, A0, A1, A2, A3, A4), C0 c0, C1 c1, C2 c2, C3 c3)
  4000     return Event<void(A0, A1, A2, A3, A4)>(
this, func, c0, c1, c2, c3);
  4003 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>
  4004 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1, A2, A3, A4), C0 c0, C1 c1, C2 c2, C3 c3)
  4006     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  4009 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>
  4010 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::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)
  4012     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  4015 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>
  4016 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::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)
  4018     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  4021 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>
  4022 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::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)
  4024     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3);
  4027 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>
  4028 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(
mbed::Callback<R(B0, B1, B2, B3, A0, A1, A2, A3, A4)> cb, C0 c0, C1 c1, C2 c2, C3 c3)
  4030     return Event<void(A0, A1, A2, A3, A4)>(
this, cb, c0, c1, c2, c3);
  4033 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>
  4034 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::event(R(*func)(B0, B1, B2, B3, B4, A0, A1, A2, A3, A4), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
  4036     return Event<void(A0, A1, A2, A3, A4)>(
this, func, c0, c1, c2, c3, c4);
  4039 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>
  4040 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::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)
  4042     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  4045 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>
  4046 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::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)
  4048     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  4051 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>
  4052 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::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)
  4054     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  4057 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>
  4058 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::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)
  4060     return Event<void(A0, A1, A2, A3, A4)>(
this, 
mbed::callback(obj, method), c0, c1, c2, c3, c4);
  4063 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>
  4064 Event<void(A0, A1, A2, A3, A4)> 
EventQueue::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)
  4066     return Event<void(A0, A1, A2, A3, A4)>(
this, cb, c0, c1, c2, c3, c4);
 Event< void(Args...)> event(R(*func)(BoundArgs...), Args...args)
Creates an event bound to the event queue. 
Callback class based on template specialization.