Development mbed library for MAX32630FTHR

Dependents:   blinky_max32630fthr

Committer:
switches
Date:
Fri Dec 16 16:27:57 2016 +0000
Revision:
3:1198227e6421
Parent:
0:5c4d7b2438d3
Changed ADC scale for MAX32625 platforms to 1.2V full scale to match MAX32630 platforms

Who changed what in which revision?

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