Maxim mbed development library

Dependents:   sensomed

Committer:
switches
Date:
Tue Nov 08 18:27:11 2016 +0000
Revision:
0:0e018d759a2a
Initial commit

Who changed what in which revision?

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