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:
Kevin Gilbert
Date:
Fri Jun 02 15:11:51 2017 -0500
Revision:
9826:8fd8270f98e4
Parent:
9822:fb4e93c12c32
Child:
9827:e0aec41dde77
EventQueue.h Doxygen doc fixed up. Moved overloaded callback arguments documentation to overloaded functions to fix warnings. B0..B4 were not documentated additionally, only bulk docs for a0..a4 and c0..c4 were moved around.

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