Daniel Vizcaya / Mbed OS 04_RTOS_Embebidos
Committer:
Bethory
Date:
Wed May 30 00:01:50 2018 +0000
Revision:
0:6ad07c9019fd
Codigo de tales para todos los pasculaes

Who changed what in which revision?

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