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:
Jimmy Brisson
Date:
Tue Apr 04 14:21:53 2017 -0500
Revision:
9822:fb4e93c12c32
Parent:
15:42ba4ffdf78d
Child:
9826:8fd8270f98e4
Update class documentation tags

stop using scope for \addtogroup. It was placing class methods into the
group documentation instead of the class documentation. The new style is
to explicitly tag the class as @ingroup. This new method will allow the
class to be linked in the group page, and the class page will contain
the detailed documentation of the class methods.

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