Rtos API example

Committer:
marcozecchini
Date:
Sat Feb 23 12:13:36 2019 +0000
Revision:
0:9fca2b23d0ba
final commit

Who changed what in which revision?

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