mbed-os for GR-LYCHEE

Dependents:   mbed-os-example-blinky-gr-lychee GR-Boads_Camera_sample GR-Boards_Audio_Recoder GR-Boads_Camera_DisplayApp ... more

Committer:
dkato
Date:
Fri Feb 02 05:42:23 2018 +0000
Revision:
0:f782d9c66c49
mbed-os for GR-LYCHEE

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkato 0:f782d9c66c49 1 /* events
dkato 0:f782d9c66c49 2 * Copyright (c) 2016 ARM Limited
dkato 0:f782d9c66c49 3 *
dkato 0:f782d9c66c49 4 * Licensed under the Apache License, Version 2.0 (the "License");
dkato 0:f782d9c66c49 5 * you may not use this file except in compliance with the License.
dkato 0:f782d9c66c49 6 * You may obtain a copy of the License at
dkato 0:f782d9c66c49 7 *
dkato 0:f782d9c66c49 8 * http://www.apache.org/licenses/LICENSE-2.0
dkato 0:f782d9c66c49 9 *
dkato 0:f782d9c66c49 10 * Unless required by applicable law or agreed to in writing, software
dkato 0:f782d9c66c49 11 * distributed under the License is distributed on an "AS IS" BASIS,
dkato 0:f782d9c66c49 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
dkato 0:f782d9c66c49 13 * See the License for the specific language governing permissions and
dkato 0:f782d9c66c49 14 * limitations under the License.
dkato 0:f782d9c66c49 15 */
dkato 0:f782d9c66c49 16
dkato 0:f782d9c66c49 17 #ifndef EVENT_QUEUE_H
dkato 0:f782d9c66c49 18 #define EVENT_QUEUE_H
dkato 0:f782d9c66c49 19
dkato 0:f782d9c66c49 20 #include "equeue/equeue.h"
dkato 0:f782d9c66c49 21 #include "platform/Callback.h"
dkato 0:f782d9c66c49 22 #include <cstddef>
dkato 0:f782d9c66c49 23 #include <new>
dkato 0:f782d9c66c49 24
dkato 0:f782d9c66c49 25 namespace events {
dkato 0:f782d9c66c49 26 /** \addtogroup events */
dkato 0:f782d9c66c49 27 /** @{*/
dkato 0:f782d9c66c49 28
dkato 0:f782d9c66c49 29 /** EVENTS_EVENT_SIZE
dkato 0:f782d9c66c49 30 * Minimum size of an event
dkato 0:f782d9c66c49 31 * This size fits a Callback<void()> at minimum
dkato 0:f782d9c66c49 32 */
dkato 0:f782d9c66c49 33 #define EVENTS_EVENT_SIZE \
dkato 0:f782d9c66c49 34 (EQUEUE_EVENT_SIZE - 2*sizeof(void*) + sizeof(mbed::Callback<void()>))
dkato 0:f782d9c66c49 35
dkato 0:f782d9c66c49 36 /** EVENTS_QUEUE_SIZE
dkato 0:f782d9c66c49 37 * Default size of buffer for events
dkato 0:f782d9c66c49 38 */
dkato 0:f782d9c66c49 39 #define EVENTS_QUEUE_SIZE (32*EVENTS_EVENT_SIZE)
dkato 0:f782d9c66c49 40
dkato 0:f782d9c66c49 41 // Predeclared classes
dkato 0:f782d9c66c49 42 template <typename F>
dkato 0:f782d9c66c49 43 class Event;
dkato 0:f782d9c66c49 44
dkato 0:f782d9c66c49 45
dkato 0:f782d9c66c49 46 /** EventQueue
dkato 0:f782d9c66c49 47 *
dkato 0:f782d9c66c49 48 * Flexible event queue for dispatching events
dkato 0:f782d9c66c49 49 */
dkato 0:f782d9c66c49 50 class EventQueue {
dkato 0:f782d9c66c49 51 public:
dkato 0:f782d9c66c49 52 /** Create an EventQueue
dkato 0:f782d9c66c49 53 *
dkato 0:f782d9c66c49 54 * Create an event queue. The event queue either allocates a buffer of
dkato 0:f782d9c66c49 55 * the specified size with malloc or uses the user provided buffer.
dkato 0:f782d9c66c49 56 *
dkato 0:f782d9c66c49 57 * @param size Size of buffer to use for events in bytes
dkato 0:f782d9c66c49 58 * (default to EVENTS_QUEUE_SIZE)
dkato 0:f782d9c66c49 59 * @param buffer Pointer to buffer to use for events
dkato 0:f782d9c66c49 60 * (default to NULL)
dkato 0:f782d9c66c49 61 */
dkato 0:f782d9c66c49 62 EventQueue(unsigned size=EVENTS_QUEUE_SIZE, unsigned char *buffer=NULL);
dkato 0:f782d9c66c49 63
dkato 0:f782d9c66c49 64 /** Destroy an EventQueue
dkato 0:f782d9c66c49 65 */
dkato 0:f782d9c66c49 66 ~EventQueue();
dkato 0:f782d9c66c49 67
dkato 0:f782d9c66c49 68 /** Dispatch events
dkato 0:f782d9c66c49 69 *
dkato 0:f782d9c66c49 70 * Executes events until the specified milliseconds have passed.
dkato 0:f782d9c66c49 71 * If ms is negative, the dispatch function will dispatch events
dkato 0:f782d9c66c49 72 * indefinitely or until break_dispatch is called on this queue.
dkato 0:f782d9c66c49 73 *
dkato 0:f782d9c66c49 74 * When called with a finite timeout, the dispatch function is guaranteed
dkato 0:f782d9c66c49 75 * to terminate. When called with a timeout of 0, the dispatch function
dkato 0:f782d9c66c49 76 * does not wait and is irq safe.
dkato 0:f782d9c66c49 77 *
dkato 0:f782d9c66c49 78 * @param ms Time to wait for events in milliseconds, a negative
dkato 0:f782d9c66c49 79 * value will dispatch events indefinitely
dkato 0:f782d9c66c49 80 * (default to -1)
dkato 0:f782d9c66c49 81 */
dkato 0:f782d9c66c49 82 void dispatch(int ms=-1);
dkato 0:f782d9c66c49 83
dkato 0:f782d9c66c49 84 /** Dispatch events without a timeout
dkato 0:f782d9c66c49 85 *
dkato 0:f782d9c66c49 86 * This is equivalent to EventQueue::dispatch with no arguments, but
dkato 0:f782d9c66c49 87 * avoids overload ambiguities when passed as a callback.
dkato 0:f782d9c66c49 88 *
dkato 0:f782d9c66c49 89 * @see EventQueue::dispatch
dkato 0:f782d9c66c49 90 */
dkato 0:f782d9c66c49 91 void dispatch_forever() { dispatch(); }
dkato 0:f782d9c66c49 92
dkato 0:f782d9c66c49 93 /** Break out of a running event loop
dkato 0:f782d9c66c49 94 *
dkato 0:f782d9c66c49 95 * Forces the specified event queue's dispatch loop to terminate. Pending
dkato 0:f782d9c66c49 96 * events may finish executing, but no new events will be executed.
dkato 0:f782d9c66c49 97 */
dkato 0:f782d9c66c49 98 void break_dispatch();
dkato 0:f782d9c66c49 99
dkato 0:f782d9c66c49 100 /** Millisecond counter
dkato 0:f782d9c66c49 101 *
dkato 0:f782d9c66c49 102 * Returns the underlying tick of the event queue represented as the
dkato 0:f782d9c66c49 103 * number of milliseconds that have passed since an arbitrary point in
dkato 0:f782d9c66c49 104 * time. Intentionally overflows to 0 after 2^32-1.
dkato 0:f782d9c66c49 105 *
dkato 0:f782d9c66c49 106 * @return The underlying tick of the event queue in milliseconds
dkato 0:f782d9c66c49 107 */
dkato 0:f782d9c66c49 108 unsigned tick();
dkato 0:f782d9c66c49 109
dkato 0:f782d9c66c49 110 /** Cancel an in-flight event
dkato 0:f782d9c66c49 111 *
dkato 0:f782d9c66c49 112 * Attempts to cancel an event referenced by the unique id returned from
dkato 0:f782d9c66c49 113 * one of the call functions. It is safe to call cancel after an event
dkato 0:f782d9c66c49 114 * has already been dispatched.
dkato 0:f782d9c66c49 115 *
dkato 0:f782d9c66c49 116 * The cancel function is irq safe.
dkato 0:f782d9c66c49 117 *
dkato 0:f782d9c66c49 118 * If called while the event queue's dispatch loop is active, the cancel
dkato 0:f782d9c66c49 119 * function does not garuntee that the event will not execute after it
dkato 0:f782d9c66c49 120 * returns, as the event may have already begun executing.
dkato 0:f782d9c66c49 121 *
dkato 0:f782d9c66c49 122 * @param id Unique id of the event
dkato 0:f782d9c66c49 123 */
dkato 0:f782d9c66c49 124 void cancel(int id);
dkato 0:f782d9c66c49 125
dkato 0:f782d9c66c49 126 /** Background an event queue onto a single-shot timer-interrupt
dkato 0:f782d9c66c49 127 *
dkato 0:f782d9c66c49 128 * When updated, the event queue will call the provided update function
dkato 0:f782d9c66c49 129 * with a timeout indicating when the queue should be dispatched. A
dkato 0:f782d9c66c49 130 * negative timeout will be passed to the update function when the
dkato 0:f782d9c66c49 131 * timer-interrupt is no longer needed.
dkato 0:f782d9c66c49 132 *
dkato 0:f782d9c66c49 133 * Passing a null function disables the existing update function.
dkato 0:f782d9c66c49 134 *
dkato 0:f782d9c66c49 135 * The background function allows an event queue to take advantage of
dkato 0:f782d9c66c49 136 * hardware timers or other event loops, allowing an event queue to be
dkato 0:f782d9c66c49 137 * ran in the background without consuming the foreground thread.
dkato 0:f782d9c66c49 138 *
dkato 0:f782d9c66c49 139 * @param update Function called to indicate when the queue should be
dkato 0:f782d9c66c49 140 * dispatched
dkato 0:f782d9c66c49 141 */
dkato 0:f782d9c66c49 142 void background(mbed::Callback<void(int)> update);
dkato 0:f782d9c66c49 143
dkato 0:f782d9c66c49 144 /** Chain an event queue onto another event queue
dkato 0:f782d9c66c49 145 *
dkato 0:f782d9c66c49 146 * After chaining a queue to a target, calling dispatch on the target
dkato 0:f782d9c66c49 147 * queue will also dispatch events from this queue. The queues use
dkato 0:f782d9c66c49 148 * their own buffers and events must be handled independently.
dkato 0:f782d9c66c49 149 *
dkato 0:f782d9c66c49 150 * A null queue as the target will unchain the existing queue.
dkato 0:f782d9c66c49 151 *
dkato 0:f782d9c66c49 152 * The chain function allows multiple event queues to be composed,
dkato 0:f782d9c66c49 153 * sharing the context of a dispatch loop while still being managed
dkato 0:f782d9c66c49 154 * independently
dkato 0:f782d9c66c49 155 *
dkato 0:f782d9c66c49 156 * @param target Queue that will dispatch this queue's events as a
dkato 0:f782d9c66c49 157 * part of its dispatch loop
dkato 0:f782d9c66c49 158 */
dkato 0:f782d9c66c49 159 void chain(EventQueue *target);
dkato 0:f782d9c66c49 160
dkato 0:f782d9c66c49 161 /** Calls an event on the queue
dkato 0:f782d9c66c49 162 *
dkato 0:f782d9c66c49 163 * The specified callback will be executed in the context of the event
dkato 0:f782d9c66c49 164 * queue's dispatch loop.
dkato 0:f782d9c66c49 165 *
dkato 0:f782d9c66c49 166 * The call function is irq safe and can act as a mechanism for moving
dkato 0:f782d9c66c49 167 * events out of irq contexts.
dkato 0:f782d9c66c49 168 *
dkato 0:f782d9c66c49 169 * @param f Function to execute in the context of the dispatch loop
dkato 0:f782d9c66c49 170 * @param a0..a4 Arguments to pass to the callback
dkato 0:f782d9c66c49 171 * @return A unique id that represents the posted event and can
dkato 0:f782d9c66c49 172 * be passed to cancel, or an id of 0 if there is not
dkato 0:f782d9c66c49 173 * enough memory to allocate the event.
dkato 0:f782d9c66c49 174 */
dkato 0:f782d9c66c49 175 template <typename F>
dkato 0:f782d9c66c49 176 int call(F f) {
dkato 0:f782d9c66c49 177 void *p = equeue_alloc(&_equeue, sizeof(F));
dkato 0:f782d9c66c49 178 if (!p) {
dkato 0:f782d9c66c49 179 return 0;
dkato 0:f782d9c66c49 180 }
dkato 0:f782d9c66c49 181
dkato 0:f782d9c66c49 182 F *e = new (p) F(f);
dkato 0:f782d9c66c49 183 equeue_event_dtor(e, &EventQueue::function_dtor<F>);
dkato 0:f782d9c66c49 184 return equeue_post(&_equeue, &EventQueue::function_call<F>, e);
dkato 0:f782d9c66c49 185 }
dkato 0:f782d9c66c49 186
dkato 0:f782d9c66c49 187 /** Calls an event on the queue
dkato 0:f782d9c66c49 188 * @see EventQueue::call
dkato 0:f782d9c66c49 189 */
dkato 0:f782d9c66c49 190 template <typename F, typename A0>
dkato 0:f782d9c66c49 191 int call(F f, A0 a0) {
dkato 0:f782d9c66c49 192 return call(context10<F, A0>(f, a0));
dkato 0:f782d9c66c49 193 }
dkato 0:f782d9c66c49 194
dkato 0:f782d9c66c49 195 /** Calls an event on the queue
dkato 0:f782d9c66c49 196 * @see EventQueue::call
dkato 0:f782d9c66c49 197 */
dkato 0:f782d9c66c49 198 template <typename F, typename A0, typename A1>
dkato 0:f782d9c66c49 199 int call(F f, A0 a0, A1 a1) {
dkato 0:f782d9c66c49 200 return call(context20<F, A0, A1>(f, a0, a1));
dkato 0:f782d9c66c49 201 }
dkato 0:f782d9c66c49 202
dkato 0:f782d9c66c49 203 /** Calls an event on the queue
dkato 0:f782d9c66c49 204 * @see EventQueue::call
dkato 0:f782d9c66c49 205 */
dkato 0:f782d9c66c49 206 template <typename F, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 207 int call(F f, A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 208 return call(context30<F, A0, A1, A2>(f, a0, a1, a2));
dkato 0:f782d9c66c49 209 }
dkato 0:f782d9c66c49 210
dkato 0:f782d9c66c49 211 /** Calls an event on the queue
dkato 0:f782d9c66c49 212 * @see EventQueue::call
dkato 0:f782d9c66c49 213 */
dkato 0:f782d9c66c49 214 template <typename F, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 215 int call(F f, A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 216 return call(context40<F, A0, A1, A2, A3>(f, a0, a1, a2, a3));
dkato 0:f782d9c66c49 217 }
dkato 0:f782d9c66c49 218
dkato 0:f782d9c66c49 219 /** Calls an event on the queue
dkato 0:f782d9c66c49 220 * @see EventQueue::call
dkato 0:f782d9c66c49 221 */
dkato 0:f782d9c66c49 222 template <typename F, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 223 int call(F f, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 224 return call(context50<F, A0, A1, A2, A3, A4>(f, a0, a1, a2, a3, a4));
dkato 0:f782d9c66c49 225 }
dkato 0:f782d9c66c49 226
dkato 0:f782d9c66c49 227 /** Calls an event on the queue
dkato 0:f782d9c66c49 228 * @see EventQueue::call
dkato 0:f782d9c66c49 229 */
dkato 0:f782d9c66c49 230 template <typename T, typename R>
dkato 0:f782d9c66c49 231 int call(T *obj, R (T::*method)()) {
dkato 0:f782d9c66c49 232 return call(mbed::callback(obj, method));
dkato 0:f782d9c66c49 233 }
dkato 0:f782d9c66c49 234
dkato 0:f782d9c66c49 235 /** Calls an event on the queue
dkato 0:f782d9c66c49 236 * @see EventQueue::call
dkato 0:f782d9c66c49 237 */
dkato 0:f782d9c66c49 238 template <typename T, typename R>
dkato 0:f782d9c66c49 239 int call(const T *obj, R (T::*method)() const) {
dkato 0:f782d9c66c49 240 return call(mbed::callback(obj, method));
dkato 0:f782d9c66c49 241 }
dkato 0:f782d9c66c49 242
dkato 0:f782d9c66c49 243 /** Calls an event on the queue
dkato 0:f782d9c66c49 244 * @see EventQueue::call
dkato 0:f782d9c66c49 245 */
dkato 0:f782d9c66c49 246 template <typename T, typename R>
dkato 0:f782d9c66c49 247 int call(volatile T *obj, R (T::*method)() volatile) {
dkato 0:f782d9c66c49 248 return call(mbed::callback(obj, method));
dkato 0:f782d9c66c49 249 }
dkato 0:f782d9c66c49 250
dkato 0:f782d9c66c49 251 /** Calls an event on the queue
dkato 0:f782d9c66c49 252 * @see EventQueue::call
dkato 0:f782d9c66c49 253 */
dkato 0:f782d9c66c49 254 template <typename T, typename R>
dkato 0:f782d9c66c49 255 int call(const volatile T *obj, R (T::*method)() const volatile) {
dkato 0:f782d9c66c49 256 return call(mbed::callback(obj, method));
dkato 0:f782d9c66c49 257 }
dkato 0:f782d9c66c49 258
dkato 0:f782d9c66c49 259 /** Calls an event on the queue
dkato 0:f782d9c66c49 260 * @see EventQueue::call
dkato 0:f782d9c66c49 261 */
dkato 0:f782d9c66c49 262 template <typename T, typename R, typename A0>
dkato 0:f782d9c66c49 263 int call(T *obj, R (T::*method)(A0), A0 a0) {
dkato 0:f782d9c66c49 264 return call(mbed::callback(obj, method), a0);
dkato 0:f782d9c66c49 265 }
dkato 0:f782d9c66c49 266
dkato 0:f782d9c66c49 267 /** Calls an event on the queue
dkato 0:f782d9c66c49 268 * @see EventQueue::call
dkato 0:f782d9c66c49 269 */
dkato 0:f782d9c66c49 270 template <typename T, typename R, typename A0>
dkato 0:f782d9c66c49 271 int call(const T *obj, R (T::*method)(A0) const, A0 a0) {
dkato 0:f782d9c66c49 272 return call(mbed::callback(obj, method), a0);
dkato 0:f782d9c66c49 273 }
dkato 0:f782d9c66c49 274
dkato 0:f782d9c66c49 275 /** Calls an event on the queue
dkato 0:f782d9c66c49 276 * @see EventQueue::call
dkato 0:f782d9c66c49 277 */
dkato 0:f782d9c66c49 278 template <typename T, typename R, typename A0>
dkato 0:f782d9c66c49 279 int call(volatile T *obj, R (T::*method)(A0) volatile, A0 a0) {
dkato 0:f782d9c66c49 280 return call(mbed::callback(obj, method), a0);
dkato 0:f782d9c66c49 281 }
dkato 0:f782d9c66c49 282
dkato 0:f782d9c66c49 283 /** Calls an event on the queue
dkato 0:f782d9c66c49 284 * @see EventQueue::call
dkato 0:f782d9c66c49 285 */
dkato 0:f782d9c66c49 286 template <typename T, typename R, typename A0>
dkato 0:f782d9c66c49 287 int call(const volatile T *obj, R (T::*method)(A0) const volatile, A0 a0) {
dkato 0:f782d9c66c49 288 return call(mbed::callback(obj, method), a0);
dkato 0:f782d9c66c49 289 }
dkato 0:f782d9c66c49 290
dkato 0:f782d9c66c49 291 /** Calls an event on the queue
dkato 0:f782d9c66c49 292 * @see EventQueue::call
dkato 0:f782d9c66c49 293 */
dkato 0:f782d9c66c49 294 template <typename T, typename R, typename A0, typename A1>
dkato 0:f782d9c66c49 295 int call(T *obj, R (T::*method)(A0, A1), A0 a0, A1 a1) {
dkato 0:f782d9c66c49 296 return call(mbed::callback(obj, method), a0, a1);
dkato 0:f782d9c66c49 297 }
dkato 0:f782d9c66c49 298
dkato 0:f782d9c66c49 299 /** Calls an event on the queue
dkato 0:f782d9c66c49 300 * @see EventQueue::call
dkato 0:f782d9c66c49 301 */
dkato 0:f782d9c66c49 302 template <typename T, typename R, typename A0, typename A1>
dkato 0:f782d9c66c49 303 int call(const T *obj, R (T::*method)(A0, A1) const, A0 a0, A1 a1) {
dkato 0:f782d9c66c49 304 return call(mbed::callback(obj, method), a0, a1);
dkato 0:f782d9c66c49 305 }
dkato 0:f782d9c66c49 306
dkato 0:f782d9c66c49 307 /** Calls an event on the queue
dkato 0:f782d9c66c49 308 * @see EventQueue::call
dkato 0:f782d9c66c49 309 */
dkato 0:f782d9c66c49 310 template <typename T, typename R, typename A0, typename A1>
dkato 0:f782d9c66c49 311 int call(volatile T *obj, R (T::*method)(A0, A1) volatile, A0 a0, A1 a1) {
dkato 0:f782d9c66c49 312 return call(mbed::callback(obj, method), a0, a1);
dkato 0:f782d9c66c49 313 }
dkato 0:f782d9c66c49 314
dkato 0:f782d9c66c49 315 /** Calls an event on the queue
dkato 0:f782d9c66c49 316 * @see EventQueue::call
dkato 0:f782d9c66c49 317 */
dkato 0:f782d9c66c49 318 template <typename T, typename R, typename A0, typename A1>
dkato 0:f782d9c66c49 319 int call(const volatile T *obj, R (T::*method)(A0, A1) const volatile, A0 a0, A1 a1) {
dkato 0:f782d9c66c49 320 return call(mbed::callback(obj, method), a0, a1);
dkato 0:f782d9c66c49 321 }
dkato 0:f782d9c66c49 322
dkato 0:f782d9c66c49 323 /** Calls an event on the queue
dkato 0:f782d9c66c49 324 * @see EventQueue::call
dkato 0:f782d9c66c49 325 */
dkato 0:f782d9c66c49 326 template <typename T, typename R, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 327 int call(T *obj, R (T::*method)(A0, A1, A2), A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 328 return call(mbed::callback(obj, method), a0, a1, a2);
dkato 0:f782d9c66c49 329 }
dkato 0:f782d9c66c49 330
dkato 0:f782d9c66c49 331 /** Calls an event on the queue
dkato 0:f782d9c66c49 332 * @see EventQueue::call
dkato 0:f782d9c66c49 333 */
dkato 0:f782d9c66c49 334 template <typename T, typename R, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 335 int call(const T *obj, R (T::*method)(A0, A1, A2) const, A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 336 return call(mbed::callback(obj, method), a0, a1, a2);
dkato 0:f782d9c66c49 337 }
dkato 0:f782d9c66c49 338
dkato 0:f782d9c66c49 339 /** Calls an event on the queue
dkato 0:f782d9c66c49 340 * @see EventQueue::call
dkato 0:f782d9c66c49 341 */
dkato 0:f782d9c66c49 342 template <typename T, typename R, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 343 int call(volatile T *obj, R (T::*method)(A0, A1, A2) volatile, A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 344 return call(mbed::callback(obj, method), a0, a1, a2);
dkato 0:f782d9c66c49 345 }
dkato 0:f782d9c66c49 346
dkato 0:f782d9c66c49 347 /** Calls an event on the queue
dkato 0:f782d9c66c49 348 * @see EventQueue::call
dkato 0:f782d9c66c49 349 */
dkato 0:f782d9c66c49 350 template <typename T, typename R, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 351 int call(const volatile T *obj, R (T::*method)(A0, A1, A2) const volatile, A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 352 return call(mbed::callback(obj, method), a0, a1, a2);
dkato 0:f782d9c66c49 353 }
dkato 0:f782d9c66c49 354
dkato 0:f782d9c66c49 355 /** Calls an event on the queue
dkato 0:f782d9c66c49 356 * @see EventQueue::call
dkato 0:f782d9c66c49 357 */
dkato 0:f782d9c66c49 358 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 359 int call(T *obj, R (T::*method)(A0, A1, A2, A3), A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 360 return call(mbed::callback(obj, method), a0, a1, a2, a3);
dkato 0:f782d9c66c49 361 }
dkato 0:f782d9c66c49 362
dkato 0:f782d9c66c49 363 /** Calls an event on the queue
dkato 0:f782d9c66c49 364 * @see EventQueue::call
dkato 0:f782d9c66c49 365 */
dkato 0:f782d9c66c49 366 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 367 int call(const T *obj, R (T::*method)(A0, A1, A2, A3) const, A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 368 return call(mbed::callback(obj, method), a0, a1, a2, a3);
dkato 0:f782d9c66c49 369 }
dkato 0:f782d9c66c49 370
dkato 0:f782d9c66c49 371 /** Calls an event on the queue
dkato 0:f782d9c66c49 372 * @see EventQueue::call
dkato 0:f782d9c66c49 373 */
dkato 0:f782d9c66c49 374 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 375 int call(volatile T *obj, R (T::*method)(A0, A1, A2, A3) volatile, A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 376 return call(mbed::callback(obj, method), a0, a1, a2, a3);
dkato 0:f782d9c66c49 377 }
dkato 0:f782d9c66c49 378
dkato 0:f782d9c66c49 379 /** Calls an event on the queue
dkato 0:f782d9c66c49 380 * @see EventQueue::call
dkato 0:f782d9c66c49 381 */
dkato 0:f782d9c66c49 382 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 383 int call(const volatile T *obj, R (T::*method)(A0, A1, A2, A3) const volatile, A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 384 return call(mbed::callback(obj, method), a0, a1, a2, a3);
dkato 0:f782d9c66c49 385 }
dkato 0:f782d9c66c49 386
dkato 0:f782d9c66c49 387 /** Calls an event on the queue
dkato 0:f782d9c66c49 388 * @see EventQueue::call
dkato 0:f782d9c66c49 389 */
dkato 0:f782d9c66c49 390 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 391 int call(T *obj, R (T::*method)(A0, A1, A2, A3, A4), A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 392 return call(mbed::callback(obj, method), a0, a1, a2, a3, a4);
dkato 0:f782d9c66c49 393 }
dkato 0:f782d9c66c49 394
dkato 0:f782d9c66c49 395 /** Calls an event on the queue
dkato 0:f782d9c66c49 396 * @see EventQueue::call
dkato 0:f782d9c66c49 397 */
dkato 0:f782d9c66c49 398 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 399 int call(const T *obj, R (T::*method)(A0, A1, A2, A3, A4) const, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 400 return call(mbed::callback(obj, method), a0, a1, a2, a3, a4);
dkato 0:f782d9c66c49 401 }
dkato 0:f782d9c66c49 402
dkato 0:f782d9c66c49 403 /** Calls an event on the queue
dkato 0:f782d9c66c49 404 * @see EventQueue::call
dkato 0:f782d9c66c49 405 */
dkato 0:f782d9c66c49 406 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 407 int call(volatile T *obj, R (T::*method)(A0, A1, A2, A3, A4) volatile, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 408 return call(mbed::callback(obj, method), a0, a1, a2, a3, a4);
dkato 0:f782d9c66c49 409 }
dkato 0:f782d9c66c49 410
dkato 0:f782d9c66c49 411 /** Calls an event on the queue
dkato 0:f782d9c66c49 412 * @see EventQueue::call
dkato 0:f782d9c66c49 413 */
dkato 0:f782d9c66c49 414 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 415 int call(const volatile T *obj, R (T::*method)(A0, A1, A2, A3, A4) const volatile, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 416 return call(mbed::callback(obj, method), a0, a1, a2, a3, a4);
dkato 0:f782d9c66c49 417 }
dkato 0:f782d9c66c49 418
dkato 0:f782d9c66c49 419 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 420 *
dkato 0:f782d9c66c49 421 * The specified callback will be executed in the context of the event
dkato 0:f782d9c66c49 422 * queue's dispatch loop.
dkato 0:f782d9c66c49 423 *
dkato 0:f782d9c66c49 424 * The call_in function is irq safe and can act as a mechanism for moving
dkato 0:f782d9c66c49 425 * events out of irq contexts.
dkato 0:f782d9c66c49 426 *
dkato 0:f782d9c66c49 427 * @param f Function to execute in the context of the dispatch loop
dkato 0:f782d9c66c49 428 * @param a0..a4 Arguments to pass to the callback
dkato 0:f782d9c66c49 429 * @param ms Time to delay in milliseconds
dkato 0:f782d9c66c49 430 * @return A unique id that represents the posted event and can
dkato 0:f782d9c66c49 431 * be passed to cancel, or an id of 0 if there is not
dkato 0:f782d9c66c49 432 * enough memory to allocate the event.
dkato 0:f782d9c66c49 433 */
dkato 0:f782d9c66c49 434 template <typename F>
dkato 0:f782d9c66c49 435 int call_in(int ms, F f) {
dkato 0:f782d9c66c49 436 void *p = equeue_alloc(&_equeue, sizeof(F));
dkato 0:f782d9c66c49 437 if (!p) {
dkato 0:f782d9c66c49 438 return 0;
dkato 0:f782d9c66c49 439 }
dkato 0:f782d9c66c49 440
dkato 0:f782d9c66c49 441 F *e = new (p) F(f);
dkato 0:f782d9c66c49 442 equeue_event_delay(e, ms);
dkato 0:f782d9c66c49 443 equeue_event_dtor(e, &EventQueue::function_dtor<F>);
dkato 0:f782d9c66c49 444 return equeue_post(&_equeue, &EventQueue::function_call<F>, e);
dkato 0:f782d9c66c49 445 }
dkato 0:f782d9c66c49 446
dkato 0:f782d9c66c49 447 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 448 * @see EventQueue::call_in
dkato 0:f782d9c66c49 449 */
dkato 0:f782d9c66c49 450 template <typename F, typename A0>
dkato 0:f782d9c66c49 451 int call_in(int ms, F f, A0 a0) {
dkato 0:f782d9c66c49 452 return call_in(ms, context10<F, A0>(f, a0));
dkato 0:f782d9c66c49 453 }
dkato 0:f782d9c66c49 454
dkato 0:f782d9c66c49 455 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 456 * @see EventQueue::call_in
dkato 0:f782d9c66c49 457 */
dkato 0:f782d9c66c49 458 template <typename F, typename A0, typename A1>
dkato 0:f782d9c66c49 459 int call_in(int ms, F f, A0 a0, A1 a1) {
dkato 0:f782d9c66c49 460 return call_in(ms, context20<F, A0, A1>(f, a0, a1));
dkato 0:f782d9c66c49 461 }
dkato 0:f782d9c66c49 462
dkato 0:f782d9c66c49 463 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 464 * @see EventQueue::call_in
dkato 0:f782d9c66c49 465 */
dkato 0:f782d9c66c49 466 template <typename F, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 467 int call_in(int ms, F f, A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 468 return call_in(ms, context30<F, A0, A1, A2>(f, a0, a1, a2));
dkato 0:f782d9c66c49 469 }
dkato 0:f782d9c66c49 470
dkato 0:f782d9c66c49 471 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 472 * @see EventQueue::call_in
dkato 0:f782d9c66c49 473 */
dkato 0:f782d9c66c49 474 template <typename F, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 475 int call_in(int ms, F f, A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 476 return call_in(ms, context40<F, A0, A1, A2, A3>(f, a0, a1, a2, a3));
dkato 0:f782d9c66c49 477 }
dkato 0:f782d9c66c49 478
dkato 0:f782d9c66c49 479 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 480 * @see EventQueue::call_in
dkato 0:f782d9c66c49 481 */
dkato 0:f782d9c66c49 482 template <typename F, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 483 int call_in(int ms, F f, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 484 return call_in(ms, context50<F, A0, A1, A2, A3, A4>(f, a0, a1, a2, a3, a4));
dkato 0:f782d9c66c49 485 }
dkato 0:f782d9c66c49 486
dkato 0:f782d9c66c49 487 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 488 * @see EventQueue::call_in
dkato 0:f782d9c66c49 489 */
dkato 0:f782d9c66c49 490 template <typename T, typename R>
dkato 0:f782d9c66c49 491 int call_in(int ms, T *obj, R (T::*method)()) {
dkato 0:f782d9c66c49 492 return call_in(ms, mbed::callback(obj, method));
dkato 0:f782d9c66c49 493 }
dkato 0:f782d9c66c49 494
dkato 0:f782d9c66c49 495 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 496 * @see EventQueue::call_in
dkato 0:f782d9c66c49 497 */
dkato 0:f782d9c66c49 498 template <typename T, typename R>
dkato 0:f782d9c66c49 499 int call_in(int ms, const T *obj, R (T::*method)() const) {
dkato 0:f782d9c66c49 500 return call_in(ms, mbed::callback(obj, method));
dkato 0:f782d9c66c49 501 }
dkato 0:f782d9c66c49 502
dkato 0:f782d9c66c49 503 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 504 * @see EventQueue::call_in
dkato 0:f782d9c66c49 505 */
dkato 0:f782d9c66c49 506 template <typename T, typename R>
dkato 0:f782d9c66c49 507 int call_in(int ms, volatile T *obj, R (T::*method)() volatile) {
dkato 0:f782d9c66c49 508 return call_in(ms, mbed::callback(obj, method));
dkato 0:f782d9c66c49 509 }
dkato 0:f782d9c66c49 510
dkato 0:f782d9c66c49 511 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 512 * @see EventQueue::call_in
dkato 0:f782d9c66c49 513 */
dkato 0:f782d9c66c49 514 template <typename T, typename R>
dkato 0:f782d9c66c49 515 int call_in(int ms, const volatile T *obj, R (T::*method)() const volatile) {
dkato 0:f782d9c66c49 516 return call_in(ms, mbed::callback(obj, method));
dkato 0:f782d9c66c49 517 }
dkato 0:f782d9c66c49 518
dkato 0:f782d9c66c49 519 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 520 * @see EventQueue::call_in
dkato 0:f782d9c66c49 521 */
dkato 0:f782d9c66c49 522 template <typename T, typename R, typename A0>
dkato 0:f782d9c66c49 523 int call_in(int ms, T *obj, R (T::*method)(A0), A0 a0) {
dkato 0:f782d9c66c49 524 return call_in(ms, mbed::callback(obj, method), a0);
dkato 0:f782d9c66c49 525 }
dkato 0:f782d9c66c49 526
dkato 0:f782d9c66c49 527 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 528 * @see EventQueue::call_in
dkato 0:f782d9c66c49 529 */
dkato 0:f782d9c66c49 530 template <typename T, typename R, typename A0>
dkato 0:f782d9c66c49 531 int call_in(int ms, const T *obj, R (T::*method)(A0) const, A0 a0) {
dkato 0:f782d9c66c49 532 return call_in(ms, mbed::callback(obj, method), a0);
dkato 0:f782d9c66c49 533 }
dkato 0:f782d9c66c49 534
dkato 0:f782d9c66c49 535 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 536 * @see EventQueue::call_in
dkato 0:f782d9c66c49 537 */
dkato 0:f782d9c66c49 538 template <typename T, typename R, typename A0>
dkato 0:f782d9c66c49 539 int call_in(int ms, volatile T *obj, R (T::*method)(A0) volatile, A0 a0) {
dkato 0:f782d9c66c49 540 return call_in(ms, mbed::callback(obj, method), a0);
dkato 0:f782d9c66c49 541 }
dkato 0:f782d9c66c49 542
dkato 0:f782d9c66c49 543 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 544 * @see EventQueue::call_in
dkato 0:f782d9c66c49 545 */
dkato 0:f782d9c66c49 546 template <typename T, typename R, typename A0>
dkato 0:f782d9c66c49 547 int call_in(int ms, const volatile T *obj, R (T::*method)(A0) const volatile, A0 a0) {
dkato 0:f782d9c66c49 548 return call_in(ms, mbed::callback(obj, method), a0);
dkato 0:f782d9c66c49 549 }
dkato 0:f782d9c66c49 550
dkato 0:f782d9c66c49 551 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 552 * @see EventQueue::call_in
dkato 0:f782d9c66c49 553 */
dkato 0:f782d9c66c49 554 template <typename T, typename R, typename A0, typename A1>
dkato 0:f782d9c66c49 555 int call_in(int ms, T *obj, R (T::*method)(A0, A1), A0 a0, A1 a1) {
dkato 0:f782d9c66c49 556 return call_in(ms, mbed::callback(obj, method), a0, a1);
dkato 0:f782d9c66c49 557 }
dkato 0:f782d9c66c49 558
dkato 0:f782d9c66c49 559 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 560 * @see EventQueue::call_in
dkato 0:f782d9c66c49 561 */
dkato 0:f782d9c66c49 562 template <typename T, typename R, typename A0, typename A1>
dkato 0:f782d9c66c49 563 int call_in(int ms, const T *obj, R (T::*method)(A0, A1) const, A0 a0, A1 a1) {
dkato 0:f782d9c66c49 564 return call_in(ms, mbed::callback(obj, method), a0, a1);
dkato 0:f782d9c66c49 565 }
dkato 0:f782d9c66c49 566
dkato 0:f782d9c66c49 567 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 568 * @see EventQueue::call_in
dkato 0:f782d9c66c49 569 */
dkato 0:f782d9c66c49 570 template <typename T, typename R, typename A0, typename A1>
dkato 0:f782d9c66c49 571 int call_in(int ms, volatile T *obj, R (T::*method)(A0, A1) volatile, A0 a0, A1 a1) {
dkato 0:f782d9c66c49 572 return call_in(ms, mbed::callback(obj, method), a0, a1);
dkato 0:f782d9c66c49 573 }
dkato 0:f782d9c66c49 574
dkato 0:f782d9c66c49 575 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 576 * @see EventQueue::call_in
dkato 0:f782d9c66c49 577 */
dkato 0:f782d9c66c49 578 template <typename T, typename R, typename A0, typename A1>
dkato 0:f782d9c66c49 579 int call_in(int ms, const volatile T *obj, R (T::*method)(A0, A1) const volatile, A0 a0, A1 a1) {
dkato 0:f782d9c66c49 580 return call_in(ms, mbed::callback(obj, method), a0, a1);
dkato 0:f782d9c66c49 581 }
dkato 0:f782d9c66c49 582
dkato 0:f782d9c66c49 583 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 584 * @see EventQueue::call_in
dkato 0:f782d9c66c49 585 */
dkato 0:f782d9c66c49 586 template <typename T, typename R, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 587 int call_in(int ms, T *obj, R (T::*method)(A0, A1, A2), A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 588 return call_in(ms, mbed::callback(obj, method), a0, a1, a2);
dkato 0:f782d9c66c49 589 }
dkato 0:f782d9c66c49 590
dkato 0:f782d9c66c49 591 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 592 * @see EventQueue::call_in
dkato 0:f782d9c66c49 593 */
dkato 0:f782d9c66c49 594 template <typename T, typename R, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 595 int call_in(int ms, const T *obj, R (T::*method)(A0, A1, A2) const, A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 596 return call_in(ms, mbed::callback(obj, method), a0, a1, a2);
dkato 0:f782d9c66c49 597 }
dkato 0:f782d9c66c49 598
dkato 0:f782d9c66c49 599 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 600 * @see EventQueue::call_in
dkato 0:f782d9c66c49 601 */
dkato 0:f782d9c66c49 602 template <typename T, typename R, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 603 int call_in(int ms, volatile T *obj, R (T::*method)(A0, A1, A2) volatile, A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 604 return call_in(ms, mbed::callback(obj, method), a0, a1, a2);
dkato 0:f782d9c66c49 605 }
dkato 0:f782d9c66c49 606
dkato 0:f782d9c66c49 607 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 608 * @see EventQueue::call_in
dkato 0:f782d9c66c49 609 */
dkato 0:f782d9c66c49 610 template <typename T, typename R, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 611 int call_in(int ms, const volatile T *obj, R (T::*method)(A0, A1, A2) const volatile, A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 612 return call_in(ms, mbed::callback(obj, method), a0, a1, a2);
dkato 0:f782d9c66c49 613 }
dkato 0:f782d9c66c49 614
dkato 0:f782d9c66c49 615 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 616 * @see EventQueue::call_in
dkato 0:f782d9c66c49 617 */
dkato 0:f782d9c66c49 618 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 619 int call_in(int ms, T *obj, R (T::*method)(A0, A1, A2, A3), A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 620 return call_in(ms, mbed::callback(obj, method), a0, a1, a2, a3);
dkato 0:f782d9c66c49 621 }
dkato 0:f782d9c66c49 622
dkato 0:f782d9c66c49 623 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 624 * @see EventQueue::call_in
dkato 0:f782d9c66c49 625 */
dkato 0:f782d9c66c49 626 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 627 int call_in(int ms, const T *obj, R (T::*method)(A0, A1, A2, A3) const, A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 628 return call_in(ms, mbed::callback(obj, method), a0, a1, a2, a3);
dkato 0:f782d9c66c49 629 }
dkato 0:f782d9c66c49 630
dkato 0:f782d9c66c49 631 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 632 * @see EventQueue::call_in
dkato 0:f782d9c66c49 633 */
dkato 0:f782d9c66c49 634 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 635 int call_in(int ms, volatile T *obj, R (T::*method)(A0, A1, A2, A3) volatile, A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 636 return call_in(ms, mbed::callback(obj, method), a0, a1, a2, a3);
dkato 0:f782d9c66c49 637 }
dkato 0:f782d9c66c49 638
dkato 0:f782d9c66c49 639 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 640 * @see EventQueue::call_in
dkato 0:f782d9c66c49 641 */
dkato 0:f782d9c66c49 642 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 643 int call_in(int ms, const volatile T *obj, R (T::*method)(A0, A1, A2, A3) const volatile, A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 644 return call_in(ms, mbed::callback(obj, method), a0, a1, a2, a3);
dkato 0:f782d9c66c49 645 }
dkato 0:f782d9c66c49 646
dkato 0:f782d9c66c49 647 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 648 * @see EventQueue::call_in
dkato 0:f782d9c66c49 649 */
dkato 0:f782d9c66c49 650 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 651 int call_in(int ms, T *obj, R (T::*method)(A0, A1, A2, A3, A4), A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 652 return call_in(ms, mbed::callback(obj, method), a0, a1, a2, a3, a4);
dkato 0:f782d9c66c49 653 }
dkato 0:f782d9c66c49 654
dkato 0:f782d9c66c49 655 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 656 * @see EventQueue::call_in
dkato 0:f782d9c66c49 657 */
dkato 0:f782d9c66c49 658 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 659 int call_in(int ms, const T *obj, R (T::*method)(A0, A1, A2, A3, A4) const, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 660 return call_in(ms, mbed::callback(obj, method), a0, a1, a2, a3, a4);
dkato 0:f782d9c66c49 661 }
dkato 0:f782d9c66c49 662
dkato 0:f782d9c66c49 663 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 664 * @see EventQueue::call_in
dkato 0:f782d9c66c49 665 */
dkato 0:f782d9c66c49 666 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 667 int call_in(int ms, volatile T *obj, R (T::*method)(A0, A1, A2, A3, A4) volatile, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 668 return call_in(ms, mbed::callback(obj, method), a0, a1, a2, a3, a4);
dkato 0:f782d9c66c49 669 }
dkato 0:f782d9c66c49 670
dkato 0:f782d9c66c49 671 /** Calls an event on the queue after a specified delay
dkato 0:f782d9c66c49 672 * @see EventQueue::call_in
dkato 0:f782d9c66c49 673 */
dkato 0:f782d9c66c49 674 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 675 int call_in(int ms, const volatile T *obj, R (T::*method)(A0, A1, A2, A3, A4) const volatile, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 676 return call_in(ms, mbed::callback(obj, method), a0, a1, a2, a3, a4);
dkato 0:f782d9c66c49 677 }
dkato 0:f782d9c66c49 678
dkato 0:f782d9c66c49 679 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 680 *
dkato 0:f782d9c66c49 681 * The specified callback will be executed in the context of the event
dkato 0:f782d9c66c49 682 * queue's dispatch loop.
dkato 0:f782d9c66c49 683 *
dkato 0:f782d9c66c49 684 * The call_every function is irq safe and can act as a mechanism for
dkato 0:f782d9c66c49 685 * moving events out of irq contexts.
dkato 0:f782d9c66c49 686 *
dkato 0:f782d9c66c49 687 * @param f Function to execute in the context of the dispatch loop
dkato 0:f782d9c66c49 688 * @param a0..a4 Arguments to pass to the callback
dkato 0:f782d9c66c49 689 * @param ms Period of the event in milliseconds
dkato 0:f782d9c66c49 690 * @return A unique id that represents the posted event and can
dkato 0:f782d9c66c49 691 * be passed to cancel, or an id of 0 if there is not
dkato 0:f782d9c66c49 692 * enough memory to allocate the event.
dkato 0:f782d9c66c49 693 */
dkato 0:f782d9c66c49 694 template <typename F>
dkato 0:f782d9c66c49 695 int call_every(int ms, F f) {
dkato 0:f782d9c66c49 696 void *p = equeue_alloc(&_equeue, sizeof(F));
dkato 0:f782d9c66c49 697 if (!p) {
dkato 0:f782d9c66c49 698 return 0;
dkato 0:f782d9c66c49 699 }
dkato 0:f782d9c66c49 700
dkato 0:f782d9c66c49 701 F *e = new (p) F(f);
dkato 0:f782d9c66c49 702 equeue_event_delay(e, ms);
dkato 0:f782d9c66c49 703 equeue_event_period(e, ms);
dkato 0:f782d9c66c49 704 equeue_event_dtor(e, &EventQueue::function_dtor<F>);
dkato 0:f782d9c66c49 705 return equeue_post(&_equeue, &EventQueue::function_call<F>, e);
dkato 0:f782d9c66c49 706 }
dkato 0:f782d9c66c49 707
dkato 0:f782d9c66c49 708 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 709 * @see EventQueue::call_every
dkato 0:f782d9c66c49 710 */
dkato 0:f782d9c66c49 711 template <typename F, typename A0>
dkato 0:f782d9c66c49 712 int call_every(int ms, F f, A0 a0) {
dkato 0:f782d9c66c49 713 return call_every(ms, context10<F, A0>(f, a0));
dkato 0:f782d9c66c49 714 }
dkato 0:f782d9c66c49 715
dkato 0:f782d9c66c49 716 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 717 * @see EventQueue::call_every
dkato 0:f782d9c66c49 718 */
dkato 0:f782d9c66c49 719 template <typename F, typename A0, typename A1>
dkato 0:f782d9c66c49 720 int call_every(int ms, F f, A0 a0, A1 a1) {
dkato 0:f782d9c66c49 721 return call_every(ms, context20<F, A0, A1>(f, a0, a1));
dkato 0:f782d9c66c49 722 }
dkato 0:f782d9c66c49 723
dkato 0:f782d9c66c49 724 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 725 * @see EventQueue::call_every
dkato 0:f782d9c66c49 726 */
dkato 0:f782d9c66c49 727 template <typename F, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 728 int call_every(int ms, F f, A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 729 return call_every(ms, context30<F, A0, A1, A2>(f, a0, a1, a2));
dkato 0:f782d9c66c49 730 }
dkato 0:f782d9c66c49 731
dkato 0:f782d9c66c49 732 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 733 * @see EventQueue::call_every
dkato 0:f782d9c66c49 734 */
dkato 0:f782d9c66c49 735 template <typename F, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 736 int call_every(int ms, F f, A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 737 return call_every(ms, context40<F, A0, A1, A2, A3>(f, a0, a1, a2, a3));
dkato 0:f782d9c66c49 738 }
dkato 0:f782d9c66c49 739
dkato 0:f782d9c66c49 740 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 741 * @see EventQueue::call_every
dkato 0:f782d9c66c49 742 */
dkato 0:f782d9c66c49 743 template <typename F, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 744 int call_every(int ms, F f, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 745 return call_every(ms, context50<F, A0, A1, A2, A3, A4>(f, a0, a1, a2, a3, a4));
dkato 0:f782d9c66c49 746 }
dkato 0:f782d9c66c49 747
dkato 0:f782d9c66c49 748 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 749 * @see EventQueue::call_every
dkato 0:f782d9c66c49 750 */
dkato 0:f782d9c66c49 751 template <typename T, typename R>
dkato 0:f782d9c66c49 752 int call_every(int ms, T *obj, R (T::*method)()) {
dkato 0:f782d9c66c49 753 return call_every(ms, mbed::callback(obj, method));
dkato 0:f782d9c66c49 754 }
dkato 0:f782d9c66c49 755
dkato 0:f782d9c66c49 756 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 757 * @see EventQueue::call_every
dkato 0:f782d9c66c49 758 */
dkato 0:f782d9c66c49 759 template <typename T, typename R>
dkato 0:f782d9c66c49 760 int call_every(int ms, const T *obj, R (T::*method)() const) {
dkato 0:f782d9c66c49 761 return call_every(ms, mbed::callback(obj, method));
dkato 0:f782d9c66c49 762 }
dkato 0:f782d9c66c49 763
dkato 0:f782d9c66c49 764 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 765 * @see EventQueue::call_every
dkato 0:f782d9c66c49 766 */
dkato 0:f782d9c66c49 767 template <typename T, typename R>
dkato 0:f782d9c66c49 768 int call_every(int ms, volatile T *obj, R (T::*method)() volatile) {
dkato 0:f782d9c66c49 769 return call_every(ms, mbed::callback(obj, method));
dkato 0:f782d9c66c49 770 }
dkato 0:f782d9c66c49 771
dkato 0:f782d9c66c49 772 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 773 * @see EventQueue::call_every
dkato 0:f782d9c66c49 774 */
dkato 0:f782d9c66c49 775 template <typename T, typename R>
dkato 0:f782d9c66c49 776 int call_every(int ms, const volatile T *obj, R (T::*method)() const volatile) {
dkato 0:f782d9c66c49 777 return call_every(ms, mbed::callback(obj, method));
dkato 0:f782d9c66c49 778 }
dkato 0:f782d9c66c49 779
dkato 0:f782d9c66c49 780 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 781 * @see EventQueue::call_every
dkato 0:f782d9c66c49 782 */
dkato 0:f782d9c66c49 783 template <typename T, typename R, typename A0>
dkato 0:f782d9c66c49 784 int call_every(int ms, T *obj, R (T::*method)(A0), A0 a0) {
dkato 0:f782d9c66c49 785 return call_every(ms, mbed::callback(obj, method), a0);
dkato 0:f782d9c66c49 786 }
dkato 0:f782d9c66c49 787
dkato 0:f782d9c66c49 788 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 789 * @see EventQueue::call_every
dkato 0:f782d9c66c49 790 */
dkato 0:f782d9c66c49 791 template <typename T, typename R, typename A0>
dkato 0:f782d9c66c49 792 int call_every(int ms, const T *obj, R (T::*method)(A0) const, A0 a0) {
dkato 0:f782d9c66c49 793 return call_every(ms, mbed::callback(obj, method), a0);
dkato 0:f782d9c66c49 794 }
dkato 0:f782d9c66c49 795
dkato 0:f782d9c66c49 796 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 797 * @see EventQueue::call_every
dkato 0:f782d9c66c49 798 */
dkato 0:f782d9c66c49 799 template <typename T, typename R, typename A0>
dkato 0:f782d9c66c49 800 int call_every(int ms, volatile T *obj, R (T::*method)(A0) volatile, A0 a0) {
dkato 0:f782d9c66c49 801 return call_every(ms, mbed::callback(obj, method), a0);
dkato 0:f782d9c66c49 802 }
dkato 0:f782d9c66c49 803
dkato 0:f782d9c66c49 804 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 805 * @see EventQueue::call_every
dkato 0:f782d9c66c49 806 */
dkato 0:f782d9c66c49 807 template <typename T, typename R, typename A0>
dkato 0:f782d9c66c49 808 int call_every(int ms, const volatile T *obj, R (T::*method)(A0) const volatile, A0 a0) {
dkato 0:f782d9c66c49 809 return call_every(ms, mbed::callback(obj, method), a0);
dkato 0:f782d9c66c49 810 }
dkato 0:f782d9c66c49 811
dkato 0:f782d9c66c49 812 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 813 * @see EventQueue::call_every
dkato 0:f782d9c66c49 814 */
dkato 0:f782d9c66c49 815 template <typename T, typename R, typename A0, typename A1>
dkato 0:f782d9c66c49 816 int call_every(int ms, T *obj, R (T::*method)(A0, A1), A0 a0, A1 a1) {
dkato 0:f782d9c66c49 817 return call_every(ms, mbed::callback(obj, method), a0, a1);
dkato 0:f782d9c66c49 818 }
dkato 0:f782d9c66c49 819
dkato 0:f782d9c66c49 820 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 821 * @see EventQueue::call_every
dkato 0:f782d9c66c49 822 */
dkato 0:f782d9c66c49 823 template <typename T, typename R, typename A0, typename A1>
dkato 0:f782d9c66c49 824 int call_every(int ms, const T *obj, R (T::*method)(A0, A1) const, A0 a0, A1 a1) {
dkato 0:f782d9c66c49 825 return call_every(ms, mbed::callback(obj, method), a0, a1);
dkato 0:f782d9c66c49 826 }
dkato 0:f782d9c66c49 827
dkato 0:f782d9c66c49 828 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 829 * @see EventQueue::call_every
dkato 0:f782d9c66c49 830 */
dkato 0:f782d9c66c49 831 template <typename T, typename R, typename A0, typename A1>
dkato 0:f782d9c66c49 832 int call_every(int ms, volatile T *obj, R (T::*method)(A0, A1) volatile, A0 a0, A1 a1) {
dkato 0:f782d9c66c49 833 return call_every(ms, mbed::callback(obj, method), a0, a1);
dkato 0:f782d9c66c49 834 }
dkato 0:f782d9c66c49 835
dkato 0:f782d9c66c49 836 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 837 * @see EventQueue::call_every
dkato 0:f782d9c66c49 838 */
dkato 0:f782d9c66c49 839 template <typename T, typename R, typename A0, typename A1>
dkato 0:f782d9c66c49 840 int call_every(int ms, const volatile T *obj, R (T::*method)(A0, A1) const volatile, A0 a0, A1 a1) {
dkato 0:f782d9c66c49 841 return call_every(ms, mbed::callback(obj, method), a0, a1);
dkato 0:f782d9c66c49 842 }
dkato 0:f782d9c66c49 843
dkato 0:f782d9c66c49 844 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 845 * @see EventQueue::call_every
dkato 0:f782d9c66c49 846 */
dkato 0:f782d9c66c49 847 template <typename T, typename R, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 848 int call_every(int ms, T *obj, R (T::*method)(A0, A1, A2), A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 849 return call_every(ms, mbed::callback(obj, method), a0, a1, a2);
dkato 0:f782d9c66c49 850 }
dkato 0:f782d9c66c49 851
dkato 0:f782d9c66c49 852 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 853 * @see EventQueue::call_every
dkato 0:f782d9c66c49 854 */
dkato 0:f782d9c66c49 855 template <typename T, typename R, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 856 int call_every(int ms, const T *obj, R (T::*method)(A0, A1, A2) const, A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 857 return call_every(ms, mbed::callback(obj, method), a0, a1, a2);
dkato 0:f782d9c66c49 858 }
dkato 0:f782d9c66c49 859
dkato 0:f782d9c66c49 860 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 861 * @see EventQueue::call_every
dkato 0:f782d9c66c49 862 */
dkato 0:f782d9c66c49 863 template <typename T, typename R, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 864 int call_every(int ms, volatile T *obj, R (T::*method)(A0, A1, A2) volatile, A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 865 return call_every(ms, mbed::callback(obj, method), a0, a1, a2);
dkato 0:f782d9c66c49 866 }
dkato 0:f782d9c66c49 867
dkato 0:f782d9c66c49 868 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 869 * @see EventQueue::call_every
dkato 0:f782d9c66c49 870 */
dkato 0:f782d9c66c49 871 template <typename T, typename R, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 872 int call_every(int ms, const volatile T *obj, R (T::*method)(A0, A1, A2) const volatile, A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 873 return call_every(ms, mbed::callback(obj, method), a0, a1, a2);
dkato 0:f782d9c66c49 874 }
dkato 0:f782d9c66c49 875
dkato 0:f782d9c66c49 876 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 877 * @see EventQueue::call_every
dkato 0:f782d9c66c49 878 */
dkato 0:f782d9c66c49 879 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 880 int call_every(int ms, T *obj, R (T::*method)(A0, A1, A2, A3), A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 881 return call_every(ms, mbed::callback(obj, method), a0, a1, a2, a3);
dkato 0:f782d9c66c49 882 }
dkato 0:f782d9c66c49 883
dkato 0:f782d9c66c49 884 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 885 * @see EventQueue::call_every
dkato 0:f782d9c66c49 886 */
dkato 0:f782d9c66c49 887 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 888 int call_every(int ms, const T *obj, R (T::*method)(A0, A1, A2, A3) const, A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 889 return call_every(ms, mbed::callback(obj, method), a0, a1, a2, a3);
dkato 0:f782d9c66c49 890 }
dkato 0:f782d9c66c49 891
dkato 0:f782d9c66c49 892 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 893 * @see EventQueue::call_every
dkato 0:f782d9c66c49 894 */
dkato 0:f782d9c66c49 895 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 896 int call_every(int ms, volatile T *obj, R (T::*method)(A0, A1, A2, A3) volatile, A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 897 return call_every(ms, mbed::callback(obj, method), a0, a1, a2, a3);
dkato 0:f782d9c66c49 898 }
dkato 0:f782d9c66c49 899
dkato 0:f782d9c66c49 900 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 901 * @see EventQueue::call_every
dkato 0:f782d9c66c49 902 */
dkato 0:f782d9c66c49 903 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 904 int call_every(int ms, const volatile T *obj, R (T::*method)(A0, A1, A2, A3) const volatile, A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 905 return call_every(ms, mbed::callback(obj, method), a0, a1, a2, a3);
dkato 0:f782d9c66c49 906 }
dkato 0:f782d9c66c49 907
dkato 0:f782d9c66c49 908 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 909 * @see EventQueue::call_every
dkato 0:f782d9c66c49 910 */
dkato 0:f782d9c66c49 911 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 912 int call_every(int ms, T *obj, R (T::*method)(A0, A1, A2, A3, A4), A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 913 return call_every(ms, mbed::callback(obj, method), a0, a1, a2, a3, a4);
dkato 0:f782d9c66c49 914 }
dkato 0:f782d9c66c49 915
dkato 0:f782d9c66c49 916 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 917 * @see EventQueue::call_every
dkato 0:f782d9c66c49 918 */
dkato 0:f782d9c66c49 919 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 920 int call_every(int ms, const T *obj, R (T::*method)(A0, A1, A2, A3, A4) const, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 921 return call_every(ms, mbed::callback(obj, method), a0, a1, a2, a3, a4);
dkato 0:f782d9c66c49 922 }
dkato 0:f782d9c66c49 923
dkato 0:f782d9c66c49 924 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 925 * @see EventQueue::call_every
dkato 0:f782d9c66c49 926 */
dkato 0:f782d9c66c49 927 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 928 int call_every(int ms, volatile T *obj, R (T::*method)(A0, A1, A2, A3, A4) volatile, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 929 return call_every(ms, mbed::callback(obj, method), a0, a1, a2, a3, a4);
dkato 0:f782d9c66c49 930 }
dkato 0:f782d9c66c49 931
dkato 0:f782d9c66c49 932 /** Calls an event on the queue periodically
dkato 0:f782d9c66c49 933 * @see EventQueue::call_every
dkato 0:f782d9c66c49 934 */
dkato 0:f782d9c66c49 935 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 936 int call_every(int ms, const volatile T *obj, R (T::*method)(A0, A1, A2, A3, A4) const volatile, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 937 return call_every(ms, mbed::callback(obj, method), a0, a1, a2, a3, a4);
dkato 0:f782d9c66c49 938 }
dkato 0:f782d9c66c49 939
dkato 0:f782d9c66c49 940 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 941 *
dkato 0:f782d9c66c49 942 * Constructs an event bound to the specified event queue. The specified
dkato 0:f782d9c66c49 943 * callback acts as the target for the event and is executed in the
dkato 0:f782d9c66c49 944 * context of the event queue's dispatch loop once posted.
dkato 0:f782d9c66c49 945 *
dkato 0:f782d9c66c49 946 * @param f Function to execute when the event is dispatched
dkato 0:f782d9c66c49 947 * @param c0..c4 Arguments to bind to the callback, these arguments are
dkato 0:f782d9c66c49 948 * allocated on an irq-safe allocator from the event queue's
dkato 0:f782d9c66c49 949 * memory pool. Must be type-compatible with b0..b4, the
dkato 0:f782d9c66c49 950 * arguments to the underlying callback.
dkato 0:f782d9c66c49 951 * @return Event that will dispatch on the specific queue
dkato 0:f782d9c66c49 952 */
dkato 0:f782d9c66c49 953 template <typename R>
dkato 0:f782d9c66c49 954 Event<void()> event(R (*func)());
dkato 0:f782d9c66c49 955
dkato 0:f782d9c66c49 956 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 957 * @see EventQueue::event
dkato 0:f782d9c66c49 958 */
dkato 0:f782d9c66c49 959 template <typename T, typename R>
dkato 0:f782d9c66c49 960 Event<void()> event(T *obj, R (T::*method)());
dkato 0:f782d9c66c49 961
dkato 0:f782d9c66c49 962 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 963 * @see EventQueue::event
dkato 0:f782d9c66c49 964 */
dkato 0:f782d9c66c49 965 template <typename T, typename R>
dkato 0:f782d9c66c49 966 Event<void()> event(const T *obj, R (T::*method)() const);
dkato 0:f782d9c66c49 967
dkato 0:f782d9c66c49 968 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 969 * @see EventQueue::event
dkato 0:f782d9c66c49 970 */
dkato 0:f782d9c66c49 971 template <typename T, typename R>
dkato 0:f782d9c66c49 972 Event<void()> event(volatile T *obj, R (T::*method)() volatile);
dkato 0:f782d9c66c49 973
dkato 0:f782d9c66c49 974 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 975 * @see EventQueue::event
dkato 0:f782d9c66c49 976 */
dkato 0:f782d9c66c49 977 template <typename T, typename R>
dkato 0:f782d9c66c49 978 Event<void()> event(const volatile T *obj, R (T::*method)() const volatile);
dkato 0:f782d9c66c49 979
dkato 0:f782d9c66c49 980 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 981 * @see EventQueue::event
dkato 0:f782d9c66c49 982 */
dkato 0:f782d9c66c49 983 template <typename R>
dkato 0:f782d9c66c49 984 Event<void()> event(mbed::Callback<R()> cb);
dkato 0:f782d9c66c49 985
dkato 0:f782d9c66c49 986 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 987 * @see EventQueue::event
dkato 0:f782d9c66c49 988 */
dkato 0:f782d9c66c49 989 template <typename R, typename B0, typename C0>
dkato 0:f782d9c66c49 990 Event<void()> event(R (*func)(B0), C0 c0);
dkato 0:f782d9c66c49 991
dkato 0:f782d9c66c49 992 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 993 * @see EventQueue::event
dkato 0:f782d9c66c49 994 */
dkato 0:f782d9c66c49 995 template <typename T, typename R, typename B0, typename C0>
dkato 0:f782d9c66c49 996 Event<void()> event(T *obj, R (T::*method)(B0), C0 c0);
dkato 0:f782d9c66c49 997
dkato 0:f782d9c66c49 998 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 999 * @see EventQueue::event
dkato 0:f782d9c66c49 1000 */
dkato 0:f782d9c66c49 1001 template <typename T, typename R, typename B0, typename C0>
dkato 0:f782d9c66c49 1002 Event<void()> event(const T *obj, R (T::*method)(B0) const, C0 c0);
dkato 0:f782d9c66c49 1003
dkato 0:f782d9c66c49 1004 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1005 * @see EventQueue::event
dkato 0:f782d9c66c49 1006 */
dkato 0:f782d9c66c49 1007 template <typename T, typename R, typename B0, typename C0>
dkato 0:f782d9c66c49 1008 Event<void()> event(volatile T *obj, R (T::*method)(B0) volatile, C0 c0);
dkato 0:f782d9c66c49 1009
dkato 0:f782d9c66c49 1010 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1011 * @see EventQueue::event
dkato 0:f782d9c66c49 1012 */
dkato 0:f782d9c66c49 1013 template <typename T, typename R, typename B0, typename C0>
dkato 0:f782d9c66c49 1014 Event<void()> event(const volatile T *obj, R (T::*method)(B0) const volatile, C0 c0);
dkato 0:f782d9c66c49 1015
dkato 0:f782d9c66c49 1016 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1017 * @see EventQueue::event
dkato 0:f782d9c66c49 1018 */
dkato 0:f782d9c66c49 1019 template <typename R, typename B0, typename C0>
dkato 0:f782d9c66c49 1020 Event<void()> event(mbed::Callback<R(B0)> cb, C0 c0);
dkato 0:f782d9c66c49 1021
dkato 0:f782d9c66c49 1022 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1023 * @see EventQueue::event
dkato 0:f782d9c66c49 1024 */
dkato 0:f782d9c66c49 1025 template <typename R, typename B0, typename B1, typename C0, typename C1>
dkato 0:f782d9c66c49 1026 Event<void()> event(R (*func)(B0, B1), C0 c0, C1 c1);
dkato 0:f782d9c66c49 1027
dkato 0:f782d9c66c49 1028 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1029 * @see EventQueue::event
dkato 0:f782d9c66c49 1030 */
dkato 0:f782d9c66c49 1031 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1>
dkato 0:f782d9c66c49 1032 Event<void()> event(T *obj, R (T::*method)(B0, B1), C0 c0, C1 c1);
dkato 0:f782d9c66c49 1033
dkato 0:f782d9c66c49 1034 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1035 * @see EventQueue::event
dkato 0:f782d9c66c49 1036 */
dkato 0:f782d9c66c49 1037 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1>
dkato 0:f782d9c66c49 1038 Event<void()> event(const T *obj, R (T::*method)(B0, B1) const, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1039
dkato 0:f782d9c66c49 1040 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1041 * @see EventQueue::event
dkato 0:f782d9c66c49 1042 */
dkato 0:f782d9c66c49 1043 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1>
dkato 0:f782d9c66c49 1044 Event<void()> event(volatile T *obj, R (T::*method)(B0, B1) volatile, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1045
dkato 0:f782d9c66c49 1046 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1047 * @see EventQueue::event
dkato 0:f782d9c66c49 1048 */
dkato 0:f782d9c66c49 1049 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1>
dkato 0:f782d9c66c49 1050 Event<void()> event(const volatile T *obj, R (T::*method)(B0, B1) const volatile, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1051
dkato 0:f782d9c66c49 1052 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1053 * @see EventQueue::event
dkato 0:f782d9c66c49 1054 */
dkato 0:f782d9c66c49 1055 template <typename R, typename B0, typename B1, typename C0, typename C1>
dkato 0:f782d9c66c49 1056 Event<void()> event(mbed::Callback<R(B0, B1)> cb, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1057
dkato 0:f782d9c66c49 1058 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1059 * @see EventQueue::event
dkato 0:f782d9c66c49 1060 */
dkato 0:f782d9c66c49 1061 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2>
dkato 0:f782d9c66c49 1062 Event<void()> event(R (*func)(B0, B1, B2), C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1063
dkato 0:f782d9c66c49 1064 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1065 * @see EventQueue::event
dkato 0:f782d9c66c49 1066 */
dkato 0:f782d9c66c49 1067 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2>
dkato 0:f782d9c66c49 1068 Event<void()> event(T *obj, R (T::*method)(B0, B1, B2), C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1069
dkato 0:f782d9c66c49 1070 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1071 * @see EventQueue::event
dkato 0:f782d9c66c49 1072 */
dkato 0:f782d9c66c49 1073 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2>
dkato 0:f782d9c66c49 1074 Event<void()> event(const T *obj, R (T::*method)(B0, B1, B2) const, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1075
dkato 0:f782d9c66c49 1076 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1077 * @see EventQueue::event
dkato 0:f782d9c66c49 1078 */
dkato 0:f782d9c66c49 1079 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2>
dkato 0:f782d9c66c49 1080 Event<void()> event(volatile T *obj, R (T::*method)(B0, B1, B2) volatile, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1081
dkato 0:f782d9c66c49 1082 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1083 * @see EventQueue::event
dkato 0:f782d9c66c49 1084 */
dkato 0:f782d9c66c49 1085 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2>
dkato 0:f782d9c66c49 1086 Event<void()> event(const volatile T *obj, R (T::*method)(B0, B1, B2) const volatile, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1087
dkato 0:f782d9c66c49 1088 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1089 * @see EventQueue::event
dkato 0:f782d9c66c49 1090 */
dkato 0:f782d9c66c49 1091 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2>
dkato 0:f782d9c66c49 1092 Event<void()> event(mbed::Callback<R(B0, B1, B2)> cb, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1093
dkato 0:f782d9c66c49 1094 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1095 * @see EventQueue::event
dkato 0:f782d9c66c49 1096 */
dkato 0:f782d9c66c49 1097 template <typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3>
dkato 0:f782d9c66c49 1098 Event<void()> event(R (*func)(B0, B1, B2, B3), C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1099
dkato 0:f782d9c66c49 1100 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1101 * @see EventQueue::event
dkato 0:f782d9c66c49 1102 */
dkato 0:f782d9c66c49 1103 template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3>
dkato 0:f782d9c66c49 1104 Event<void()> event(T *obj, R (T::*method)(B0, B1, B2, B3), C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1105
dkato 0:f782d9c66c49 1106 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1107 * @see EventQueue::event
dkato 0:f782d9c66c49 1108 */
dkato 0:f782d9c66c49 1109 template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3>
dkato 0:f782d9c66c49 1110 Event<void()> event(const T *obj, R (T::*method)(B0, B1, B2, B3) const, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1111
dkato 0:f782d9c66c49 1112 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1113 * @see EventQueue::event
dkato 0:f782d9c66c49 1114 */
dkato 0:f782d9c66c49 1115 template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3>
dkato 0:f782d9c66c49 1116 Event<void()> event(volatile T *obj, R (T::*method)(B0, B1, B2, B3) volatile, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1117
dkato 0:f782d9c66c49 1118 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1119 * @see EventQueue::event
dkato 0:f782d9c66c49 1120 */
dkato 0:f782d9c66c49 1121 template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3>
dkato 0:f782d9c66c49 1122 Event<void()> event(const volatile T *obj, R (T::*method)(B0, B1, B2, B3) const volatile, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1123
dkato 0:f782d9c66c49 1124 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1125 * @see EventQueue::event
dkato 0:f782d9c66c49 1126 */
dkato 0:f782d9c66c49 1127 template <typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3>
dkato 0:f782d9c66c49 1128 Event<void()> event(mbed::Callback<R(B0, B1, B2, B3)> cb, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1129
dkato 0:f782d9c66c49 1130 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1131 * @see EventQueue::event
dkato 0:f782d9c66c49 1132 */
dkato 0:f782d9c66c49 1133 template <typename R, typename B0, typename B1, typename B2, typename B3, typename B4, typename C0, typename C1, typename C2, typename C3, typename C4>
dkato 0:f782d9c66c49 1134 Event<void()> event(R (*func)(B0, B1, B2, B3, B4), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1135
dkato 0:f782d9c66c49 1136 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1137 * @see EventQueue::event
dkato 0:f782d9c66c49 1138 */
dkato 0:f782d9c66c49 1139 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>
dkato 0:f782d9c66c49 1140 Event<void()> event(T *obj, R (T::*method)(B0, B1, B2, B3, B4), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1141
dkato 0:f782d9c66c49 1142 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1143 * @see EventQueue::event
dkato 0:f782d9c66c49 1144 */
dkato 0:f782d9c66c49 1145 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>
dkato 0:f782d9c66c49 1146 Event<void()> event(const T *obj, R (T::*method)(B0, B1, B2, B3, B4) const, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1147
dkato 0:f782d9c66c49 1148 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1149 * @see EventQueue::event
dkato 0:f782d9c66c49 1150 */
dkato 0:f782d9c66c49 1151 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>
dkato 0:f782d9c66c49 1152 Event<void()> event(volatile T *obj, R (T::*method)(B0, B1, B2, B3, B4) volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1153
dkato 0:f782d9c66c49 1154 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1155 * @see EventQueue::event
dkato 0:f782d9c66c49 1156 */
dkato 0:f782d9c66c49 1157 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>
dkato 0:f782d9c66c49 1158 Event<void()> event(const volatile T *obj, R (T::*method)(B0, B1, B2, B3, B4) const volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1159
dkato 0:f782d9c66c49 1160 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1161 * @see EventQueue::event
dkato 0:f782d9c66c49 1162 */
dkato 0:f782d9c66c49 1163 template <typename R, typename B0, typename B1, typename B2, typename B3, typename B4, typename C0, typename C1, typename C2, typename C3, typename C4>
dkato 0:f782d9c66c49 1164 Event<void()> event(mbed::Callback<R(B0, B1, B2, B3, B4)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1165
dkato 0:f782d9c66c49 1166 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1167 * @see EventQueue::event
dkato 0:f782d9c66c49 1168 */
dkato 0:f782d9c66c49 1169 template <typename R, typename A0>
dkato 0:f782d9c66c49 1170 Event<void(A0)> event(R (*func)(A0));
dkato 0:f782d9c66c49 1171
dkato 0:f782d9c66c49 1172 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1173 * @see EventQueue::event
dkato 0:f782d9c66c49 1174 */
dkato 0:f782d9c66c49 1175 template <typename T, typename R, typename A0>
dkato 0:f782d9c66c49 1176 Event<void(A0)> event(T *obj, R (T::*method)(A0));
dkato 0:f782d9c66c49 1177
dkato 0:f782d9c66c49 1178 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1179 * @see EventQueue::event
dkato 0:f782d9c66c49 1180 */
dkato 0:f782d9c66c49 1181 template <typename T, typename R, typename A0>
dkato 0:f782d9c66c49 1182 Event<void(A0)> event(const T *obj, R (T::*method)(A0) const);
dkato 0:f782d9c66c49 1183
dkato 0:f782d9c66c49 1184 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1185 * @see EventQueue::event
dkato 0:f782d9c66c49 1186 */
dkato 0:f782d9c66c49 1187 template <typename T, typename R, typename A0>
dkato 0:f782d9c66c49 1188 Event<void(A0)> event(volatile T *obj, R (T::*method)(A0) volatile);
dkato 0:f782d9c66c49 1189
dkato 0:f782d9c66c49 1190 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1191 * @see EventQueue::event
dkato 0:f782d9c66c49 1192 */
dkato 0:f782d9c66c49 1193 template <typename T, typename R, typename A0>
dkato 0:f782d9c66c49 1194 Event<void(A0)> event(const volatile T *obj, R (T::*method)(A0) const volatile);
dkato 0:f782d9c66c49 1195
dkato 0:f782d9c66c49 1196 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1197 * @see EventQueue::event
dkato 0:f782d9c66c49 1198 */
dkato 0:f782d9c66c49 1199 template <typename R, typename A0>
dkato 0:f782d9c66c49 1200 Event<void(A0)> event(mbed::Callback<R(A0)> cb);
dkato 0:f782d9c66c49 1201
dkato 0:f782d9c66c49 1202 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1203 * @see EventQueue::event
dkato 0:f782d9c66c49 1204 */
dkato 0:f782d9c66c49 1205 template <typename R, typename B0, typename C0, typename A0>
dkato 0:f782d9c66c49 1206 Event<void(A0)> event(R (*func)(B0, A0), C0 c0);
dkato 0:f782d9c66c49 1207
dkato 0:f782d9c66c49 1208 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1209 * @see EventQueue::event
dkato 0:f782d9c66c49 1210 */
dkato 0:f782d9c66c49 1211 template <typename T, typename R, typename B0, typename C0, typename A0>
dkato 0:f782d9c66c49 1212 Event<void(A0)> event(T *obj, R (T::*method)(B0, A0), C0 c0);
dkato 0:f782d9c66c49 1213
dkato 0:f782d9c66c49 1214 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1215 * @see EventQueue::event
dkato 0:f782d9c66c49 1216 */
dkato 0:f782d9c66c49 1217 template <typename T, typename R, typename B0, typename C0, typename A0>
dkato 0:f782d9c66c49 1218 Event<void(A0)> event(const T *obj, R (T::*method)(B0, A0) const, C0 c0);
dkato 0:f782d9c66c49 1219
dkato 0:f782d9c66c49 1220 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1221 * @see EventQueue::event
dkato 0:f782d9c66c49 1222 */
dkato 0:f782d9c66c49 1223 template <typename T, typename R, typename B0, typename C0, typename A0>
dkato 0:f782d9c66c49 1224 Event<void(A0)> event(volatile T *obj, R (T::*method)(B0, A0) volatile, C0 c0);
dkato 0:f782d9c66c49 1225
dkato 0:f782d9c66c49 1226 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1227 * @see EventQueue::event
dkato 0:f782d9c66c49 1228 */
dkato 0:f782d9c66c49 1229 template <typename T, typename R, typename B0, typename C0, typename A0>
dkato 0:f782d9c66c49 1230 Event<void(A0)> event(const volatile T *obj, R (T::*method)(B0, A0) const volatile, C0 c0);
dkato 0:f782d9c66c49 1231
dkato 0:f782d9c66c49 1232 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1233 * @see EventQueue::event
dkato 0:f782d9c66c49 1234 */
dkato 0:f782d9c66c49 1235 template <typename R, typename B0, typename C0, typename A0>
dkato 0:f782d9c66c49 1236 Event<void(A0)> event(mbed::Callback<R(B0, A0)> cb, C0 c0);
dkato 0:f782d9c66c49 1237
dkato 0:f782d9c66c49 1238 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1239 * @see EventQueue::event
dkato 0:f782d9c66c49 1240 */
dkato 0:f782d9c66c49 1241 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0>
dkato 0:f782d9c66c49 1242 Event<void(A0)> event(R (*func)(B0, B1, A0), C0 c0, C1 c1);
dkato 0:f782d9c66c49 1243
dkato 0:f782d9c66c49 1244 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1245 * @see EventQueue::event
dkato 0:f782d9c66c49 1246 */
dkato 0:f782d9c66c49 1247 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0>
dkato 0:f782d9c66c49 1248 Event<void(A0)> event(T *obj, R (T::*method)(B0, B1, A0), C0 c0, C1 c1);
dkato 0:f782d9c66c49 1249
dkato 0:f782d9c66c49 1250 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1251 * @see EventQueue::event
dkato 0:f782d9c66c49 1252 */
dkato 0:f782d9c66c49 1253 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0>
dkato 0:f782d9c66c49 1254 Event<void(A0)> event(const T *obj, R (T::*method)(B0, B1, A0) const, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1255
dkato 0:f782d9c66c49 1256 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1257 * @see EventQueue::event
dkato 0:f782d9c66c49 1258 */
dkato 0:f782d9c66c49 1259 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0>
dkato 0:f782d9c66c49 1260 Event<void(A0)> event(volatile T *obj, R (T::*method)(B0, B1, A0) volatile, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1261
dkato 0:f782d9c66c49 1262 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1263 * @see EventQueue::event
dkato 0:f782d9c66c49 1264 */
dkato 0:f782d9c66c49 1265 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0>
dkato 0:f782d9c66c49 1266 Event<void(A0)> event(const volatile T *obj, R (T::*method)(B0, B1, A0) const volatile, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1267
dkato 0:f782d9c66c49 1268 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1269 * @see EventQueue::event
dkato 0:f782d9c66c49 1270 */
dkato 0:f782d9c66c49 1271 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0>
dkato 0:f782d9c66c49 1272 Event<void(A0)> event(mbed::Callback<R(B0, B1, A0)> cb, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1273
dkato 0:f782d9c66c49 1274 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1275 * @see EventQueue::event
dkato 0:f782d9c66c49 1276 */
dkato 0:f782d9c66c49 1277 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0>
dkato 0:f782d9c66c49 1278 Event<void(A0)> event(R (*func)(B0, B1, B2, A0), C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1279
dkato 0:f782d9c66c49 1280 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1281 * @see EventQueue::event
dkato 0:f782d9c66c49 1282 */
dkato 0:f782d9c66c49 1283 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0>
dkato 0:f782d9c66c49 1284 Event<void(A0)> event(T *obj, R (T::*method)(B0, B1, B2, A0), C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1285
dkato 0:f782d9c66c49 1286 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1287 * @see EventQueue::event
dkato 0:f782d9c66c49 1288 */
dkato 0:f782d9c66c49 1289 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0>
dkato 0:f782d9c66c49 1290 Event<void(A0)> event(const T *obj, R (T::*method)(B0, B1, B2, A0) const, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1291
dkato 0:f782d9c66c49 1292 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1293 * @see EventQueue::event
dkato 0:f782d9c66c49 1294 */
dkato 0:f782d9c66c49 1295 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0>
dkato 0:f782d9c66c49 1296 Event<void(A0)> event(volatile T *obj, R (T::*method)(B0, B1, B2, A0) volatile, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1297
dkato 0:f782d9c66c49 1298 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1299 * @see EventQueue::event
dkato 0:f782d9c66c49 1300 */
dkato 0:f782d9c66c49 1301 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0>
dkato 0:f782d9c66c49 1302 Event<void(A0)> event(const volatile T *obj, R (T::*method)(B0, B1, B2, A0) const volatile, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1303
dkato 0:f782d9c66c49 1304 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1305 * @see EventQueue::event
dkato 0:f782d9c66c49 1306 */
dkato 0:f782d9c66c49 1307 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0>
dkato 0:f782d9c66c49 1308 Event<void(A0)> event(mbed::Callback<R(B0, B1, B2, A0)> cb, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1309
dkato 0:f782d9c66c49 1310 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1311 * @see EventQueue::event
dkato 0:f782d9c66c49 1312 */
dkato 0:f782d9c66c49 1313 template <typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename A0>
dkato 0:f782d9c66c49 1314 Event<void(A0)> event(R (*func)(B0, B1, B2, B3, A0), C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1315
dkato 0:f782d9c66c49 1316 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1317 * @see EventQueue::event
dkato 0:f782d9c66c49 1318 */
dkato 0:f782d9c66c49 1319 template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename A0>
dkato 0:f782d9c66c49 1320 Event<void(A0)> event(T *obj, R (T::*method)(B0, B1, B2, B3, A0), C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1321
dkato 0:f782d9c66c49 1322 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1323 * @see EventQueue::event
dkato 0:f782d9c66c49 1324 */
dkato 0:f782d9c66c49 1325 template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename A0>
dkato 0:f782d9c66c49 1326 Event<void(A0)> event(const T *obj, R (T::*method)(B0, B1, B2, B3, A0) const, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1327
dkato 0:f782d9c66c49 1328 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1329 * @see EventQueue::event
dkato 0:f782d9c66c49 1330 */
dkato 0:f782d9c66c49 1331 template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename A0>
dkato 0:f782d9c66c49 1332 Event<void(A0)> event(volatile T *obj, R (T::*method)(B0, B1, B2, B3, A0) volatile, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1333
dkato 0:f782d9c66c49 1334 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1335 * @see EventQueue::event
dkato 0:f782d9c66c49 1336 */
dkato 0:f782d9c66c49 1337 template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename A0>
dkato 0:f782d9c66c49 1338 Event<void(A0)> event(const volatile T *obj, R (T::*method)(B0, B1, B2, B3, A0) const volatile, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1339
dkato 0:f782d9c66c49 1340 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1341 * @see EventQueue::event
dkato 0:f782d9c66c49 1342 */
dkato 0:f782d9c66c49 1343 template <typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename A0>
dkato 0:f782d9c66c49 1344 Event<void(A0)> event(mbed::Callback<R(B0, B1, B2, B3, A0)> cb, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1345
dkato 0:f782d9c66c49 1346 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1347 * @see EventQueue::event
dkato 0:f782d9c66c49 1348 */
dkato 0:f782d9c66c49 1349 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>
dkato 0:f782d9c66c49 1350 Event<void(A0)> event(R (*func)(B0, B1, B2, B3, B4, A0), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1351
dkato 0:f782d9c66c49 1352 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1353 * @see EventQueue::event
dkato 0:f782d9c66c49 1354 */
dkato 0:f782d9c66c49 1355 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>
dkato 0:f782d9c66c49 1356 Event<void(A0)> event(T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1357
dkato 0:f782d9c66c49 1358 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1359 * @see EventQueue::event
dkato 0:f782d9c66c49 1360 */
dkato 0:f782d9c66c49 1361 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>
dkato 0:f782d9c66c49 1362 Event<void(A0)> event(const T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0) const, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1363
dkato 0:f782d9c66c49 1364 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1365 * @see EventQueue::event
dkato 0:f782d9c66c49 1366 */
dkato 0:f782d9c66c49 1367 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>
dkato 0:f782d9c66c49 1368 Event<void(A0)> event(volatile T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0) volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1369
dkato 0:f782d9c66c49 1370 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1371 * @see EventQueue::event
dkato 0:f782d9c66c49 1372 */
dkato 0:f782d9c66c49 1373 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>
dkato 0:f782d9c66c49 1374 Event<void(A0)> event(const volatile T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0) const volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1375
dkato 0:f782d9c66c49 1376 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1377 * @see EventQueue::event
dkato 0:f782d9c66c49 1378 */
dkato 0:f782d9c66c49 1379 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>
dkato 0:f782d9c66c49 1380 Event<void(A0)> event(mbed::Callback<R(B0, B1, B2, B3, B4, A0)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1381
dkato 0:f782d9c66c49 1382 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1383 * @see EventQueue::event
dkato 0:f782d9c66c49 1384 */
dkato 0:f782d9c66c49 1385 template <typename R, typename A0, typename A1>
dkato 0:f782d9c66c49 1386 Event<void(A0, A1)> event(R (*func)(A0, A1));
dkato 0:f782d9c66c49 1387
dkato 0:f782d9c66c49 1388 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1389 * @see EventQueue::event
dkato 0:f782d9c66c49 1390 */
dkato 0:f782d9c66c49 1391 template <typename T, typename R, typename A0, typename A1>
dkato 0:f782d9c66c49 1392 Event<void(A0, A1)> event(T *obj, R (T::*method)(A0, A1));
dkato 0:f782d9c66c49 1393
dkato 0:f782d9c66c49 1394 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1395 * @see EventQueue::event
dkato 0:f782d9c66c49 1396 */
dkato 0:f782d9c66c49 1397 template <typename T, typename R, typename A0, typename A1>
dkato 0:f782d9c66c49 1398 Event<void(A0, A1)> event(const T *obj, R (T::*method)(A0, A1) const);
dkato 0:f782d9c66c49 1399
dkato 0:f782d9c66c49 1400 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1401 * @see EventQueue::event
dkato 0:f782d9c66c49 1402 */
dkato 0:f782d9c66c49 1403 template <typename T, typename R, typename A0, typename A1>
dkato 0:f782d9c66c49 1404 Event<void(A0, A1)> event(volatile T *obj, R (T::*method)(A0, A1) volatile);
dkato 0:f782d9c66c49 1405
dkato 0:f782d9c66c49 1406 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1407 * @see EventQueue::event
dkato 0:f782d9c66c49 1408 */
dkato 0:f782d9c66c49 1409 template <typename T, typename R, typename A0, typename A1>
dkato 0:f782d9c66c49 1410 Event<void(A0, A1)> event(const volatile T *obj, R (T::*method)(A0, A1) const volatile);
dkato 0:f782d9c66c49 1411
dkato 0:f782d9c66c49 1412 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1413 * @see EventQueue::event
dkato 0:f782d9c66c49 1414 */
dkato 0:f782d9c66c49 1415 template <typename R, typename A0, typename A1>
dkato 0:f782d9c66c49 1416 Event<void(A0, A1)> event(mbed::Callback<R(A0, A1)> cb);
dkato 0:f782d9c66c49 1417
dkato 0:f782d9c66c49 1418 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1419 * @see EventQueue::event
dkato 0:f782d9c66c49 1420 */
dkato 0:f782d9c66c49 1421 template <typename R, typename B0, typename C0, typename A0, typename A1>
dkato 0:f782d9c66c49 1422 Event<void(A0, A1)> event(R (*func)(B0, A0, A1), C0 c0);
dkato 0:f782d9c66c49 1423
dkato 0:f782d9c66c49 1424 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1425 * @see EventQueue::event
dkato 0:f782d9c66c49 1426 */
dkato 0:f782d9c66c49 1427 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1>
dkato 0:f782d9c66c49 1428 Event<void(A0, A1)> event(T *obj, R (T::*method)(B0, A0, A1), C0 c0);
dkato 0:f782d9c66c49 1429
dkato 0:f782d9c66c49 1430 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1431 * @see EventQueue::event
dkato 0:f782d9c66c49 1432 */
dkato 0:f782d9c66c49 1433 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1>
dkato 0:f782d9c66c49 1434 Event<void(A0, A1)> event(const T *obj, R (T::*method)(B0, A0, A1) const, C0 c0);
dkato 0:f782d9c66c49 1435
dkato 0:f782d9c66c49 1436 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1437 * @see EventQueue::event
dkato 0:f782d9c66c49 1438 */
dkato 0:f782d9c66c49 1439 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1>
dkato 0:f782d9c66c49 1440 Event<void(A0, A1)> event(volatile T *obj, R (T::*method)(B0, A0, A1) volatile, C0 c0);
dkato 0:f782d9c66c49 1441
dkato 0:f782d9c66c49 1442 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1443 * @see EventQueue::event
dkato 0:f782d9c66c49 1444 */
dkato 0:f782d9c66c49 1445 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1>
dkato 0:f782d9c66c49 1446 Event<void(A0, A1)> event(const volatile T *obj, R (T::*method)(B0, A0, A1) const volatile, C0 c0);
dkato 0:f782d9c66c49 1447
dkato 0:f782d9c66c49 1448 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1449 * @see EventQueue::event
dkato 0:f782d9c66c49 1450 */
dkato 0:f782d9c66c49 1451 template <typename R, typename B0, typename C0, typename A0, typename A1>
dkato 0:f782d9c66c49 1452 Event<void(A0, A1)> event(mbed::Callback<R(B0, A0, A1)> cb, C0 c0);
dkato 0:f782d9c66c49 1453
dkato 0:f782d9c66c49 1454 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1455 * @see EventQueue::event
dkato 0:f782d9c66c49 1456 */
dkato 0:f782d9c66c49 1457 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1>
dkato 0:f782d9c66c49 1458 Event<void(A0, A1)> event(R (*func)(B0, B1, A0, A1), C0 c0, C1 c1);
dkato 0:f782d9c66c49 1459
dkato 0:f782d9c66c49 1460 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1461 * @see EventQueue::event
dkato 0:f782d9c66c49 1462 */
dkato 0:f782d9c66c49 1463 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1>
dkato 0:f782d9c66c49 1464 Event<void(A0, A1)> event(T *obj, R (T::*method)(B0, B1, A0, A1), C0 c0, C1 c1);
dkato 0:f782d9c66c49 1465
dkato 0:f782d9c66c49 1466 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1467 * @see EventQueue::event
dkato 0:f782d9c66c49 1468 */
dkato 0:f782d9c66c49 1469 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1>
dkato 0:f782d9c66c49 1470 Event<void(A0, A1)> event(const T *obj, R (T::*method)(B0, B1, A0, A1) const, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1471
dkato 0:f782d9c66c49 1472 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1473 * @see EventQueue::event
dkato 0:f782d9c66c49 1474 */
dkato 0:f782d9c66c49 1475 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1>
dkato 0:f782d9c66c49 1476 Event<void(A0, A1)> event(volatile T *obj, R (T::*method)(B0, B1, A0, A1) volatile, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1477
dkato 0:f782d9c66c49 1478 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1479 * @see EventQueue::event
dkato 0:f782d9c66c49 1480 */
dkato 0:f782d9c66c49 1481 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1>
dkato 0:f782d9c66c49 1482 Event<void(A0, A1)> event(const volatile T *obj, R (T::*method)(B0, B1, A0, A1) const volatile, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1483
dkato 0:f782d9c66c49 1484 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1485 * @see EventQueue::event
dkato 0:f782d9c66c49 1486 */
dkato 0:f782d9c66c49 1487 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1>
dkato 0:f782d9c66c49 1488 Event<void(A0, A1)> event(mbed::Callback<R(B0, B1, A0, A1)> cb, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1489
dkato 0:f782d9c66c49 1490 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1491 * @see EventQueue::event
dkato 0:f782d9c66c49 1492 */
dkato 0:f782d9c66c49 1493 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1>
dkato 0:f782d9c66c49 1494 Event<void(A0, A1)> event(R (*func)(B0, B1, B2, A0, A1), C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1495
dkato 0:f782d9c66c49 1496 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1497 * @see EventQueue::event
dkato 0:f782d9c66c49 1498 */
dkato 0:f782d9c66c49 1499 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1>
dkato 0:f782d9c66c49 1500 Event<void(A0, A1)> event(T *obj, R (T::*method)(B0, B1, B2, A0, A1), C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1501
dkato 0:f782d9c66c49 1502 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1503 * @see EventQueue::event
dkato 0:f782d9c66c49 1504 */
dkato 0:f782d9c66c49 1505 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1>
dkato 0:f782d9c66c49 1506 Event<void(A0, A1)> event(const T *obj, R (T::*method)(B0, B1, B2, A0, A1) const, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1507
dkato 0:f782d9c66c49 1508 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1509 * @see EventQueue::event
dkato 0:f782d9c66c49 1510 */
dkato 0:f782d9c66c49 1511 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1>
dkato 0:f782d9c66c49 1512 Event<void(A0, A1)> event(volatile T *obj, R (T::*method)(B0, B1, B2, A0, A1) volatile, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1513
dkato 0:f782d9c66c49 1514 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1515 * @see EventQueue::event
dkato 0:f782d9c66c49 1516 */
dkato 0:f782d9c66c49 1517 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1>
dkato 0:f782d9c66c49 1518 Event<void(A0, A1)> event(const volatile T *obj, R (T::*method)(B0, B1, B2, A0, A1) const volatile, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1519
dkato 0:f782d9c66c49 1520 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1521 * @see EventQueue::event
dkato 0:f782d9c66c49 1522 */
dkato 0:f782d9c66c49 1523 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1>
dkato 0:f782d9c66c49 1524 Event<void(A0, A1)> event(mbed::Callback<R(B0, B1, B2, A0, A1)> cb, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1525
dkato 0:f782d9c66c49 1526 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1527 * @see EventQueue::event
dkato 0:f782d9c66c49 1528 */
dkato 0:f782d9c66c49 1529 template <typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename A0, typename A1>
dkato 0:f782d9c66c49 1530 Event<void(A0, A1)> event(R (*func)(B0, B1, B2, B3, A0, A1), C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1531
dkato 0:f782d9c66c49 1532 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1533 * @see EventQueue::event
dkato 0:f782d9c66c49 1534 */
dkato 0:f782d9c66c49 1535 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>
dkato 0:f782d9c66c49 1536 Event<void(A0, A1)> event(T *obj, R (T::*method)(B0, B1, B2, B3, A0, A1), C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1537
dkato 0:f782d9c66c49 1538 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1539 * @see EventQueue::event
dkato 0:f782d9c66c49 1540 */
dkato 0:f782d9c66c49 1541 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>
dkato 0:f782d9c66c49 1542 Event<void(A0, A1)> event(const T *obj, R (T::*method)(B0, B1, B2, B3, A0, A1) const, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1543
dkato 0:f782d9c66c49 1544 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1545 * @see EventQueue::event
dkato 0:f782d9c66c49 1546 */
dkato 0:f782d9c66c49 1547 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>
dkato 0:f782d9c66c49 1548 Event<void(A0, A1)> event(volatile T *obj, R (T::*method)(B0, B1, B2, B3, A0, A1) volatile, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1549
dkato 0:f782d9c66c49 1550 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1551 * @see EventQueue::event
dkato 0:f782d9c66c49 1552 */
dkato 0:f782d9c66c49 1553 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>
dkato 0:f782d9c66c49 1554 Event<void(A0, A1)> event(const volatile T *obj, R (T::*method)(B0, B1, B2, B3, A0, A1) const volatile, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1555
dkato 0:f782d9c66c49 1556 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1557 * @see EventQueue::event
dkato 0:f782d9c66c49 1558 */
dkato 0:f782d9c66c49 1559 template <typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename A0, typename A1>
dkato 0:f782d9c66c49 1560 Event<void(A0, A1)> event(mbed::Callback<R(B0, B1, B2, B3, A0, A1)> cb, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1561
dkato 0:f782d9c66c49 1562 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1563 * @see EventQueue::event
dkato 0:f782d9c66c49 1564 */
dkato 0:f782d9c66c49 1565 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>
dkato 0:f782d9c66c49 1566 Event<void(A0, A1)> event(R (*func)(B0, B1, B2, B3, B4, A0, A1), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1567
dkato 0:f782d9c66c49 1568 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1569 * @see EventQueue::event
dkato 0:f782d9c66c49 1570 */
dkato 0:f782d9c66c49 1571 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>
dkato 0:f782d9c66c49 1572 Event<void(A0, A1)> event(T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0, A1), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1573
dkato 0:f782d9c66c49 1574 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1575 * @see EventQueue::event
dkato 0:f782d9c66c49 1576 */
dkato 0:f782d9c66c49 1577 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>
dkato 0:f782d9c66c49 1578 Event<void(A0, A1)> event(const T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0, A1) const, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1579
dkato 0:f782d9c66c49 1580 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1581 * @see EventQueue::event
dkato 0:f782d9c66c49 1582 */
dkato 0:f782d9c66c49 1583 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>
dkato 0:f782d9c66c49 1584 Event<void(A0, A1)> event(volatile T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0, A1) volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1585
dkato 0:f782d9c66c49 1586 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1587 * @see EventQueue::event
dkato 0:f782d9c66c49 1588 */
dkato 0:f782d9c66c49 1589 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>
dkato 0:f782d9c66c49 1590 Event<void(A0, A1)> event(const volatile T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0, A1) const volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1591
dkato 0:f782d9c66c49 1592 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1593 * @see EventQueue::event
dkato 0:f782d9c66c49 1594 */
dkato 0:f782d9c66c49 1595 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>
dkato 0:f782d9c66c49 1596 Event<void(A0, A1)> event(mbed::Callback<R(B0, B1, B2, B3, B4, A0, A1)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1597
dkato 0:f782d9c66c49 1598 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1599 * @see EventQueue::event
dkato 0:f782d9c66c49 1600 */
dkato 0:f782d9c66c49 1601 template <typename R, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1602 Event<void(A0, A1, A2)> event(R (*func)(A0, A1, A2));
dkato 0:f782d9c66c49 1603
dkato 0:f782d9c66c49 1604 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1605 * @see EventQueue::event
dkato 0:f782d9c66c49 1606 */
dkato 0:f782d9c66c49 1607 template <typename T, typename R, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1608 Event<void(A0, A1, A2)> event(T *obj, R (T::*method)(A0, A1, A2));
dkato 0:f782d9c66c49 1609
dkato 0:f782d9c66c49 1610 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1611 * @see EventQueue::event
dkato 0:f782d9c66c49 1612 */
dkato 0:f782d9c66c49 1613 template <typename T, typename R, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1614 Event<void(A0, A1, A2)> event(const T *obj, R (T::*method)(A0, A1, A2) const);
dkato 0:f782d9c66c49 1615
dkato 0:f782d9c66c49 1616 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1617 * @see EventQueue::event
dkato 0:f782d9c66c49 1618 */
dkato 0:f782d9c66c49 1619 template <typename T, typename R, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1620 Event<void(A0, A1, A2)> event(volatile T *obj, R (T::*method)(A0, A1, A2) volatile);
dkato 0:f782d9c66c49 1621
dkato 0:f782d9c66c49 1622 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1623 * @see EventQueue::event
dkato 0:f782d9c66c49 1624 */
dkato 0:f782d9c66c49 1625 template <typename T, typename R, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1626 Event<void(A0, A1, A2)> event(const volatile T *obj, R (T::*method)(A0, A1, A2) const volatile);
dkato 0:f782d9c66c49 1627
dkato 0:f782d9c66c49 1628 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1629 * @see EventQueue::event
dkato 0:f782d9c66c49 1630 */
dkato 0:f782d9c66c49 1631 template <typename R, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1632 Event<void(A0, A1, A2)> event(mbed::Callback<R(A0, A1, A2)> cb);
dkato 0:f782d9c66c49 1633
dkato 0:f782d9c66c49 1634 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1635 * @see EventQueue::event
dkato 0:f782d9c66c49 1636 */
dkato 0:f782d9c66c49 1637 template <typename R, typename B0, typename C0, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1638 Event<void(A0, A1, A2)> event(R (*func)(B0, A0, A1, A2), C0 c0);
dkato 0:f782d9c66c49 1639
dkato 0:f782d9c66c49 1640 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1641 * @see EventQueue::event
dkato 0:f782d9c66c49 1642 */
dkato 0:f782d9c66c49 1643 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1644 Event<void(A0, A1, A2)> event(T *obj, R (T::*method)(B0, A0, A1, A2), C0 c0);
dkato 0:f782d9c66c49 1645
dkato 0:f782d9c66c49 1646 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1647 * @see EventQueue::event
dkato 0:f782d9c66c49 1648 */
dkato 0:f782d9c66c49 1649 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1650 Event<void(A0, A1, A2)> event(const T *obj, R (T::*method)(B0, A0, A1, A2) const, C0 c0);
dkato 0:f782d9c66c49 1651
dkato 0:f782d9c66c49 1652 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1653 * @see EventQueue::event
dkato 0:f782d9c66c49 1654 */
dkato 0:f782d9c66c49 1655 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1656 Event<void(A0, A1, A2)> event(volatile T *obj, R (T::*method)(B0, A0, A1, A2) volatile, C0 c0);
dkato 0:f782d9c66c49 1657
dkato 0:f782d9c66c49 1658 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1659 * @see EventQueue::event
dkato 0:f782d9c66c49 1660 */
dkato 0:f782d9c66c49 1661 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1662 Event<void(A0, A1, A2)> event(const volatile T *obj, R (T::*method)(B0, A0, A1, A2) const volatile, C0 c0);
dkato 0:f782d9c66c49 1663
dkato 0:f782d9c66c49 1664 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1665 * @see EventQueue::event
dkato 0:f782d9c66c49 1666 */
dkato 0:f782d9c66c49 1667 template <typename R, typename B0, typename C0, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1668 Event<void(A0, A1, A2)> event(mbed::Callback<R(B0, A0, A1, A2)> cb, C0 c0);
dkato 0:f782d9c66c49 1669
dkato 0:f782d9c66c49 1670 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1671 * @see EventQueue::event
dkato 0:f782d9c66c49 1672 */
dkato 0:f782d9c66c49 1673 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1674 Event<void(A0, A1, A2)> event(R (*func)(B0, B1, A0, A1, A2), C0 c0, C1 c1);
dkato 0:f782d9c66c49 1675
dkato 0:f782d9c66c49 1676 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1677 * @see EventQueue::event
dkato 0:f782d9c66c49 1678 */
dkato 0:f782d9c66c49 1679 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1680 Event<void(A0, A1, A2)> event(T *obj, R (T::*method)(B0, B1, A0, A1, A2), C0 c0, C1 c1);
dkato 0:f782d9c66c49 1681
dkato 0:f782d9c66c49 1682 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1683 * @see EventQueue::event
dkato 0:f782d9c66c49 1684 */
dkato 0:f782d9c66c49 1685 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1686 Event<void(A0, A1, A2)> event(const T *obj, R (T::*method)(B0, B1, A0, A1, A2) const, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1687
dkato 0:f782d9c66c49 1688 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1689 * @see EventQueue::event
dkato 0:f782d9c66c49 1690 */
dkato 0:f782d9c66c49 1691 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1692 Event<void(A0, A1, A2)> event(volatile T *obj, R (T::*method)(B0, B1, A0, A1, A2) volatile, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1693
dkato 0:f782d9c66c49 1694 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1695 * @see EventQueue::event
dkato 0:f782d9c66c49 1696 */
dkato 0:f782d9c66c49 1697 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1698 Event<void(A0, A1, A2)> event(const volatile T *obj, R (T::*method)(B0, B1, A0, A1, A2) const volatile, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1699
dkato 0:f782d9c66c49 1700 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1701 * @see EventQueue::event
dkato 0:f782d9c66c49 1702 */
dkato 0:f782d9c66c49 1703 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1704 Event<void(A0, A1, A2)> event(mbed::Callback<R(B0, B1, A0, A1, A2)> cb, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1705
dkato 0:f782d9c66c49 1706 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1707 * @see EventQueue::event
dkato 0:f782d9c66c49 1708 */
dkato 0:f782d9c66c49 1709 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1710 Event<void(A0, A1, A2)> event(R (*func)(B0, B1, B2, A0, A1, A2), C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1711
dkato 0:f782d9c66c49 1712 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1713 * @see EventQueue::event
dkato 0:f782d9c66c49 1714 */
dkato 0:f782d9c66c49 1715 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1716 Event<void(A0, A1, A2)> event(T *obj, R (T::*method)(B0, B1, B2, A0, A1, A2), C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1717
dkato 0:f782d9c66c49 1718 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1719 * @see EventQueue::event
dkato 0:f782d9c66c49 1720 */
dkato 0:f782d9c66c49 1721 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1722 Event<void(A0, A1, A2)> event(const T *obj, R (T::*method)(B0, B1, B2, A0, A1, A2) const, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1723
dkato 0:f782d9c66c49 1724 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1725 * @see EventQueue::event
dkato 0:f782d9c66c49 1726 */
dkato 0:f782d9c66c49 1727 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1728 Event<void(A0, A1, A2)> event(volatile T *obj, R (T::*method)(B0, B1, B2, A0, A1, A2) volatile, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1729
dkato 0:f782d9c66c49 1730 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1731 * @see EventQueue::event
dkato 0:f782d9c66c49 1732 */
dkato 0:f782d9c66c49 1733 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1734 Event<void(A0, A1, A2)> event(const volatile T *obj, R (T::*method)(B0, B1, B2, A0, A1, A2) const volatile, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1735
dkato 0:f782d9c66c49 1736 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1737 * @see EventQueue::event
dkato 0:f782d9c66c49 1738 */
dkato 0:f782d9c66c49 1739 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 1740 Event<void(A0, A1, A2)> event(mbed::Callback<R(B0, B1, B2, A0, A1, A2)> cb, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1741
dkato 0:f782d9c66c49 1742 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1743 * @see EventQueue::event
dkato 0:f782d9c66c49 1744 */
dkato 0:f782d9c66c49 1745 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>
dkato 0:f782d9c66c49 1746 Event<void(A0, A1, A2)> event(R (*func)(B0, B1, B2, B3, A0, A1, A2), C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1747
dkato 0:f782d9c66c49 1748 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1749 * @see EventQueue::event
dkato 0:f782d9c66c49 1750 */
dkato 0:f782d9c66c49 1751 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>
dkato 0:f782d9c66c49 1752 Event<void(A0, A1, A2)> event(T *obj, R (T::*method)(B0, B1, B2, B3, A0, A1, A2), C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1753
dkato 0:f782d9c66c49 1754 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1755 * @see EventQueue::event
dkato 0:f782d9c66c49 1756 */
dkato 0:f782d9c66c49 1757 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>
dkato 0:f782d9c66c49 1758 Event<void(A0, A1, A2)> event(const T *obj, R (T::*method)(B0, B1, B2, B3, A0, A1, A2) const, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1759
dkato 0:f782d9c66c49 1760 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1761 * @see EventQueue::event
dkato 0:f782d9c66c49 1762 */
dkato 0:f782d9c66c49 1763 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>
dkato 0:f782d9c66c49 1764 Event<void(A0, A1, A2)> event(volatile T *obj, R (T::*method)(B0, B1, B2, B3, A0, A1, A2) volatile, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1765
dkato 0:f782d9c66c49 1766 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1767 * @see EventQueue::event
dkato 0:f782d9c66c49 1768 */
dkato 0:f782d9c66c49 1769 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>
dkato 0:f782d9c66c49 1770 Event<void(A0, A1, A2)> event(const volatile T *obj, R (T::*method)(B0, B1, B2, B3, A0, A1, A2) const volatile, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1771
dkato 0:f782d9c66c49 1772 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1773 * @see EventQueue::event
dkato 0:f782d9c66c49 1774 */
dkato 0:f782d9c66c49 1775 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>
dkato 0:f782d9c66c49 1776 Event<void(A0, A1, A2)> event(mbed::Callback<R(B0, B1, B2, B3, A0, A1, A2)> cb, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1777
dkato 0:f782d9c66c49 1778 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1779 * @see EventQueue::event
dkato 0:f782d9c66c49 1780 */
dkato 0:f782d9c66c49 1781 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>
dkato 0:f782d9c66c49 1782 Event<void(A0, A1, A2)> event(R (*func)(B0, B1, B2, B3, B4, A0, A1, A2), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1783
dkato 0:f782d9c66c49 1784 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1785 * @see EventQueue::event
dkato 0:f782d9c66c49 1786 */
dkato 0:f782d9c66c49 1787 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>
dkato 0:f782d9c66c49 1788 Event<void(A0, A1, A2)> event(T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0, A1, A2), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1789
dkato 0:f782d9c66c49 1790 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1791 * @see EventQueue::event
dkato 0:f782d9c66c49 1792 */
dkato 0:f782d9c66c49 1793 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>
dkato 0:f782d9c66c49 1794 Event<void(A0, A1, A2)> event(const T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0, A1, A2) const, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1795
dkato 0:f782d9c66c49 1796 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1797 * @see EventQueue::event
dkato 0:f782d9c66c49 1798 */
dkato 0:f782d9c66c49 1799 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>
dkato 0:f782d9c66c49 1800 Event<void(A0, A1, A2)> event(volatile T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0, A1, A2) volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1801
dkato 0:f782d9c66c49 1802 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1803 * @see EventQueue::event
dkato 0:f782d9c66c49 1804 */
dkato 0:f782d9c66c49 1805 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>
dkato 0:f782d9c66c49 1806 Event<void(A0, A1, A2)> event(const volatile T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0, A1, A2) const volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1807
dkato 0:f782d9c66c49 1808 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1809 * @see EventQueue::event
dkato 0:f782d9c66c49 1810 */
dkato 0:f782d9c66c49 1811 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>
dkato 0:f782d9c66c49 1812 Event<void(A0, A1, A2)> event(mbed::Callback<R(B0, B1, B2, B3, B4, A0, A1, A2)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1813
dkato 0:f782d9c66c49 1814 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1815 * @see EventQueue::event
dkato 0:f782d9c66c49 1816 */
dkato 0:f782d9c66c49 1817 template <typename R, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1818 Event<void(A0, A1, A2, A3)> event(R (*func)(A0, A1, A2, A3));
dkato 0:f782d9c66c49 1819
dkato 0:f782d9c66c49 1820 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1821 * @see EventQueue::event
dkato 0:f782d9c66c49 1822 */
dkato 0:f782d9c66c49 1823 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1824 Event<void(A0, A1, A2, A3)> event(T *obj, R (T::*method)(A0, A1, A2, A3));
dkato 0:f782d9c66c49 1825
dkato 0:f782d9c66c49 1826 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1827 * @see EventQueue::event
dkato 0:f782d9c66c49 1828 */
dkato 0:f782d9c66c49 1829 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1830 Event<void(A0, A1, A2, A3)> event(const T *obj, R (T::*method)(A0, A1, A2, A3) const);
dkato 0:f782d9c66c49 1831
dkato 0:f782d9c66c49 1832 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1833 * @see EventQueue::event
dkato 0:f782d9c66c49 1834 */
dkato 0:f782d9c66c49 1835 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1836 Event<void(A0, A1, A2, A3)> event(volatile T *obj, R (T::*method)(A0, A1, A2, A3) volatile);
dkato 0:f782d9c66c49 1837
dkato 0:f782d9c66c49 1838 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1839 * @see EventQueue::event
dkato 0:f782d9c66c49 1840 */
dkato 0:f782d9c66c49 1841 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1842 Event<void(A0, A1, A2, A3)> event(const volatile T *obj, R (T::*method)(A0, A1, A2, A3) const volatile);
dkato 0:f782d9c66c49 1843
dkato 0:f782d9c66c49 1844 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1845 * @see EventQueue::event
dkato 0:f782d9c66c49 1846 */
dkato 0:f782d9c66c49 1847 template <typename R, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1848 Event<void(A0, A1, A2, A3)> event(mbed::Callback<R(A0, A1, A2, A3)> cb);
dkato 0:f782d9c66c49 1849
dkato 0:f782d9c66c49 1850 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1851 * @see EventQueue::event
dkato 0:f782d9c66c49 1852 */
dkato 0:f782d9c66c49 1853 template <typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1854 Event<void(A0, A1, A2, A3)> event(R (*func)(B0, A0, A1, A2, A3), C0 c0);
dkato 0:f782d9c66c49 1855
dkato 0:f782d9c66c49 1856 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1857 * @see EventQueue::event
dkato 0:f782d9c66c49 1858 */
dkato 0:f782d9c66c49 1859 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1860 Event<void(A0, A1, A2, A3)> event(T *obj, R (T::*method)(B0, A0, A1, A2, A3), C0 c0);
dkato 0:f782d9c66c49 1861
dkato 0:f782d9c66c49 1862 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1863 * @see EventQueue::event
dkato 0:f782d9c66c49 1864 */
dkato 0:f782d9c66c49 1865 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1866 Event<void(A0, A1, A2, A3)> event(const T *obj, R (T::*method)(B0, A0, A1, A2, A3) const, C0 c0);
dkato 0:f782d9c66c49 1867
dkato 0:f782d9c66c49 1868 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1869 * @see EventQueue::event
dkato 0:f782d9c66c49 1870 */
dkato 0:f782d9c66c49 1871 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1872 Event<void(A0, A1, A2, A3)> event(volatile T *obj, R (T::*method)(B0, A0, A1, A2, A3) volatile, C0 c0);
dkato 0:f782d9c66c49 1873
dkato 0:f782d9c66c49 1874 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1875 * @see EventQueue::event
dkato 0:f782d9c66c49 1876 */
dkato 0:f782d9c66c49 1877 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1878 Event<void(A0, A1, A2, A3)> event(const volatile T *obj, R (T::*method)(B0, A0, A1, A2, A3) const volatile, C0 c0);
dkato 0:f782d9c66c49 1879
dkato 0:f782d9c66c49 1880 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1881 * @see EventQueue::event
dkato 0:f782d9c66c49 1882 */
dkato 0:f782d9c66c49 1883 template <typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1884 Event<void(A0, A1, A2, A3)> event(mbed::Callback<R(B0, A0, A1, A2, A3)> cb, C0 c0);
dkato 0:f782d9c66c49 1885
dkato 0:f782d9c66c49 1886 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1887 * @see EventQueue::event
dkato 0:f782d9c66c49 1888 */
dkato 0:f782d9c66c49 1889 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1890 Event<void(A0, A1, A2, A3)> event(R (*func)(B0, B1, A0, A1, A2, A3), C0 c0, C1 c1);
dkato 0:f782d9c66c49 1891
dkato 0:f782d9c66c49 1892 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1893 * @see EventQueue::event
dkato 0:f782d9c66c49 1894 */
dkato 0:f782d9c66c49 1895 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1896 Event<void(A0, A1, A2, A3)> event(T *obj, R (T::*method)(B0, B1, A0, A1, A2, A3), C0 c0, C1 c1);
dkato 0:f782d9c66c49 1897
dkato 0:f782d9c66c49 1898 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1899 * @see EventQueue::event
dkato 0:f782d9c66c49 1900 */
dkato 0:f782d9c66c49 1901 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1902 Event<void(A0, A1, A2, A3)> event(const T *obj, R (T::*method)(B0, B1, A0, A1, A2, A3) const, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1903
dkato 0:f782d9c66c49 1904 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1905 * @see EventQueue::event
dkato 0:f782d9c66c49 1906 */
dkato 0:f782d9c66c49 1907 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1908 Event<void(A0, A1, A2, A3)> event(volatile T *obj, R (T::*method)(B0, B1, A0, A1, A2, A3) volatile, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1909
dkato 0:f782d9c66c49 1910 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1911 * @see EventQueue::event
dkato 0:f782d9c66c49 1912 */
dkato 0:f782d9c66c49 1913 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1914 Event<void(A0, A1, A2, A3)> event(const volatile T *obj, R (T::*method)(B0, B1, A0, A1, A2, A3) const volatile, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1915
dkato 0:f782d9c66c49 1916 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1917 * @see EventQueue::event
dkato 0:f782d9c66c49 1918 */
dkato 0:f782d9c66c49 1919 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1920 Event<void(A0, A1, A2, A3)> event(mbed::Callback<R(B0, B1, A0, A1, A2, A3)> cb, C0 c0, C1 c1);
dkato 0:f782d9c66c49 1921
dkato 0:f782d9c66c49 1922 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1923 * @see EventQueue::event
dkato 0:f782d9c66c49 1924 */
dkato 0:f782d9c66c49 1925 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1926 Event<void(A0, A1, A2, A3)> event(R (*func)(B0, B1, B2, A0, A1, A2, A3), C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1927
dkato 0:f782d9c66c49 1928 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1929 * @see EventQueue::event
dkato 0:f782d9c66c49 1930 */
dkato 0:f782d9c66c49 1931 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>
dkato 0:f782d9c66c49 1932 Event<void(A0, A1, A2, A3)> event(T *obj, R (T::*method)(B0, B1, B2, A0, A1, A2, A3), C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1933
dkato 0:f782d9c66c49 1934 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1935 * @see EventQueue::event
dkato 0:f782d9c66c49 1936 */
dkato 0:f782d9c66c49 1937 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>
dkato 0:f782d9c66c49 1938 Event<void(A0, A1, A2, A3)> event(const T *obj, R (T::*method)(B0, B1, B2, A0, A1, A2, A3) const, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1939
dkato 0:f782d9c66c49 1940 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1941 * @see EventQueue::event
dkato 0:f782d9c66c49 1942 */
dkato 0:f782d9c66c49 1943 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>
dkato 0:f782d9c66c49 1944 Event<void(A0, A1, A2, A3)> event(volatile T *obj, R (T::*method)(B0, B1, B2, A0, A1, A2, A3) volatile, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1945
dkato 0:f782d9c66c49 1946 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1947 * @see EventQueue::event
dkato 0:f782d9c66c49 1948 */
dkato 0:f782d9c66c49 1949 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>
dkato 0:f782d9c66c49 1950 Event<void(A0, A1, A2, A3)> event(const volatile T *obj, R (T::*method)(B0, B1, B2, A0, A1, A2, A3) const volatile, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1951
dkato 0:f782d9c66c49 1952 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1953 * @see EventQueue::event
dkato 0:f782d9c66c49 1954 */
dkato 0:f782d9c66c49 1955 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 1956 Event<void(A0, A1, A2, A3)> event(mbed::Callback<R(B0, B1, B2, A0, A1, A2, A3)> cb, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 1957
dkato 0:f782d9c66c49 1958 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1959 * @see EventQueue::event
dkato 0:f782d9c66c49 1960 */
dkato 0:f782d9c66c49 1961 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>
dkato 0:f782d9c66c49 1962 Event<void(A0, A1, A2, A3)> event(R (*func)(B0, B1, B2, B3, A0, A1, A2, A3), C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1963
dkato 0:f782d9c66c49 1964 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1965 * @see EventQueue::event
dkato 0:f782d9c66c49 1966 */
dkato 0:f782d9c66c49 1967 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>
dkato 0:f782d9c66c49 1968 Event<void(A0, A1, A2, A3)> event(T *obj, R (T::*method)(B0, B1, B2, B3, A0, A1, A2, A3), C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1969
dkato 0:f782d9c66c49 1970 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1971 * @see EventQueue::event
dkato 0:f782d9c66c49 1972 */
dkato 0:f782d9c66c49 1973 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>
dkato 0:f782d9c66c49 1974 Event<void(A0, A1, A2, A3)> event(const T *obj, R (T::*method)(B0, B1, B2, B3, A0, A1, A2, A3) const, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1975
dkato 0:f782d9c66c49 1976 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1977 * @see EventQueue::event
dkato 0:f782d9c66c49 1978 */
dkato 0:f782d9c66c49 1979 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>
dkato 0:f782d9c66c49 1980 Event<void(A0, A1, A2, A3)> event(volatile T *obj, R (T::*method)(B0, B1, B2, B3, A0, A1, A2, A3) volatile, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1981
dkato 0:f782d9c66c49 1982 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1983 * @see EventQueue::event
dkato 0:f782d9c66c49 1984 */
dkato 0:f782d9c66c49 1985 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>
dkato 0:f782d9c66c49 1986 Event<void(A0, A1, A2, A3)> event(const volatile T *obj, R (T::*method)(B0, B1, B2, B3, A0, A1, A2, A3) const volatile, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1987
dkato 0:f782d9c66c49 1988 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1989 * @see EventQueue::event
dkato 0:f782d9c66c49 1990 */
dkato 0:f782d9c66c49 1991 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>
dkato 0:f782d9c66c49 1992 Event<void(A0, A1, A2, A3)> event(mbed::Callback<R(B0, B1, B2, B3, A0, A1, A2, A3)> cb, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 1993
dkato 0:f782d9c66c49 1994 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 1995 * @see EventQueue::event
dkato 0:f782d9c66c49 1996 */
dkato 0:f782d9c66c49 1997 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>
dkato 0:f782d9c66c49 1998 Event<void(A0, A1, A2, A3)> event(R (*func)(B0, B1, B2, B3, B4, A0, A1, A2, A3), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 1999
dkato 0:f782d9c66c49 2000 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2001 * @see EventQueue::event
dkato 0:f782d9c66c49 2002 */
dkato 0:f782d9c66c49 2003 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>
dkato 0:f782d9c66c49 2004 Event<void(A0, A1, A2, A3)> event(T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 2005
dkato 0:f782d9c66c49 2006 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2007 * @see EventQueue::event
dkato 0:f782d9c66c49 2008 */
dkato 0:f782d9c66c49 2009 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>
dkato 0:f782d9c66c49 2010 Event<void(A0, A1, A2, A3)> event(const T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3) const, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 2011
dkato 0:f782d9c66c49 2012 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2013 * @see EventQueue::event
dkato 0:f782d9c66c49 2014 */
dkato 0:f782d9c66c49 2015 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>
dkato 0:f782d9c66c49 2016 Event<void(A0, A1, A2, A3)> event(volatile T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3) volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 2017
dkato 0:f782d9c66c49 2018 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2019 * @see EventQueue::event
dkato 0:f782d9c66c49 2020 */
dkato 0:f782d9c66c49 2021 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>
dkato 0:f782d9c66c49 2022 Event<void(A0, A1, A2, A3)> event(const volatile T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3) const volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 2023
dkato 0:f782d9c66c49 2024 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2025 * @see EventQueue::event
dkato 0:f782d9c66c49 2026 */
dkato 0:f782d9c66c49 2027 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>
dkato 0:f782d9c66c49 2028 Event<void(A0, A1, A2, A3)> event(mbed::Callback<R(B0, B1, B2, B3, B4, A0, A1, A2, A3)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 2029
dkato 0:f782d9c66c49 2030 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2031 * @see EventQueue::event
dkato 0:f782d9c66c49 2032 */
dkato 0:f782d9c66c49 2033 template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2034 Event<void(A0, A1, A2, A3, A4)> event(R (*func)(A0, A1, A2, A3, A4));
dkato 0:f782d9c66c49 2035
dkato 0:f782d9c66c49 2036 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2037 * @see EventQueue::event
dkato 0:f782d9c66c49 2038 */
dkato 0:f782d9c66c49 2039 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2040 Event<void(A0, A1, A2, A3, A4)> event(T *obj, R (T::*method)(A0, A1, A2, A3, A4));
dkato 0:f782d9c66c49 2041
dkato 0:f782d9c66c49 2042 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2043 * @see EventQueue::event
dkato 0:f782d9c66c49 2044 */
dkato 0:f782d9c66c49 2045 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2046 Event<void(A0, A1, A2, A3, A4)> event(const T *obj, R (T::*method)(A0, A1, A2, A3, A4) const);
dkato 0:f782d9c66c49 2047
dkato 0:f782d9c66c49 2048 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2049 * @see EventQueue::event
dkato 0:f782d9c66c49 2050 */
dkato 0:f782d9c66c49 2051 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2052 Event<void(A0, A1, A2, A3, A4)> event(volatile T *obj, R (T::*method)(A0, A1, A2, A3, A4) volatile);
dkato 0:f782d9c66c49 2053
dkato 0:f782d9c66c49 2054 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2055 * @see EventQueue::event
dkato 0:f782d9c66c49 2056 */
dkato 0:f782d9c66c49 2057 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2058 Event<void(A0, A1, A2, A3, A4)> event(const volatile T *obj, R (T::*method)(A0, A1, A2, A3, A4) const volatile);
dkato 0:f782d9c66c49 2059
dkato 0:f782d9c66c49 2060 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2061 * @see EventQueue::event
dkato 0:f782d9c66c49 2062 */
dkato 0:f782d9c66c49 2063 template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2064 Event<void(A0, A1, A2, A3, A4)> event(mbed::Callback<R(A0, A1, A2, A3, A4)> cb);
dkato 0:f782d9c66c49 2065
dkato 0:f782d9c66c49 2066 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2067 * @see EventQueue::event
dkato 0:f782d9c66c49 2068 */
dkato 0:f782d9c66c49 2069 template <typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2070 Event<void(A0, A1, A2, A3, A4)> event(R (*func)(B0, A0, A1, A2, A3, A4), C0 c0);
dkato 0:f782d9c66c49 2071
dkato 0:f782d9c66c49 2072 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2073 * @see EventQueue::event
dkato 0:f782d9c66c49 2074 */
dkato 0:f782d9c66c49 2075 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2076 Event<void(A0, A1, A2, A3, A4)> event(T *obj, R (T::*method)(B0, A0, A1, A2, A3, A4), C0 c0);
dkato 0:f782d9c66c49 2077
dkato 0:f782d9c66c49 2078 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2079 * @see EventQueue::event
dkato 0:f782d9c66c49 2080 */
dkato 0:f782d9c66c49 2081 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2082 Event<void(A0, A1, A2, A3, A4)> event(const T *obj, R (T::*method)(B0, A0, A1, A2, A3, A4) const, C0 c0);
dkato 0:f782d9c66c49 2083
dkato 0:f782d9c66c49 2084 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2085 * @see EventQueue::event
dkato 0:f782d9c66c49 2086 */
dkato 0:f782d9c66c49 2087 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2088 Event<void(A0, A1, A2, A3, A4)> event(volatile T *obj, R (T::*method)(B0, A0, A1, A2, A3, A4) volatile, C0 c0);
dkato 0:f782d9c66c49 2089
dkato 0:f782d9c66c49 2090 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2091 * @see EventQueue::event
dkato 0:f782d9c66c49 2092 */
dkato 0:f782d9c66c49 2093 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2094 Event<void(A0, A1, A2, A3, A4)> event(const volatile T *obj, R (T::*method)(B0, A0, A1, A2, A3, A4) const volatile, C0 c0);
dkato 0:f782d9c66c49 2095
dkato 0:f782d9c66c49 2096 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2097 * @see EventQueue::event
dkato 0:f782d9c66c49 2098 */
dkato 0:f782d9c66c49 2099 template <typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2100 Event<void(A0, A1, A2, A3, A4)> event(mbed::Callback<R(B0, A0, A1, A2, A3, A4)> cb, C0 c0);
dkato 0:f782d9c66c49 2101
dkato 0:f782d9c66c49 2102 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2103 * @see EventQueue::event
dkato 0:f782d9c66c49 2104 */
dkato 0:f782d9c66c49 2105 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2106 Event<void(A0, A1, A2, A3, A4)> event(R (*func)(B0, B1, A0, A1, A2, A3, A4), C0 c0, C1 c1);
dkato 0:f782d9c66c49 2107
dkato 0:f782d9c66c49 2108 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2109 * @see EventQueue::event
dkato 0:f782d9c66c49 2110 */
dkato 0:f782d9c66c49 2111 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2112 Event<void(A0, A1, A2, A3, A4)> event(T *obj, R (T::*method)(B0, B1, A0, A1, A2, A3, A4), C0 c0, C1 c1);
dkato 0:f782d9c66c49 2113
dkato 0:f782d9c66c49 2114 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2115 * @see EventQueue::event
dkato 0:f782d9c66c49 2116 */
dkato 0:f782d9c66c49 2117 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2118 Event<void(A0, A1, A2, A3, A4)> event(const T *obj, R (T::*method)(B0, B1, A0, A1, A2, A3, A4) const, C0 c0, C1 c1);
dkato 0:f782d9c66c49 2119
dkato 0:f782d9c66c49 2120 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2121 * @see EventQueue::event
dkato 0:f782d9c66c49 2122 */
dkato 0:f782d9c66c49 2123 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2124 Event<void(A0, A1, A2, A3, A4)> event(volatile T *obj, R (T::*method)(B0, B1, A0, A1, A2, A3, A4) volatile, C0 c0, C1 c1);
dkato 0:f782d9c66c49 2125
dkato 0:f782d9c66c49 2126 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2127 * @see EventQueue::event
dkato 0:f782d9c66c49 2128 */
dkato 0:f782d9c66c49 2129 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2130 Event<void(A0, A1, A2, A3, A4)> event(const volatile T *obj, R (T::*method)(B0, B1, A0, A1, A2, A3, A4) const volatile, C0 c0, C1 c1);
dkato 0:f782d9c66c49 2131
dkato 0:f782d9c66c49 2132 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2133 * @see EventQueue::event
dkato 0:f782d9c66c49 2134 */
dkato 0:f782d9c66c49 2135 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2136 Event<void(A0, A1, A2, A3, A4)> event(mbed::Callback<R(B0, B1, A0, A1, A2, A3, A4)> cb, C0 c0, C1 c1);
dkato 0:f782d9c66c49 2137
dkato 0:f782d9c66c49 2138 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2139 * @see EventQueue::event
dkato 0:f782d9c66c49 2140 */
dkato 0:f782d9c66c49 2141 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>
dkato 0:f782d9c66c49 2142 Event<void(A0, A1, A2, A3, A4)> event(R (*func)(B0, B1, B2, A0, A1, A2, A3, A4), C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 2143
dkato 0:f782d9c66c49 2144 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2145 * @see EventQueue::event
dkato 0:f782d9c66c49 2146 */
dkato 0:f782d9c66c49 2147 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>
dkato 0:f782d9c66c49 2148 Event<void(A0, A1, A2, A3, A4)> event(T *obj, R (T::*method)(B0, B1, B2, A0, A1, A2, A3, A4), C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 2149
dkato 0:f782d9c66c49 2150 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2151 * @see EventQueue::event
dkato 0:f782d9c66c49 2152 */
dkato 0:f782d9c66c49 2153 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>
dkato 0:f782d9c66c49 2154 Event<void(A0, A1, A2, A3, A4)> event(const T *obj, R (T::*method)(B0, B1, B2, A0, A1, A2, A3, A4) const, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 2155
dkato 0:f782d9c66c49 2156 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2157 * @see EventQueue::event
dkato 0:f782d9c66c49 2158 */
dkato 0:f782d9c66c49 2159 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>
dkato 0:f782d9c66c49 2160 Event<void(A0, A1, A2, A3, A4)> event(volatile T *obj, R (T::*method)(B0, B1, B2, A0, A1, A2, A3, A4) volatile, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 2161
dkato 0:f782d9c66c49 2162 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2163 * @see EventQueue::event
dkato 0:f782d9c66c49 2164 */
dkato 0:f782d9c66c49 2165 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>
dkato 0:f782d9c66c49 2166 Event<void(A0, A1, A2, A3, A4)> event(const volatile T *obj, R (T::*method)(B0, B1, B2, A0, A1, A2, A3, A4) const volatile, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 2167
dkato 0:f782d9c66c49 2168 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2169 * @see EventQueue::event
dkato 0:f782d9c66c49 2170 */
dkato 0:f782d9c66c49 2171 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>
dkato 0:f782d9c66c49 2172 Event<void(A0, A1, A2, A3, A4)> event(mbed::Callback<R(B0, B1, B2, A0, A1, A2, A3, A4)> cb, C0 c0, C1 c1, C2 c2);
dkato 0:f782d9c66c49 2173
dkato 0:f782d9c66c49 2174 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2175 * @see EventQueue::event
dkato 0:f782d9c66c49 2176 */
dkato 0:f782d9c66c49 2177 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>
dkato 0:f782d9c66c49 2178 Event<void(A0, A1, A2, A3, A4)> event(R (*func)(B0, B1, B2, B3, A0, A1, A2, A3, A4), C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 2179
dkato 0:f782d9c66c49 2180 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2181 * @see EventQueue::event
dkato 0:f782d9c66c49 2182 */
dkato 0:f782d9c66c49 2183 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>
dkato 0:f782d9c66c49 2184 Event<void(A0, A1, A2, A3, A4)> event(T *obj, R (T::*method)(B0, B1, B2, B3, A0, A1, A2, A3, A4), C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 2185
dkato 0:f782d9c66c49 2186 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2187 * @see EventQueue::event
dkato 0:f782d9c66c49 2188 */
dkato 0:f782d9c66c49 2189 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>
dkato 0:f782d9c66c49 2190 Event<void(A0, A1, A2, A3, A4)> event(const T *obj, R (T::*method)(B0, B1, B2, B3, A0, A1, A2, A3, A4) const, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 2191
dkato 0:f782d9c66c49 2192 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2193 * @see EventQueue::event
dkato 0:f782d9c66c49 2194 */
dkato 0:f782d9c66c49 2195 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>
dkato 0:f782d9c66c49 2196 Event<void(A0, A1, A2, A3, A4)> event(volatile T *obj, R (T::*method)(B0, B1, B2, B3, A0, A1, A2, A3, A4) volatile, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 2197
dkato 0:f782d9c66c49 2198 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2199 * @see EventQueue::event
dkato 0:f782d9c66c49 2200 */
dkato 0:f782d9c66c49 2201 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>
dkato 0:f782d9c66c49 2202 Event<void(A0, A1, A2, A3, A4)> event(const volatile T *obj, R (T::*method)(B0, B1, B2, B3, A0, A1, A2, A3, A4) const volatile, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 2203
dkato 0:f782d9c66c49 2204 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2205 * @see EventQueue::event
dkato 0:f782d9c66c49 2206 */
dkato 0:f782d9c66c49 2207 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>
dkato 0:f782d9c66c49 2208 Event<void(A0, A1, A2, A3, A4)> event(mbed::Callback<R(B0, B1, B2, B3, A0, A1, A2, A3, A4)> cb, C0 c0, C1 c1, C2 c2, C3 c3);
dkato 0:f782d9c66c49 2209
dkato 0:f782d9c66c49 2210 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2211 * @see EventQueue::event
dkato 0:f782d9c66c49 2212 */
dkato 0:f782d9c66c49 2213 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>
dkato 0:f782d9c66c49 2214 Event<void(A0, A1, A2, A3, A4)> event(R (*func)(B0, B1, B2, B3, B4, A0, A1, A2, A3, A4), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 2215
dkato 0:f782d9c66c49 2216 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2217 * @see EventQueue::event
dkato 0:f782d9c66c49 2218 */
dkato 0:f782d9c66c49 2219 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>
dkato 0:f782d9c66c49 2220 Event<void(A0, A1, A2, A3, A4)> event(T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3, A4), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 2221
dkato 0:f782d9c66c49 2222 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2223 * @see EventQueue::event
dkato 0:f782d9c66c49 2224 */
dkato 0:f782d9c66c49 2225 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>
dkato 0:f782d9c66c49 2226 Event<void(A0, A1, A2, A3, A4)> event(const T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3, A4) const, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 2227
dkato 0:f782d9c66c49 2228 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2229 * @see EventQueue::event
dkato 0:f782d9c66c49 2230 */
dkato 0:f782d9c66c49 2231 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>
dkato 0:f782d9c66c49 2232 Event<void(A0, A1, A2, A3, A4)> event(volatile T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3, A4) volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 2233
dkato 0:f782d9c66c49 2234 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2235 * @see EventQueue::event
dkato 0:f782d9c66c49 2236 */
dkato 0:f782d9c66c49 2237 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>
dkato 0:f782d9c66c49 2238 Event<void(A0, A1, A2, A3, A4)> event(const volatile T *obj, R (T::*method)(B0, B1, B2, B3, B4, A0, A1, A2, A3, A4) const volatile, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 2239
dkato 0:f782d9c66c49 2240 /** Creates an event bound to the event queue
dkato 0:f782d9c66c49 2241 * @see EventQueue::event
dkato 0:f782d9c66c49 2242 */
dkato 0:f782d9c66c49 2243 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>
dkato 0:f782d9c66c49 2244 Event<void(A0, A1, A2, A3, A4)> event(mbed::Callback<R(B0, B1, B2, B3, B4, A0, A1, A2, A3, A4)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
dkato 0:f782d9c66c49 2245
dkato 0:f782d9c66c49 2246 protected:
dkato 0:f782d9c66c49 2247 template <typename F>
dkato 0:f782d9c66c49 2248 friend class Event;
dkato 0:f782d9c66c49 2249 struct equeue _equeue;
dkato 0:f782d9c66c49 2250 mbed::Callback<void(int)> _update;
dkato 0:f782d9c66c49 2251
dkato 0:f782d9c66c49 2252 // Function attributes
dkato 0:f782d9c66c49 2253 template <typename F>
dkato 0:f782d9c66c49 2254 static void function_call(void *p) {
dkato 0:f782d9c66c49 2255 (*(F*)p)();
dkato 0:f782d9c66c49 2256 }
dkato 0:f782d9c66c49 2257
dkato 0:f782d9c66c49 2258 template <typename F>
dkato 0:f782d9c66c49 2259 static void function_dtor(void *p) {
dkato 0:f782d9c66c49 2260 ((F*)p)->~F();
dkato 0:f782d9c66c49 2261 }
dkato 0:f782d9c66c49 2262
dkato 0:f782d9c66c49 2263 // Context structures
dkato 0:f782d9c66c49 2264 template <typename F>
dkato 0:f782d9c66c49 2265 struct context00 {
dkato 0:f782d9c66c49 2266 F f;
dkato 0:f782d9c66c49 2267
dkato 0:f782d9c66c49 2268 context00(F f)
dkato 0:f782d9c66c49 2269 : f(f) {}
dkato 0:f782d9c66c49 2270
dkato 0:f782d9c66c49 2271 void operator()() {
dkato 0:f782d9c66c49 2272 f();
dkato 0:f782d9c66c49 2273 }
dkato 0:f782d9c66c49 2274 };
dkato 0:f782d9c66c49 2275
dkato 0:f782d9c66c49 2276 template <typename F, typename C0>
dkato 0:f782d9c66c49 2277 struct context10 {
dkato 0:f782d9c66c49 2278 F f; C0 c0;
dkato 0:f782d9c66c49 2279
dkato 0:f782d9c66c49 2280 context10(F f, C0 c0)
dkato 0:f782d9c66c49 2281 : f(f), c0(c0) {}
dkato 0:f782d9c66c49 2282
dkato 0:f782d9c66c49 2283 void operator()() {
dkato 0:f782d9c66c49 2284 f(c0);
dkato 0:f782d9c66c49 2285 }
dkato 0:f782d9c66c49 2286 };
dkato 0:f782d9c66c49 2287
dkato 0:f782d9c66c49 2288 template <typename F, typename C0, typename C1>
dkato 0:f782d9c66c49 2289 struct context20 {
dkato 0:f782d9c66c49 2290 F f; C0 c0; C1 c1;
dkato 0:f782d9c66c49 2291
dkato 0:f782d9c66c49 2292 context20(F f, C0 c0, C1 c1)
dkato 0:f782d9c66c49 2293 : f(f), c0(c0), c1(c1) {}
dkato 0:f782d9c66c49 2294
dkato 0:f782d9c66c49 2295 void operator()() {
dkato 0:f782d9c66c49 2296 f(c0, c1);
dkato 0:f782d9c66c49 2297 }
dkato 0:f782d9c66c49 2298 };
dkato 0:f782d9c66c49 2299
dkato 0:f782d9c66c49 2300 template <typename F, typename C0, typename C1, typename C2>
dkato 0:f782d9c66c49 2301 struct context30 {
dkato 0:f782d9c66c49 2302 F f; C0 c0; C1 c1; C2 c2;
dkato 0:f782d9c66c49 2303
dkato 0:f782d9c66c49 2304 context30(F f, C0 c0, C1 c1, C2 c2)
dkato 0:f782d9c66c49 2305 : f(f), c0(c0), c1(c1), c2(c2) {}
dkato 0:f782d9c66c49 2306
dkato 0:f782d9c66c49 2307 void operator()() {
dkato 0:f782d9c66c49 2308 f(c0, c1, c2);
dkato 0:f782d9c66c49 2309 }
dkato 0:f782d9c66c49 2310 };
dkato 0:f782d9c66c49 2311
dkato 0:f782d9c66c49 2312 template <typename F, typename C0, typename C1, typename C2, typename C3>
dkato 0:f782d9c66c49 2313 struct context40 {
dkato 0:f782d9c66c49 2314 F f; C0 c0; C1 c1; C2 c2; C3 c3;
dkato 0:f782d9c66c49 2315
dkato 0:f782d9c66c49 2316 context40(F f, C0 c0, C1 c1, C2 c2, C3 c3)
dkato 0:f782d9c66c49 2317 : f(f), c0(c0), c1(c1), c2(c2), c3(c3) {}
dkato 0:f782d9c66c49 2318
dkato 0:f782d9c66c49 2319 void operator()() {
dkato 0:f782d9c66c49 2320 f(c0, c1, c2, c3);
dkato 0:f782d9c66c49 2321 }
dkato 0:f782d9c66c49 2322 };
dkato 0:f782d9c66c49 2323
dkato 0:f782d9c66c49 2324 template <typename F, typename C0, typename C1, typename C2, typename C3, typename C4>
dkato 0:f782d9c66c49 2325 struct context50 {
dkato 0:f782d9c66c49 2326 F f; C0 c0; C1 c1; C2 c2; C3 c3; C4 c4;
dkato 0:f782d9c66c49 2327
dkato 0:f782d9c66c49 2328 context50(F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
dkato 0:f782d9c66c49 2329 : f(f), c0(c0), c1(c1), c2(c2), c3(c3), c4(c4) {}
dkato 0:f782d9c66c49 2330
dkato 0:f782d9c66c49 2331 void operator()() {
dkato 0:f782d9c66c49 2332 f(c0, c1, c2, c3, c4);
dkato 0:f782d9c66c49 2333 }
dkato 0:f782d9c66c49 2334 };
dkato 0:f782d9c66c49 2335
dkato 0:f782d9c66c49 2336 template <typename F, typename A0>
dkato 0:f782d9c66c49 2337 struct context01 {
dkato 0:f782d9c66c49 2338 F f;
dkato 0:f782d9c66c49 2339
dkato 0:f782d9c66c49 2340 context01(F f)
dkato 0:f782d9c66c49 2341 : f(f) {}
dkato 0:f782d9c66c49 2342
dkato 0:f782d9c66c49 2343 void operator()(A0 a0) {
dkato 0:f782d9c66c49 2344 f(a0);
dkato 0:f782d9c66c49 2345 }
dkato 0:f782d9c66c49 2346 };
dkato 0:f782d9c66c49 2347
dkato 0:f782d9c66c49 2348 template <typename F, typename C0, typename A0>
dkato 0:f782d9c66c49 2349 struct context11 {
dkato 0:f782d9c66c49 2350 F f; C0 c0;
dkato 0:f782d9c66c49 2351
dkato 0:f782d9c66c49 2352 context11(F f, C0 c0)
dkato 0:f782d9c66c49 2353 : f(f), c0(c0) {}
dkato 0:f782d9c66c49 2354
dkato 0:f782d9c66c49 2355 void operator()(A0 a0) {
dkato 0:f782d9c66c49 2356 f(c0, a0);
dkato 0:f782d9c66c49 2357 }
dkato 0:f782d9c66c49 2358 };
dkato 0:f782d9c66c49 2359
dkato 0:f782d9c66c49 2360 template <typename F, typename C0, typename C1, typename A0>
dkato 0:f782d9c66c49 2361 struct context21 {
dkato 0:f782d9c66c49 2362 F f; C0 c0; C1 c1;
dkato 0:f782d9c66c49 2363
dkato 0:f782d9c66c49 2364 context21(F f, C0 c0, C1 c1)
dkato 0:f782d9c66c49 2365 : f(f), c0(c0), c1(c1) {}
dkato 0:f782d9c66c49 2366
dkato 0:f782d9c66c49 2367 void operator()(A0 a0) {
dkato 0:f782d9c66c49 2368 f(c0, c1, a0);
dkato 0:f782d9c66c49 2369 }
dkato 0:f782d9c66c49 2370 };
dkato 0:f782d9c66c49 2371
dkato 0:f782d9c66c49 2372 template <typename F, typename C0, typename C1, typename C2, typename A0>
dkato 0:f782d9c66c49 2373 struct context31 {
dkato 0:f782d9c66c49 2374 F f; C0 c0; C1 c1; C2 c2;
dkato 0:f782d9c66c49 2375
dkato 0:f782d9c66c49 2376 context31(F f, C0 c0, C1 c1, C2 c2)
dkato 0:f782d9c66c49 2377 : f(f), c0(c0), c1(c1), c2(c2) {}
dkato 0:f782d9c66c49 2378
dkato 0:f782d9c66c49 2379 void operator()(A0 a0) {
dkato 0:f782d9c66c49 2380 f(c0, c1, c2, a0);
dkato 0:f782d9c66c49 2381 }
dkato 0:f782d9c66c49 2382 };
dkato 0:f782d9c66c49 2383
dkato 0:f782d9c66c49 2384 template <typename F, typename C0, typename C1, typename C2, typename C3, typename A0>
dkato 0:f782d9c66c49 2385 struct context41 {
dkato 0:f782d9c66c49 2386 F f; C0 c0; C1 c1; C2 c2; C3 c3;
dkato 0:f782d9c66c49 2387
dkato 0:f782d9c66c49 2388 context41(F f, C0 c0, C1 c1, C2 c2, C3 c3)
dkato 0:f782d9c66c49 2389 : f(f), c0(c0), c1(c1), c2(c2), c3(c3) {}
dkato 0:f782d9c66c49 2390
dkato 0:f782d9c66c49 2391 void operator()(A0 a0) {
dkato 0:f782d9c66c49 2392 f(c0, c1, c2, c3, a0);
dkato 0:f782d9c66c49 2393 }
dkato 0:f782d9c66c49 2394 };
dkato 0:f782d9c66c49 2395
dkato 0:f782d9c66c49 2396 template <typename F, typename C0, typename C1, typename C2, typename C3, typename C4, typename A0>
dkato 0:f782d9c66c49 2397 struct context51 {
dkato 0:f782d9c66c49 2398 F f; C0 c0; C1 c1; C2 c2; C3 c3; C4 c4;
dkato 0:f782d9c66c49 2399
dkato 0:f782d9c66c49 2400 context51(F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
dkato 0:f782d9c66c49 2401 : f(f), c0(c0), c1(c1), c2(c2), c3(c3), c4(c4) {}
dkato 0:f782d9c66c49 2402
dkato 0:f782d9c66c49 2403 void operator()(A0 a0) {
dkato 0:f782d9c66c49 2404 f(c0, c1, c2, c3, c4, a0);
dkato 0:f782d9c66c49 2405 }
dkato 0:f782d9c66c49 2406 };
dkato 0:f782d9c66c49 2407
dkato 0:f782d9c66c49 2408 template <typename F, typename A0, typename A1>
dkato 0:f782d9c66c49 2409 struct context02 {
dkato 0:f782d9c66c49 2410 F f;
dkato 0:f782d9c66c49 2411
dkato 0:f782d9c66c49 2412 context02(F f)
dkato 0:f782d9c66c49 2413 : f(f) {}
dkato 0:f782d9c66c49 2414
dkato 0:f782d9c66c49 2415 void operator()(A0 a0, A1 a1) {
dkato 0:f782d9c66c49 2416 f(a0, a1);
dkato 0:f782d9c66c49 2417 }
dkato 0:f782d9c66c49 2418 };
dkato 0:f782d9c66c49 2419
dkato 0:f782d9c66c49 2420 template <typename F, typename C0, typename A0, typename A1>
dkato 0:f782d9c66c49 2421 struct context12 {
dkato 0:f782d9c66c49 2422 F f; C0 c0;
dkato 0:f782d9c66c49 2423
dkato 0:f782d9c66c49 2424 context12(F f, C0 c0)
dkato 0:f782d9c66c49 2425 : f(f), c0(c0) {}
dkato 0:f782d9c66c49 2426
dkato 0:f782d9c66c49 2427 void operator()(A0 a0, A1 a1) {
dkato 0:f782d9c66c49 2428 f(c0, a0, a1);
dkato 0:f782d9c66c49 2429 }
dkato 0:f782d9c66c49 2430 };
dkato 0:f782d9c66c49 2431
dkato 0:f782d9c66c49 2432 template <typename F, typename C0, typename C1, typename A0, typename A1>
dkato 0:f782d9c66c49 2433 struct context22 {
dkato 0:f782d9c66c49 2434 F f; C0 c0; C1 c1;
dkato 0:f782d9c66c49 2435
dkato 0:f782d9c66c49 2436 context22(F f, C0 c0, C1 c1)
dkato 0:f782d9c66c49 2437 : f(f), c0(c0), c1(c1) {}
dkato 0:f782d9c66c49 2438
dkato 0:f782d9c66c49 2439 void operator()(A0 a0, A1 a1) {
dkato 0:f782d9c66c49 2440 f(c0, c1, a0, a1);
dkato 0:f782d9c66c49 2441 }
dkato 0:f782d9c66c49 2442 };
dkato 0:f782d9c66c49 2443
dkato 0:f782d9c66c49 2444 template <typename F, typename C0, typename C1, typename C2, typename A0, typename A1>
dkato 0:f782d9c66c49 2445 struct context32 {
dkato 0:f782d9c66c49 2446 F f; C0 c0; C1 c1; C2 c2;
dkato 0:f782d9c66c49 2447
dkato 0:f782d9c66c49 2448 context32(F f, C0 c0, C1 c1, C2 c2)
dkato 0:f782d9c66c49 2449 : f(f), c0(c0), c1(c1), c2(c2) {}
dkato 0:f782d9c66c49 2450
dkato 0:f782d9c66c49 2451 void operator()(A0 a0, A1 a1) {
dkato 0:f782d9c66c49 2452 f(c0, c1, c2, a0, a1);
dkato 0:f782d9c66c49 2453 }
dkato 0:f782d9c66c49 2454 };
dkato 0:f782d9c66c49 2455
dkato 0:f782d9c66c49 2456 template <typename F, typename C0, typename C1, typename C2, typename C3, typename A0, typename A1>
dkato 0:f782d9c66c49 2457 struct context42 {
dkato 0:f782d9c66c49 2458 F f; C0 c0; C1 c1; C2 c2; C3 c3;
dkato 0:f782d9c66c49 2459
dkato 0:f782d9c66c49 2460 context42(F f, C0 c0, C1 c1, C2 c2, C3 c3)
dkato 0:f782d9c66c49 2461 : f(f), c0(c0), c1(c1), c2(c2), c3(c3) {}
dkato 0:f782d9c66c49 2462
dkato 0:f782d9c66c49 2463 void operator()(A0 a0, A1 a1) {
dkato 0:f782d9c66c49 2464 f(c0, c1, c2, c3, a0, a1);
dkato 0:f782d9c66c49 2465 }
dkato 0:f782d9c66c49 2466 };
dkato 0:f782d9c66c49 2467
dkato 0:f782d9c66c49 2468 template <typename F, typename C0, typename C1, typename C2, typename C3, typename C4, typename A0, typename A1>
dkato 0:f782d9c66c49 2469 struct context52 {
dkato 0:f782d9c66c49 2470 F f; C0 c0; C1 c1; C2 c2; C3 c3; C4 c4;
dkato 0:f782d9c66c49 2471
dkato 0:f782d9c66c49 2472 context52(F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
dkato 0:f782d9c66c49 2473 : f(f), c0(c0), c1(c1), c2(c2), c3(c3), c4(c4) {}
dkato 0:f782d9c66c49 2474
dkato 0:f782d9c66c49 2475 void operator()(A0 a0, A1 a1) {
dkato 0:f782d9c66c49 2476 f(c0, c1, c2, c3, c4, a0, a1);
dkato 0:f782d9c66c49 2477 }
dkato 0:f782d9c66c49 2478 };
dkato 0:f782d9c66c49 2479
dkato 0:f782d9c66c49 2480 template <typename F, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 2481 struct context03 {
dkato 0:f782d9c66c49 2482 F f;
dkato 0:f782d9c66c49 2483
dkato 0:f782d9c66c49 2484 context03(F f)
dkato 0:f782d9c66c49 2485 : f(f) {}
dkato 0:f782d9c66c49 2486
dkato 0:f782d9c66c49 2487 void operator()(A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 2488 f(a0, a1, a2);
dkato 0:f782d9c66c49 2489 }
dkato 0:f782d9c66c49 2490 };
dkato 0:f782d9c66c49 2491
dkato 0:f782d9c66c49 2492 template <typename F, typename C0, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 2493 struct context13 {
dkato 0:f782d9c66c49 2494 F f; C0 c0;
dkato 0:f782d9c66c49 2495
dkato 0:f782d9c66c49 2496 context13(F f, C0 c0)
dkato 0:f782d9c66c49 2497 : f(f), c0(c0) {}
dkato 0:f782d9c66c49 2498
dkato 0:f782d9c66c49 2499 void operator()(A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 2500 f(c0, a0, a1, a2);
dkato 0:f782d9c66c49 2501 }
dkato 0:f782d9c66c49 2502 };
dkato 0:f782d9c66c49 2503
dkato 0:f782d9c66c49 2504 template <typename F, typename C0, typename C1, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 2505 struct context23 {
dkato 0:f782d9c66c49 2506 F f; C0 c0; C1 c1;
dkato 0:f782d9c66c49 2507
dkato 0:f782d9c66c49 2508 context23(F f, C0 c0, C1 c1)
dkato 0:f782d9c66c49 2509 : f(f), c0(c0), c1(c1) {}
dkato 0:f782d9c66c49 2510
dkato 0:f782d9c66c49 2511 void operator()(A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 2512 f(c0, c1, a0, a1, a2);
dkato 0:f782d9c66c49 2513 }
dkato 0:f782d9c66c49 2514 };
dkato 0:f782d9c66c49 2515
dkato 0:f782d9c66c49 2516 template <typename F, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 2517 struct context33 {
dkato 0:f782d9c66c49 2518 F f; C0 c0; C1 c1; C2 c2;
dkato 0:f782d9c66c49 2519
dkato 0:f782d9c66c49 2520 context33(F f, C0 c0, C1 c1, C2 c2)
dkato 0:f782d9c66c49 2521 : f(f), c0(c0), c1(c1), c2(c2) {}
dkato 0:f782d9c66c49 2522
dkato 0:f782d9c66c49 2523 void operator()(A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 2524 f(c0, c1, c2, a0, a1, a2);
dkato 0:f782d9c66c49 2525 }
dkato 0:f782d9c66c49 2526 };
dkato 0:f782d9c66c49 2527
dkato 0:f782d9c66c49 2528 template <typename F, typename C0, typename C1, typename C2, typename C3, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 2529 struct context43 {
dkato 0:f782d9c66c49 2530 F f; C0 c0; C1 c1; C2 c2; C3 c3;
dkato 0:f782d9c66c49 2531
dkato 0:f782d9c66c49 2532 context43(F f, C0 c0, C1 c1, C2 c2, C3 c3)
dkato 0:f782d9c66c49 2533 : f(f), c0(c0), c1(c1), c2(c2), c3(c3) {}
dkato 0:f782d9c66c49 2534
dkato 0:f782d9c66c49 2535 void operator()(A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 2536 f(c0, c1, c2, c3, a0, a1, a2);
dkato 0:f782d9c66c49 2537 }
dkato 0:f782d9c66c49 2538 };
dkato 0:f782d9c66c49 2539
dkato 0:f782d9c66c49 2540 template <typename F, typename C0, typename C1, typename C2, typename C3, typename C4, typename A0, typename A1, typename A2>
dkato 0:f782d9c66c49 2541 struct context53 {
dkato 0:f782d9c66c49 2542 F f; C0 c0; C1 c1; C2 c2; C3 c3; C4 c4;
dkato 0:f782d9c66c49 2543
dkato 0:f782d9c66c49 2544 context53(F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
dkato 0:f782d9c66c49 2545 : f(f), c0(c0), c1(c1), c2(c2), c3(c3), c4(c4) {}
dkato 0:f782d9c66c49 2546
dkato 0:f782d9c66c49 2547 void operator()(A0 a0, A1 a1, A2 a2) {
dkato 0:f782d9c66c49 2548 f(c0, c1, c2, c3, c4, a0, a1, a2);
dkato 0:f782d9c66c49 2549 }
dkato 0:f782d9c66c49 2550 };
dkato 0:f782d9c66c49 2551
dkato 0:f782d9c66c49 2552 template <typename F, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 2553 struct context04 {
dkato 0:f782d9c66c49 2554 F f;
dkato 0:f782d9c66c49 2555
dkato 0:f782d9c66c49 2556 context04(F f)
dkato 0:f782d9c66c49 2557 : f(f) {}
dkato 0:f782d9c66c49 2558
dkato 0:f782d9c66c49 2559 void operator()(A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 2560 f(a0, a1, a2, a3);
dkato 0:f782d9c66c49 2561 }
dkato 0:f782d9c66c49 2562 };
dkato 0:f782d9c66c49 2563
dkato 0:f782d9c66c49 2564 template <typename F, typename C0, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 2565 struct context14 {
dkato 0:f782d9c66c49 2566 F f; C0 c0;
dkato 0:f782d9c66c49 2567
dkato 0:f782d9c66c49 2568 context14(F f, C0 c0)
dkato 0:f782d9c66c49 2569 : f(f), c0(c0) {}
dkato 0:f782d9c66c49 2570
dkato 0:f782d9c66c49 2571 void operator()(A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 2572 f(c0, a0, a1, a2, a3);
dkato 0:f782d9c66c49 2573 }
dkato 0:f782d9c66c49 2574 };
dkato 0:f782d9c66c49 2575
dkato 0:f782d9c66c49 2576 template <typename F, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 2577 struct context24 {
dkato 0:f782d9c66c49 2578 F f; C0 c0; C1 c1;
dkato 0:f782d9c66c49 2579
dkato 0:f782d9c66c49 2580 context24(F f, C0 c0, C1 c1)
dkato 0:f782d9c66c49 2581 : f(f), c0(c0), c1(c1) {}
dkato 0:f782d9c66c49 2582
dkato 0:f782d9c66c49 2583 void operator()(A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 2584 f(c0, c1, a0, a1, a2, a3);
dkato 0:f782d9c66c49 2585 }
dkato 0:f782d9c66c49 2586 };
dkato 0:f782d9c66c49 2587
dkato 0:f782d9c66c49 2588 template <typename F, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 2589 struct context34 {
dkato 0:f782d9c66c49 2590 F f; C0 c0; C1 c1; C2 c2;
dkato 0:f782d9c66c49 2591
dkato 0:f782d9c66c49 2592 context34(F f, C0 c0, C1 c1, C2 c2)
dkato 0:f782d9c66c49 2593 : f(f), c0(c0), c1(c1), c2(c2) {}
dkato 0:f782d9c66c49 2594
dkato 0:f782d9c66c49 2595 void operator()(A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 2596 f(c0, c1, c2, a0, a1, a2, a3);
dkato 0:f782d9c66c49 2597 }
dkato 0:f782d9c66c49 2598 };
dkato 0:f782d9c66c49 2599
dkato 0:f782d9c66c49 2600 template <typename F, typename C0, typename C1, typename C2, typename C3, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 2601 struct context44 {
dkato 0:f782d9c66c49 2602 F f; C0 c0; C1 c1; C2 c2; C3 c3;
dkato 0:f782d9c66c49 2603
dkato 0:f782d9c66c49 2604 context44(F f, C0 c0, C1 c1, C2 c2, C3 c3)
dkato 0:f782d9c66c49 2605 : f(f), c0(c0), c1(c1), c2(c2), c3(c3) {}
dkato 0:f782d9c66c49 2606
dkato 0:f782d9c66c49 2607 void operator()(A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 2608 f(c0, c1, c2, c3, a0, a1, a2, a3);
dkato 0:f782d9c66c49 2609 }
dkato 0:f782d9c66c49 2610 };
dkato 0:f782d9c66c49 2611
dkato 0:f782d9c66c49 2612 template <typename F, typename C0, typename C1, typename C2, typename C3, typename C4, typename A0, typename A1, typename A2, typename A3>
dkato 0:f782d9c66c49 2613 struct context54 {
dkato 0:f782d9c66c49 2614 F f; C0 c0; C1 c1; C2 c2; C3 c3; C4 c4;
dkato 0:f782d9c66c49 2615
dkato 0:f782d9c66c49 2616 context54(F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
dkato 0:f782d9c66c49 2617 : f(f), c0(c0), c1(c1), c2(c2), c3(c3), c4(c4) {}
dkato 0:f782d9c66c49 2618
dkato 0:f782d9c66c49 2619 void operator()(A0 a0, A1 a1, A2 a2, A3 a3) {
dkato 0:f782d9c66c49 2620 f(c0, c1, c2, c3, c4, a0, a1, a2, a3);
dkato 0:f782d9c66c49 2621 }
dkato 0:f782d9c66c49 2622 };
dkato 0:f782d9c66c49 2623
dkato 0:f782d9c66c49 2624 template <typename F, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2625 struct context05 {
dkato 0:f782d9c66c49 2626 F f;
dkato 0:f782d9c66c49 2627
dkato 0:f782d9c66c49 2628 context05(F f)
dkato 0:f782d9c66c49 2629 : f(f) {}
dkato 0:f782d9c66c49 2630
dkato 0:f782d9c66c49 2631 void operator()(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 2632 f(a0, a1, a2, a3, a4);
dkato 0:f782d9c66c49 2633 }
dkato 0:f782d9c66c49 2634 };
dkato 0:f782d9c66c49 2635
dkato 0:f782d9c66c49 2636 template <typename F, typename C0, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2637 struct context15 {
dkato 0:f782d9c66c49 2638 F f; C0 c0;
dkato 0:f782d9c66c49 2639
dkato 0:f782d9c66c49 2640 context15(F f, C0 c0)
dkato 0:f782d9c66c49 2641 : f(f), c0(c0) {}
dkato 0:f782d9c66c49 2642
dkato 0:f782d9c66c49 2643 void operator()(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 2644 f(c0, a0, a1, a2, a3, a4);
dkato 0:f782d9c66c49 2645 }
dkato 0:f782d9c66c49 2646 };
dkato 0:f782d9c66c49 2647
dkato 0:f782d9c66c49 2648 template <typename F, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2649 struct context25 {
dkato 0:f782d9c66c49 2650 F f; C0 c0; C1 c1;
dkato 0:f782d9c66c49 2651
dkato 0:f782d9c66c49 2652 context25(F f, C0 c0, C1 c1)
dkato 0:f782d9c66c49 2653 : f(f), c0(c0), c1(c1) {}
dkato 0:f782d9c66c49 2654
dkato 0:f782d9c66c49 2655 void operator()(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 2656 f(c0, c1, a0, a1, a2, a3, a4);
dkato 0:f782d9c66c49 2657 }
dkato 0:f782d9c66c49 2658 };
dkato 0:f782d9c66c49 2659
dkato 0:f782d9c66c49 2660 template <typename F, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2661 struct context35 {
dkato 0:f782d9c66c49 2662 F f; C0 c0; C1 c1; C2 c2;
dkato 0:f782d9c66c49 2663
dkato 0:f782d9c66c49 2664 context35(F f, C0 c0, C1 c1, C2 c2)
dkato 0:f782d9c66c49 2665 : f(f), c0(c0), c1(c1), c2(c2) {}
dkato 0:f782d9c66c49 2666
dkato 0:f782d9c66c49 2667 void operator()(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 2668 f(c0, c1, c2, a0, a1, a2, a3, a4);
dkato 0:f782d9c66c49 2669 }
dkato 0:f782d9c66c49 2670 };
dkato 0:f782d9c66c49 2671
dkato 0:f782d9c66c49 2672 template <typename F, typename C0, typename C1, typename C2, typename C3, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2673 struct context45 {
dkato 0:f782d9c66c49 2674 F f; C0 c0; C1 c1; C2 c2; C3 c3;
dkato 0:f782d9c66c49 2675
dkato 0:f782d9c66c49 2676 context45(F f, C0 c0, C1 c1, C2 c2, C3 c3)
dkato 0:f782d9c66c49 2677 : f(f), c0(c0), c1(c1), c2(c2), c3(c3) {}
dkato 0:f782d9c66c49 2678
dkato 0:f782d9c66c49 2679 void operator()(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 2680 f(c0, c1, c2, c3, a0, a1, a2, a3, a4);
dkato 0:f782d9c66c49 2681 }
dkato 0:f782d9c66c49 2682 };
dkato 0:f782d9c66c49 2683
dkato 0:f782d9c66c49 2684 template <typename F, typename C0, typename C1, typename C2, typename C3, typename C4, typename A0, typename A1, typename A2, typename A3, typename A4>
dkato 0:f782d9c66c49 2685 struct context55 {
dkato 0:f782d9c66c49 2686 F f; C0 c0; C1 c1; C2 c2; C3 c3; C4 c4;
dkato 0:f782d9c66c49 2687
dkato 0:f782d9c66c49 2688 context55(F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
dkato 0:f782d9c66c49 2689 : f(f), c0(c0), c1(c1), c2(c2), c3(c3), c4(c4) {}
dkato 0:f782d9c66c49 2690
dkato 0:f782d9c66c49 2691 void operator()(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4) {
dkato 0:f782d9c66c49 2692 f(c0, c1, c2, c3, c4, a0, a1, a2, a3, a4);
dkato 0:f782d9c66c49 2693 }
dkato 0:f782d9c66c49 2694 };
dkato 0:f782d9c66c49 2695 };
dkato 0:f782d9c66c49 2696
dkato 0:f782d9c66c49 2697 }
dkato 0:f782d9c66c49 2698
dkato 0:f782d9c66c49 2699 #endif
dkato 0:f782d9c66c49 2700
dkato 0:f782d9c66c49 2701 /** @}*/