5.2.1 - Updated I2C files

Dependents:   mbed-TFT-example-NCS36510 mbed-Accelerometer-example-NCS36510 mbed-Accelerometer-example-NCS36510

Committer:
group-onsemi
Date:
Wed Jan 25 20:34:15 2017 +0000
Revision:
0:098463de4c5d
Initial commit

Who changed what in which revision?

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