This is a fork of the `events` subdirectory of https://github.com/ARMmbed/mbed-os

Dependents:   HelloWorld_CCA01M1 HelloWorld_CCA02M1 CI-data-logger-server HelloWorld_CCA02M1 ... more

This is a fork of the events subdirectory of https://github.com/ARMmbed/mbed-os.

Note, you must import this library with import name: events!!!

Committer:
Wolfgang Betz
Date:
Tue Sep 05 09:09:24 2017 +0200
Revision:
9832:b95afde9ef7e
Parent:
9827:e0aec41dde77
Merge branch 'master' of hg::http://developer.mbed.org/teams/ST/code/ST_Events into events-split

Who changed what in which revision?

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