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 Oct 04 15:02:44 2016 -0500
Revision:
5:705843a08e16
Parent:
2:a60d8117d0e0
Child:
7:80510299c57c
Add tags to our code

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