Kenji Arai / mbed-os_TYBLE16

Dependents:   TYBLE16_simple_data_logger TYBLE16_MP3_Air

Committer:
kenjiArai
Date:
Tue Dec 17 23:23:45 2019 +0000
Revision:
0:5b88d5760320
Child:
1:9db0e321a9f4
mbed-os5 only for TYBLE16

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:5b88d5760320 1 /* events
kenjiArai 0:5b88d5760320 2 * Copyright (c) 2016 ARM Limited
kenjiArai 0:5b88d5760320 3 * SPDX-License-Identifier: Apache-2.0
kenjiArai 0:5b88d5760320 4 *
kenjiArai 0:5b88d5760320 5 * Licensed under the Apache License, Version 2.0 (the "License");
kenjiArai 0:5b88d5760320 6 * you may not use this file except in compliance with the License.
kenjiArai 0:5b88d5760320 7 * You may obtain a copy of the License at
kenjiArai 0:5b88d5760320 8 *
kenjiArai 0:5b88d5760320 9 * http://www.apache.org/licenses/LICENSE-2.0
kenjiArai 0:5b88d5760320 10 *
kenjiArai 0:5b88d5760320 11 * Unless required by applicable law or agreed to in writing, software
kenjiArai 0:5b88d5760320 12 * distributed under the License is distributed on an "AS IS" BASIS,
kenjiArai 0:5b88d5760320 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kenjiArai 0:5b88d5760320 14 * See the License for the specific language governing permissions and
kenjiArai 0:5b88d5760320 15 * limitations under the License.
kenjiArai 0:5b88d5760320 16 */
kenjiArai 0:5b88d5760320 17
kenjiArai 0:5b88d5760320 18 #ifndef EVENT_QUEUE_H
kenjiArai 0:5b88d5760320 19 #define EVENT_QUEUE_H
kenjiArai 0:5b88d5760320 20
kenjiArai 0:5b88d5760320 21 #include "equeue/equeue.h"
kenjiArai 0:5b88d5760320 22 #include "platform/Callback.h"
kenjiArai 0:5b88d5760320 23 #include "platform/NonCopyable.h"
kenjiArai 0:5b88d5760320 24 #include <cstddef>
kenjiArai 0:5b88d5760320 25 #include <new>
kenjiArai 0:5b88d5760320 26
kenjiArai 0:5b88d5760320 27 namespace events {
kenjiArai 0:5b88d5760320 28 /** \addtogroup events */
kenjiArai 0:5b88d5760320 29
kenjiArai 0:5b88d5760320 30 /** EVENTS_EVENT_SIZE
kenjiArai 0:5b88d5760320 31 * Minimum size of an event
kenjiArai 0:5b88d5760320 32 * This size fits a Callback<void()> at minimum
kenjiArai 0:5b88d5760320 33 */
kenjiArai 0:5b88d5760320 34 #define EVENTS_EVENT_SIZE \
kenjiArai 0:5b88d5760320 35 (EQUEUE_EVENT_SIZE - 2*sizeof(void*) + sizeof(mbed::Callback<void()>))
kenjiArai 0:5b88d5760320 36
kenjiArai 0:5b88d5760320 37 /** EVENTS_QUEUE_SIZE
kenjiArai 0:5b88d5760320 38 * Default size of buffer for events
kenjiArai 0:5b88d5760320 39 */
kenjiArai 0:5b88d5760320 40 #define EVENTS_QUEUE_SIZE (32*EVENTS_EVENT_SIZE)
kenjiArai 0:5b88d5760320 41
kenjiArai 0:5b88d5760320 42 // Predeclared classes
kenjiArai 0:5b88d5760320 43 template <typename F>
kenjiArai 0:5b88d5760320 44 class Event;
kenjiArai 0:5b88d5760320 45
kenjiArai 0:5b88d5760320 46
kenjiArai 0:5b88d5760320 47 /** EventQueue
kenjiArai 0:5b88d5760320 48 *
kenjiArai 0:5b88d5760320 49 * Flexible event queue for dispatching events
kenjiArai 0:5b88d5760320 50 * @ingroup events
kenjiArai 0:5b88d5760320 51 */
kenjiArai 0:5b88d5760320 52 class EventQueue : private mbed::NonCopyable<EventQueue> {
kenjiArai 0:5b88d5760320 53 public:
kenjiArai 0:5b88d5760320 54 /** Create an EventQueue
kenjiArai 0:5b88d5760320 55 *
kenjiArai 0:5b88d5760320 56 * Create an event queue. The event queue either allocates a buffer of
kenjiArai 0:5b88d5760320 57 * the specified size with malloc or uses the user provided buffer.
kenjiArai 0:5b88d5760320 58 *
kenjiArai 0:5b88d5760320 59 * @param size Size of buffer to use for events in bytes
kenjiArai 0:5b88d5760320 60 * (default to EVENTS_QUEUE_SIZE)
kenjiArai 0:5b88d5760320 61 * @param buffer Pointer to buffer to use for events
kenjiArai 0:5b88d5760320 62 * (default to NULL)
kenjiArai 0:5b88d5760320 63 */
kenjiArai 0:5b88d5760320 64 EventQueue(unsigned size = EVENTS_QUEUE_SIZE, unsigned char *buffer = NULL);
kenjiArai 0:5b88d5760320 65
kenjiArai 0:5b88d5760320 66 /** Destroy an EventQueue
kenjiArai 0:5b88d5760320 67 */
kenjiArai 0:5b88d5760320 68 ~EventQueue();
kenjiArai 0:5b88d5760320 69
kenjiArai 0:5b88d5760320 70 /** Dispatch events
kenjiArai 0:5b88d5760320 71 *
kenjiArai 0:5b88d5760320 72 * Executes events until the specified milliseconds have passed.
kenjiArai 0:5b88d5760320 73 * If ms is negative, the dispatch function will dispatch events
kenjiArai 0:5b88d5760320 74 * indefinitely or until break_dispatch is called on this queue.
kenjiArai 0:5b88d5760320 75 *
kenjiArai 0:5b88d5760320 76 * When called with a finite timeout, the dispatch function is guaranteed
kenjiArai 0:5b88d5760320 77 * to terminate. When called with a timeout of 0, the dispatch function
kenjiArai 0:5b88d5760320 78 * does not wait and is IRQ safe.
kenjiArai 0:5b88d5760320 79 *
kenjiArai 0:5b88d5760320 80 * @param ms Time to wait for events in milliseconds, a negative
kenjiArai 0:5b88d5760320 81 * value will dispatch events indefinitely
kenjiArai 0:5b88d5760320 82 * (default to -1)
kenjiArai 0:5b88d5760320 83 */
kenjiArai 0:5b88d5760320 84 void dispatch(int ms = -1);
kenjiArai 0:5b88d5760320 85
kenjiArai 0:5b88d5760320 86 /** Dispatch events without a timeout
kenjiArai 0:5b88d5760320 87 *
kenjiArai 0:5b88d5760320 88 * This is equivalent to EventQueue::dispatch with no arguments, but
kenjiArai 0:5b88d5760320 89 * avoids overload ambiguities when passed as a callback.
kenjiArai 0:5b88d5760320 90 *
kenjiArai 0:5b88d5760320 91 * @see EventQueue::dispatch
kenjiArai 0:5b88d5760320 92 */
kenjiArai 0:5b88d5760320 93 void dispatch_forever()
kenjiArai 0:5b88d5760320 94 {
kenjiArai 0:5b88d5760320 95 dispatch();
kenjiArai 0:5b88d5760320 96 }
kenjiArai 0:5b88d5760320 97
kenjiArai 0:5b88d5760320 98 /** Break out of a running event loop
kenjiArai 0:5b88d5760320 99 *
kenjiArai 0:5b88d5760320 100 * Forces the specified event queue's dispatch loop to terminate. Pending
kenjiArai 0:5b88d5760320 101 * events may finish executing, but no new events will be executed.
kenjiArai 0:5b88d5760320 102 */
kenjiArai 0:5b88d5760320 103 void break_dispatch();
kenjiArai 0:5b88d5760320 104
kenjiArai 0:5b88d5760320 105 /** Millisecond counter
kenjiArai 0:5b88d5760320 106 *
kenjiArai 0:5b88d5760320 107 * Returns the underlying tick of the event queue represented as the
kenjiArai 0:5b88d5760320 108 * number of milliseconds that have passed since an arbitrary point in
kenjiArai 0:5b88d5760320 109 * time. Intentionally overflows to 0 after 2^32-1.
kenjiArai 0:5b88d5760320 110 *
kenjiArai 0:5b88d5760320 111 * @return The underlying tick of the event queue in milliseconds
kenjiArai 0:5b88d5760320 112 */
kenjiArai 0:5b88d5760320 113 unsigned tick();
kenjiArai 0:5b88d5760320 114
kenjiArai 0:5b88d5760320 115 /** Cancel an in-flight event
kenjiArai 0:5b88d5760320 116 *
kenjiArai 0:5b88d5760320 117 * Attempts to cancel an event referenced by the unique id returned from
kenjiArai 0:5b88d5760320 118 * one of the call functions. It is safe to call cancel after an event
kenjiArai 0:5b88d5760320 119 * has already been dispatched.
kenjiArai 0:5b88d5760320 120 *
kenjiArai 0:5b88d5760320 121 * id must be valid i.e. event must have not finished executing.
kenjiArai 0:5b88d5760320 122 *
kenjiArai 0:5b88d5760320 123 * The cancel function is IRQ safe.
kenjiArai 0:5b88d5760320 124 *
kenjiArai 0:5b88d5760320 125 * If called while the event queue's dispatch loop is active, the cancel
kenjiArai 0:5b88d5760320 126 * function does not guarantee that the event will not execute after it
kenjiArai 0:5b88d5760320 127 * returns, as the event may have already begun executing.
kenjiArai 0:5b88d5760320 128 *
kenjiArai 0:5b88d5760320 129 * @param id Unique id of the event
kenjiArai 0:5b88d5760320 130 */
kenjiArai 0:5b88d5760320 131 void cancel(int id);
kenjiArai 0:5b88d5760320 132
kenjiArai 0:5b88d5760320 133 /** Query how much time is left for delayed event
kenjiArai 0:5b88d5760320 134 *
kenjiArai 0:5b88d5760320 135 * If the event is delayed, this function can be used to query how much time
kenjiArai 0:5b88d5760320 136 * is left until the event is due to be dispatched.
kenjiArai 0:5b88d5760320 137 *
kenjiArai 0:5b88d5760320 138 * id must be valid i.e. event must have not finished executing.
kenjiArai 0:5b88d5760320 139 *
kenjiArai 0:5b88d5760320 140 * This function is IRQ safe.
kenjiArai 0:5b88d5760320 141 *
kenjiArai 0:5b88d5760320 142 * @param id Unique id of the event
kenjiArai 0:5b88d5760320 143 *
kenjiArai 0:5b88d5760320 144 * @return Remaining time in milliseconds or
kenjiArai 0:5b88d5760320 145 * 0 if event is already due to be dispatched or
kenjiArai 0:5b88d5760320 146 * is currently executing.
kenjiArai 0:5b88d5760320 147 * Undefined if id is invalid.
kenjiArai 0:5b88d5760320 148 *
kenjiArai 0:5b88d5760320 149 */
kenjiArai 0:5b88d5760320 150 int time_left(int id);
kenjiArai 0:5b88d5760320 151
kenjiArai 0:5b88d5760320 152 /** Background an event queue onto a single-shot timer-interrupt
kenjiArai 0:5b88d5760320 153 *
kenjiArai 0:5b88d5760320 154 * When updated, the event queue will call the provided update function
kenjiArai 0:5b88d5760320 155 * with a timeout indicating when the queue should be dispatched. A
kenjiArai 0:5b88d5760320 156 * negative timeout will be passed to the update function when the
kenjiArai 0:5b88d5760320 157 * timer-interrupt is no longer needed.
kenjiArai 0:5b88d5760320 158 *
kenjiArai 0:5b88d5760320 159 * Passing a null function disables the existing update function.
kenjiArai 0:5b88d5760320 160 *
kenjiArai 0:5b88d5760320 161 * The background function allows an event queue to take advantage of
kenjiArai 0:5b88d5760320 162 * hardware timers or other event loops, allowing an event queue to be
kenjiArai 0:5b88d5760320 163 * ran in the background without consuming the foreground thread.
kenjiArai 0:5b88d5760320 164 *
kenjiArai 0:5b88d5760320 165 * @param update Function called to indicate when the queue should be
kenjiArai 0:5b88d5760320 166 * dispatched
kenjiArai 0:5b88d5760320 167 */
kenjiArai 0:5b88d5760320 168 void background(mbed::Callback<void(int)> update);
kenjiArai 0:5b88d5760320 169
kenjiArai 0:5b88d5760320 170 /** Chain an event queue onto another event queue
kenjiArai 0:5b88d5760320 171 *
kenjiArai 0:5b88d5760320 172 * After chaining a queue to a target, calling dispatch on the target
kenjiArai 0:5b88d5760320 173 * queue will also dispatch events from this queue. The queues use
kenjiArai 0:5b88d5760320 174 * their own buffers and events must be handled independently.
kenjiArai 0:5b88d5760320 175 *
kenjiArai 0:5b88d5760320 176 * A null queue as the target will unchain the existing queue.
kenjiArai 0:5b88d5760320 177 *
kenjiArai 0:5b88d5760320 178 * The chain function allows multiple event queues to be composed,
kenjiArai 0:5b88d5760320 179 * sharing the context of a dispatch loop while still being managed
kenjiArai 0:5b88d5760320 180 * independently
kenjiArai 0:5b88d5760320 181 *
kenjiArai 0:5b88d5760320 182 * @param target Queue that will dispatch this queue's events as a
kenjiArai 0:5b88d5760320 183 * part of its dispatch loop
kenjiArai 0:5b88d5760320 184 *
kenjiArai 0:5b88d5760320 185 * @return Zero on success and negative error code value if chaining fails
kenjiArai 0:5b88d5760320 186 *
kenjiArai 0:5b88d5760320 187 */
kenjiArai 0:5b88d5760320 188 int chain(EventQueue *target);
kenjiArai 0:5b88d5760320 189
kenjiArai 0:5b88d5760320 190
kenjiArai 0:5b88d5760320 191
kenjiArai 0:5b88d5760320 192 #if defined(DOXYGEN_ONLY)
kenjiArai 0:5b88d5760320 193 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 194 *
kenjiArai 0:5b88d5760320 195 * The specified callback will be executed in the context of the event
kenjiArai 0:5b88d5760320 196 * queue's dispatch loop.
kenjiArai 0:5b88d5760320 197 *
kenjiArai 0:5b88d5760320 198 * The call function is IRQ safe and can act as a mechanism for moving
kenjiArai 0:5b88d5760320 199 * events out of IRQ contexts.
kenjiArai 0:5b88d5760320 200 *
kenjiArai 0:5b88d5760320 201 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 202 * @param args Arguments to pass to the callback
kenjiArai 0:5b88d5760320 203 * @return A unique id that represents the posted event and can
kenjiArai 0:5b88d5760320 204 * be passed to cancel, or an id of 0 if there is not
kenjiArai 0:5b88d5760320 205 * enough memory to allocate the event.
kenjiArai 0:5b88d5760320 206 * Returned id will remain valid until event has finished
kenjiArai 0:5b88d5760320 207 * executing.
kenjiArai 0:5b88d5760320 208 *
kenjiArai 0:5b88d5760320 209 * @code
kenjiArai 0:5b88d5760320 210 * #include "mbed.h"
kenjiArai 0:5b88d5760320 211 *
kenjiArai 0:5b88d5760320 212 * int main() {
kenjiArai 0:5b88d5760320 213 * // creates a queue with the default size
kenjiArai 0:5b88d5760320 214 * EventQueue queue;
kenjiArai 0:5b88d5760320 215 *
kenjiArai 0:5b88d5760320 216 * // events are simple callbacks
kenjiArai 0:5b88d5760320 217 * queue.call(printf, "called immediately\n");
kenjiArai 0:5b88d5760320 218 *
kenjiArai 0:5b88d5760320 219 * // the dispatch method executes events
kenjiArai 0:5b88d5760320 220 * queue.dispatch();
kenjiArai 0:5b88d5760320 221 * }
kenjiArai 0:5b88d5760320 222 * @endcode
kenjiArai 0:5b88d5760320 223 */
kenjiArai 0:5b88d5760320 224 template <typename F, typename ...Args>
kenjiArai 0:5b88d5760320 225 int call(F f, Args ...args);
kenjiArai 0:5b88d5760320 226
kenjiArai 0:5b88d5760320 227 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 228 *
kenjiArai 0:5b88d5760320 229 * The specified callback is executed in the context of the event
kenjiArai 0:5b88d5760320 230 * queue's dispatch loop.
kenjiArai 0:5b88d5760320 231 *
kenjiArai 0:5b88d5760320 232 * The call function is IRQ safe and can act as a mechanism for moving
kenjiArai 0:5b88d5760320 233 * events out of IRQ contexts.
kenjiArai 0:5b88d5760320 234 *
kenjiArai 0:5b88d5760320 235 * @param obj Object to call with the member function
kenjiArai 0:5b88d5760320 236 * @param method Member function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 237 * @param args Arguments to pass to the callback
kenjiArai 0:5b88d5760320 238 * @return A unique ID that represents the posted event and can
kenjiArai 0:5b88d5760320 239 * be passed to cancel, or an ID of 0 if there is not
kenjiArai 0:5b88d5760320 240 * enough memory to allocate the event.
kenjiArai 0:5b88d5760320 241 * Returned ID remains valid until event has finished
kenjiArai 0:5b88d5760320 242 * executing.
kenjiArai 0:5b88d5760320 243 *
kenjiArai 0:5b88d5760320 244 * @code
kenjiArai 0:5b88d5760320 245 * #include "mbed.h"
kenjiArai 0:5b88d5760320 246 *
kenjiArai 0:5b88d5760320 247 * class EventHandler {
kenjiArai 0:5b88d5760320 248 * int _id;
kenjiArai 0:5b88d5760320 249 * public:
kenjiArai 0:5b88d5760320 250 * EventHandler(int id) : _id(id) { }
kenjiArai 0:5b88d5760320 251 *
kenjiArai 0:5b88d5760320 252 * void handler(int c) {
kenjiArai 0:5b88d5760320 253 * printf("ID: %d Param: %d\r\n", _id, c);
kenjiArai 0:5b88d5760320 254 * }
kenjiArai 0:5b88d5760320 255 * };
kenjiArai 0:5b88d5760320 256 *
kenjiArai 0:5b88d5760320 257 * int main() {
kenjiArai 0:5b88d5760320 258 * // creates a queue with the default size
kenjiArai 0:5b88d5760320 259 * EventQueue queue;
kenjiArai 0:5b88d5760320 260 *
kenjiArai 0:5b88d5760320 261 * // Create EventHandler object with state
kenjiArai 0:5b88d5760320 262 * EventHandler handler_cb(1);
kenjiArai 0:5b88d5760320 263 *
kenjiArai 0:5b88d5760320 264 * // events are simple callbacks, call object method
kenjiArai 0:5b88d5760320 265 * // with provided parameter
kenjiArai 0:5b88d5760320 266 * queue.call(&handler_cb, &EventHandler::handler, 2);
kenjiArai 0:5b88d5760320 267 *
kenjiArai 0:5b88d5760320 268 * // the dispath method executes events
kenjiArai 0:5b88d5760320 269 * queue.dispatch();
kenjiArai 0:5b88d5760320 270 * }
kenjiArai 0:5b88d5760320 271 * @endcode
kenjiArai 0:5b88d5760320 272 */
kenjiArai 0:5b88d5760320 273 // AStyle ignore, not handling correctly below
kenjiArai 0:5b88d5760320 274 // *INDENT-OFF*
kenjiArai 0:5b88d5760320 275 template <typename T, typename R, typename ...Args>
kenjiArai 0:5b88d5760320 276 int call(T *obj, R (T::*method)(Args ...args), Args ...args);
kenjiArai 0:5b88d5760320 277 // *INDENT-ON*
kenjiArai 0:5b88d5760320 278
kenjiArai 0:5b88d5760320 279 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 280 *
kenjiArai 0:5b88d5760320 281 * The specified callback is executed in the context of the event
kenjiArai 0:5b88d5760320 282 * queue's dispatch loop.
kenjiArai 0:5b88d5760320 283 *
kenjiArai 0:5b88d5760320 284 * The call_in function is IRQ safe and can act as a mechanism for moving
kenjiArai 0:5b88d5760320 285 * events out of IRQ contexts.
kenjiArai 0:5b88d5760320 286 *
kenjiArai 0:5b88d5760320 287 * @param ms Time to delay in milliseconds
kenjiArai 0:5b88d5760320 288 * @param args Arguments to pass to the callback
kenjiArai 0:5b88d5760320 289 * @return A unique ID that represents the posted event and can
kenjiArai 0:5b88d5760320 290 * be passed to cancel, or an ID of 0 if there is not
kenjiArai 0:5b88d5760320 291 * enough memory to allocate the event.
kenjiArai 0:5b88d5760320 292 *
kenjiArai 0:5b88d5760320 293 * @code
kenjiArai 0:5b88d5760320 294 * #include "mbed.h"
kenjiArai 0:5b88d5760320 295 *
kenjiArai 0:5b88d5760320 296 * int main() {
kenjiArai 0:5b88d5760320 297 * // creates a queue with the default size
kenjiArai 0:5b88d5760320 298 * EventQueue queue;
kenjiArai 0:5b88d5760320 299 *
kenjiArai 0:5b88d5760320 300 * // events are simple callbacks
kenjiArai 0:5b88d5760320 301 * queue.call_in(2000, printf, "called in 2 seconds\n");
kenjiArai 0:5b88d5760320 302 *
kenjiArai 0:5b88d5760320 303 * // the dispatch methods executes events
kenjiArai 0:5b88d5760320 304 * queue.dispatch();
kenjiArai 0:5b88d5760320 305 * }
kenjiArai 0:5b88d5760320 306 * @endcode
kenjiArai 0:5b88d5760320 307 */
kenjiArai 0:5b88d5760320 308 template <typename F, typename ...Args>
kenjiArai 0:5b88d5760320 309 int call_in(int ms, Args ...args);
kenjiArai 0:5b88d5760320 310
kenjiArai 0:5b88d5760320 311 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 312 *
kenjiArai 0:5b88d5760320 313 * The specified callback is executed in the context of the event
kenjiArai 0:5b88d5760320 314 * queue's dispatch loop.
kenjiArai 0:5b88d5760320 315 *
kenjiArai 0:5b88d5760320 316 * The call_in function is IRQ safe and can act as a mechanism for moving
kenjiArai 0:5b88d5760320 317 * events out of IRQ contexts.
kenjiArai 0:5b88d5760320 318 *
kenjiArai 0:5b88d5760320 319 * @param ms Time to delay in milliseconds
kenjiArai 0:5b88d5760320 320 * @param obj Object to call with the member function
kenjiArai 0:5b88d5760320 321 * @param method Member function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 322 * @param args Arguments to pass to the callback
kenjiArai 0:5b88d5760320 323 * @return A unique ID that represents the posted event and can
kenjiArai 0:5b88d5760320 324 * be passed to cancel, or an ID of 0 if there is not
kenjiArai 0:5b88d5760320 325 * enough memory to allocate the event.
kenjiArai 0:5b88d5760320 326 *
kenjiArai 0:5b88d5760320 327 * @code
kenjiArai 0:5b88d5760320 328 * #include "mbed.h"
kenjiArai 0:5b88d5760320 329 *
kenjiArai 0:5b88d5760320 330 * class EventHandler {
kenjiArai 0:5b88d5760320 331 * int _id;
kenjiArai 0:5b88d5760320 332 * public:
kenjiArai 0:5b88d5760320 333 * EventHandler(int id) : _id(id) { }
kenjiArai 0:5b88d5760320 334 *
kenjiArai 0:5b88d5760320 335 * void handler(int c) {
kenjiArai 0:5b88d5760320 336 * printf("ID: %d Param: %d\r\n", _id, c);
kenjiArai 0:5b88d5760320 337 * }
kenjiArai 0:5b88d5760320 338 * };
kenjiArai 0:5b88d5760320 339 *
kenjiArai 0:5b88d5760320 340 * int main() {
kenjiArai 0:5b88d5760320 341 * // creates a queue with the default size
kenjiArai 0:5b88d5760320 342 * EventQueue queue;
kenjiArai 0:5b88d5760320 343 *
kenjiArai 0:5b88d5760320 344 * // Create EventHandler object with state
kenjiArai 0:5b88d5760320 345 * EventHandler handler_cb(3);
kenjiArai 0:5b88d5760320 346 *
kenjiArai 0:5b88d5760320 347 * // events are simple callbacks, call object method in 2 seconds
kenjiArai 0:5b88d5760320 348 * // with provided parameter
kenjiArai 0:5b88d5760320 349 * queue.call_in(2000, &handler_cb, &EventHandler::handler, 4);
kenjiArai 0:5b88d5760320 350 *
kenjiArai 0:5b88d5760320 351 * // the dispatch method executes events
kenjiArai 0:5b88d5760320 352 * queue.dispatch();
kenjiArai 0:5b88d5760320 353 * }
kenjiArai 0:5b88d5760320 354 * @endcode
kenjiArai 0:5b88d5760320 355 */
kenjiArai 0:5b88d5760320 356 // AStyle ignore, not handling correctly below
kenjiArai 0:5b88d5760320 357 // *INDENT-OFF*
kenjiArai 0:5b88d5760320 358 template <typename T, typename R, typename ...Args>
kenjiArai 0:5b88d5760320 359 int call_in(int ms, T *obj, R (T::*method)(Args ...args), Args ...args);
kenjiArai 0:5b88d5760320 360 // *INDENT-ON*
kenjiArai 0:5b88d5760320 361
kenjiArai 0:5b88d5760320 362 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 363 *
kenjiArai 0:5b88d5760320 364 * @note The first call_every event occurs after the specified delay.
kenjiArai 0:5b88d5760320 365 * To create a periodic event that fires immediately, @see Event.
kenjiArai 0:5b88d5760320 366 *
kenjiArai 0:5b88d5760320 367 * The specified callback is executed in the context of the event
kenjiArai 0:5b88d5760320 368 * queue's dispatch loop.
kenjiArai 0:5b88d5760320 369 *
kenjiArai 0:5b88d5760320 370 * The call_every function is IRQ safe and can act as a mechanism for
kenjiArai 0:5b88d5760320 371 * moving events out of IRQ contexts.
kenjiArai 0:5b88d5760320 372 *
kenjiArai 0:5b88d5760320 373 * @param ms Period of the event in milliseconds
kenjiArai 0:5b88d5760320 374 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 375 * @param args Arguments to pass to the callback
kenjiArai 0:5b88d5760320 376 * @return A unique ID that represents the posted event and can
kenjiArai 0:5b88d5760320 377 * be passed to cancel, or an ID of 0 if there is not
kenjiArai 0:5b88d5760320 378 * enough memory to allocate the event.
kenjiArai 0:5b88d5760320 379 *
kenjiArai 0:5b88d5760320 380 * @code
kenjiArai 0:5b88d5760320 381 * #include "mbed.h"
kenjiArai 0:5b88d5760320 382 *
kenjiArai 0:5b88d5760320 383 * class EventHandler {
kenjiArai 0:5b88d5760320 384 * int _id;
kenjiArai 0:5b88d5760320 385 * public:
kenjiArai 0:5b88d5760320 386 * EventHandler(int id) : _id(id) { }
kenjiArai 0:5b88d5760320 387 *
kenjiArai 0:5b88d5760320 388 * void handler(int c) {
kenjiArai 0:5b88d5760320 389 * printf("ID: %d Param: %d\r\n", _id, c);
kenjiArai 0:5b88d5760320 390 * }
kenjiArai 0:5b88d5760320 391 * };
kenjiArai 0:5b88d5760320 392 *
kenjiArai 0:5b88d5760320 393 * int main() {
kenjiArai 0:5b88d5760320 394 * // creates a queue with the default size
kenjiArai 0:5b88d5760320 395 * EventQueue queue;
kenjiArai 0:5b88d5760320 396 *
kenjiArai 0:5b88d5760320 397 * // events are simple callbacks, call every 2 seconds
kenjiArai 0:5b88d5760320 398 * queue.call_every(2000, printf, "Calling every 2 seconds\n");
kenjiArai 0:5b88d5760320 399 *
kenjiArai 0:5b88d5760320 400 * // the dispatch method executes events
kenjiArai 0:5b88d5760320 401 * queue.dispatch();
kenjiArai 0:5b88d5760320 402 * }
kenjiArai 0:5b88d5760320 403 * @endcode
kenjiArai 0:5b88d5760320 404 */
kenjiArai 0:5b88d5760320 405 template <typename F, typename ...Args>
kenjiArai 0:5b88d5760320 406 int call_every(int ms, F f, Args ...args);
kenjiArai 0:5b88d5760320 407
kenjiArai 0:5b88d5760320 408 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 409 *
kenjiArai 0:5b88d5760320 410 * @note The first call_every event occurs after the specified delay.
kenjiArai 0:5b88d5760320 411 * To create a periodic event that fires immediately, @see Event.
kenjiArai 0:5b88d5760320 412 *
kenjiArai 0:5b88d5760320 413 * The specified callback is executed in the context of the event
kenjiArai 0:5b88d5760320 414 * queue's dispatch loop.
kenjiArai 0:5b88d5760320 415 *
kenjiArai 0:5b88d5760320 416 * The call_every function is IRQ safe and can act as a mechanism for
kenjiArai 0:5b88d5760320 417 * moving events out of IRQ contexts.
kenjiArai 0:5b88d5760320 418 *
kenjiArai 0:5b88d5760320 419 * @param ms Period of the event in milliseconds
kenjiArai 0:5b88d5760320 420 * @param obj Object to call with the member function
kenjiArai 0:5b88d5760320 421 * @param method Member function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 422 * @param args Arguments to pass to the callback
kenjiArai 0:5b88d5760320 423 *
kenjiArai 0:5b88d5760320 424 * @code
kenjiArai 0:5b88d5760320 425 * #include "mbed.h"
kenjiArai 0:5b88d5760320 426 *
kenjiArai 0:5b88d5760320 427 * class EventHandler {
kenjiArai 0:5b88d5760320 428 * int _id;
kenjiArai 0:5b88d5760320 429 * public:
kenjiArai 0:5b88d5760320 430 * EventHandler(int id) : _id(id) { }
kenjiArai 0:5b88d5760320 431 *
kenjiArai 0:5b88d5760320 432 * void handler(int c) {
kenjiArai 0:5b88d5760320 433 * printf("ID: %d Param: %d\r\n", _id, c);
kenjiArai 0:5b88d5760320 434 * }
kenjiArai 0:5b88d5760320 435 * };
kenjiArai 0:5b88d5760320 436 *
kenjiArai 0:5b88d5760320 437 * int main() {
kenjiArai 0:5b88d5760320 438 * // creates a queue with the default size
kenjiArai 0:5b88d5760320 439 * EventQueue queue;
kenjiArai 0:5b88d5760320 440 *
kenjiArai 0:5b88d5760320 441 * // Create EventHandler object with state
kenjiArai 0:5b88d5760320 442 * EventHandler handler_cb(5);
kenjiArai 0:5b88d5760320 443 *
kenjiArai 0:5b88d5760320 444 * // events are simple callbacks, call object method every 2 seconds
kenjiArai 0:5b88d5760320 445 * // with provided parameter
kenjiArai 0:5b88d5760320 446 * queue.call_every(2000, &handler_cb, &EventHandler::handler, 6);
kenjiArai 0:5b88d5760320 447 *
kenjiArai 0:5b88d5760320 448 * // the dispatch method executes events
kenjiArai 0:5b88d5760320 449 * queue.dispatch();
kenjiArai 0:5b88d5760320 450 * }
kenjiArai 0:5b88d5760320 451 * @endcode
kenjiArai 0:5b88d5760320 452 */
kenjiArai 0:5b88d5760320 453 // AStyle ignore, not handling correctly below
kenjiArai 0:5b88d5760320 454 // *INDENT-OFF*
kenjiArai 0:5b88d5760320 455 template <typename T, typename R, typename ...Args>
kenjiArai 0:5b88d5760320 456 int call_every(int ms, T *obj, R (T::*method)(Args ...args), Args ...args);
kenjiArai 0:5b88d5760320 457 // *INDENT-ON*
kenjiArai 0:5b88d5760320 458
kenjiArai 0:5b88d5760320 459 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 460 *
kenjiArai 0:5b88d5760320 461 * Constructs an event bound to the specified event queue. The specified
kenjiArai 0:5b88d5760320 462 * callback acts as the target for the event and is executed in the
kenjiArai 0:5b88d5760320 463 * context of the event queue's dispatch loop once posted.
kenjiArai 0:5b88d5760320 464 *
kenjiArai 0:5b88d5760320 465 * @param func Function to execute when the event is dispatched
kenjiArai 0:5b88d5760320 466 * @param args Arguments to pass to the callback
kenjiArai 0:5b88d5760320 467 * @return Event that dispatches on the specific queue
kenjiArai 0:5b88d5760320 468 *
kenjiArai 0:5b88d5760320 469 * @code
kenjiArai 0:5b88d5760320 470 * #include "mbed.h"
kenjiArai 0:5b88d5760320 471 *
kenjiArai 0:5b88d5760320 472 * void handler(int c) {
kenjiArai 0:5b88d5760320 473 * printf("Param: %d\r\n", c);
kenjiArai 0:5b88d5760320 474 * }
kenjiArai 0:5b88d5760320 475 *
kenjiArai 0:5b88d5760320 476 * int main()
kenjiArai 0:5b88d5760320 477 * {
kenjiArai 0:5b88d5760320 478 * EventQueue queue;
kenjiArai 0:5b88d5760320 479 *
kenjiArai 0:5b88d5760320 480 * // Create event with parameter
kenjiArai 0:5b88d5760320 481 * Event<void()> e = queue.event(handler, 1);
kenjiArai 0:5b88d5760320 482 * e();
kenjiArai 0:5b88d5760320 483 *
kenjiArai 0:5b88d5760320 484 * // Create event and post parameter later
kenjiArai 0:5b88d5760320 485 * Event<void(int)> e2 = queue.event(handler);
kenjiArai 0:5b88d5760320 486 *
kenjiArai 0:5b88d5760320 487 * // Post the event with paramter 8
kenjiArai 0:5b88d5760320 488 * e.post(8);
kenjiArai 0:5b88d5760320 489 *
kenjiArai 0:5b88d5760320 490 * // The dispatch method executes events
kenjiArai 0:5b88d5760320 491 * queue.dispatch();
kenjiArai 0:5b88d5760320 492 *
kenjiArai 0:5b88d5760320 493 * e2.post(2);
kenjiArai 0:5b88d5760320 494 *
kenjiArai 0:5b88d5760320 495 * queue.dispatch();
kenjiArai 0:5b88d5760320 496 * }
kenjiArai 0:5b88d5760320 497 * @endcode
kenjiArai 0:5b88d5760320 498 */
kenjiArai 0:5b88d5760320 499 // AStyle ignore, not handling correctly below
kenjiArai 0:5b88d5760320 500 // *INDENT-OFF*
kenjiArai 0:5b88d5760320 501 template <typename R, typename ...BoundArgs, typename ...Args>
kenjiArai 0:5b88d5760320 502 Event<void(Args...)> event(R (*func)(BoundArgs...), Args ...args);
kenjiArai 0:5b88d5760320 503 // *INDENT-ON*
kenjiArai 0:5b88d5760320 504
kenjiArai 0:5b88d5760320 505 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 506 *
kenjiArai 0:5b88d5760320 507 * Constructs an event bound to the specified event queue. The specified
kenjiArai 0:5b88d5760320 508 * callback acts as the target for the event and is executed in the
kenjiArai 0:5b88d5760320 509 * context of the event queue's dispatch loop once posted.
kenjiArai 0:5b88d5760320 510 *
kenjiArai 0:5b88d5760320 511 * @param obj Object to call with the member function
kenjiArai 0:5b88d5760320 512 * @param method Member function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 513 * @param context_args Arguments to pass to the callback
kenjiArai 0:5b88d5760320 514 * @return Event that dispatches on the specific queue
kenjiArai 0:5b88d5760320 515 *
kenjiArai 0:5b88d5760320 516 * @code
kenjiArai 0:5b88d5760320 517 * #include "mbed.h"
kenjiArai 0:5b88d5760320 518 *
kenjiArai 0:5b88d5760320 519 * class EventHandler {
kenjiArai 0:5b88d5760320 520 * int _id;
kenjiArai 0:5b88d5760320 521 *
kenjiArai 0:5b88d5760320 522 * public:
kenjiArai 0:5b88d5760320 523 * EventHandler(int id) : _id(id) { }
kenjiArai 0:5b88d5760320 524 *
kenjiArai 0:5b88d5760320 525 * void handler(int c) {
kenjiArai 0:5b88d5760320 526 * printf("ID: %d Param: %d\r\n", _id, c);
kenjiArai 0:5b88d5760320 527 * }
kenjiArai 0:5b88d5760320 528 * };
kenjiArai 0:5b88d5760320 529 *
kenjiArai 0:5b88d5760320 530 * int main()
kenjiArai 0:5b88d5760320 531 * {
kenjiArai 0:5b88d5760320 532 * EventQueue queue;
kenjiArai 0:5b88d5760320 533 *
kenjiArai 0:5b88d5760320 534 * EventHandler handler_cb(10);
kenjiArai 0:5b88d5760320 535 *
kenjiArai 0:5b88d5760320 536 * // Create event on the eventqueue with a method callback
kenjiArai 0:5b88d5760320 537 * Event<void(int)> e = queue.event(&handler_cb, &EventHandler::handler);
kenjiArai 0:5b88d5760320 538 *
kenjiArai 0:5b88d5760320 539 * // Post the event with paramter 8
kenjiArai 0:5b88d5760320 540 * e.post(11);
kenjiArai 0:5b88d5760320 541 *
kenjiArai 0:5b88d5760320 542 * // The dispatch method executes events
kenjiArai 0:5b88d5760320 543 * queue.dispatch();
kenjiArai 0:5b88d5760320 544 * }
kenjiArai 0:5b88d5760320 545 * @endcode
kenjiArai 0:5b88d5760320 546 */
kenjiArai 0:5b88d5760320 547 // AStyle ignore, not handling correctly below
kenjiArai 0:5b88d5760320 548 // *INDENT-OFF*
kenjiArai 0:5b88d5760320 549 template <typename T, typename R, typename ...BoundArgs, typename ...ContextArgs, typename ...Args>
kenjiArai 0:5b88d5760320 550 Event<void(Args...)> event(T *obj, R (T::*method)(BoundArgs..., Args...), ContextArgs ...context_args);
kenjiArai 0:5b88d5760320 551 // *INDENT-ON*
kenjiArai 0:5b88d5760320 552
kenjiArai 0:5b88d5760320 553 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 554 *
kenjiArai 0:5b88d5760320 555 * Constructs an event bound to the specified event queue. The specified
kenjiArai 0:5b88d5760320 556 * callback acts as the target for the event and is executed in the
kenjiArai 0:5b88d5760320 557 * context of the event queue's dispatch loop once posted.
kenjiArai 0:5b88d5760320 558 *
kenjiArai 0:5b88d5760320 559 * @param cb Callback object
kenjiArai 0:5b88d5760320 560 * @param context_args Arguments to pass to the callback
kenjiArai 0:5b88d5760320 561 * @return Event that dispatches on the specific queue
kenjiArai 0:5b88d5760320 562 *
kenjiArai 0:5b88d5760320 563 * @code
kenjiArai 0:5b88d5760320 564 * #include "mbed.h"
kenjiArai 0:5b88d5760320 565 *
kenjiArai 0:5b88d5760320 566 * void handler(int c) {
kenjiArai 0:5b88d5760320 567 * printf("Param: %d\r\n", c);
kenjiArai 0:5b88d5760320 568 * }
kenjiArai 0:5b88d5760320 569 *
kenjiArai 0:5b88d5760320 570 * int main()
kenjiArai 0:5b88d5760320 571 * {
kenjiArai 0:5b88d5760320 572 * EventQueue queue;
kenjiArai 0:5b88d5760320 573 * // Create callback object acting as a function
kenjiArai 0:5b88d5760320 574 * // pointer to handler
kenjiArai 0:5b88d5760320 575 * Callback<void(int)> cb(handler);
kenjiArai 0:5b88d5760320 576 *
kenjiArai 0:5b88d5760320 577 * // Pass the callback object to the eventqueue
kenjiArai 0:5b88d5760320 578 * Event<void(int)> e = queue.event(cb);
kenjiArai 0:5b88d5760320 579 *
kenjiArai 0:5b88d5760320 580 * // Post the event with parameter 8
kenjiArai 0:5b88d5760320 581 * e.post(9);
kenjiArai 0:5b88d5760320 582 *
kenjiArai 0:5b88d5760320 583 * // The dispatch method executes events
kenjiArai 0:5b88d5760320 584 * q.dispatch();
kenjiArai 0:5b88d5760320 585 * }
kenjiArai 0:5b88d5760320 586 * @endcode
kenjiArai 0:5b88d5760320 587 */
kenjiArai 0:5b88d5760320 588 template <typename R, typename ...BoundArgs, typename ...ContextArgs, typename ...Args>
kenjiArai 0:5b88d5760320 589 Event<void(Args...)> event(mbed::Callback<R(BoundArgs..., Args...)> cb, ContextArgs ...context_args);
kenjiArai 0:5b88d5760320 590
kenjiArai 0:5b88d5760320 591 #else
kenjiArai 0:5b88d5760320 592
kenjiArai 0:5b88d5760320 593 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 594 *
kenjiArai 0:5b88d5760320 595 * The specified callback is executed in the context of the event
kenjiArai 0:5b88d5760320 596 * queue's dispatch loop.
kenjiArai 0:5b88d5760320 597 *
kenjiArai 0:5b88d5760320 598 * The call function is IRQ safe and can act as a mechanism for moving
kenjiArai 0:5b88d5760320 599 * events out of IRQ contexts.
kenjiArai 0:5b88d5760320 600 *
kenjiArai 0:5b88d5760320 601 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 602 * @return A unique ID that represents the posted event and can
kenjiArai 0:5b88d5760320 603 * be passed to cancel, or an ID of 0 if there is not
kenjiArai 0:5b88d5760320 604 * enough memory to allocate the event.
kenjiArai 0:5b88d5760320 605 * Returned ID remains valid until event has finished
kenjiArai 0:5b88d5760320 606 * executing.
kenjiArai 0:5b88d5760320 607 *
kenjiArai 0:5b88d5760320 608 * @code
kenjiArai 0:5b88d5760320 609 * #include "mbed.h"
kenjiArai 0:5b88d5760320 610 *
kenjiArai 0:5b88d5760320 611 * int main()
kenjiArai 0:5b88d5760320 612 * {
kenjiArai 0:5b88d5760320 613 * EventQueue queue;
kenjiArai 0:5b88d5760320 614 *
kenjiArai 0:5b88d5760320 615 * Callback<void(int)> cb(handler);
kenjiArai 0:5b88d5760320 616 *
kenjiArai 0:5b88d5760320 617 * // Create event on the eventqueue with a separate callback object
kenjiArai 0:5b88d5760320 618 * Event<void(int)> e = queue.event(cb);
kenjiArai 0:5b88d5760320 619 * e.post(1);
kenjiArai 0:5b88d5760320 620 * queue.dispatch();
kenjiArai 0:5b88d5760320 621 * }
kenjiArai 0:5b88d5760320 622 * @endcode
kenjiArai 0:5b88d5760320 623 */
kenjiArai 0:5b88d5760320 624 template <typename F>
kenjiArai 0:5b88d5760320 625 int call(F f)
kenjiArai 0:5b88d5760320 626 {
kenjiArai 0:5b88d5760320 627 void *p = equeue_alloc(&_equeue, sizeof(F));
kenjiArai 0:5b88d5760320 628 if (!p) {
kenjiArai 0:5b88d5760320 629 return 0;
kenjiArai 0:5b88d5760320 630 }
kenjiArai 0:5b88d5760320 631
kenjiArai 0:5b88d5760320 632 F *e = new (p) F(f);
kenjiArai 0:5b88d5760320 633 equeue_event_dtor(e, &EventQueue::function_dtor<F>);
kenjiArai 0:5b88d5760320 634 return equeue_post(&_equeue, &EventQueue::function_call<F>, e);
kenjiArai 0:5b88d5760320 635 }
kenjiArai 0:5b88d5760320 636
kenjiArai 0:5b88d5760320 637
kenjiArai 0:5b88d5760320 638 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 639 * @see EventQueue::call
kenjiArai 0:5b88d5760320 640 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 641 * @param a0 Argument to pass to the callback
kenjiArai 0:5b88d5760320 642 */
kenjiArai 0:5b88d5760320 643 template <typename F, typename A0>
kenjiArai 0:5b88d5760320 644 int call(F f, A0 a0)
kenjiArai 0:5b88d5760320 645 {
kenjiArai 0:5b88d5760320 646 return call(context10<F, A0>(f, a0));
kenjiArai 0:5b88d5760320 647 }
kenjiArai 0:5b88d5760320 648
kenjiArai 0:5b88d5760320 649 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 650 * @see EventQueue::call
kenjiArai 0:5b88d5760320 651 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 652 * @param a0,a1 Arguments to pass to the callback
kenjiArai 0:5b88d5760320 653 */
kenjiArai 0:5b88d5760320 654 template <typename F, typename A0, typename A1>
kenjiArai 0:5b88d5760320 655 int call(F f, A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 656 {
kenjiArai 0:5b88d5760320 657 return call(context20<F, A0, A1>(f, a0, a1));
kenjiArai 0:5b88d5760320 658 }
kenjiArai 0:5b88d5760320 659
kenjiArai 0:5b88d5760320 660 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 661 * @see EventQueue::call
kenjiArai 0:5b88d5760320 662 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 663 * @param a0,a1,a2 Arguments to pass to the callback
kenjiArai 0:5b88d5760320 664 */
kenjiArai 0:5b88d5760320 665 template <typename F, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 666 int call(F f, A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 667 {
kenjiArai 0:5b88d5760320 668 return call(context30<F, A0, A1, A2>(f, a0, a1, a2));
kenjiArai 0:5b88d5760320 669 }
kenjiArai 0:5b88d5760320 670
kenjiArai 0:5b88d5760320 671 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 672 * @see EventQueue::call
kenjiArai 0:5b88d5760320 673 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 674 * @param a0,a1,a2,a3 Arguments to pass to the callback
kenjiArai 0:5b88d5760320 675 */
kenjiArai 0:5b88d5760320 676 template <typename F, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 677 int call(F f, A0 a0, A1 a1, A2 a2, A3 a3)
kenjiArai 0:5b88d5760320 678 {
kenjiArai 0:5b88d5760320 679 return call(context40<F, A0, A1, A2, A3>(f, a0, a1, a2, a3));
kenjiArai 0:5b88d5760320 680 }
kenjiArai 0:5b88d5760320 681
kenjiArai 0:5b88d5760320 682 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 683 * @see EventQueue::call
kenjiArai 0:5b88d5760320 684 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 685 * @param a0,a1,a2,a3,a4 Arguments to pass to the callback
kenjiArai 0:5b88d5760320 686 */
kenjiArai 0:5b88d5760320 687 template <typename F, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 688 int call(F f, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
kenjiArai 0:5b88d5760320 689 {
kenjiArai 0:5b88d5760320 690 return call(context50<F, A0, A1, A2, A3, A4>(f, a0, a1, a2, a3, a4));
kenjiArai 0:5b88d5760320 691 }
kenjiArai 0:5b88d5760320 692
kenjiArai 0:5b88d5760320 693 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 694 * @see EventQueue::call
kenjiArai 0:5b88d5760320 695 */
kenjiArai 0:5b88d5760320 696 template <typename T, typename R>
kenjiArai 0:5b88d5760320 697 int call(T *obj, R(T::*method)())
kenjiArai 0:5b88d5760320 698 {
kenjiArai 0:5b88d5760320 699 return call(mbed::callback(obj, method));
kenjiArai 0:5b88d5760320 700 }
kenjiArai 0:5b88d5760320 701
kenjiArai 0:5b88d5760320 702 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 703 * @see EventQueue::call
kenjiArai 0:5b88d5760320 704 */
kenjiArai 0:5b88d5760320 705 template <typename T, typename R>
kenjiArai 0:5b88d5760320 706 int call(const T *obj, R(T::*method)() const)
kenjiArai 0:5b88d5760320 707 {
kenjiArai 0:5b88d5760320 708 return call(mbed::callback(obj, method));
kenjiArai 0:5b88d5760320 709 }
kenjiArai 0:5b88d5760320 710
kenjiArai 0:5b88d5760320 711 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 712 * @see EventQueue::call
kenjiArai 0:5b88d5760320 713 */
kenjiArai 0:5b88d5760320 714 template <typename T, typename R>
kenjiArai 0:5b88d5760320 715 int call(volatile T *obj, R(T::*method)() volatile)
kenjiArai 0:5b88d5760320 716 {
kenjiArai 0:5b88d5760320 717 return call(mbed::callback(obj, method));
kenjiArai 0:5b88d5760320 718 }
kenjiArai 0:5b88d5760320 719
kenjiArai 0:5b88d5760320 720 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 721 * @see EventQueue::call
kenjiArai 0:5b88d5760320 722 */
kenjiArai 0:5b88d5760320 723 template <typename T, typename R>
kenjiArai 0:5b88d5760320 724 int call(const volatile T *obj, R(T::*method)() const volatile)
kenjiArai 0:5b88d5760320 725 {
kenjiArai 0:5b88d5760320 726 return call(mbed::callback(obj, method));
kenjiArai 0:5b88d5760320 727 }
kenjiArai 0:5b88d5760320 728
kenjiArai 0:5b88d5760320 729 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 730 * @see EventQueue::call
kenjiArai 0:5b88d5760320 731 */
kenjiArai 0:5b88d5760320 732 template <typename T, typename R, typename A0>
kenjiArai 0:5b88d5760320 733 int call(T *obj, R(T::*method)(A0), A0 a0)
kenjiArai 0:5b88d5760320 734 {
kenjiArai 0:5b88d5760320 735 return call(mbed::callback(obj, method), a0);
kenjiArai 0:5b88d5760320 736 }
kenjiArai 0:5b88d5760320 737
kenjiArai 0:5b88d5760320 738 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 739 * @see EventQueue::call
kenjiArai 0:5b88d5760320 740 */
kenjiArai 0:5b88d5760320 741 template <typename T, typename R, typename A0>
kenjiArai 0:5b88d5760320 742 int call(const T *obj, R(T::*method)(A0) const, A0 a0)
kenjiArai 0:5b88d5760320 743 {
kenjiArai 0:5b88d5760320 744 return call(mbed::callback(obj, method), a0);
kenjiArai 0:5b88d5760320 745 }
kenjiArai 0:5b88d5760320 746
kenjiArai 0:5b88d5760320 747 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 748 * @see EventQueue::call
kenjiArai 0:5b88d5760320 749 */
kenjiArai 0:5b88d5760320 750 template <typename T, typename R, typename A0>
kenjiArai 0:5b88d5760320 751 int call(volatile T *obj, R(T::*method)(A0) volatile, A0 a0)
kenjiArai 0:5b88d5760320 752 {
kenjiArai 0:5b88d5760320 753 return call(mbed::callback(obj, method), a0);
kenjiArai 0:5b88d5760320 754 }
kenjiArai 0:5b88d5760320 755
kenjiArai 0:5b88d5760320 756 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 757 * @see EventQueue::call
kenjiArai 0:5b88d5760320 758 */
kenjiArai 0:5b88d5760320 759 template <typename T, typename R, typename A0>
kenjiArai 0:5b88d5760320 760 int call(const volatile T *obj, R(T::*method)(A0) const volatile, A0 a0)
kenjiArai 0:5b88d5760320 761 {
kenjiArai 0:5b88d5760320 762 return call(mbed::callback(obj, method), a0);
kenjiArai 0:5b88d5760320 763 }
kenjiArai 0:5b88d5760320 764
kenjiArai 0:5b88d5760320 765 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 766 * @see EventQueue::call
kenjiArai 0:5b88d5760320 767 */
kenjiArai 0:5b88d5760320 768 template <typename T, typename R, typename A0, typename A1>
kenjiArai 0:5b88d5760320 769 int call(T *obj, R(T::*method)(A0, A1), A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 770 {
kenjiArai 0:5b88d5760320 771 return call(mbed::callback(obj, method), a0, a1);
kenjiArai 0:5b88d5760320 772 }
kenjiArai 0:5b88d5760320 773
kenjiArai 0:5b88d5760320 774 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 775 * @see EventQueue::call
kenjiArai 0:5b88d5760320 776 */
kenjiArai 0:5b88d5760320 777 template <typename T, typename R, typename A0, typename A1>
kenjiArai 0:5b88d5760320 778 int call(const T *obj, R(T::*method)(A0, A1) const, A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 779 {
kenjiArai 0:5b88d5760320 780 return call(mbed::callback(obj, method), a0, a1);
kenjiArai 0:5b88d5760320 781 }
kenjiArai 0:5b88d5760320 782
kenjiArai 0:5b88d5760320 783 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 784 * @see EventQueue::call
kenjiArai 0:5b88d5760320 785 */
kenjiArai 0:5b88d5760320 786 template <typename T, typename R, typename A0, typename A1>
kenjiArai 0:5b88d5760320 787 int call(volatile T *obj, R(T::*method)(A0, A1) volatile, A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 788 {
kenjiArai 0:5b88d5760320 789 return call(mbed::callback(obj, method), a0, a1);
kenjiArai 0:5b88d5760320 790 }
kenjiArai 0:5b88d5760320 791
kenjiArai 0:5b88d5760320 792 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 793 * @see EventQueue::call
kenjiArai 0:5b88d5760320 794 */
kenjiArai 0:5b88d5760320 795 template <typename T, typename R, typename A0, typename A1>
kenjiArai 0:5b88d5760320 796 int call(const volatile T *obj, R(T::*method)(A0, A1) const volatile, A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 797 {
kenjiArai 0:5b88d5760320 798 return call(mbed::callback(obj, method), a0, a1);
kenjiArai 0:5b88d5760320 799 }
kenjiArai 0:5b88d5760320 800
kenjiArai 0:5b88d5760320 801 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 802 * @see EventQueue::call
kenjiArai 0:5b88d5760320 803 */
kenjiArai 0:5b88d5760320 804 template <typename T, typename R, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 805 int call(T *obj, R(T::*method)(A0, A1, A2), A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 806 {
kenjiArai 0:5b88d5760320 807 return call(mbed::callback(obj, method), a0, a1, a2);
kenjiArai 0:5b88d5760320 808 }
kenjiArai 0:5b88d5760320 809
kenjiArai 0:5b88d5760320 810 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 811 * @see EventQueue::call
kenjiArai 0:5b88d5760320 812 */
kenjiArai 0:5b88d5760320 813 template <typename T, typename R, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 814 int call(const T *obj, R(T::*method)(A0, A1, A2) const, A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 815 {
kenjiArai 0:5b88d5760320 816 return call(mbed::callback(obj, method), a0, a1, a2);
kenjiArai 0:5b88d5760320 817 }
kenjiArai 0:5b88d5760320 818
kenjiArai 0:5b88d5760320 819 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 820 * @see EventQueue::call
kenjiArai 0:5b88d5760320 821 */
kenjiArai 0:5b88d5760320 822 template <typename T, typename R, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 823 int call(volatile T *obj, R(T::*method)(A0, A1, A2) volatile, A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 824 {
kenjiArai 0:5b88d5760320 825 return call(mbed::callback(obj, method), a0, a1, a2);
kenjiArai 0:5b88d5760320 826 }
kenjiArai 0:5b88d5760320 827
kenjiArai 0:5b88d5760320 828 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 829 * @see EventQueue::call
kenjiArai 0:5b88d5760320 830 */
kenjiArai 0:5b88d5760320 831 template <typename T, typename R, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 832 int call(const volatile T *obj, R(T::*method)(A0, A1, A2) const volatile, A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 833 {
kenjiArai 0:5b88d5760320 834 return call(mbed::callback(obj, method), a0, a1, a2);
kenjiArai 0:5b88d5760320 835 }
kenjiArai 0:5b88d5760320 836
kenjiArai 0:5b88d5760320 837 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 838 * @see EventQueue::call
kenjiArai 0:5b88d5760320 839 */
kenjiArai 0:5b88d5760320 840 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 841 int call(T *obj, R(T::*method)(A0, A1, A2, A3), A0 a0, A1 a1, A2 a2, A3 a3)
kenjiArai 0:5b88d5760320 842 {
kenjiArai 0:5b88d5760320 843 return call(mbed::callback(obj, method), a0, a1, a2, a3);
kenjiArai 0:5b88d5760320 844 }
kenjiArai 0:5b88d5760320 845
kenjiArai 0:5b88d5760320 846 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 847 * @see EventQueue::call
kenjiArai 0:5b88d5760320 848 */
kenjiArai 0:5b88d5760320 849 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 850 int call(const T *obj, R(T::*method)(A0, A1, A2, A3) const, A0 a0, A1 a1, A2 a2, A3 a3)
kenjiArai 0:5b88d5760320 851 {
kenjiArai 0:5b88d5760320 852 return call(mbed::callback(obj, method), a0, a1, a2, a3);
kenjiArai 0:5b88d5760320 853 }
kenjiArai 0:5b88d5760320 854
kenjiArai 0:5b88d5760320 855 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 856 * @see EventQueue::call
kenjiArai 0:5b88d5760320 857 */
kenjiArai 0:5b88d5760320 858 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 859 int call(volatile T *obj, R(T::*method)(A0, A1, A2, A3) volatile, A0 a0, A1 a1, A2 a2, A3 a3)
kenjiArai 0:5b88d5760320 860 {
kenjiArai 0:5b88d5760320 861 return call(mbed::callback(obj, method), a0, a1, a2, a3);
kenjiArai 0:5b88d5760320 862 }
kenjiArai 0:5b88d5760320 863
kenjiArai 0:5b88d5760320 864 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 865 * @see EventQueue::call
kenjiArai 0:5b88d5760320 866 */
kenjiArai 0:5b88d5760320 867 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 868 int call(const volatile T *obj, R(T::*method)(A0, A1, A2, A3) const volatile, A0 a0, A1 a1, A2 a2, A3 a3)
kenjiArai 0:5b88d5760320 869 {
kenjiArai 0:5b88d5760320 870 return call(mbed::callback(obj, method), a0, a1, a2, a3);
kenjiArai 0:5b88d5760320 871 }
kenjiArai 0:5b88d5760320 872
kenjiArai 0:5b88d5760320 873 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 874 * @see EventQueue::call
kenjiArai 0:5b88d5760320 875 */
kenjiArai 0:5b88d5760320 876 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 877 int call(T *obj, R(T::*method)(A0, A1, A2, A3, A4), A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
kenjiArai 0:5b88d5760320 878 {
kenjiArai 0:5b88d5760320 879 return call(mbed::callback(obj, method), a0, a1, a2, a3, a4);
kenjiArai 0:5b88d5760320 880 }
kenjiArai 0:5b88d5760320 881
kenjiArai 0:5b88d5760320 882 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 883 * @see EventQueue::call
kenjiArai 0:5b88d5760320 884 */
kenjiArai 0:5b88d5760320 885 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 886 int call(const T *obj, R(T::*method)(A0, A1, A2, A3, A4) const, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
kenjiArai 0:5b88d5760320 887 {
kenjiArai 0:5b88d5760320 888 return call(mbed::callback(obj, method), a0, a1, a2, a3, a4);
kenjiArai 0:5b88d5760320 889 }
kenjiArai 0:5b88d5760320 890
kenjiArai 0:5b88d5760320 891 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 892 * @see EventQueue::call
kenjiArai 0:5b88d5760320 893 */
kenjiArai 0:5b88d5760320 894 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 895 int call(volatile T *obj, R(T::*method)(A0, A1, A2, A3, A4) volatile, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
kenjiArai 0:5b88d5760320 896 {
kenjiArai 0:5b88d5760320 897 return call(mbed::callback(obj, method), a0, a1, a2, a3, a4);
kenjiArai 0:5b88d5760320 898 }
kenjiArai 0:5b88d5760320 899
kenjiArai 0:5b88d5760320 900 /** Calls an event on the queue
kenjiArai 0:5b88d5760320 901 * @see EventQueue::call
kenjiArai 0:5b88d5760320 902 */
kenjiArai 0:5b88d5760320 903 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 904 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)
kenjiArai 0:5b88d5760320 905 {
kenjiArai 0:5b88d5760320 906 return call(mbed::callback(obj, method), a0, a1, a2, a3, a4);
kenjiArai 0:5b88d5760320 907 }
kenjiArai 0:5b88d5760320 908
kenjiArai 0:5b88d5760320 909 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 910 *
kenjiArai 0:5b88d5760320 911 * The specified callback will be executed in the context of the event
kenjiArai 0:5b88d5760320 912 * queue's dispatch loop.
kenjiArai 0:5b88d5760320 913 *
kenjiArai 0:5b88d5760320 914 * The call_in function is IRQ safe and can act as a mechanism for moving
kenjiArai 0:5b88d5760320 915 * events out of IRQ contexts.
kenjiArai 0:5b88d5760320 916 *
kenjiArai 0:5b88d5760320 917 * @param ms Time to delay in milliseconds
kenjiArai 0:5b88d5760320 918 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 919 * @return A unique id that represents the posted event and can
kenjiArai 0:5b88d5760320 920 * be passed to cancel, or an id of 0 if there is not
kenjiArai 0:5b88d5760320 921 * enough memory to allocate the event.
kenjiArai 0:5b88d5760320 922 */
kenjiArai 0:5b88d5760320 923 template <typename F>
kenjiArai 0:5b88d5760320 924 int call_in(int ms, F f)
kenjiArai 0:5b88d5760320 925 {
kenjiArai 0:5b88d5760320 926 void *p = equeue_alloc(&_equeue, sizeof(F));
kenjiArai 0:5b88d5760320 927 if (!p) {
kenjiArai 0:5b88d5760320 928 return 0;
kenjiArai 0:5b88d5760320 929 }
kenjiArai 0:5b88d5760320 930
kenjiArai 0:5b88d5760320 931 F *e = new (p) F(f);
kenjiArai 0:5b88d5760320 932 equeue_event_delay(e, ms);
kenjiArai 0:5b88d5760320 933 equeue_event_dtor(e, &EventQueue::function_dtor<F>);
kenjiArai 0:5b88d5760320 934 return equeue_post(&_equeue, &EventQueue::function_call<F>, e);
kenjiArai 0:5b88d5760320 935 }
kenjiArai 0:5b88d5760320 936
kenjiArai 0:5b88d5760320 937 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 938 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 939 * @param ms Time to delay in milliseconds
kenjiArai 0:5b88d5760320 940 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 941 * @param a0 Argument to pass to the callback
kenjiArai 0:5b88d5760320 942 */
kenjiArai 0:5b88d5760320 943 template <typename F, typename A0>
kenjiArai 0:5b88d5760320 944 int call_in(int ms, F f, A0 a0)
kenjiArai 0:5b88d5760320 945 {
kenjiArai 0:5b88d5760320 946 return call_in(ms, context10<F, A0>(f, a0));
kenjiArai 0:5b88d5760320 947 }
kenjiArai 0:5b88d5760320 948
kenjiArai 0:5b88d5760320 949 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 950 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 951 * @param ms Time to delay in milliseconds
kenjiArai 0:5b88d5760320 952 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 953 * @param a0,a1 Arguments to pass to the callback
kenjiArai 0:5b88d5760320 954 */
kenjiArai 0:5b88d5760320 955 template <typename F, typename A0, typename A1>
kenjiArai 0:5b88d5760320 956 int call_in(int ms, F f, A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 957 {
kenjiArai 0:5b88d5760320 958 return call_in(ms, context20<F, A0, A1>(f, a0, a1));
kenjiArai 0:5b88d5760320 959 }
kenjiArai 0:5b88d5760320 960
kenjiArai 0:5b88d5760320 961 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 962 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 963 * @param ms Time to delay in milliseconds
kenjiArai 0:5b88d5760320 964 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 965 * @param a0,a1,a2 Arguments to pass to the callback
kenjiArai 0:5b88d5760320 966 */
kenjiArai 0:5b88d5760320 967 template <typename F, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 968 int call_in(int ms, F f, A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 969 {
kenjiArai 0:5b88d5760320 970 return call_in(ms, context30<F, A0, A1, A2>(f, a0, a1, a2));
kenjiArai 0:5b88d5760320 971 }
kenjiArai 0:5b88d5760320 972
kenjiArai 0:5b88d5760320 973 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 974 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 975 * @param ms Time to delay in milliseconds
kenjiArai 0:5b88d5760320 976 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 977 * @param a0,a1,a2,a3 Arguments to pass to the callback
kenjiArai 0:5b88d5760320 978 */
kenjiArai 0:5b88d5760320 979 template <typename F, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 980 int call_in(int ms, F f, A0 a0, A1 a1, A2 a2, A3 a3)
kenjiArai 0:5b88d5760320 981 {
kenjiArai 0:5b88d5760320 982 return call_in(ms, context40<F, A0, A1, A2, A3>(f, a0, a1, a2, a3));
kenjiArai 0:5b88d5760320 983 }
kenjiArai 0:5b88d5760320 984
kenjiArai 0:5b88d5760320 985 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 986 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 987 * @param ms Time to delay in milliseconds
kenjiArai 0:5b88d5760320 988 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 989 * @param a0,a1,a2,a3,a4 Arguments to pass to the callback
kenjiArai 0:5b88d5760320 990 */
kenjiArai 0:5b88d5760320 991 template <typename F, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 992 int call_in(int ms, F f, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
kenjiArai 0:5b88d5760320 993 {
kenjiArai 0:5b88d5760320 994 return call_in(ms, context50<F, A0, A1, A2, A3, A4>(f, a0, a1, a2, a3, a4));
kenjiArai 0:5b88d5760320 995 }
kenjiArai 0:5b88d5760320 996
kenjiArai 0:5b88d5760320 997 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 998 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 999 */
kenjiArai 0:5b88d5760320 1000 template <typename T, typename R>
kenjiArai 0:5b88d5760320 1001 int call_in(int ms, T *obj, R(T::*method)())
kenjiArai 0:5b88d5760320 1002 {
kenjiArai 0:5b88d5760320 1003 return call_in(ms, mbed::callback(obj, method));
kenjiArai 0:5b88d5760320 1004 }
kenjiArai 0:5b88d5760320 1005
kenjiArai 0:5b88d5760320 1006 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1007 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1008 */
kenjiArai 0:5b88d5760320 1009 template <typename T, typename R>
kenjiArai 0:5b88d5760320 1010 int call_in(int ms, const T *obj, R(T::*method)() const)
kenjiArai 0:5b88d5760320 1011 {
kenjiArai 0:5b88d5760320 1012 return call_in(ms, mbed::callback(obj, method));
kenjiArai 0:5b88d5760320 1013 }
kenjiArai 0:5b88d5760320 1014
kenjiArai 0:5b88d5760320 1015 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1016 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1017 */
kenjiArai 0:5b88d5760320 1018 template <typename T, typename R>
kenjiArai 0:5b88d5760320 1019 int call_in(int ms, volatile T *obj, R(T::*method)() volatile)
kenjiArai 0:5b88d5760320 1020 {
kenjiArai 0:5b88d5760320 1021 return call_in(ms, mbed::callback(obj, method));
kenjiArai 0:5b88d5760320 1022 }
kenjiArai 0:5b88d5760320 1023
kenjiArai 0:5b88d5760320 1024 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1025 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1026 */
kenjiArai 0:5b88d5760320 1027 template <typename T, typename R>
kenjiArai 0:5b88d5760320 1028 int call_in(int ms, const volatile T *obj, R(T::*method)() const volatile)
kenjiArai 0:5b88d5760320 1029 {
kenjiArai 0:5b88d5760320 1030 return call_in(ms, mbed::callback(obj, method));
kenjiArai 0:5b88d5760320 1031 }
kenjiArai 0:5b88d5760320 1032
kenjiArai 0:5b88d5760320 1033 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1034 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1035 */
kenjiArai 0:5b88d5760320 1036 template <typename T, typename R, typename A0>
kenjiArai 0:5b88d5760320 1037 int call_in(int ms, T *obj, R(T::*method)(A0), A0 a0)
kenjiArai 0:5b88d5760320 1038 {
kenjiArai 0:5b88d5760320 1039 return call_in(ms, mbed::callback(obj, method), a0);
kenjiArai 0:5b88d5760320 1040 }
kenjiArai 0:5b88d5760320 1041
kenjiArai 0:5b88d5760320 1042 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1043 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1044 */
kenjiArai 0:5b88d5760320 1045 template <typename T, typename R, typename A0>
kenjiArai 0:5b88d5760320 1046 int call_in(int ms, const T *obj, R(T::*method)(A0) const, A0 a0)
kenjiArai 0:5b88d5760320 1047 {
kenjiArai 0:5b88d5760320 1048 return call_in(ms, mbed::callback(obj, method), a0);
kenjiArai 0:5b88d5760320 1049 }
kenjiArai 0:5b88d5760320 1050
kenjiArai 0:5b88d5760320 1051 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1052 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1053 */
kenjiArai 0:5b88d5760320 1054 template <typename T, typename R, typename A0>
kenjiArai 0:5b88d5760320 1055 int call_in(int ms, volatile T *obj, R(T::*method)(A0) volatile, A0 a0)
kenjiArai 0:5b88d5760320 1056 {
kenjiArai 0:5b88d5760320 1057 return call_in(ms, mbed::callback(obj, method), a0);
kenjiArai 0:5b88d5760320 1058 }
kenjiArai 0:5b88d5760320 1059
kenjiArai 0:5b88d5760320 1060 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1061 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1062 */
kenjiArai 0:5b88d5760320 1063 template <typename T, typename R, typename A0>
kenjiArai 0:5b88d5760320 1064 int call_in(int ms, const volatile T *obj, R(T::*method)(A0) const volatile, A0 a0)
kenjiArai 0:5b88d5760320 1065 {
kenjiArai 0:5b88d5760320 1066 return call_in(ms, mbed::callback(obj, method), a0);
kenjiArai 0:5b88d5760320 1067 }
kenjiArai 0:5b88d5760320 1068
kenjiArai 0:5b88d5760320 1069 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1070 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1071 */
kenjiArai 0:5b88d5760320 1072 template <typename T, typename R, typename A0, typename A1>
kenjiArai 0:5b88d5760320 1073 int call_in(int ms, T *obj, R(T::*method)(A0, A1), A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 1074 {
kenjiArai 0:5b88d5760320 1075 return call_in(ms, mbed::callback(obj, method), a0, a1);
kenjiArai 0:5b88d5760320 1076 }
kenjiArai 0:5b88d5760320 1077
kenjiArai 0:5b88d5760320 1078 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1079 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1080 */
kenjiArai 0:5b88d5760320 1081 template <typename T, typename R, typename A0, typename A1>
kenjiArai 0:5b88d5760320 1082 int call_in(int ms, const T *obj, R(T::*method)(A0, A1) const, A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 1083 {
kenjiArai 0:5b88d5760320 1084 return call_in(ms, mbed::callback(obj, method), a0, a1);
kenjiArai 0:5b88d5760320 1085 }
kenjiArai 0:5b88d5760320 1086
kenjiArai 0:5b88d5760320 1087 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1088 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1089 */
kenjiArai 0:5b88d5760320 1090 template <typename T, typename R, typename A0, typename A1>
kenjiArai 0:5b88d5760320 1091 int call_in(int ms, volatile T *obj, R(T::*method)(A0, A1) volatile, A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 1092 {
kenjiArai 0:5b88d5760320 1093 return call_in(ms, mbed::callback(obj, method), a0, a1);
kenjiArai 0:5b88d5760320 1094 }
kenjiArai 0:5b88d5760320 1095
kenjiArai 0:5b88d5760320 1096 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1097 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1098 */
kenjiArai 0:5b88d5760320 1099 template <typename T, typename R, typename A0, typename A1>
kenjiArai 0:5b88d5760320 1100 int call_in(int ms, const volatile T *obj, R(T::*method)(A0, A1) const volatile, A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 1101 {
kenjiArai 0:5b88d5760320 1102 return call_in(ms, mbed::callback(obj, method), a0, a1);
kenjiArai 0:5b88d5760320 1103 }
kenjiArai 0:5b88d5760320 1104
kenjiArai 0:5b88d5760320 1105 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1106 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1107 */
kenjiArai 0:5b88d5760320 1108 template <typename T, typename R, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 1109 int call_in(int ms, T *obj, R(T::*method)(A0, A1, A2), A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 1110 {
kenjiArai 0:5b88d5760320 1111 return call_in(ms, mbed::callback(obj, method), a0, a1, a2);
kenjiArai 0:5b88d5760320 1112 }
kenjiArai 0:5b88d5760320 1113
kenjiArai 0:5b88d5760320 1114 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1115 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1116 */
kenjiArai 0:5b88d5760320 1117 template <typename T, typename R, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 1118 int call_in(int ms, const T *obj, R(T::*method)(A0, A1, A2) const, A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 1119 {
kenjiArai 0:5b88d5760320 1120 return call_in(ms, mbed::callback(obj, method), a0, a1, a2);
kenjiArai 0:5b88d5760320 1121 }
kenjiArai 0:5b88d5760320 1122
kenjiArai 0:5b88d5760320 1123 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1124 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1125 */
kenjiArai 0:5b88d5760320 1126 template <typename T, typename R, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 1127 int call_in(int ms, volatile T *obj, R(T::*method)(A0, A1, A2) volatile, A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 1128 {
kenjiArai 0:5b88d5760320 1129 return call_in(ms, mbed::callback(obj, method), a0, a1, a2);
kenjiArai 0:5b88d5760320 1130 }
kenjiArai 0:5b88d5760320 1131
kenjiArai 0:5b88d5760320 1132 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1133 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1134 */
kenjiArai 0:5b88d5760320 1135 template <typename T, typename R, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 1136 int call_in(int ms, const volatile T *obj, R(T::*method)(A0, A1, A2) const volatile, A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 1137 {
kenjiArai 0:5b88d5760320 1138 return call_in(ms, mbed::callback(obj, method), a0, a1, a2);
kenjiArai 0:5b88d5760320 1139 }
kenjiArai 0:5b88d5760320 1140
kenjiArai 0:5b88d5760320 1141 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1142 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1143 */
kenjiArai 0:5b88d5760320 1144 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 1145 int call_in(int ms, T *obj, R(T::*method)(A0, A1, A2, A3), A0 a0, A1 a1, A2 a2, A3 a3)
kenjiArai 0:5b88d5760320 1146 {
kenjiArai 0:5b88d5760320 1147 return call_in(ms, mbed::callback(obj, method), a0, a1, a2, a3);
kenjiArai 0:5b88d5760320 1148 }
kenjiArai 0:5b88d5760320 1149
kenjiArai 0:5b88d5760320 1150 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1151 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1152 */
kenjiArai 0:5b88d5760320 1153 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 1154 int call_in(int ms, const T *obj, R(T::*method)(A0, A1, A2, A3) const, A0 a0, A1 a1, A2 a2, A3 a3)
kenjiArai 0:5b88d5760320 1155 {
kenjiArai 0:5b88d5760320 1156 return call_in(ms, mbed::callback(obj, method), a0, a1, a2, a3);
kenjiArai 0:5b88d5760320 1157 }
kenjiArai 0:5b88d5760320 1158
kenjiArai 0:5b88d5760320 1159 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1160 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1161 */
kenjiArai 0:5b88d5760320 1162 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 1163 int call_in(int ms, volatile T *obj, R(T::*method)(A0, A1, A2, A3) volatile, A0 a0, A1 a1, A2 a2, A3 a3)
kenjiArai 0:5b88d5760320 1164 {
kenjiArai 0:5b88d5760320 1165 return call_in(ms, mbed::callback(obj, method), a0, a1, a2, a3);
kenjiArai 0:5b88d5760320 1166 }
kenjiArai 0:5b88d5760320 1167
kenjiArai 0:5b88d5760320 1168 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1169 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1170 */
kenjiArai 0:5b88d5760320 1171 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 1172 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)
kenjiArai 0:5b88d5760320 1173 {
kenjiArai 0:5b88d5760320 1174 return call_in(ms, mbed::callback(obj, method), a0, a1, a2, a3);
kenjiArai 0:5b88d5760320 1175 }
kenjiArai 0:5b88d5760320 1176
kenjiArai 0:5b88d5760320 1177 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1178 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1179 */
kenjiArai 0:5b88d5760320 1180 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 1181 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)
kenjiArai 0:5b88d5760320 1182 {
kenjiArai 0:5b88d5760320 1183 return call_in(ms, mbed::callback(obj, method), a0, a1, a2, a3, a4);
kenjiArai 0:5b88d5760320 1184 }
kenjiArai 0:5b88d5760320 1185
kenjiArai 0:5b88d5760320 1186 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1187 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1188 */
kenjiArai 0:5b88d5760320 1189 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 1190 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)
kenjiArai 0:5b88d5760320 1191 {
kenjiArai 0:5b88d5760320 1192 return call_in(ms, mbed::callback(obj, method), a0, a1, a2, a3, a4);
kenjiArai 0:5b88d5760320 1193 }
kenjiArai 0:5b88d5760320 1194
kenjiArai 0:5b88d5760320 1195 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1196 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1197 */
kenjiArai 0:5b88d5760320 1198 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 1199 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)
kenjiArai 0:5b88d5760320 1200 {
kenjiArai 0:5b88d5760320 1201 return call_in(ms, mbed::callback(obj, method), a0, a1, a2, a3, a4);
kenjiArai 0:5b88d5760320 1202 }
kenjiArai 0:5b88d5760320 1203
kenjiArai 0:5b88d5760320 1204 /** Calls an event on the queue after a specified delay
kenjiArai 0:5b88d5760320 1205 * @see EventQueue::call_in
kenjiArai 0:5b88d5760320 1206 */
kenjiArai 0:5b88d5760320 1207 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 1208 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)
kenjiArai 0:5b88d5760320 1209 {
kenjiArai 0:5b88d5760320 1210 return call_in(ms, mbed::callback(obj, method), a0, a1, a2, a3, a4);
kenjiArai 0:5b88d5760320 1211 }
kenjiArai 0:5b88d5760320 1212
kenjiArai 0:5b88d5760320 1213 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1214 *
kenjiArai 0:5b88d5760320 1215 * @note The first call_every event occurs after the specified delay.
kenjiArai 0:5b88d5760320 1216 * To create a periodic event that fires immediately, @see Event.
kenjiArai 0:5b88d5760320 1217 *
kenjiArai 0:5b88d5760320 1218 * The specified callback will be executed in the context of the event
kenjiArai 0:5b88d5760320 1219 * queue's dispatch loop.
kenjiArai 0:5b88d5760320 1220 *
kenjiArai 0:5b88d5760320 1221 * The call_every function is IRQ safe and can act as a mechanism for
kenjiArai 0:5b88d5760320 1222 * moving events out of IRQ contexts.
kenjiArai 0:5b88d5760320 1223 *
kenjiArai 0:5b88d5760320 1224 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 1225 * @param ms Period of the event in milliseconds
kenjiArai 0:5b88d5760320 1226 * @return A unique id that represents the posted event and can
kenjiArai 0:5b88d5760320 1227 * be passed to cancel, or an id of 0 if there is not
kenjiArai 0:5b88d5760320 1228 * enough memory to allocate the event.
kenjiArai 0:5b88d5760320 1229 */
kenjiArai 0:5b88d5760320 1230 template <typename F>
kenjiArai 0:5b88d5760320 1231 int call_every(int ms, F f)
kenjiArai 0:5b88d5760320 1232 {
kenjiArai 0:5b88d5760320 1233 void *p = equeue_alloc(&_equeue, sizeof(F));
kenjiArai 0:5b88d5760320 1234 if (!p) {
kenjiArai 0:5b88d5760320 1235 return 0;
kenjiArai 0:5b88d5760320 1236 }
kenjiArai 0:5b88d5760320 1237
kenjiArai 0:5b88d5760320 1238 F *e = new (p) F(f);
kenjiArai 0:5b88d5760320 1239 equeue_event_delay(e, ms);
kenjiArai 0:5b88d5760320 1240 equeue_event_period(e, ms);
kenjiArai 0:5b88d5760320 1241 equeue_event_dtor(e, &EventQueue::function_dtor<F>);
kenjiArai 0:5b88d5760320 1242 return equeue_post(&_equeue, &EventQueue::function_call<F>, e);
kenjiArai 0:5b88d5760320 1243 }
kenjiArai 0:5b88d5760320 1244
kenjiArai 0:5b88d5760320 1245 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1246 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1247 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 1248 * @param a0 Argument to pass to the callback
kenjiArai 0:5b88d5760320 1249 * @param ms Period of the event in milliseconds
kenjiArai 0:5b88d5760320 1250 */
kenjiArai 0:5b88d5760320 1251 template <typename F, typename A0>
kenjiArai 0:5b88d5760320 1252 int call_every(int ms, F f, A0 a0)
kenjiArai 0:5b88d5760320 1253 {
kenjiArai 0:5b88d5760320 1254 return call_every(ms, context10<F, A0>(f, a0));
kenjiArai 0:5b88d5760320 1255 }
kenjiArai 0:5b88d5760320 1256
kenjiArai 0:5b88d5760320 1257 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1258 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1259 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 1260 * @param a0,a1 Arguments to pass to the callback
kenjiArai 0:5b88d5760320 1261 * @param ms Period of the event in milliseconds
kenjiArai 0:5b88d5760320 1262 */
kenjiArai 0:5b88d5760320 1263 template <typename F, typename A0, typename A1>
kenjiArai 0:5b88d5760320 1264 int call_every(int ms, F f, A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 1265 {
kenjiArai 0:5b88d5760320 1266 return call_every(ms, context20<F, A0, A1>(f, a0, a1));
kenjiArai 0:5b88d5760320 1267 }
kenjiArai 0:5b88d5760320 1268
kenjiArai 0:5b88d5760320 1269 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1270 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1271 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 1272 * @param a0,a1,a2 Arguments to pass to the callback
kenjiArai 0:5b88d5760320 1273 * @param ms Period of the event in milliseconds
kenjiArai 0:5b88d5760320 1274 */
kenjiArai 0:5b88d5760320 1275 template <typename F, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 1276 int call_every(int ms, F f, A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 1277 {
kenjiArai 0:5b88d5760320 1278 return call_every(ms, context30<F, A0, A1, A2>(f, a0, a1, a2));
kenjiArai 0:5b88d5760320 1279 }
kenjiArai 0:5b88d5760320 1280
kenjiArai 0:5b88d5760320 1281 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1282 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1283 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 1284 * @param a0,a1,a2,a3 Arguments to pass to the callback
kenjiArai 0:5b88d5760320 1285 * @param ms Period of the event in milliseconds
kenjiArai 0:5b88d5760320 1286 */
kenjiArai 0:5b88d5760320 1287 template <typename F, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 1288 int call_every(int ms, F f, A0 a0, A1 a1, A2 a2, A3 a3)
kenjiArai 0:5b88d5760320 1289 {
kenjiArai 0:5b88d5760320 1290 return call_every(ms, context40<F, A0, A1, A2, A3>(f, a0, a1, a2, a3));
kenjiArai 0:5b88d5760320 1291 }
kenjiArai 0:5b88d5760320 1292
kenjiArai 0:5b88d5760320 1293 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1294 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1295 * @param f Function to execute in the context of the dispatch loop
kenjiArai 0:5b88d5760320 1296 * @param a0,a1,a2,a3,a4 Arguments to pass to the callback
kenjiArai 0:5b88d5760320 1297 * @param ms Period of the event in milliseconds
kenjiArai 0:5b88d5760320 1298 */
kenjiArai 0:5b88d5760320 1299 template <typename F, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 1300 int call_every(int ms, F f, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
kenjiArai 0:5b88d5760320 1301 {
kenjiArai 0:5b88d5760320 1302 return call_every(ms, context50<F, A0, A1, A2, A3, A4>(f, a0, a1, a2, a3, a4));
kenjiArai 0:5b88d5760320 1303 }
kenjiArai 0:5b88d5760320 1304
kenjiArai 0:5b88d5760320 1305 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1306 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1307 */
kenjiArai 0:5b88d5760320 1308 template <typename T, typename R>
kenjiArai 0:5b88d5760320 1309 int call_every(int ms, T *obj, R(T::*method)())
kenjiArai 0:5b88d5760320 1310 {
kenjiArai 0:5b88d5760320 1311 return call_every(ms, mbed::callback(obj, method));
kenjiArai 0:5b88d5760320 1312 }
kenjiArai 0:5b88d5760320 1313
kenjiArai 0:5b88d5760320 1314 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1315 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1316 */
kenjiArai 0:5b88d5760320 1317 template <typename T, typename R>
kenjiArai 0:5b88d5760320 1318 int call_every(int ms, const T *obj, R(T::*method)() const)
kenjiArai 0:5b88d5760320 1319 {
kenjiArai 0:5b88d5760320 1320 return call_every(ms, mbed::callback(obj, method));
kenjiArai 0:5b88d5760320 1321 }
kenjiArai 0:5b88d5760320 1322
kenjiArai 0:5b88d5760320 1323 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1324 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1325 */
kenjiArai 0:5b88d5760320 1326 template <typename T, typename R>
kenjiArai 0:5b88d5760320 1327 int call_every(int ms, volatile T *obj, R(T::*method)() volatile)
kenjiArai 0:5b88d5760320 1328 {
kenjiArai 0:5b88d5760320 1329 return call_every(ms, mbed::callback(obj, method));
kenjiArai 0:5b88d5760320 1330 }
kenjiArai 0:5b88d5760320 1331
kenjiArai 0:5b88d5760320 1332 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1333 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1334 */
kenjiArai 0:5b88d5760320 1335 template <typename T, typename R>
kenjiArai 0:5b88d5760320 1336 int call_every(int ms, const volatile T *obj, R(T::*method)() const volatile)
kenjiArai 0:5b88d5760320 1337 {
kenjiArai 0:5b88d5760320 1338 return call_every(ms, mbed::callback(obj, method));
kenjiArai 0:5b88d5760320 1339 }
kenjiArai 0:5b88d5760320 1340
kenjiArai 0:5b88d5760320 1341 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1342 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1343 */
kenjiArai 0:5b88d5760320 1344 template <typename T, typename R, typename A0>
kenjiArai 0:5b88d5760320 1345 int call_every(int ms, T *obj, R(T::*method)(A0), A0 a0)
kenjiArai 0:5b88d5760320 1346 {
kenjiArai 0:5b88d5760320 1347 return call_every(ms, mbed::callback(obj, method), a0);
kenjiArai 0:5b88d5760320 1348 }
kenjiArai 0:5b88d5760320 1349
kenjiArai 0:5b88d5760320 1350 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1351 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1352 */
kenjiArai 0:5b88d5760320 1353 template <typename T, typename R, typename A0>
kenjiArai 0:5b88d5760320 1354 int call_every(int ms, const T *obj, R(T::*method)(A0) const, A0 a0)
kenjiArai 0:5b88d5760320 1355 {
kenjiArai 0:5b88d5760320 1356 return call_every(ms, mbed::callback(obj, method), a0);
kenjiArai 0:5b88d5760320 1357 }
kenjiArai 0:5b88d5760320 1358
kenjiArai 0:5b88d5760320 1359 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1360 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1361 */
kenjiArai 0:5b88d5760320 1362 template <typename T, typename R, typename A0>
kenjiArai 0:5b88d5760320 1363 int call_every(int ms, volatile T *obj, R(T::*method)(A0) volatile, A0 a0)
kenjiArai 0:5b88d5760320 1364 {
kenjiArai 0:5b88d5760320 1365 return call_every(ms, mbed::callback(obj, method), a0);
kenjiArai 0:5b88d5760320 1366 }
kenjiArai 0:5b88d5760320 1367
kenjiArai 0:5b88d5760320 1368 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1369 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1370 */
kenjiArai 0:5b88d5760320 1371 template <typename T, typename R, typename A0>
kenjiArai 0:5b88d5760320 1372 int call_every(int ms, const volatile T *obj, R(T::*method)(A0) const volatile, A0 a0)
kenjiArai 0:5b88d5760320 1373 {
kenjiArai 0:5b88d5760320 1374 return call_every(ms, mbed::callback(obj, method), a0);
kenjiArai 0:5b88d5760320 1375 }
kenjiArai 0:5b88d5760320 1376
kenjiArai 0:5b88d5760320 1377 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1378 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1379 */
kenjiArai 0:5b88d5760320 1380 template <typename T, typename R, typename A0, typename A1>
kenjiArai 0:5b88d5760320 1381 int call_every(int ms, T *obj, R(T::*method)(A0, A1), A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 1382 {
kenjiArai 0:5b88d5760320 1383 return call_every(ms, mbed::callback(obj, method), a0, a1);
kenjiArai 0:5b88d5760320 1384 }
kenjiArai 0:5b88d5760320 1385
kenjiArai 0:5b88d5760320 1386 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1387 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1388 */
kenjiArai 0:5b88d5760320 1389 template <typename T, typename R, typename A0, typename A1>
kenjiArai 0:5b88d5760320 1390 int call_every(int ms, const T *obj, R(T::*method)(A0, A1) const, A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 1391 {
kenjiArai 0:5b88d5760320 1392 return call_every(ms, mbed::callback(obj, method), a0, a1);
kenjiArai 0:5b88d5760320 1393 }
kenjiArai 0:5b88d5760320 1394
kenjiArai 0:5b88d5760320 1395 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1396 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1397 */
kenjiArai 0:5b88d5760320 1398 template <typename T, typename R, typename A0, typename A1>
kenjiArai 0:5b88d5760320 1399 int call_every(int ms, volatile T *obj, R(T::*method)(A0, A1) volatile, A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 1400 {
kenjiArai 0:5b88d5760320 1401 return call_every(ms, mbed::callback(obj, method), a0, a1);
kenjiArai 0:5b88d5760320 1402 }
kenjiArai 0:5b88d5760320 1403
kenjiArai 0:5b88d5760320 1404 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1405 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1406 */
kenjiArai 0:5b88d5760320 1407 template <typename T, typename R, typename A0, typename A1>
kenjiArai 0:5b88d5760320 1408 int call_every(int ms, const volatile T *obj, R(T::*method)(A0, A1) const volatile, A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 1409 {
kenjiArai 0:5b88d5760320 1410 return call_every(ms, mbed::callback(obj, method), a0, a1);
kenjiArai 0:5b88d5760320 1411 }
kenjiArai 0:5b88d5760320 1412
kenjiArai 0:5b88d5760320 1413 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1414 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1415 */
kenjiArai 0:5b88d5760320 1416 template <typename T, typename R, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 1417 int call_every(int ms, T *obj, R(T::*method)(A0, A1, A2), A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 1418 {
kenjiArai 0:5b88d5760320 1419 return call_every(ms, mbed::callback(obj, method), a0, a1, a2);
kenjiArai 0:5b88d5760320 1420 }
kenjiArai 0:5b88d5760320 1421
kenjiArai 0:5b88d5760320 1422 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1423 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1424 */
kenjiArai 0:5b88d5760320 1425 template <typename T, typename R, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 1426 int call_every(int ms, const T *obj, R(T::*method)(A0, A1, A2) const, A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 1427 {
kenjiArai 0:5b88d5760320 1428 return call_every(ms, mbed::callback(obj, method), a0, a1, a2);
kenjiArai 0:5b88d5760320 1429 }
kenjiArai 0:5b88d5760320 1430
kenjiArai 0:5b88d5760320 1431 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1432 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1433 */
kenjiArai 0:5b88d5760320 1434 template <typename T, typename R, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 1435 int call_every(int ms, volatile T *obj, R(T::*method)(A0, A1, A2) volatile, A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 1436 {
kenjiArai 0:5b88d5760320 1437 return call_every(ms, mbed::callback(obj, method), a0, a1, a2);
kenjiArai 0:5b88d5760320 1438 }
kenjiArai 0:5b88d5760320 1439
kenjiArai 0:5b88d5760320 1440 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1441 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1442 */
kenjiArai 0:5b88d5760320 1443 template <typename T, typename R, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 1444 int call_every(int ms, const volatile T *obj, R(T::*method)(A0, A1, A2) const volatile, A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 1445 {
kenjiArai 0:5b88d5760320 1446 return call_every(ms, mbed::callback(obj, method), a0, a1, a2);
kenjiArai 0:5b88d5760320 1447 }
kenjiArai 0:5b88d5760320 1448
kenjiArai 0:5b88d5760320 1449 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1450 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1451 */
kenjiArai 0:5b88d5760320 1452 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 1453 int call_every(int ms, T *obj, R(T::*method)(A0, A1, A2, A3), A0 a0, A1 a1, A2 a2, A3 a3)
kenjiArai 0:5b88d5760320 1454 {
kenjiArai 0:5b88d5760320 1455 return call_every(ms, mbed::callback(obj, method), a0, a1, a2, a3);
kenjiArai 0:5b88d5760320 1456 }
kenjiArai 0:5b88d5760320 1457
kenjiArai 0:5b88d5760320 1458 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1459 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1460 */
kenjiArai 0:5b88d5760320 1461 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 1462 int call_every(int ms, const T *obj, R(T::*method)(A0, A1, A2, A3) const, A0 a0, A1 a1, A2 a2, A3 a3)
kenjiArai 0:5b88d5760320 1463 {
kenjiArai 0:5b88d5760320 1464 return call_every(ms, mbed::callback(obj, method), a0, a1, a2, a3);
kenjiArai 0:5b88d5760320 1465 }
kenjiArai 0:5b88d5760320 1466
kenjiArai 0:5b88d5760320 1467 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1468 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1469 */
kenjiArai 0:5b88d5760320 1470 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 1471 int call_every(int ms, volatile T *obj, R(T::*method)(A0, A1, A2, A3) volatile, A0 a0, A1 a1, A2 a2, A3 a3)
kenjiArai 0:5b88d5760320 1472 {
kenjiArai 0:5b88d5760320 1473 return call_every(ms, mbed::callback(obj, method), a0, a1, a2, a3);
kenjiArai 0:5b88d5760320 1474 }
kenjiArai 0:5b88d5760320 1475
kenjiArai 0:5b88d5760320 1476 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1477 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1478 */
kenjiArai 0:5b88d5760320 1479 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 1480 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)
kenjiArai 0:5b88d5760320 1481 {
kenjiArai 0:5b88d5760320 1482 return call_every(ms, mbed::callback(obj, method), a0, a1, a2, a3);
kenjiArai 0:5b88d5760320 1483 }
kenjiArai 0:5b88d5760320 1484
kenjiArai 0:5b88d5760320 1485 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1486 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1487 */
kenjiArai 0:5b88d5760320 1488 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 1489 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)
kenjiArai 0:5b88d5760320 1490 {
kenjiArai 0:5b88d5760320 1491 return call_every(ms, mbed::callback(obj, method), a0, a1, a2, a3, a4);
kenjiArai 0:5b88d5760320 1492 }
kenjiArai 0:5b88d5760320 1493
kenjiArai 0:5b88d5760320 1494 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1495 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1496 */
kenjiArai 0:5b88d5760320 1497 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 1498 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)
kenjiArai 0:5b88d5760320 1499 {
kenjiArai 0:5b88d5760320 1500 return call_every(ms, mbed::callback(obj, method), a0, a1, a2, a3, a4);
kenjiArai 0:5b88d5760320 1501 }
kenjiArai 0:5b88d5760320 1502
kenjiArai 0:5b88d5760320 1503 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1504 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1505 */
kenjiArai 0:5b88d5760320 1506 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 1507 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)
kenjiArai 0:5b88d5760320 1508 {
kenjiArai 0:5b88d5760320 1509 return call_every(ms, mbed::callback(obj, method), a0, a1, a2, a3, a4);
kenjiArai 0:5b88d5760320 1510 }
kenjiArai 0:5b88d5760320 1511
kenjiArai 0:5b88d5760320 1512 /** Calls an event on the queue periodically
kenjiArai 0:5b88d5760320 1513 * @see EventQueue::call_every
kenjiArai 0:5b88d5760320 1514 */
kenjiArai 0:5b88d5760320 1515 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 1516 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)
kenjiArai 0:5b88d5760320 1517 {
kenjiArai 0:5b88d5760320 1518 return call_every(ms, mbed::callback(obj, method), a0, a1, a2, a3, a4);
kenjiArai 0:5b88d5760320 1519 }
kenjiArai 0:5b88d5760320 1520
kenjiArai 0:5b88d5760320 1521 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1522 *
kenjiArai 0:5b88d5760320 1523 * Constructs an event bound to the specified event queue. The specified
kenjiArai 0:5b88d5760320 1524 * callback acts as the target for the event and is executed in the
kenjiArai 0:5b88d5760320 1525 * context of the event queue's dispatch loop once posted.
kenjiArai 0:5b88d5760320 1526 *
kenjiArai 0:5b88d5760320 1527 * @param func Function to execute when the event is dispatched
kenjiArai 0:5b88d5760320 1528 * @return Event that will dispatch on the specific queue
kenjiArai 0:5b88d5760320 1529 */
kenjiArai 0:5b88d5760320 1530 template <typename R>
kenjiArai 0:5b88d5760320 1531 Event<void()> event(R(*func)());
kenjiArai 0:5b88d5760320 1532
kenjiArai 0:5b88d5760320 1533 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1534 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1535 */
kenjiArai 0:5b88d5760320 1536 template <typename T, typename R>
kenjiArai 0:5b88d5760320 1537 Event<void()> event(T *obj, R(T::*method)());
kenjiArai 0:5b88d5760320 1538
kenjiArai 0:5b88d5760320 1539 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1540 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1541 */
kenjiArai 0:5b88d5760320 1542 template <typename T, typename R>
kenjiArai 0:5b88d5760320 1543 Event<void()> event(const T *obj, R(T::*method)() const);
kenjiArai 0:5b88d5760320 1544
kenjiArai 0:5b88d5760320 1545 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1546 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1547 */
kenjiArai 0:5b88d5760320 1548 template <typename T, typename R>
kenjiArai 0:5b88d5760320 1549 Event<void()> event(volatile T *obj, R(T::*method)() volatile);
kenjiArai 0:5b88d5760320 1550
kenjiArai 0:5b88d5760320 1551 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1552 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1553 */
kenjiArai 0:5b88d5760320 1554 template <typename T, typename R>
kenjiArai 0:5b88d5760320 1555 Event<void()> event(const volatile T *obj, R(T::*method)() const volatile);
kenjiArai 0:5b88d5760320 1556
kenjiArai 0:5b88d5760320 1557 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1558 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1559 */
kenjiArai 0:5b88d5760320 1560 template <typename R>
kenjiArai 0:5b88d5760320 1561 Event<void()> event(mbed::Callback<R()> cb);
kenjiArai 0:5b88d5760320 1562
kenjiArai 0:5b88d5760320 1563 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1564 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1565 */
kenjiArai 0:5b88d5760320 1566 template <typename R, typename B0, typename C0>
kenjiArai 0:5b88d5760320 1567 Event<void()> event(R(*func)(B0), C0 c0);
kenjiArai 0:5b88d5760320 1568
kenjiArai 0:5b88d5760320 1569 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1570 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1571 */
kenjiArai 0:5b88d5760320 1572 template <typename T, typename R, typename B0, typename C0>
kenjiArai 0:5b88d5760320 1573 Event<void()> event(T *obj, R(T::*method)(B0), C0 c0);
kenjiArai 0:5b88d5760320 1574
kenjiArai 0:5b88d5760320 1575 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1576 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1577 */
kenjiArai 0:5b88d5760320 1578 template <typename T, typename R, typename B0, typename C0>
kenjiArai 0:5b88d5760320 1579 Event<void()> event(const T *obj, R(T::*method)(B0) const, C0 c0);
kenjiArai 0:5b88d5760320 1580
kenjiArai 0:5b88d5760320 1581 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1582 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1583 */
kenjiArai 0:5b88d5760320 1584 template <typename T, typename R, typename B0, typename C0>
kenjiArai 0:5b88d5760320 1585 Event<void()> event(volatile T *obj, R(T::*method)(B0) volatile, C0 c0);
kenjiArai 0:5b88d5760320 1586
kenjiArai 0:5b88d5760320 1587 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1588 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1589 */
kenjiArai 0:5b88d5760320 1590 template <typename T, typename R, typename B0, typename C0>
kenjiArai 0:5b88d5760320 1591 Event<void()> event(const volatile T *obj, R(T::*method)(B0) const volatile, C0 c0);
kenjiArai 0:5b88d5760320 1592
kenjiArai 0:5b88d5760320 1593 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1594 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1595 */
kenjiArai 0:5b88d5760320 1596 template <typename R, typename B0, typename C0>
kenjiArai 0:5b88d5760320 1597 Event<void()> event(mbed::Callback<R(B0)> cb, C0 c0);
kenjiArai 0:5b88d5760320 1598
kenjiArai 0:5b88d5760320 1599 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1600 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1601 */
kenjiArai 0:5b88d5760320 1602 template <typename R, typename B0, typename B1, typename C0, typename C1>
kenjiArai 0:5b88d5760320 1603 Event<void()> event(R(*func)(B0, B1), C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 1604
kenjiArai 0:5b88d5760320 1605 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1606 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1607 */
kenjiArai 0:5b88d5760320 1608 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1>
kenjiArai 0:5b88d5760320 1609 Event<void()> event(T *obj, R(T::*method)(B0, B1), C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 1610
kenjiArai 0:5b88d5760320 1611 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1612 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1613 */
kenjiArai 0:5b88d5760320 1614 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1>
kenjiArai 0:5b88d5760320 1615 Event<void()> event(const T *obj, R(T::*method)(B0, B1) const, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 1616
kenjiArai 0:5b88d5760320 1617 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1618 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1619 */
kenjiArai 0:5b88d5760320 1620 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1>
kenjiArai 0:5b88d5760320 1621 Event<void()> event(volatile T *obj, R(T::*method)(B0, B1) volatile, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 1622
kenjiArai 0:5b88d5760320 1623 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1624 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1625 */
kenjiArai 0:5b88d5760320 1626 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1>
kenjiArai 0:5b88d5760320 1627 Event<void()> event(const volatile T *obj, R(T::*method)(B0, B1) const volatile, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 1628
kenjiArai 0:5b88d5760320 1629 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1630 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1631 */
kenjiArai 0:5b88d5760320 1632 template <typename R, typename B0, typename B1, typename C0, typename C1>
kenjiArai 0:5b88d5760320 1633 Event<void()> event(mbed::Callback<R(B0, B1)> cb, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 1634
kenjiArai 0:5b88d5760320 1635 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1636 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1637 */
kenjiArai 0:5b88d5760320 1638 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2>
kenjiArai 0:5b88d5760320 1639 Event<void()> event(R(*func)(B0, B1, B2), C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 1640
kenjiArai 0:5b88d5760320 1641 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1642 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1643 */
kenjiArai 0:5b88d5760320 1644 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2>
kenjiArai 0:5b88d5760320 1645 Event<void()> event(T *obj, R(T::*method)(B0, B1, B2), C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 1646
kenjiArai 0:5b88d5760320 1647 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1648 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1649 */
kenjiArai 0:5b88d5760320 1650 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2>
kenjiArai 0:5b88d5760320 1651 Event<void()> event(const T *obj, R(T::*method)(B0, B1, B2) const, C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 1652
kenjiArai 0:5b88d5760320 1653 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1654 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1655 */
kenjiArai 0:5b88d5760320 1656 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2>
kenjiArai 0:5b88d5760320 1657 Event<void()> event(volatile T *obj, R(T::*method)(B0, B1, B2) volatile, C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 1658
kenjiArai 0:5b88d5760320 1659 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1660 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1661 */
kenjiArai 0:5b88d5760320 1662 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2>
kenjiArai 0:5b88d5760320 1663 Event<void()> event(const volatile T *obj, R(T::*method)(B0, B1, B2) const volatile, C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 1664
kenjiArai 0:5b88d5760320 1665 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1666 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1667 */
kenjiArai 0:5b88d5760320 1668 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2>
kenjiArai 0:5b88d5760320 1669 Event<void()> event(mbed::Callback<R(B0, B1, B2)> cb, C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 1670
kenjiArai 0:5b88d5760320 1671 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1672 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1673 */
kenjiArai 0:5b88d5760320 1674 template <typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3>
kenjiArai 0:5b88d5760320 1675 Event<void()> event(R(*func)(B0, B1, B2, B3), C0 c0, C1 c1, C2 c2, C3 c3);
kenjiArai 0:5b88d5760320 1676
kenjiArai 0:5b88d5760320 1677 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1678 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1679 */
kenjiArai 0:5b88d5760320 1680 template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3>
kenjiArai 0:5b88d5760320 1681 Event<void()> event(T *obj, R(T::*method)(B0, B1, B2, B3), C0 c0, C1 c1, C2 c2, C3 c3);
kenjiArai 0:5b88d5760320 1682
kenjiArai 0:5b88d5760320 1683 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1684 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1685 */
kenjiArai 0:5b88d5760320 1686 template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3>
kenjiArai 0:5b88d5760320 1687 Event<void()> event(const T *obj, R(T::*method)(B0, B1, B2, B3) const, C0 c0, C1 c1, C2 c2, C3 c3);
kenjiArai 0:5b88d5760320 1688
kenjiArai 0:5b88d5760320 1689 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1690 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1691 */
kenjiArai 0:5b88d5760320 1692 template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3>
kenjiArai 0:5b88d5760320 1693 Event<void()> event(volatile T *obj, R(T::*method)(B0, B1, B2, B3) volatile, C0 c0, C1 c1, C2 c2, C3 c3);
kenjiArai 0:5b88d5760320 1694
kenjiArai 0:5b88d5760320 1695 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1696 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1697 */
kenjiArai 0:5b88d5760320 1698 template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3>
kenjiArai 0:5b88d5760320 1699 Event<void()> event(const volatile T *obj, R(T::*method)(B0, B1, B2, B3) const volatile, C0 c0, C1 c1, C2 c2, C3 c3);
kenjiArai 0:5b88d5760320 1700
kenjiArai 0:5b88d5760320 1701 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1702 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1703 */
kenjiArai 0:5b88d5760320 1704 template <typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3>
kenjiArai 0:5b88d5760320 1705 Event<void()> event(mbed::Callback<R(B0, B1, B2, B3)> cb, C0 c0, C1 c1, C2 c2, C3 c3);
kenjiArai 0:5b88d5760320 1706
kenjiArai 0:5b88d5760320 1707 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1708 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1709 */
kenjiArai 0:5b88d5760320 1710 template <typename R, typename B0, typename B1, typename B2, typename B3, typename B4, typename C0, typename C1, typename C2, typename C3, typename C4>
kenjiArai 0:5b88d5760320 1711 Event<void()> event(R(*func)(B0, B1, B2, B3, B4), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
kenjiArai 0:5b88d5760320 1712
kenjiArai 0:5b88d5760320 1713 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1714 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1715 */
kenjiArai 0:5b88d5760320 1716 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>
kenjiArai 0:5b88d5760320 1717 Event<void()> event(T *obj, R(T::*method)(B0, B1, B2, B3, B4), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
kenjiArai 0:5b88d5760320 1718
kenjiArai 0:5b88d5760320 1719 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1720 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1721 */
kenjiArai 0:5b88d5760320 1722 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>
kenjiArai 0:5b88d5760320 1723 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);
kenjiArai 0:5b88d5760320 1724
kenjiArai 0:5b88d5760320 1725 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1726 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1727 */
kenjiArai 0:5b88d5760320 1728 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>
kenjiArai 0:5b88d5760320 1729 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);
kenjiArai 0:5b88d5760320 1730
kenjiArai 0:5b88d5760320 1731 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1732 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1733 */
kenjiArai 0:5b88d5760320 1734 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>
kenjiArai 0:5b88d5760320 1735 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);
kenjiArai 0:5b88d5760320 1736
kenjiArai 0:5b88d5760320 1737 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1738 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1739 */
kenjiArai 0:5b88d5760320 1740 template <typename R, typename B0, typename B1, typename B2, typename B3, typename B4, typename C0, typename C1, typename C2, typename C3, typename C4>
kenjiArai 0:5b88d5760320 1741 Event<void()> event(mbed::Callback<R(B0, B1, B2, B3, B4)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
kenjiArai 0:5b88d5760320 1742
kenjiArai 0:5b88d5760320 1743 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1744 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1745 */
kenjiArai 0:5b88d5760320 1746 template <typename R, typename A0>
kenjiArai 0:5b88d5760320 1747 Event<void(A0)> event(R(*func)(A0));
kenjiArai 0:5b88d5760320 1748
kenjiArai 0:5b88d5760320 1749 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1750 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1751 */
kenjiArai 0:5b88d5760320 1752 template <typename T, typename R, typename A0>
kenjiArai 0:5b88d5760320 1753 Event<void(A0)> event(T *obj, R(T::*method)(A0));
kenjiArai 0:5b88d5760320 1754
kenjiArai 0:5b88d5760320 1755 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1756 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1757 */
kenjiArai 0:5b88d5760320 1758 template <typename T, typename R, typename A0>
kenjiArai 0:5b88d5760320 1759 Event<void(A0)> event(const T *obj, R(T::*method)(A0) const);
kenjiArai 0:5b88d5760320 1760
kenjiArai 0:5b88d5760320 1761 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1762 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1763 */
kenjiArai 0:5b88d5760320 1764 template <typename T, typename R, typename A0>
kenjiArai 0:5b88d5760320 1765 Event<void(A0)> event(volatile T *obj, R(T::*method)(A0) volatile);
kenjiArai 0:5b88d5760320 1766
kenjiArai 0:5b88d5760320 1767 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1768 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1769 */
kenjiArai 0:5b88d5760320 1770 template <typename T, typename R, typename A0>
kenjiArai 0:5b88d5760320 1771 Event<void(A0)> event(const volatile T *obj, R(T::*method)(A0) const volatile);
kenjiArai 0:5b88d5760320 1772
kenjiArai 0:5b88d5760320 1773 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1774 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1775 */
kenjiArai 0:5b88d5760320 1776 template <typename R, typename A0>
kenjiArai 0:5b88d5760320 1777 Event<void(A0)> event(mbed::Callback<R(A0)> cb);
kenjiArai 0:5b88d5760320 1778
kenjiArai 0:5b88d5760320 1779 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1780 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1781 */
kenjiArai 0:5b88d5760320 1782 template <typename R, typename B0, typename C0, typename A0>
kenjiArai 0:5b88d5760320 1783 Event<void(A0)> event(R(*func)(B0, A0), C0 c0);
kenjiArai 0:5b88d5760320 1784
kenjiArai 0:5b88d5760320 1785 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1786 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1787 */
kenjiArai 0:5b88d5760320 1788 template <typename T, typename R, typename B0, typename C0, typename A0>
kenjiArai 0:5b88d5760320 1789 Event<void(A0)> event(T *obj, R(T::*method)(B0, A0), C0 c0);
kenjiArai 0:5b88d5760320 1790
kenjiArai 0:5b88d5760320 1791 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1792 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1793 */
kenjiArai 0:5b88d5760320 1794 template <typename T, typename R, typename B0, typename C0, typename A0>
kenjiArai 0:5b88d5760320 1795 Event<void(A0)> event(const T *obj, R(T::*method)(B0, A0) const, C0 c0);
kenjiArai 0:5b88d5760320 1796
kenjiArai 0:5b88d5760320 1797 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1798 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1799 */
kenjiArai 0:5b88d5760320 1800 template <typename T, typename R, typename B0, typename C0, typename A0>
kenjiArai 0:5b88d5760320 1801 Event<void(A0)> event(volatile T *obj, R(T::*method)(B0, A0) volatile, C0 c0);
kenjiArai 0:5b88d5760320 1802
kenjiArai 0:5b88d5760320 1803 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1804 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1805 */
kenjiArai 0:5b88d5760320 1806 template <typename T, typename R, typename B0, typename C0, typename A0>
kenjiArai 0:5b88d5760320 1807 Event<void(A0)> event(const volatile T *obj, R(T::*method)(B0, A0) const volatile, C0 c0);
kenjiArai 0:5b88d5760320 1808
kenjiArai 0:5b88d5760320 1809 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1810 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1811 */
kenjiArai 0:5b88d5760320 1812 template <typename R, typename B0, typename C0, typename A0>
kenjiArai 0:5b88d5760320 1813 Event<void(A0)> event(mbed::Callback<R(B0, A0)> cb, C0 c0);
kenjiArai 0:5b88d5760320 1814
kenjiArai 0:5b88d5760320 1815 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1816 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1817 */
kenjiArai 0:5b88d5760320 1818 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0>
kenjiArai 0:5b88d5760320 1819 Event<void(A0)> event(R(*func)(B0, B1, A0), C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 1820
kenjiArai 0:5b88d5760320 1821 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1822 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1823 */
kenjiArai 0:5b88d5760320 1824 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0>
kenjiArai 0:5b88d5760320 1825 Event<void(A0)> event(T *obj, R(T::*method)(B0, B1, A0), C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 1826
kenjiArai 0:5b88d5760320 1827 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1828 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1829 */
kenjiArai 0:5b88d5760320 1830 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0>
kenjiArai 0:5b88d5760320 1831 Event<void(A0)> event(const T *obj, R(T::*method)(B0, B1, A0) const, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 1832
kenjiArai 0:5b88d5760320 1833 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1834 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1835 */
kenjiArai 0:5b88d5760320 1836 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0>
kenjiArai 0:5b88d5760320 1837 Event<void(A0)> event(volatile T *obj, R(T::*method)(B0, B1, A0) volatile, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 1838
kenjiArai 0:5b88d5760320 1839 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1840 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1841 */
kenjiArai 0:5b88d5760320 1842 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0>
kenjiArai 0:5b88d5760320 1843 Event<void(A0)> event(const volatile T *obj, R(T::*method)(B0, B1, A0) const volatile, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 1844
kenjiArai 0:5b88d5760320 1845 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1846 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1847 */
kenjiArai 0:5b88d5760320 1848 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0>
kenjiArai 0:5b88d5760320 1849 Event<void(A0)> event(mbed::Callback<R(B0, B1, A0)> cb, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 1850
kenjiArai 0:5b88d5760320 1851 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1852 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1853 */
kenjiArai 0:5b88d5760320 1854 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0>
kenjiArai 0:5b88d5760320 1855 Event<void(A0)> event(R(*func)(B0, B1, B2, A0), C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 1856
kenjiArai 0:5b88d5760320 1857 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1858 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1859 */
kenjiArai 0:5b88d5760320 1860 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0>
kenjiArai 0:5b88d5760320 1861 Event<void(A0)> event(T *obj, R(T::*method)(B0, B1, B2, A0), C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 1862
kenjiArai 0:5b88d5760320 1863 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1864 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1865 */
kenjiArai 0:5b88d5760320 1866 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0>
kenjiArai 0:5b88d5760320 1867 Event<void(A0)> event(const T *obj, R(T::*method)(B0, B1, B2, A0) const, C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 1868
kenjiArai 0:5b88d5760320 1869 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1870 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1871 */
kenjiArai 0:5b88d5760320 1872 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0>
kenjiArai 0:5b88d5760320 1873 Event<void(A0)> event(volatile T *obj, R(T::*method)(B0, B1, B2, A0) volatile, C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 1874
kenjiArai 0:5b88d5760320 1875 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1876 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1877 */
kenjiArai 0:5b88d5760320 1878 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0>
kenjiArai 0:5b88d5760320 1879 Event<void(A0)> event(const volatile T *obj, R(T::*method)(B0, B1, B2, A0) const volatile, C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 1880
kenjiArai 0:5b88d5760320 1881 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1882 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1883 */
kenjiArai 0:5b88d5760320 1884 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0>
kenjiArai 0:5b88d5760320 1885 Event<void(A0)> event(mbed::Callback<R(B0, B1, B2, A0)> cb, C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 1886
kenjiArai 0:5b88d5760320 1887 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1888 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1889 */
kenjiArai 0:5b88d5760320 1890 template <typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename A0>
kenjiArai 0:5b88d5760320 1891 Event<void(A0)> event(R(*func)(B0, B1, B2, B3, A0), C0 c0, C1 c1, C2 c2, C3 c3);
kenjiArai 0:5b88d5760320 1892
kenjiArai 0:5b88d5760320 1893 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1894 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1895 */
kenjiArai 0:5b88d5760320 1896 template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename A0>
kenjiArai 0:5b88d5760320 1897 Event<void(A0)> event(T *obj, R(T::*method)(B0, B1, B2, B3, A0), C0 c0, C1 c1, C2 c2, C3 c3);
kenjiArai 0:5b88d5760320 1898
kenjiArai 0:5b88d5760320 1899 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1900 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1901 */
kenjiArai 0:5b88d5760320 1902 template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename A0>
kenjiArai 0:5b88d5760320 1903 Event<void(A0)> event(const T *obj, R(T::*method)(B0, B1, B2, B3, A0) const, C0 c0, C1 c1, C2 c2, C3 c3);
kenjiArai 0:5b88d5760320 1904
kenjiArai 0:5b88d5760320 1905 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1906 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1907 */
kenjiArai 0:5b88d5760320 1908 template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename A0>
kenjiArai 0:5b88d5760320 1909 Event<void(A0)> event(volatile T *obj, R(T::*method)(B0, B1, B2, B3, A0) volatile, C0 c0, C1 c1, C2 c2, C3 c3);
kenjiArai 0:5b88d5760320 1910
kenjiArai 0:5b88d5760320 1911 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1912 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1913 */
kenjiArai 0:5b88d5760320 1914 template <typename T, typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename A0>
kenjiArai 0:5b88d5760320 1915 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);
kenjiArai 0:5b88d5760320 1916
kenjiArai 0:5b88d5760320 1917 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1918 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1919 */
kenjiArai 0:5b88d5760320 1920 template <typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename A0>
kenjiArai 0:5b88d5760320 1921 Event<void(A0)> event(mbed::Callback<R(B0, B1, B2, B3, A0)> cb, C0 c0, C1 c1, C2 c2, C3 c3);
kenjiArai 0:5b88d5760320 1922
kenjiArai 0:5b88d5760320 1923 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1924 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1925 */
kenjiArai 0:5b88d5760320 1926 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>
kenjiArai 0:5b88d5760320 1927 Event<void(A0)> event(R(*func)(B0, B1, B2, B3, B4, A0), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
kenjiArai 0:5b88d5760320 1928
kenjiArai 0:5b88d5760320 1929 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1930 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1931 */
kenjiArai 0:5b88d5760320 1932 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>
kenjiArai 0:5b88d5760320 1933 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);
kenjiArai 0:5b88d5760320 1934
kenjiArai 0:5b88d5760320 1935 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1936 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1937 */
kenjiArai 0:5b88d5760320 1938 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>
kenjiArai 0:5b88d5760320 1939 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);
kenjiArai 0:5b88d5760320 1940
kenjiArai 0:5b88d5760320 1941 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1942 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1943 */
kenjiArai 0:5b88d5760320 1944 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>
kenjiArai 0:5b88d5760320 1945 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);
kenjiArai 0:5b88d5760320 1946
kenjiArai 0:5b88d5760320 1947 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1948 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1949 */
kenjiArai 0:5b88d5760320 1950 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>
kenjiArai 0:5b88d5760320 1951 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);
kenjiArai 0:5b88d5760320 1952
kenjiArai 0:5b88d5760320 1953 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1954 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1955 */
kenjiArai 0:5b88d5760320 1956 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>
kenjiArai 0:5b88d5760320 1957 Event<void(A0)> event(mbed::Callback<R(B0, B1, B2, B3, B4, A0)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
kenjiArai 0:5b88d5760320 1958
kenjiArai 0:5b88d5760320 1959 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1960 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1961 */
kenjiArai 0:5b88d5760320 1962 template <typename R, typename A0, typename A1>
kenjiArai 0:5b88d5760320 1963 Event<void(A0, A1)> event(R(*func)(A0, A1));
kenjiArai 0:5b88d5760320 1964
kenjiArai 0:5b88d5760320 1965 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1966 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1967 */
kenjiArai 0:5b88d5760320 1968 template <typename T, typename R, typename A0, typename A1>
kenjiArai 0:5b88d5760320 1969 Event<void(A0, A1)> event(T *obj, R(T::*method)(A0, A1));
kenjiArai 0:5b88d5760320 1970
kenjiArai 0:5b88d5760320 1971 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1972 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1973 */
kenjiArai 0:5b88d5760320 1974 template <typename T, typename R, typename A0, typename A1>
kenjiArai 0:5b88d5760320 1975 Event<void(A0, A1)> event(const T *obj, R(T::*method)(A0, A1) const);
kenjiArai 0:5b88d5760320 1976
kenjiArai 0:5b88d5760320 1977 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1978 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1979 */
kenjiArai 0:5b88d5760320 1980 template <typename T, typename R, typename A0, typename A1>
kenjiArai 0:5b88d5760320 1981 Event<void(A0, A1)> event(volatile T *obj, R(T::*method)(A0, A1) volatile);
kenjiArai 0:5b88d5760320 1982
kenjiArai 0:5b88d5760320 1983 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1984 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1985 */
kenjiArai 0:5b88d5760320 1986 template <typename T, typename R, typename A0, typename A1>
kenjiArai 0:5b88d5760320 1987 Event<void(A0, A1)> event(const volatile T *obj, R(T::*method)(A0, A1) const volatile);
kenjiArai 0:5b88d5760320 1988
kenjiArai 0:5b88d5760320 1989 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1990 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1991 */
kenjiArai 0:5b88d5760320 1992 template <typename R, typename A0, typename A1>
kenjiArai 0:5b88d5760320 1993 Event<void(A0, A1)> event(mbed::Callback<R(A0, A1)> cb);
kenjiArai 0:5b88d5760320 1994
kenjiArai 0:5b88d5760320 1995 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 1996 * @see EventQueue::event
kenjiArai 0:5b88d5760320 1997 */
kenjiArai 0:5b88d5760320 1998 template <typename R, typename B0, typename C0, typename A0, typename A1>
kenjiArai 0:5b88d5760320 1999 Event<void(A0, A1)> event(R(*func)(B0, A0, A1), C0 c0);
kenjiArai 0:5b88d5760320 2000
kenjiArai 0:5b88d5760320 2001 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2002 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2003 */
kenjiArai 0:5b88d5760320 2004 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1>
kenjiArai 0:5b88d5760320 2005 Event<void(A0, A1)> event(T *obj, R(T::*method)(B0, A0, A1), C0 c0);
kenjiArai 0:5b88d5760320 2006
kenjiArai 0:5b88d5760320 2007 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2008 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2009 */
kenjiArai 0:5b88d5760320 2010 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1>
kenjiArai 0:5b88d5760320 2011 Event<void(A0, A1)> event(const T *obj, R(T::*method)(B0, A0, A1) const, C0 c0);
kenjiArai 0:5b88d5760320 2012
kenjiArai 0:5b88d5760320 2013 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2014 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2015 */
kenjiArai 0:5b88d5760320 2016 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1>
kenjiArai 0:5b88d5760320 2017 Event<void(A0, A1)> event(volatile T *obj, R(T::*method)(B0, A0, A1) volatile, C0 c0);
kenjiArai 0:5b88d5760320 2018
kenjiArai 0:5b88d5760320 2019 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2020 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2021 */
kenjiArai 0:5b88d5760320 2022 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1>
kenjiArai 0:5b88d5760320 2023 Event<void(A0, A1)> event(const volatile T *obj, R(T::*method)(B0, A0, A1) const volatile, C0 c0);
kenjiArai 0:5b88d5760320 2024
kenjiArai 0:5b88d5760320 2025 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2026 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2027 */
kenjiArai 0:5b88d5760320 2028 template <typename R, typename B0, typename C0, typename A0, typename A1>
kenjiArai 0:5b88d5760320 2029 Event<void(A0, A1)> event(mbed::Callback<R(B0, A0, A1)> cb, C0 c0);
kenjiArai 0:5b88d5760320 2030
kenjiArai 0:5b88d5760320 2031 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2032 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2033 */
kenjiArai 0:5b88d5760320 2034 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1>
kenjiArai 0:5b88d5760320 2035 Event<void(A0, A1)> event(R(*func)(B0, B1, A0, A1), C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2036
kenjiArai 0:5b88d5760320 2037 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2038 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2039 */
kenjiArai 0:5b88d5760320 2040 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1>
kenjiArai 0:5b88d5760320 2041 Event<void(A0, A1)> event(T *obj, R(T::*method)(B0, B1, A0, A1), C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2042
kenjiArai 0:5b88d5760320 2043 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2044 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2045 */
kenjiArai 0:5b88d5760320 2046 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1>
kenjiArai 0:5b88d5760320 2047 Event<void(A0, A1)> event(const T *obj, R(T::*method)(B0, B1, A0, A1) const, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2048
kenjiArai 0:5b88d5760320 2049 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2050 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2051 */
kenjiArai 0:5b88d5760320 2052 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1>
kenjiArai 0:5b88d5760320 2053 Event<void(A0, A1)> event(volatile T *obj, R(T::*method)(B0, B1, A0, A1) volatile, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2054
kenjiArai 0:5b88d5760320 2055 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2056 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2057 */
kenjiArai 0:5b88d5760320 2058 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1>
kenjiArai 0:5b88d5760320 2059 Event<void(A0, A1)> event(const volatile T *obj, R(T::*method)(B0, B1, A0, A1) const volatile, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2060
kenjiArai 0:5b88d5760320 2061 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2062 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2063 */
kenjiArai 0:5b88d5760320 2064 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1>
kenjiArai 0:5b88d5760320 2065 Event<void(A0, A1)> event(mbed::Callback<R(B0, B1, A0, A1)> cb, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2066
kenjiArai 0:5b88d5760320 2067 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2068 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2069 */
kenjiArai 0:5b88d5760320 2070 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1>
kenjiArai 0:5b88d5760320 2071 Event<void(A0, A1)> event(R(*func)(B0, B1, B2, A0, A1), C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 2072
kenjiArai 0:5b88d5760320 2073 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2074 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2075 */
kenjiArai 0:5b88d5760320 2076 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1>
kenjiArai 0:5b88d5760320 2077 Event<void(A0, A1)> event(T *obj, R(T::*method)(B0, B1, B2, A0, A1), C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 2078
kenjiArai 0:5b88d5760320 2079 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2080 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2081 */
kenjiArai 0:5b88d5760320 2082 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1>
kenjiArai 0:5b88d5760320 2083 Event<void(A0, A1)> event(const T *obj, R(T::*method)(B0, B1, B2, A0, A1) const, C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 2084
kenjiArai 0:5b88d5760320 2085 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2086 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2087 */
kenjiArai 0:5b88d5760320 2088 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1>
kenjiArai 0:5b88d5760320 2089 Event<void(A0, A1)> event(volatile T *obj, R(T::*method)(B0, B1, B2, A0, A1) volatile, C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 2090
kenjiArai 0:5b88d5760320 2091 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2092 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2093 */
kenjiArai 0:5b88d5760320 2094 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1>
kenjiArai 0:5b88d5760320 2095 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);
kenjiArai 0:5b88d5760320 2096
kenjiArai 0:5b88d5760320 2097 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2098 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2099 */
kenjiArai 0:5b88d5760320 2100 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1>
kenjiArai 0:5b88d5760320 2101 Event<void(A0, A1)> event(mbed::Callback<R(B0, B1, B2, A0, A1)> cb, C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 2102
kenjiArai 0:5b88d5760320 2103 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2104 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2105 */
kenjiArai 0:5b88d5760320 2106 template <typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename A0, typename A1>
kenjiArai 0:5b88d5760320 2107 Event<void(A0, A1)> event(R(*func)(B0, B1, B2, B3, A0, A1), C0 c0, C1 c1, C2 c2, C3 c3);
kenjiArai 0:5b88d5760320 2108
kenjiArai 0:5b88d5760320 2109 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2110 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2111 */
kenjiArai 0:5b88d5760320 2112 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>
kenjiArai 0:5b88d5760320 2113 Event<void(A0, A1)> event(T *obj, R(T::*method)(B0, B1, B2, B3, A0, A1), C0 c0, C1 c1, C2 c2, C3 c3);
kenjiArai 0:5b88d5760320 2114
kenjiArai 0:5b88d5760320 2115 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2116 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2117 */
kenjiArai 0:5b88d5760320 2118 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>
kenjiArai 0:5b88d5760320 2119 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);
kenjiArai 0:5b88d5760320 2120
kenjiArai 0:5b88d5760320 2121 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2122 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2123 */
kenjiArai 0:5b88d5760320 2124 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>
kenjiArai 0:5b88d5760320 2125 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);
kenjiArai 0:5b88d5760320 2126
kenjiArai 0:5b88d5760320 2127 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2128 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2129 */
kenjiArai 0:5b88d5760320 2130 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>
kenjiArai 0:5b88d5760320 2131 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);
kenjiArai 0:5b88d5760320 2132
kenjiArai 0:5b88d5760320 2133 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2134 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2135 */
kenjiArai 0:5b88d5760320 2136 template <typename R, typename B0, typename B1, typename B2, typename B3, typename C0, typename C1, typename C2, typename C3, typename A0, typename A1>
kenjiArai 0:5b88d5760320 2137 Event<void(A0, A1)> event(mbed::Callback<R(B0, B1, B2, B3, A0, A1)> cb, C0 c0, C1 c1, C2 c2, C3 c3);
kenjiArai 0:5b88d5760320 2138
kenjiArai 0:5b88d5760320 2139 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2140 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2141 */
kenjiArai 0:5b88d5760320 2142 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>
kenjiArai 0:5b88d5760320 2143 Event<void(A0, A1)> event(R(*func)(B0, B1, B2, B3, B4, A0, A1), C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
kenjiArai 0:5b88d5760320 2144
kenjiArai 0:5b88d5760320 2145 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2146 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2147 */
kenjiArai 0:5b88d5760320 2148 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>
kenjiArai 0:5b88d5760320 2149 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);
kenjiArai 0:5b88d5760320 2150
kenjiArai 0:5b88d5760320 2151 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2152 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2153 */
kenjiArai 0:5b88d5760320 2154 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>
kenjiArai 0:5b88d5760320 2155 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);
kenjiArai 0:5b88d5760320 2156
kenjiArai 0:5b88d5760320 2157 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2158 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2159 */
kenjiArai 0:5b88d5760320 2160 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>
kenjiArai 0:5b88d5760320 2161 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);
kenjiArai 0:5b88d5760320 2162
kenjiArai 0:5b88d5760320 2163 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2164 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2165 */
kenjiArai 0:5b88d5760320 2166 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>
kenjiArai 0:5b88d5760320 2167 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);
kenjiArai 0:5b88d5760320 2168
kenjiArai 0:5b88d5760320 2169 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2170 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2171 */
kenjiArai 0:5b88d5760320 2172 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>
kenjiArai 0:5b88d5760320 2173 Event<void(A0, A1)> event(mbed::Callback<R(B0, B1, B2, B3, B4, A0, A1)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
kenjiArai 0:5b88d5760320 2174
kenjiArai 0:5b88d5760320 2175 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2176 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2177 */
kenjiArai 0:5b88d5760320 2178 template <typename R, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2179 Event<void(A0, A1, A2)> event(R(*func)(A0, A1, A2));
kenjiArai 0:5b88d5760320 2180
kenjiArai 0:5b88d5760320 2181 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2182 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2183 */
kenjiArai 0:5b88d5760320 2184 template <typename T, typename R, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2185 Event<void(A0, A1, A2)> event(T *obj, R(T::*method)(A0, A1, A2));
kenjiArai 0:5b88d5760320 2186
kenjiArai 0:5b88d5760320 2187 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2188 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2189 */
kenjiArai 0:5b88d5760320 2190 template <typename T, typename R, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2191 Event<void(A0, A1, A2)> event(const T *obj, R(T::*method)(A0, A1, A2) const);
kenjiArai 0:5b88d5760320 2192
kenjiArai 0:5b88d5760320 2193 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2194 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2195 */
kenjiArai 0:5b88d5760320 2196 template <typename T, typename R, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2197 Event<void(A0, A1, A2)> event(volatile T *obj, R(T::*method)(A0, A1, A2) volatile);
kenjiArai 0:5b88d5760320 2198
kenjiArai 0:5b88d5760320 2199 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2200 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2201 */
kenjiArai 0:5b88d5760320 2202 template <typename T, typename R, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2203 Event<void(A0, A1, A2)> event(const volatile T *obj, R(T::*method)(A0, A1, A2) const volatile);
kenjiArai 0:5b88d5760320 2204
kenjiArai 0:5b88d5760320 2205 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2206 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2207 */
kenjiArai 0:5b88d5760320 2208 template <typename R, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2209 Event<void(A0, A1, A2)> event(mbed::Callback<R(A0, A1, A2)> cb);
kenjiArai 0:5b88d5760320 2210
kenjiArai 0:5b88d5760320 2211 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2212 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2213 */
kenjiArai 0:5b88d5760320 2214 template <typename R, typename B0, typename C0, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2215 Event<void(A0, A1, A2)> event(R(*func)(B0, A0, A1, A2), C0 c0);
kenjiArai 0:5b88d5760320 2216
kenjiArai 0:5b88d5760320 2217 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2218 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2219 */
kenjiArai 0:5b88d5760320 2220 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2221 Event<void(A0, A1, A2)> event(T *obj, R(T::*method)(B0, A0, A1, A2), C0 c0);
kenjiArai 0:5b88d5760320 2222
kenjiArai 0:5b88d5760320 2223 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2224 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2225 */
kenjiArai 0:5b88d5760320 2226 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2227 Event<void(A0, A1, A2)> event(const T *obj, R(T::*method)(B0, A0, A1, A2) const, C0 c0);
kenjiArai 0:5b88d5760320 2228
kenjiArai 0:5b88d5760320 2229 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2230 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2231 */
kenjiArai 0:5b88d5760320 2232 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2233 Event<void(A0, A1, A2)> event(volatile T *obj, R(T::*method)(B0, A0, A1, A2) volatile, C0 c0);
kenjiArai 0:5b88d5760320 2234
kenjiArai 0:5b88d5760320 2235 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2236 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2237 */
kenjiArai 0:5b88d5760320 2238 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2239 Event<void(A0, A1, A2)> event(const volatile T *obj, R(T::*method)(B0, A0, A1, A2) const volatile, C0 c0);
kenjiArai 0:5b88d5760320 2240
kenjiArai 0:5b88d5760320 2241 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2242 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2243 */
kenjiArai 0:5b88d5760320 2244 template <typename R, typename B0, typename C0, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2245 Event<void(A0, A1, A2)> event(mbed::Callback<R(B0, A0, A1, A2)> cb, C0 c0);
kenjiArai 0:5b88d5760320 2246
kenjiArai 0:5b88d5760320 2247 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2248 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2249 */
kenjiArai 0:5b88d5760320 2250 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2251 Event<void(A0, A1, A2)> event(R(*func)(B0, B1, A0, A1, A2), C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2252
kenjiArai 0:5b88d5760320 2253 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2254 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2255 */
kenjiArai 0:5b88d5760320 2256 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2257 Event<void(A0, A1, A2)> event(T *obj, R(T::*method)(B0, B1, A0, A1, A2), C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2258
kenjiArai 0:5b88d5760320 2259 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2260 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2261 */
kenjiArai 0:5b88d5760320 2262 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2263 Event<void(A0, A1, A2)> event(const T *obj, R(T::*method)(B0, B1, A0, A1, A2) const, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2264
kenjiArai 0:5b88d5760320 2265 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2266 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2267 */
kenjiArai 0:5b88d5760320 2268 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2269 Event<void(A0, A1, A2)> event(volatile T *obj, R(T::*method)(B0, B1, A0, A1, A2) volatile, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2270
kenjiArai 0:5b88d5760320 2271 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2272 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2273 */
kenjiArai 0:5b88d5760320 2274 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2275 Event<void(A0, A1, A2)> event(const volatile T *obj, R(T::*method)(B0, B1, A0, A1, A2) const volatile, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2276
kenjiArai 0:5b88d5760320 2277 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2278 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2279 */
kenjiArai 0:5b88d5760320 2280 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2281 Event<void(A0, A1, A2)> event(mbed::Callback<R(B0, B1, A0, A1, A2)> cb, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2282
kenjiArai 0:5b88d5760320 2283 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2284 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2285 */
kenjiArai 0:5b88d5760320 2286 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2287 Event<void(A0, A1, A2)> event(R(*func)(B0, B1, B2, A0, A1, A2), C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 2288
kenjiArai 0:5b88d5760320 2289 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2290 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2291 */
kenjiArai 0:5b88d5760320 2292 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2293 Event<void(A0, A1, A2)> event(T *obj, R(T::*method)(B0, B1, B2, A0, A1, A2), C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 2294
kenjiArai 0:5b88d5760320 2295 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2296 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2297 */
kenjiArai 0:5b88d5760320 2298 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2299 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);
kenjiArai 0:5b88d5760320 2300
kenjiArai 0:5b88d5760320 2301 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2302 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2303 */
kenjiArai 0:5b88d5760320 2304 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2305 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);
kenjiArai 0:5b88d5760320 2306
kenjiArai 0:5b88d5760320 2307 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2308 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2309 */
kenjiArai 0:5b88d5760320 2310 template <typename T, typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2311 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);
kenjiArai 0:5b88d5760320 2312
kenjiArai 0:5b88d5760320 2313 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2314 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2315 */
kenjiArai 0:5b88d5760320 2316 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 2317 Event<void(A0, A1, A2)> event(mbed::Callback<R(B0, B1, B2, A0, A1, A2)> cb, C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 2318
kenjiArai 0:5b88d5760320 2319 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2320 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2321 */
kenjiArai 0:5b88d5760320 2322 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>
kenjiArai 0:5b88d5760320 2323 Event<void(A0, A1, A2)> event(R(*func)(B0, B1, B2, B3, A0, A1, A2), C0 c0, C1 c1, C2 c2, C3 c3);
kenjiArai 0:5b88d5760320 2324
kenjiArai 0:5b88d5760320 2325 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2326 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2327 */
kenjiArai 0:5b88d5760320 2328 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>
kenjiArai 0:5b88d5760320 2329 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);
kenjiArai 0:5b88d5760320 2330
kenjiArai 0:5b88d5760320 2331 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2332 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2333 */
kenjiArai 0:5b88d5760320 2334 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>
kenjiArai 0:5b88d5760320 2335 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);
kenjiArai 0:5b88d5760320 2336
kenjiArai 0:5b88d5760320 2337 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2338 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2339 */
kenjiArai 0:5b88d5760320 2340 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>
kenjiArai 0:5b88d5760320 2341 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);
kenjiArai 0:5b88d5760320 2342
kenjiArai 0:5b88d5760320 2343 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2344 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2345 */
kenjiArai 0:5b88d5760320 2346 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>
kenjiArai 0:5b88d5760320 2347 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);
kenjiArai 0:5b88d5760320 2348
kenjiArai 0:5b88d5760320 2349 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2350 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2351 */
kenjiArai 0:5b88d5760320 2352 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>
kenjiArai 0:5b88d5760320 2353 Event<void(A0, A1, A2)> event(mbed::Callback<R(B0, B1, B2, B3, A0, A1, A2)> cb, C0 c0, C1 c1, C2 c2, C3 c3);
kenjiArai 0:5b88d5760320 2354
kenjiArai 0:5b88d5760320 2355 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2356 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2357 */
kenjiArai 0:5b88d5760320 2358 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>
kenjiArai 0:5b88d5760320 2359 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);
kenjiArai 0:5b88d5760320 2360
kenjiArai 0:5b88d5760320 2361 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2362 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2363 */
kenjiArai 0:5b88d5760320 2364 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>
kenjiArai 0:5b88d5760320 2365 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);
kenjiArai 0:5b88d5760320 2366
kenjiArai 0:5b88d5760320 2367 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2368 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2369 */
kenjiArai 0:5b88d5760320 2370 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>
kenjiArai 0:5b88d5760320 2371 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);
kenjiArai 0:5b88d5760320 2372
kenjiArai 0:5b88d5760320 2373 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2374 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2375 */
kenjiArai 0:5b88d5760320 2376 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>
kenjiArai 0:5b88d5760320 2377 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);
kenjiArai 0:5b88d5760320 2378
kenjiArai 0:5b88d5760320 2379 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2380 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2381 */
kenjiArai 0:5b88d5760320 2382 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>
kenjiArai 0:5b88d5760320 2383 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);
kenjiArai 0:5b88d5760320 2384
kenjiArai 0:5b88d5760320 2385 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2386 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2387 */
kenjiArai 0:5b88d5760320 2388 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>
kenjiArai 0:5b88d5760320 2389 Event<void(A0, A1, A2)> event(mbed::Callback<R(B0, B1, B2, B3, B4, A0, A1, A2)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
kenjiArai 0:5b88d5760320 2390
kenjiArai 0:5b88d5760320 2391 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2392 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2393 */
kenjiArai 0:5b88d5760320 2394 template <typename R, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2395 Event<void(A0, A1, A2, A3)> event(R(*func)(A0, A1, A2, A3));
kenjiArai 0:5b88d5760320 2396
kenjiArai 0:5b88d5760320 2397 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2398 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2399 */
kenjiArai 0:5b88d5760320 2400 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2401 Event<void(A0, A1, A2, A3)> event(T *obj, R(T::*method)(A0, A1, A2, A3));
kenjiArai 0:5b88d5760320 2402
kenjiArai 0:5b88d5760320 2403 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2404 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2405 */
kenjiArai 0:5b88d5760320 2406 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2407 Event<void(A0, A1, A2, A3)> event(const T *obj, R(T::*method)(A0, A1, A2, A3) const);
kenjiArai 0:5b88d5760320 2408
kenjiArai 0:5b88d5760320 2409 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2410 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2411 */
kenjiArai 0:5b88d5760320 2412 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2413 Event<void(A0, A1, A2, A3)> event(volatile T *obj, R(T::*method)(A0, A1, A2, A3) volatile);
kenjiArai 0:5b88d5760320 2414
kenjiArai 0:5b88d5760320 2415 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2416 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2417 */
kenjiArai 0:5b88d5760320 2418 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2419 Event<void(A0, A1, A2, A3)> event(const volatile T *obj, R(T::*method)(A0, A1, A2, A3) const volatile);
kenjiArai 0:5b88d5760320 2420
kenjiArai 0:5b88d5760320 2421 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2422 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2423 */
kenjiArai 0:5b88d5760320 2424 template <typename R, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2425 Event<void(A0, A1, A2, A3)> event(mbed::Callback<R(A0, A1, A2, A3)> cb);
kenjiArai 0:5b88d5760320 2426
kenjiArai 0:5b88d5760320 2427 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2428 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2429 */
kenjiArai 0:5b88d5760320 2430 template <typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2431 Event<void(A0, A1, A2, A3)> event(R(*func)(B0, A0, A1, A2, A3), C0 c0);
kenjiArai 0:5b88d5760320 2432
kenjiArai 0:5b88d5760320 2433 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2434 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2435 */
kenjiArai 0:5b88d5760320 2436 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2437 Event<void(A0, A1, A2, A3)> event(T *obj, R(T::*method)(B0, A0, A1, A2, A3), C0 c0);
kenjiArai 0:5b88d5760320 2438
kenjiArai 0:5b88d5760320 2439 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2440 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2441 */
kenjiArai 0:5b88d5760320 2442 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2443 Event<void(A0, A1, A2, A3)> event(const T *obj, R(T::*method)(B0, A0, A1, A2, A3) const, C0 c0);
kenjiArai 0:5b88d5760320 2444
kenjiArai 0:5b88d5760320 2445 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2446 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2447 */
kenjiArai 0:5b88d5760320 2448 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2449 Event<void(A0, A1, A2, A3)> event(volatile T *obj, R(T::*method)(B0, A0, A1, A2, A3) volatile, C0 c0);
kenjiArai 0:5b88d5760320 2450
kenjiArai 0:5b88d5760320 2451 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2452 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2453 */
kenjiArai 0:5b88d5760320 2454 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2455 Event<void(A0, A1, A2, A3)> event(const volatile T *obj, R(T::*method)(B0, A0, A1, A2, A3) const volatile, C0 c0);
kenjiArai 0:5b88d5760320 2456
kenjiArai 0:5b88d5760320 2457 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2458 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2459 */
kenjiArai 0:5b88d5760320 2460 template <typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2461 Event<void(A0, A1, A2, A3)> event(mbed::Callback<R(B0, A0, A1, A2, A3)> cb, C0 c0);
kenjiArai 0:5b88d5760320 2462
kenjiArai 0:5b88d5760320 2463 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2464 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2465 */
kenjiArai 0:5b88d5760320 2466 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2467 Event<void(A0, A1, A2, A3)> event(R(*func)(B0, B1, A0, A1, A2, A3), C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2468
kenjiArai 0:5b88d5760320 2469 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2470 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2471 */
kenjiArai 0:5b88d5760320 2472 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2473 Event<void(A0, A1, A2, A3)> event(T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3), C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2474
kenjiArai 0:5b88d5760320 2475 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2476 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2477 */
kenjiArai 0:5b88d5760320 2478 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2479 Event<void(A0, A1, A2, A3)> event(const T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3) const, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2480
kenjiArai 0:5b88d5760320 2481 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2482 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2483 */
kenjiArai 0:5b88d5760320 2484 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2485 Event<void(A0, A1, A2, A3)> event(volatile T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3) volatile, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2486
kenjiArai 0:5b88d5760320 2487 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2488 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2489 */
kenjiArai 0:5b88d5760320 2490 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2491 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);
kenjiArai 0:5b88d5760320 2492
kenjiArai 0:5b88d5760320 2493 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2494 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2495 */
kenjiArai 0:5b88d5760320 2496 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2497 Event<void(A0, A1, A2, A3)> event(mbed::Callback<R(B0, B1, A0, A1, A2, A3)> cb, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2498
kenjiArai 0:5b88d5760320 2499 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2500 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2501 */
kenjiArai 0:5b88d5760320 2502 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2503 Event<void(A0, A1, A2, A3)> event(R(*func)(B0, B1, B2, A0, A1, A2, A3), C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 2504
kenjiArai 0:5b88d5760320 2505 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2506 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2507 */
kenjiArai 0:5b88d5760320 2508 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>
kenjiArai 0:5b88d5760320 2509 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);
kenjiArai 0:5b88d5760320 2510
kenjiArai 0:5b88d5760320 2511 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2512 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2513 */
kenjiArai 0:5b88d5760320 2514 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>
kenjiArai 0:5b88d5760320 2515 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);
kenjiArai 0:5b88d5760320 2516
kenjiArai 0:5b88d5760320 2517 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2518 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2519 */
kenjiArai 0:5b88d5760320 2520 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>
kenjiArai 0:5b88d5760320 2521 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);
kenjiArai 0:5b88d5760320 2522
kenjiArai 0:5b88d5760320 2523 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2524 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2525 */
kenjiArai 0:5b88d5760320 2526 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>
kenjiArai 0:5b88d5760320 2527 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);
kenjiArai 0:5b88d5760320 2528
kenjiArai 0:5b88d5760320 2529 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2530 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2531 */
kenjiArai 0:5b88d5760320 2532 template <typename R, typename B0, typename B1, typename B2, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 2533 Event<void(A0, A1, A2, A3)> event(mbed::Callback<R(B0, B1, B2, A0, A1, A2, A3)> cb, C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 2534
kenjiArai 0:5b88d5760320 2535 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2536 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2537 */
kenjiArai 0:5b88d5760320 2538 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>
kenjiArai 0:5b88d5760320 2539 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);
kenjiArai 0:5b88d5760320 2540
kenjiArai 0:5b88d5760320 2541 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2542 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2543 */
kenjiArai 0:5b88d5760320 2544 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>
kenjiArai 0:5b88d5760320 2545 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);
kenjiArai 0:5b88d5760320 2546
kenjiArai 0:5b88d5760320 2547 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2548 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2549 */
kenjiArai 0:5b88d5760320 2550 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>
kenjiArai 0:5b88d5760320 2551 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);
kenjiArai 0:5b88d5760320 2552
kenjiArai 0:5b88d5760320 2553 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2554 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2555 */
kenjiArai 0:5b88d5760320 2556 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>
kenjiArai 0:5b88d5760320 2557 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);
kenjiArai 0:5b88d5760320 2558
kenjiArai 0:5b88d5760320 2559 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2560 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2561 */
kenjiArai 0:5b88d5760320 2562 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>
kenjiArai 0:5b88d5760320 2563 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);
kenjiArai 0:5b88d5760320 2564
kenjiArai 0:5b88d5760320 2565 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2566 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2567 */
kenjiArai 0:5b88d5760320 2568 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>
kenjiArai 0:5b88d5760320 2569 Event<void(A0, A1, A2, A3)> event(mbed::Callback<R(B0, B1, B2, B3, A0, A1, A2, A3)> cb, C0 c0, C1 c1, C2 c2, C3 c3);
kenjiArai 0:5b88d5760320 2570
kenjiArai 0:5b88d5760320 2571 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2572 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2573 */
kenjiArai 0:5b88d5760320 2574 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>
kenjiArai 0:5b88d5760320 2575 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);
kenjiArai 0:5b88d5760320 2576
kenjiArai 0:5b88d5760320 2577 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2578 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2579 */
kenjiArai 0:5b88d5760320 2580 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>
kenjiArai 0:5b88d5760320 2581 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);
kenjiArai 0:5b88d5760320 2582
kenjiArai 0:5b88d5760320 2583 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2584 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2585 */
kenjiArai 0:5b88d5760320 2586 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>
kenjiArai 0:5b88d5760320 2587 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);
kenjiArai 0:5b88d5760320 2588
kenjiArai 0:5b88d5760320 2589 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2590 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2591 */
kenjiArai 0:5b88d5760320 2592 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>
kenjiArai 0:5b88d5760320 2593 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);
kenjiArai 0:5b88d5760320 2594
kenjiArai 0:5b88d5760320 2595 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2596 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2597 */
kenjiArai 0:5b88d5760320 2598 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>
kenjiArai 0:5b88d5760320 2599 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);
kenjiArai 0:5b88d5760320 2600
kenjiArai 0:5b88d5760320 2601 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2602 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2603 */
kenjiArai 0:5b88d5760320 2604 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>
kenjiArai 0:5b88d5760320 2605 Event<void(A0, A1, A2, A3)> event(mbed::Callback<R(B0, B1, B2, B3, B4, A0, A1, A2, A3)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
kenjiArai 0:5b88d5760320 2606
kenjiArai 0:5b88d5760320 2607 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2608 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2609 */
kenjiArai 0:5b88d5760320 2610 template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 2611 Event<void(A0, A1, A2, A3, A4)> event(R(*func)(A0, A1, A2, A3, A4));
kenjiArai 0:5b88d5760320 2612
kenjiArai 0:5b88d5760320 2613 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2614 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2615 */
kenjiArai 0:5b88d5760320 2616 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 2617 Event<void(A0, A1, A2, A3, A4)> event(T *obj, R(T::*method)(A0, A1, A2, A3, A4));
kenjiArai 0:5b88d5760320 2618
kenjiArai 0:5b88d5760320 2619 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2620 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2621 */
kenjiArai 0:5b88d5760320 2622 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 2623 Event<void(A0, A1, A2, A3, A4)> event(const T *obj, R(T::*method)(A0, A1, A2, A3, A4) const);
kenjiArai 0:5b88d5760320 2624
kenjiArai 0:5b88d5760320 2625 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2626 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2627 */
kenjiArai 0:5b88d5760320 2628 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 2629 Event<void(A0, A1, A2, A3, A4)> event(volatile T *obj, R(T::*method)(A0, A1, A2, A3, A4) volatile);
kenjiArai 0:5b88d5760320 2630
kenjiArai 0:5b88d5760320 2631 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2632 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2633 */
kenjiArai 0:5b88d5760320 2634 template <typename T, typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 2635 Event<void(A0, A1, A2, A3, A4)> event(const volatile T *obj, R(T::*method)(A0, A1, A2, A3, A4) const volatile);
kenjiArai 0:5b88d5760320 2636
kenjiArai 0:5b88d5760320 2637 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2638 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2639 */
kenjiArai 0:5b88d5760320 2640 template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 2641 Event<void(A0, A1, A2, A3, A4)> event(mbed::Callback<R(A0, A1, A2, A3, A4)> cb);
kenjiArai 0:5b88d5760320 2642
kenjiArai 0:5b88d5760320 2643 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2644 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2645 */
kenjiArai 0:5b88d5760320 2646 template <typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 2647 Event<void(A0, A1, A2, A3, A4)> event(R(*func)(B0, A0, A1, A2, A3, A4), C0 c0);
kenjiArai 0:5b88d5760320 2648
kenjiArai 0:5b88d5760320 2649 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2650 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2651 */
kenjiArai 0:5b88d5760320 2652 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 2653 Event<void(A0, A1, A2, A3, A4)> event(T *obj, R(T::*method)(B0, A0, A1, A2, A3, A4), C0 c0);
kenjiArai 0:5b88d5760320 2654
kenjiArai 0:5b88d5760320 2655 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2656 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2657 */
kenjiArai 0:5b88d5760320 2658 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 2659 Event<void(A0, A1, A2, A3, A4)> event(const T *obj, R(T::*method)(B0, A0, A1, A2, A3, A4) const, C0 c0);
kenjiArai 0:5b88d5760320 2660
kenjiArai 0:5b88d5760320 2661 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2662 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2663 */
kenjiArai 0:5b88d5760320 2664 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 2665 Event<void(A0, A1, A2, A3, A4)> event(volatile T *obj, R(T::*method)(B0, A0, A1, A2, A3, A4) volatile, C0 c0);
kenjiArai 0:5b88d5760320 2666
kenjiArai 0:5b88d5760320 2667 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2668 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2669 */
kenjiArai 0:5b88d5760320 2670 template <typename T, typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 2671 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);
kenjiArai 0:5b88d5760320 2672
kenjiArai 0:5b88d5760320 2673 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2674 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2675 */
kenjiArai 0:5b88d5760320 2676 template <typename R, typename B0, typename C0, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 2677 Event<void(A0, A1, A2, A3, A4)> event(mbed::Callback<R(B0, A0, A1, A2, A3, A4)> cb, C0 c0);
kenjiArai 0:5b88d5760320 2678
kenjiArai 0:5b88d5760320 2679 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2680 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2681 */
kenjiArai 0:5b88d5760320 2682 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 2683 Event<void(A0, A1, A2, A3, A4)> event(R(*func)(B0, B1, A0, A1, A2, A3, A4), C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2684
kenjiArai 0:5b88d5760320 2685 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2686 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2687 */
kenjiArai 0:5b88d5760320 2688 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 2689 Event<void(A0, A1, A2, A3, A4)> event(T *obj, R(T::*method)(B0, B1, A0, A1, A2, A3, A4), C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2690
kenjiArai 0:5b88d5760320 2691 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2692 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2693 */
kenjiArai 0:5b88d5760320 2694 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 2695 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);
kenjiArai 0:5b88d5760320 2696
kenjiArai 0:5b88d5760320 2697 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2698 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2699 */
kenjiArai 0:5b88d5760320 2700 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 2701 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);
kenjiArai 0:5b88d5760320 2702
kenjiArai 0:5b88d5760320 2703 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2704 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2705 */
kenjiArai 0:5b88d5760320 2706 template <typename T, typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 2707 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);
kenjiArai 0:5b88d5760320 2708
kenjiArai 0:5b88d5760320 2709 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2710 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2711 */
kenjiArai 0:5b88d5760320 2712 template <typename R, typename B0, typename B1, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 2713 Event<void(A0, A1, A2, A3, A4)> event(mbed::Callback<R(B0, B1, A0, A1, A2, A3, A4)> cb, C0 c0, C1 c1);
kenjiArai 0:5b88d5760320 2714
kenjiArai 0:5b88d5760320 2715 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2716 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2717 */
kenjiArai 0:5b88d5760320 2718 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>
kenjiArai 0:5b88d5760320 2719 Event<void(A0, A1, A2, A3, A4)> event(R(*func)(B0, B1, B2, A0, A1, A2, A3, A4), C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 2720
kenjiArai 0:5b88d5760320 2721 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2722 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2723 */
kenjiArai 0:5b88d5760320 2724 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>
kenjiArai 0:5b88d5760320 2725 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);
kenjiArai 0:5b88d5760320 2726
kenjiArai 0:5b88d5760320 2727 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2728 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2729 */
kenjiArai 0:5b88d5760320 2730 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>
kenjiArai 0:5b88d5760320 2731 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);
kenjiArai 0:5b88d5760320 2732
kenjiArai 0:5b88d5760320 2733 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2734 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2735 */
kenjiArai 0:5b88d5760320 2736 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>
kenjiArai 0:5b88d5760320 2737 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);
kenjiArai 0:5b88d5760320 2738
kenjiArai 0:5b88d5760320 2739 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2740 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2741 */
kenjiArai 0:5b88d5760320 2742 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>
kenjiArai 0:5b88d5760320 2743 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);
kenjiArai 0:5b88d5760320 2744
kenjiArai 0:5b88d5760320 2745 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2746 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2747 */
kenjiArai 0:5b88d5760320 2748 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>
kenjiArai 0:5b88d5760320 2749 Event<void(A0, A1, A2, A3, A4)> event(mbed::Callback<R(B0, B1, B2, A0, A1, A2, A3, A4)> cb, C0 c0, C1 c1, C2 c2);
kenjiArai 0:5b88d5760320 2750
kenjiArai 0:5b88d5760320 2751 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2752 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2753 */
kenjiArai 0:5b88d5760320 2754 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>
kenjiArai 0:5b88d5760320 2755 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);
kenjiArai 0:5b88d5760320 2756
kenjiArai 0:5b88d5760320 2757 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2758 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2759 */
kenjiArai 0:5b88d5760320 2760 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>
kenjiArai 0:5b88d5760320 2761 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);
kenjiArai 0:5b88d5760320 2762
kenjiArai 0:5b88d5760320 2763 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2764 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2765 */
kenjiArai 0:5b88d5760320 2766 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>
kenjiArai 0:5b88d5760320 2767 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);
kenjiArai 0:5b88d5760320 2768
kenjiArai 0:5b88d5760320 2769 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2770 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2771 */
kenjiArai 0:5b88d5760320 2772 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>
kenjiArai 0:5b88d5760320 2773 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);
kenjiArai 0:5b88d5760320 2774
kenjiArai 0:5b88d5760320 2775 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2776 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2777 */
kenjiArai 0:5b88d5760320 2778 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>
kenjiArai 0:5b88d5760320 2779 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);
kenjiArai 0:5b88d5760320 2780
kenjiArai 0:5b88d5760320 2781 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2782 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2783 */
kenjiArai 0:5b88d5760320 2784 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>
kenjiArai 0:5b88d5760320 2785 Event<void(A0, A1, A2, A3, A4)> event(mbed::Callback<R(B0, B1, B2, B3, A0, A1, A2, A3, A4)> cb, C0 c0, C1 c1, C2 c2, C3 c3);
kenjiArai 0:5b88d5760320 2786
kenjiArai 0:5b88d5760320 2787 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2788 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2789 */
kenjiArai 0:5b88d5760320 2790 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>
kenjiArai 0:5b88d5760320 2791 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);
kenjiArai 0:5b88d5760320 2792
kenjiArai 0:5b88d5760320 2793 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2794 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2795 */
kenjiArai 0:5b88d5760320 2796 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>
kenjiArai 0:5b88d5760320 2797 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);
kenjiArai 0:5b88d5760320 2798
kenjiArai 0:5b88d5760320 2799 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2800 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2801 */
kenjiArai 0:5b88d5760320 2802 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>
kenjiArai 0:5b88d5760320 2803 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);
kenjiArai 0:5b88d5760320 2804
kenjiArai 0:5b88d5760320 2805 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2806 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2807 */
kenjiArai 0:5b88d5760320 2808 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>
kenjiArai 0:5b88d5760320 2809 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);
kenjiArai 0:5b88d5760320 2810
kenjiArai 0:5b88d5760320 2811 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2812 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2813 */
kenjiArai 0:5b88d5760320 2814 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>
kenjiArai 0:5b88d5760320 2815 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);
kenjiArai 0:5b88d5760320 2816
kenjiArai 0:5b88d5760320 2817 /** Creates an event bound to the event queue
kenjiArai 0:5b88d5760320 2818 * @see EventQueue::event
kenjiArai 0:5b88d5760320 2819 */
kenjiArai 0:5b88d5760320 2820 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>
kenjiArai 0:5b88d5760320 2821 Event<void(A0, A1, A2, A3, A4)> event(mbed::Callback<R(B0, B1, B2, B3, B4, A0, A1, A2, A3, A4)> cb, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4);
kenjiArai 0:5b88d5760320 2822 #endif
kenjiArai 0:5b88d5760320 2823
kenjiArai 0:5b88d5760320 2824 protected:
kenjiArai 0:5b88d5760320 2825 #if !defined(DOXYGEN_ONLY)
kenjiArai 0:5b88d5760320 2826 template <typename F>
kenjiArai 0:5b88d5760320 2827 friend class Event;
kenjiArai 0:5b88d5760320 2828 struct equeue _equeue;
kenjiArai 0:5b88d5760320 2829 mbed::Callback<void(int)> _update;
kenjiArai 0:5b88d5760320 2830
kenjiArai 0:5b88d5760320 2831 // Function attributes
kenjiArai 0:5b88d5760320 2832 template <typename F>
kenjiArai 0:5b88d5760320 2833 static void function_call(void *p)
kenjiArai 0:5b88d5760320 2834 {
kenjiArai 0:5b88d5760320 2835 (*(F *)p)();
kenjiArai 0:5b88d5760320 2836 }
kenjiArai 0:5b88d5760320 2837
kenjiArai 0:5b88d5760320 2838 template <typename F>
kenjiArai 0:5b88d5760320 2839 static void function_dtor(void *p)
kenjiArai 0:5b88d5760320 2840 {
kenjiArai 0:5b88d5760320 2841 ((F *)p)->~F();
kenjiArai 0:5b88d5760320 2842 }
kenjiArai 0:5b88d5760320 2843
kenjiArai 0:5b88d5760320 2844 // Context structures
kenjiArai 0:5b88d5760320 2845 template <typename F>
kenjiArai 0:5b88d5760320 2846 struct context00 {
kenjiArai 0:5b88d5760320 2847 F f;
kenjiArai 0:5b88d5760320 2848
kenjiArai 0:5b88d5760320 2849 context00(F f)
kenjiArai 0:5b88d5760320 2850 : f(f) {}
kenjiArai 0:5b88d5760320 2851
kenjiArai 0:5b88d5760320 2852 void operator()()
kenjiArai 0:5b88d5760320 2853 {
kenjiArai 0:5b88d5760320 2854 f();
kenjiArai 0:5b88d5760320 2855 }
kenjiArai 0:5b88d5760320 2856 };
kenjiArai 0:5b88d5760320 2857
kenjiArai 0:5b88d5760320 2858 template <typename F, typename C0>
kenjiArai 0:5b88d5760320 2859 struct context10 {
kenjiArai 0:5b88d5760320 2860 F f;
kenjiArai 0:5b88d5760320 2861 C0 c0;
kenjiArai 0:5b88d5760320 2862
kenjiArai 0:5b88d5760320 2863 context10(F f, C0 c0)
kenjiArai 0:5b88d5760320 2864 : f(f), c0(c0) {}
kenjiArai 0:5b88d5760320 2865
kenjiArai 0:5b88d5760320 2866 void operator()()
kenjiArai 0:5b88d5760320 2867 {
kenjiArai 0:5b88d5760320 2868 f(c0);
kenjiArai 0:5b88d5760320 2869 }
kenjiArai 0:5b88d5760320 2870 };
kenjiArai 0:5b88d5760320 2871
kenjiArai 0:5b88d5760320 2872 template <typename F, typename C0, typename C1>
kenjiArai 0:5b88d5760320 2873 struct context20 {
kenjiArai 0:5b88d5760320 2874 F f;
kenjiArai 0:5b88d5760320 2875 C0 c0;
kenjiArai 0:5b88d5760320 2876 C1 c1;
kenjiArai 0:5b88d5760320 2877
kenjiArai 0:5b88d5760320 2878 context20(F f, C0 c0, C1 c1)
kenjiArai 0:5b88d5760320 2879 : f(f), c0(c0), c1(c1) {}
kenjiArai 0:5b88d5760320 2880
kenjiArai 0:5b88d5760320 2881 void operator()()
kenjiArai 0:5b88d5760320 2882 {
kenjiArai 0:5b88d5760320 2883 f(c0, c1);
kenjiArai 0:5b88d5760320 2884 }
kenjiArai 0:5b88d5760320 2885 };
kenjiArai 0:5b88d5760320 2886
kenjiArai 0:5b88d5760320 2887 template <typename F, typename C0, typename C1, typename C2>
kenjiArai 0:5b88d5760320 2888 struct context30 {
kenjiArai 0:5b88d5760320 2889 F f;
kenjiArai 0:5b88d5760320 2890 C0 c0;
kenjiArai 0:5b88d5760320 2891 C1 c1;
kenjiArai 0:5b88d5760320 2892 C2 c2;
kenjiArai 0:5b88d5760320 2893
kenjiArai 0:5b88d5760320 2894 context30(F f, C0 c0, C1 c1, C2 c2)
kenjiArai 0:5b88d5760320 2895 : f(f), c0(c0), c1(c1), c2(c2) {}
kenjiArai 0:5b88d5760320 2896
kenjiArai 0:5b88d5760320 2897 void operator()()
kenjiArai 0:5b88d5760320 2898 {
kenjiArai 0:5b88d5760320 2899 f(c0, c1, c2);
kenjiArai 0:5b88d5760320 2900 }
kenjiArai 0:5b88d5760320 2901 };
kenjiArai 0:5b88d5760320 2902
kenjiArai 0:5b88d5760320 2903 template <typename F, typename C0, typename C1, typename C2, typename C3>
kenjiArai 0:5b88d5760320 2904 struct context40 {
kenjiArai 0:5b88d5760320 2905 F f;
kenjiArai 0:5b88d5760320 2906 C0 c0;
kenjiArai 0:5b88d5760320 2907 C1 c1;
kenjiArai 0:5b88d5760320 2908 C2 c2;
kenjiArai 0:5b88d5760320 2909 C3 c3;
kenjiArai 0:5b88d5760320 2910
kenjiArai 0:5b88d5760320 2911 context40(F f, C0 c0, C1 c1, C2 c2, C3 c3)
kenjiArai 0:5b88d5760320 2912 : f(f), c0(c0), c1(c1), c2(c2), c3(c3) {}
kenjiArai 0:5b88d5760320 2913
kenjiArai 0:5b88d5760320 2914 void operator()()
kenjiArai 0:5b88d5760320 2915 {
kenjiArai 0:5b88d5760320 2916 f(c0, c1, c2, c3);
kenjiArai 0:5b88d5760320 2917 }
kenjiArai 0:5b88d5760320 2918 };
kenjiArai 0:5b88d5760320 2919
kenjiArai 0:5b88d5760320 2920 template <typename F, typename C0, typename C1, typename C2, typename C3, typename C4>
kenjiArai 0:5b88d5760320 2921 struct context50 {
kenjiArai 0:5b88d5760320 2922 F f;
kenjiArai 0:5b88d5760320 2923 C0 c0;
kenjiArai 0:5b88d5760320 2924 C1 c1;
kenjiArai 0:5b88d5760320 2925 C2 c2;
kenjiArai 0:5b88d5760320 2926 C3 c3;
kenjiArai 0:5b88d5760320 2927 C4 c4;
kenjiArai 0:5b88d5760320 2928
kenjiArai 0:5b88d5760320 2929 context50(F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
kenjiArai 0:5b88d5760320 2930 : f(f), c0(c0), c1(c1), c2(c2), c3(c3), c4(c4) {}
kenjiArai 0:5b88d5760320 2931
kenjiArai 0:5b88d5760320 2932 void operator()()
kenjiArai 0:5b88d5760320 2933 {
kenjiArai 0:5b88d5760320 2934 f(c0, c1, c2, c3, c4);
kenjiArai 0:5b88d5760320 2935 }
kenjiArai 0:5b88d5760320 2936 };
kenjiArai 0:5b88d5760320 2937
kenjiArai 0:5b88d5760320 2938 template <typename F, typename A0>
kenjiArai 0:5b88d5760320 2939 struct context01 {
kenjiArai 0:5b88d5760320 2940 F f;
kenjiArai 0:5b88d5760320 2941
kenjiArai 0:5b88d5760320 2942 context01(F f)
kenjiArai 0:5b88d5760320 2943 : f(f) {}
kenjiArai 0:5b88d5760320 2944
kenjiArai 0:5b88d5760320 2945 void operator()(A0 a0)
kenjiArai 0:5b88d5760320 2946 {
kenjiArai 0:5b88d5760320 2947 f(a0);
kenjiArai 0:5b88d5760320 2948 }
kenjiArai 0:5b88d5760320 2949 };
kenjiArai 0:5b88d5760320 2950
kenjiArai 0:5b88d5760320 2951 template <typename F, typename C0, typename A0>
kenjiArai 0:5b88d5760320 2952 struct context11 {
kenjiArai 0:5b88d5760320 2953 F f;
kenjiArai 0:5b88d5760320 2954 C0 c0;
kenjiArai 0:5b88d5760320 2955
kenjiArai 0:5b88d5760320 2956 context11(F f, C0 c0)
kenjiArai 0:5b88d5760320 2957 : f(f), c0(c0) {}
kenjiArai 0:5b88d5760320 2958
kenjiArai 0:5b88d5760320 2959 void operator()(A0 a0)
kenjiArai 0:5b88d5760320 2960 {
kenjiArai 0:5b88d5760320 2961 f(c0, a0);
kenjiArai 0:5b88d5760320 2962 }
kenjiArai 0:5b88d5760320 2963 };
kenjiArai 0:5b88d5760320 2964
kenjiArai 0:5b88d5760320 2965 template <typename F, typename C0, typename C1, typename A0>
kenjiArai 0:5b88d5760320 2966 struct context21 {
kenjiArai 0:5b88d5760320 2967 F f;
kenjiArai 0:5b88d5760320 2968 C0 c0;
kenjiArai 0:5b88d5760320 2969 C1 c1;
kenjiArai 0:5b88d5760320 2970
kenjiArai 0:5b88d5760320 2971 context21(F f, C0 c0, C1 c1)
kenjiArai 0:5b88d5760320 2972 : f(f), c0(c0), c1(c1) {}
kenjiArai 0:5b88d5760320 2973
kenjiArai 0:5b88d5760320 2974 void operator()(A0 a0)
kenjiArai 0:5b88d5760320 2975 {
kenjiArai 0:5b88d5760320 2976 f(c0, c1, a0);
kenjiArai 0:5b88d5760320 2977 }
kenjiArai 0:5b88d5760320 2978 };
kenjiArai 0:5b88d5760320 2979
kenjiArai 0:5b88d5760320 2980 template <typename F, typename C0, typename C1, typename C2, typename A0>
kenjiArai 0:5b88d5760320 2981 struct context31 {
kenjiArai 0:5b88d5760320 2982 F f;
kenjiArai 0:5b88d5760320 2983 C0 c0;
kenjiArai 0:5b88d5760320 2984 C1 c1;
kenjiArai 0:5b88d5760320 2985 C2 c2;
kenjiArai 0:5b88d5760320 2986
kenjiArai 0:5b88d5760320 2987 context31(F f, C0 c0, C1 c1, C2 c2)
kenjiArai 0:5b88d5760320 2988 : f(f), c0(c0), c1(c1), c2(c2) {}
kenjiArai 0:5b88d5760320 2989
kenjiArai 0:5b88d5760320 2990 void operator()(A0 a0)
kenjiArai 0:5b88d5760320 2991 {
kenjiArai 0:5b88d5760320 2992 f(c0, c1, c2, a0);
kenjiArai 0:5b88d5760320 2993 }
kenjiArai 0:5b88d5760320 2994 };
kenjiArai 0:5b88d5760320 2995
kenjiArai 0:5b88d5760320 2996 template <typename F, typename C0, typename C1, typename C2, typename C3, typename A0>
kenjiArai 0:5b88d5760320 2997 struct context41 {
kenjiArai 0:5b88d5760320 2998 F f;
kenjiArai 0:5b88d5760320 2999 C0 c0;
kenjiArai 0:5b88d5760320 3000 C1 c1;
kenjiArai 0:5b88d5760320 3001 C2 c2;
kenjiArai 0:5b88d5760320 3002 C3 c3;
kenjiArai 0:5b88d5760320 3003
kenjiArai 0:5b88d5760320 3004 context41(F f, C0 c0, C1 c1, C2 c2, C3 c3)
kenjiArai 0:5b88d5760320 3005 : f(f), c0(c0), c1(c1), c2(c2), c3(c3) {}
kenjiArai 0:5b88d5760320 3006
kenjiArai 0:5b88d5760320 3007 void operator()(A0 a0)
kenjiArai 0:5b88d5760320 3008 {
kenjiArai 0:5b88d5760320 3009 f(c0, c1, c2, c3, a0);
kenjiArai 0:5b88d5760320 3010 }
kenjiArai 0:5b88d5760320 3011 };
kenjiArai 0:5b88d5760320 3012
kenjiArai 0:5b88d5760320 3013 template <typename F, typename C0, typename C1, typename C2, typename C3, typename C4, typename A0>
kenjiArai 0:5b88d5760320 3014 struct context51 {
kenjiArai 0:5b88d5760320 3015 F f;
kenjiArai 0:5b88d5760320 3016 C0 c0;
kenjiArai 0:5b88d5760320 3017 C1 c1;
kenjiArai 0:5b88d5760320 3018 C2 c2;
kenjiArai 0:5b88d5760320 3019 C3 c3;
kenjiArai 0:5b88d5760320 3020 C4 c4;
kenjiArai 0:5b88d5760320 3021
kenjiArai 0:5b88d5760320 3022 context51(F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
kenjiArai 0:5b88d5760320 3023 : f(f), c0(c0), c1(c1), c2(c2), c3(c3), c4(c4) {}
kenjiArai 0:5b88d5760320 3024
kenjiArai 0:5b88d5760320 3025 void operator()(A0 a0)
kenjiArai 0:5b88d5760320 3026 {
kenjiArai 0:5b88d5760320 3027 f(c0, c1, c2, c3, c4, a0);
kenjiArai 0:5b88d5760320 3028 }
kenjiArai 0:5b88d5760320 3029 };
kenjiArai 0:5b88d5760320 3030
kenjiArai 0:5b88d5760320 3031 template <typename F, typename A0, typename A1>
kenjiArai 0:5b88d5760320 3032 struct context02 {
kenjiArai 0:5b88d5760320 3033 F f;
kenjiArai 0:5b88d5760320 3034
kenjiArai 0:5b88d5760320 3035 context02(F f)
kenjiArai 0:5b88d5760320 3036 : f(f) {}
kenjiArai 0:5b88d5760320 3037
kenjiArai 0:5b88d5760320 3038 void operator()(A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 3039 {
kenjiArai 0:5b88d5760320 3040 f(a0, a1);
kenjiArai 0:5b88d5760320 3041 }
kenjiArai 0:5b88d5760320 3042 };
kenjiArai 0:5b88d5760320 3043
kenjiArai 0:5b88d5760320 3044 template <typename F, typename C0, typename A0, typename A1>
kenjiArai 0:5b88d5760320 3045 struct context12 {
kenjiArai 0:5b88d5760320 3046 F f;
kenjiArai 0:5b88d5760320 3047 C0 c0;
kenjiArai 0:5b88d5760320 3048
kenjiArai 0:5b88d5760320 3049 context12(F f, C0 c0)
kenjiArai 0:5b88d5760320 3050 : f(f), c0(c0) {}
kenjiArai 0:5b88d5760320 3051
kenjiArai 0:5b88d5760320 3052 void operator()(A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 3053 {
kenjiArai 0:5b88d5760320 3054 f(c0, a0, a1);
kenjiArai 0:5b88d5760320 3055 }
kenjiArai 0:5b88d5760320 3056 };
kenjiArai 0:5b88d5760320 3057
kenjiArai 0:5b88d5760320 3058 template <typename F, typename C0, typename C1, typename A0, typename A1>
kenjiArai 0:5b88d5760320 3059 struct context22 {
kenjiArai 0:5b88d5760320 3060 F f;
kenjiArai 0:5b88d5760320 3061 C0 c0;
kenjiArai 0:5b88d5760320 3062 C1 c1;
kenjiArai 0:5b88d5760320 3063
kenjiArai 0:5b88d5760320 3064 context22(F f, C0 c0, C1 c1)
kenjiArai 0:5b88d5760320 3065 : f(f), c0(c0), c1(c1) {}
kenjiArai 0:5b88d5760320 3066
kenjiArai 0:5b88d5760320 3067 void operator()(A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 3068 {
kenjiArai 0:5b88d5760320 3069 f(c0, c1, a0, a1);
kenjiArai 0:5b88d5760320 3070 }
kenjiArai 0:5b88d5760320 3071 };
kenjiArai 0:5b88d5760320 3072
kenjiArai 0:5b88d5760320 3073 template <typename F, typename C0, typename C1, typename C2, typename A0, typename A1>
kenjiArai 0:5b88d5760320 3074 struct context32 {
kenjiArai 0:5b88d5760320 3075 F f;
kenjiArai 0:5b88d5760320 3076 C0 c0;
kenjiArai 0:5b88d5760320 3077 C1 c1;
kenjiArai 0:5b88d5760320 3078 C2 c2;
kenjiArai 0:5b88d5760320 3079
kenjiArai 0:5b88d5760320 3080 context32(F f, C0 c0, C1 c1, C2 c2)
kenjiArai 0:5b88d5760320 3081 : f(f), c0(c0), c1(c1), c2(c2) {}
kenjiArai 0:5b88d5760320 3082
kenjiArai 0:5b88d5760320 3083 void operator()(A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 3084 {
kenjiArai 0:5b88d5760320 3085 f(c0, c1, c2, a0, a1);
kenjiArai 0:5b88d5760320 3086 }
kenjiArai 0:5b88d5760320 3087 };
kenjiArai 0:5b88d5760320 3088
kenjiArai 0:5b88d5760320 3089 template <typename F, typename C0, typename C1, typename C2, typename C3, typename A0, typename A1>
kenjiArai 0:5b88d5760320 3090 struct context42 {
kenjiArai 0:5b88d5760320 3091 F f;
kenjiArai 0:5b88d5760320 3092 C0 c0;
kenjiArai 0:5b88d5760320 3093 C1 c1;
kenjiArai 0:5b88d5760320 3094 C2 c2;
kenjiArai 0:5b88d5760320 3095 C3 c3;
kenjiArai 0:5b88d5760320 3096
kenjiArai 0:5b88d5760320 3097 context42(F f, C0 c0, C1 c1, C2 c2, C3 c3)
kenjiArai 0:5b88d5760320 3098 : f(f), c0(c0), c1(c1), c2(c2), c3(c3) {}
kenjiArai 0:5b88d5760320 3099
kenjiArai 0:5b88d5760320 3100 void operator()(A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 3101 {
kenjiArai 0:5b88d5760320 3102 f(c0, c1, c2, c3, a0, a1);
kenjiArai 0:5b88d5760320 3103 }
kenjiArai 0:5b88d5760320 3104 };
kenjiArai 0:5b88d5760320 3105
kenjiArai 0:5b88d5760320 3106 template <typename F, typename C0, typename C1, typename C2, typename C3, typename C4, typename A0, typename A1>
kenjiArai 0:5b88d5760320 3107 struct context52 {
kenjiArai 0:5b88d5760320 3108 F f;
kenjiArai 0:5b88d5760320 3109 C0 c0;
kenjiArai 0:5b88d5760320 3110 C1 c1;
kenjiArai 0:5b88d5760320 3111 C2 c2;
kenjiArai 0:5b88d5760320 3112 C3 c3;
kenjiArai 0:5b88d5760320 3113 C4 c4;
kenjiArai 0:5b88d5760320 3114
kenjiArai 0:5b88d5760320 3115 context52(F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
kenjiArai 0:5b88d5760320 3116 : f(f), c0(c0), c1(c1), c2(c2), c3(c3), c4(c4) {}
kenjiArai 0:5b88d5760320 3117
kenjiArai 0:5b88d5760320 3118 void operator()(A0 a0, A1 a1)
kenjiArai 0:5b88d5760320 3119 {
kenjiArai 0:5b88d5760320 3120 f(c0, c1, c2, c3, c4, a0, a1);
kenjiArai 0:5b88d5760320 3121 }
kenjiArai 0:5b88d5760320 3122 };
kenjiArai 0:5b88d5760320 3123
kenjiArai 0:5b88d5760320 3124 template <typename F, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 3125 struct context03 {
kenjiArai 0:5b88d5760320 3126 F f;
kenjiArai 0:5b88d5760320 3127
kenjiArai 0:5b88d5760320 3128 context03(F f)
kenjiArai 0:5b88d5760320 3129 : f(f) {}
kenjiArai 0:5b88d5760320 3130
kenjiArai 0:5b88d5760320 3131 void operator()(A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 3132 {
kenjiArai 0:5b88d5760320 3133 f(a0, a1, a2);
kenjiArai 0:5b88d5760320 3134 }
kenjiArai 0:5b88d5760320 3135 };
kenjiArai 0:5b88d5760320 3136
kenjiArai 0:5b88d5760320 3137 template <typename F, typename C0, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 3138 struct context13 {
kenjiArai 0:5b88d5760320 3139 F f;
kenjiArai 0:5b88d5760320 3140 C0 c0;
kenjiArai 0:5b88d5760320 3141
kenjiArai 0:5b88d5760320 3142 context13(F f, C0 c0)
kenjiArai 0:5b88d5760320 3143 : f(f), c0(c0) {}
kenjiArai 0:5b88d5760320 3144
kenjiArai 0:5b88d5760320 3145 void operator()(A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 3146 {
kenjiArai 0:5b88d5760320 3147 f(c0, a0, a1, a2);
kenjiArai 0:5b88d5760320 3148 }
kenjiArai 0:5b88d5760320 3149 };
kenjiArai 0:5b88d5760320 3150
kenjiArai 0:5b88d5760320 3151 template <typename F, typename C0, typename C1, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 3152 struct context23 {
kenjiArai 0:5b88d5760320 3153 F f;
kenjiArai 0:5b88d5760320 3154 C0 c0;
kenjiArai 0:5b88d5760320 3155 C1 c1;
kenjiArai 0:5b88d5760320 3156
kenjiArai 0:5b88d5760320 3157 context23(F f, C0 c0, C1 c1)
kenjiArai 0:5b88d5760320 3158 : f(f), c0(c0), c1(c1) {}
kenjiArai 0:5b88d5760320 3159
kenjiArai 0:5b88d5760320 3160 void operator()(A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 3161 {
kenjiArai 0:5b88d5760320 3162 f(c0, c1, a0, a1, a2);
kenjiArai 0:5b88d5760320 3163 }
kenjiArai 0:5b88d5760320 3164 };
kenjiArai 0:5b88d5760320 3165
kenjiArai 0:5b88d5760320 3166 template <typename F, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 3167 struct context33 {
kenjiArai 0:5b88d5760320 3168 F f;
kenjiArai 0:5b88d5760320 3169 C0 c0;
kenjiArai 0:5b88d5760320 3170 C1 c1;
kenjiArai 0:5b88d5760320 3171 C2 c2;
kenjiArai 0:5b88d5760320 3172
kenjiArai 0:5b88d5760320 3173 context33(F f, C0 c0, C1 c1, C2 c2)
kenjiArai 0:5b88d5760320 3174 : f(f), c0(c0), c1(c1), c2(c2) {}
kenjiArai 0:5b88d5760320 3175
kenjiArai 0:5b88d5760320 3176 void operator()(A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 3177 {
kenjiArai 0:5b88d5760320 3178 f(c0, c1, c2, a0, a1, a2);
kenjiArai 0:5b88d5760320 3179 }
kenjiArai 0:5b88d5760320 3180 };
kenjiArai 0:5b88d5760320 3181
kenjiArai 0:5b88d5760320 3182 template <typename F, typename C0, typename C1, typename C2, typename C3, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 3183 struct context43 {
kenjiArai 0:5b88d5760320 3184 F f;
kenjiArai 0:5b88d5760320 3185 C0 c0;
kenjiArai 0:5b88d5760320 3186 C1 c1;
kenjiArai 0:5b88d5760320 3187 C2 c2;
kenjiArai 0:5b88d5760320 3188 C3 c3;
kenjiArai 0:5b88d5760320 3189
kenjiArai 0:5b88d5760320 3190 context43(F f, C0 c0, C1 c1, C2 c2, C3 c3)
kenjiArai 0:5b88d5760320 3191 : f(f), c0(c0), c1(c1), c2(c2), c3(c3) {}
kenjiArai 0:5b88d5760320 3192
kenjiArai 0:5b88d5760320 3193 void operator()(A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 3194 {
kenjiArai 0:5b88d5760320 3195 f(c0, c1, c2, c3, a0, a1, a2);
kenjiArai 0:5b88d5760320 3196 }
kenjiArai 0:5b88d5760320 3197 };
kenjiArai 0:5b88d5760320 3198
kenjiArai 0:5b88d5760320 3199 template <typename F, typename C0, typename C1, typename C2, typename C3, typename C4, typename A0, typename A1, typename A2>
kenjiArai 0:5b88d5760320 3200 struct context53 {
kenjiArai 0:5b88d5760320 3201 F f;
kenjiArai 0:5b88d5760320 3202 C0 c0;
kenjiArai 0:5b88d5760320 3203 C1 c1;
kenjiArai 0:5b88d5760320 3204 C2 c2;
kenjiArai 0:5b88d5760320 3205 C3 c3;
kenjiArai 0:5b88d5760320 3206 C4 c4;
kenjiArai 0:5b88d5760320 3207
kenjiArai 0:5b88d5760320 3208 context53(F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
kenjiArai 0:5b88d5760320 3209 : f(f), c0(c0), c1(c1), c2(c2), c3(c3), c4(c4) {}
kenjiArai 0:5b88d5760320 3210
kenjiArai 0:5b88d5760320 3211 void operator()(A0 a0, A1 a1, A2 a2)
kenjiArai 0:5b88d5760320 3212 {
kenjiArai 0:5b88d5760320 3213 f(c0, c1, c2, c3, c4, a0, a1, a2);
kenjiArai 0:5b88d5760320 3214 }
kenjiArai 0:5b88d5760320 3215 };
kenjiArai 0:5b88d5760320 3216
kenjiArai 0:5b88d5760320 3217 template <typename F, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 3218 struct context04 {
kenjiArai 0:5b88d5760320 3219 F f;
kenjiArai 0:5b88d5760320 3220
kenjiArai 0:5b88d5760320 3221 context04(F f)
kenjiArai 0:5b88d5760320 3222 : f(f) {}
kenjiArai 0:5b88d5760320 3223
kenjiArai 0:5b88d5760320 3224 void operator()(A0 a0, A1 a1, A2 a2, A3 a3)
kenjiArai 0:5b88d5760320 3225 {
kenjiArai 0:5b88d5760320 3226 f(a0, a1, a2, a3);
kenjiArai 0:5b88d5760320 3227 }
kenjiArai 0:5b88d5760320 3228 };
kenjiArai 0:5b88d5760320 3229
kenjiArai 0:5b88d5760320 3230 template <typename F, typename C0, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 3231 struct context14 {
kenjiArai 0:5b88d5760320 3232 F f;
kenjiArai 0:5b88d5760320 3233 C0 c0;
kenjiArai 0:5b88d5760320 3234
kenjiArai 0:5b88d5760320 3235 context14(F f, C0 c0)
kenjiArai 0:5b88d5760320 3236 : f(f), c0(c0) {}
kenjiArai 0:5b88d5760320 3237
kenjiArai 0:5b88d5760320 3238 void operator()(A0 a0, A1 a1, A2 a2, A3 a3)
kenjiArai 0:5b88d5760320 3239 {
kenjiArai 0:5b88d5760320 3240 f(c0, a0, a1, a2, a3);
kenjiArai 0:5b88d5760320 3241 }
kenjiArai 0:5b88d5760320 3242 };
kenjiArai 0:5b88d5760320 3243
kenjiArai 0:5b88d5760320 3244 template <typename F, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 3245 struct context24 {
kenjiArai 0:5b88d5760320 3246 F f;
kenjiArai 0:5b88d5760320 3247 C0 c0;
kenjiArai 0:5b88d5760320 3248 C1 c1;
kenjiArai 0:5b88d5760320 3249
kenjiArai 0:5b88d5760320 3250 context24(F f, C0 c0, C1 c1)
kenjiArai 0:5b88d5760320 3251 : f(f), c0(c0), c1(c1) {}
kenjiArai 0:5b88d5760320 3252
kenjiArai 0:5b88d5760320 3253 void operator()(A0 a0, A1 a1, A2 a2, A3 a3)
kenjiArai 0:5b88d5760320 3254 {
kenjiArai 0:5b88d5760320 3255 f(c0, c1, a0, a1, a2, a3);
kenjiArai 0:5b88d5760320 3256 }
kenjiArai 0:5b88d5760320 3257 };
kenjiArai 0:5b88d5760320 3258
kenjiArai 0:5b88d5760320 3259 template <typename F, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 3260 struct context34 {
kenjiArai 0:5b88d5760320 3261 F f;
kenjiArai 0:5b88d5760320 3262 C0 c0;
kenjiArai 0:5b88d5760320 3263 C1 c1;
kenjiArai 0:5b88d5760320 3264 C2 c2;
kenjiArai 0:5b88d5760320 3265
kenjiArai 0:5b88d5760320 3266 context34(F f, C0 c0, C1 c1, C2 c2)
kenjiArai 0:5b88d5760320 3267 : f(f), c0(c0), c1(c1), c2(c2) {}
kenjiArai 0:5b88d5760320 3268
kenjiArai 0:5b88d5760320 3269 void operator()(A0 a0, A1 a1, A2 a2, A3 a3)
kenjiArai 0:5b88d5760320 3270 {
kenjiArai 0:5b88d5760320 3271 f(c0, c1, c2, a0, a1, a2, a3);
kenjiArai 0:5b88d5760320 3272 }
kenjiArai 0:5b88d5760320 3273 };
kenjiArai 0:5b88d5760320 3274
kenjiArai 0:5b88d5760320 3275 template <typename F, typename C0, typename C1, typename C2, typename C3, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 3276 struct context44 {
kenjiArai 0:5b88d5760320 3277 F f;
kenjiArai 0:5b88d5760320 3278 C0 c0;
kenjiArai 0:5b88d5760320 3279 C1 c1;
kenjiArai 0:5b88d5760320 3280 C2 c2;
kenjiArai 0:5b88d5760320 3281 C3 c3;
kenjiArai 0:5b88d5760320 3282
kenjiArai 0:5b88d5760320 3283 context44(F f, C0 c0, C1 c1, C2 c2, C3 c3)
kenjiArai 0:5b88d5760320 3284 : f(f), c0(c0), c1(c1), c2(c2), c3(c3) {}
kenjiArai 0:5b88d5760320 3285
kenjiArai 0:5b88d5760320 3286 void operator()(A0 a0, A1 a1, A2 a2, A3 a3)
kenjiArai 0:5b88d5760320 3287 {
kenjiArai 0:5b88d5760320 3288 f(c0, c1, c2, c3, a0, a1, a2, a3);
kenjiArai 0:5b88d5760320 3289 }
kenjiArai 0:5b88d5760320 3290 };
kenjiArai 0:5b88d5760320 3291
kenjiArai 0:5b88d5760320 3292 template <typename F, typename C0, typename C1, typename C2, typename C3, typename C4, typename A0, typename A1, typename A2, typename A3>
kenjiArai 0:5b88d5760320 3293 struct context54 {
kenjiArai 0:5b88d5760320 3294 F f;
kenjiArai 0:5b88d5760320 3295 C0 c0;
kenjiArai 0:5b88d5760320 3296 C1 c1;
kenjiArai 0:5b88d5760320 3297 C2 c2;
kenjiArai 0:5b88d5760320 3298 C3 c3;
kenjiArai 0:5b88d5760320 3299 C4 c4;
kenjiArai 0:5b88d5760320 3300
kenjiArai 0:5b88d5760320 3301 context54(F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
kenjiArai 0:5b88d5760320 3302 : f(f), c0(c0), c1(c1), c2(c2), c3(c3), c4(c4) {}
kenjiArai 0:5b88d5760320 3303
kenjiArai 0:5b88d5760320 3304 void operator()(A0 a0, A1 a1, A2 a2, A3 a3)
kenjiArai 0:5b88d5760320 3305 {
kenjiArai 0:5b88d5760320 3306 f(c0, c1, c2, c3, c4, a0, a1, a2, a3);
kenjiArai 0:5b88d5760320 3307 }
kenjiArai 0:5b88d5760320 3308 };
kenjiArai 0:5b88d5760320 3309
kenjiArai 0:5b88d5760320 3310 template <typename F, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 3311 struct context05 {
kenjiArai 0:5b88d5760320 3312 F f;
kenjiArai 0:5b88d5760320 3313
kenjiArai 0:5b88d5760320 3314 context05(F f)
kenjiArai 0:5b88d5760320 3315 : f(f) {}
kenjiArai 0:5b88d5760320 3316
kenjiArai 0:5b88d5760320 3317 void operator()(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
kenjiArai 0:5b88d5760320 3318 {
kenjiArai 0:5b88d5760320 3319 f(a0, a1, a2, a3, a4);
kenjiArai 0:5b88d5760320 3320 }
kenjiArai 0:5b88d5760320 3321 };
kenjiArai 0:5b88d5760320 3322
kenjiArai 0:5b88d5760320 3323 template <typename F, typename C0, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 3324 struct context15 {
kenjiArai 0:5b88d5760320 3325 F f;
kenjiArai 0:5b88d5760320 3326 C0 c0;
kenjiArai 0:5b88d5760320 3327
kenjiArai 0:5b88d5760320 3328 context15(F f, C0 c0)
kenjiArai 0:5b88d5760320 3329 : f(f), c0(c0) {}
kenjiArai 0:5b88d5760320 3330
kenjiArai 0:5b88d5760320 3331 void operator()(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
kenjiArai 0:5b88d5760320 3332 {
kenjiArai 0:5b88d5760320 3333 f(c0, a0, a1, a2, a3, a4);
kenjiArai 0:5b88d5760320 3334 }
kenjiArai 0:5b88d5760320 3335 };
kenjiArai 0:5b88d5760320 3336
kenjiArai 0:5b88d5760320 3337 template <typename F, typename C0, typename C1, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 3338 struct context25 {
kenjiArai 0:5b88d5760320 3339 F f;
kenjiArai 0:5b88d5760320 3340 C0 c0;
kenjiArai 0:5b88d5760320 3341 C1 c1;
kenjiArai 0:5b88d5760320 3342
kenjiArai 0:5b88d5760320 3343 context25(F f, C0 c0, C1 c1)
kenjiArai 0:5b88d5760320 3344 : f(f), c0(c0), c1(c1) {}
kenjiArai 0:5b88d5760320 3345
kenjiArai 0:5b88d5760320 3346 void operator()(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
kenjiArai 0:5b88d5760320 3347 {
kenjiArai 0:5b88d5760320 3348 f(c0, c1, a0, a1, a2, a3, a4);
kenjiArai 0:5b88d5760320 3349 }
kenjiArai 0:5b88d5760320 3350 };
kenjiArai 0:5b88d5760320 3351
kenjiArai 0:5b88d5760320 3352 template <typename F, typename C0, typename C1, typename C2, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 3353 struct context35 {
kenjiArai 0:5b88d5760320 3354 F f;
kenjiArai 0:5b88d5760320 3355 C0 c0;
kenjiArai 0:5b88d5760320 3356 C1 c1;
kenjiArai 0:5b88d5760320 3357 C2 c2;
kenjiArai 0:5b88d5760320 3358
kenjiArai 0:5b88d5760320 3359 context35(F f, C0 c0, C1 c1, C2 c2)
kenjiArai 0:5b88d5760320 3360 : f(f), c0(c0), c1(c1), c2(c2) {}
kenjiArai 0:5b88d5760320 3361
kenjiArai 0:5b88d5760320 3362 void operator()(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
kenjiArai 0:5b88d5760320 3363 {
kenjiArai 0:5b88d5760320 3364 f(c0, c1, c2, a0, a1, a2, a3, a4);
kenjiArai 0:5b88d5760320 3365 }
kenjiArai 0:5b88d5760320 3366 };
kenjiArai 0:5b88d5760320 3367
kenjiArai 0:5b88d5760320 3368 template <typename F, typename C0, typename C1, typename C2, typename C3, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 3369 struct context45 {
kenjiArai 0:5b88d5760320 3370 F f;
kenjiArai 0:5b88d5760320 3371 C0 c0;
kenjiArai 0:5b88d5760320 3372 C1 c1;
kenjiArai 0:5b88d5760320 3373 C2 c2;
kenjiArai 0:5b88d5760320 3374 C3 c3;
kenjiArai 0:5b88d5760320 3375
kenjiArai 0:5b88d5760320 3376 context45(F f, C0 c0, C1 c1, C2 c2, C3 c3)
kenjiArai 0:5b88d5760320 3377 : f(f), c0(c0), c1(c1), c2(c2), c3(c3) {}
kenjiArai 0:5b88d5760320 3378
kenjiArai 0:5b88d5760320 3379 void operator()(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
kenjiArai 0:5b88d5760320 3380 {
kenjiArai 0:5b88d5760320 3381 f(c0, c1, c2, c3, a0, a1, a2, a3, a4);
kenjiArai 0:5b88d5760320 3382 }
kenjiArai 0:5b88d5760320 3383 };
kenjiArai 0:5b88d5760320 3384
kenjiArai 0:5b88d5760320 3385 template <typename F, typename C0, typename C1, typename C2, typename C3, typename C4, typename A0, typename A1, typename A2, typename A3, typename A4>
kenjiArai 0:5b88d5760320 3386 struct context55 {
kenjiArai 0:5b88d5760320 3387 F f;
kenjiArai 0:5b88d5760320 3388 C0 c0;
kenjiArai 0:5b88d5760320 3389 C1 c1;
kenjiArai 0:5b88d5760320 3390 C2 c2;
kenjiArai 0:5b88d5760320 3391 C3 c3;
kenjiArai 0:5b88d5760320 3392 C4 c4;
kenjiArai 0:5b88d5760320 3393
kenjiArai 0:5b88d5760320 3394 context55(F f, C0 c0, C1 c1, C2 c2, C3 c3, C4 c4)
kenjiArai 0:5b88d5760320 3395 : f(f), c0(c0), c1(c1), c2(c2), c3(c3), c4(c4) {}
kenjiArai 0:5b88d5760320 3396
kenjiArai 0:5b88d5760320 3397 void operator()(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
kenjiArai 0:5b88d5760320 3398 {
kenjiArai 0:5b88d5760320 3399 f(c0, c1, c2, c3, c4, a0, a1, a2, a3, a4);
kenjiArai 0:5b88d5760320 3400 }
kenjiArai 0:5b88d5760320 3401 };
kenjiArai 0:5b88d5760320 3402 #endif //!defined(DOXYGEN_ONLY)
kenjiArai 0:5b88d5760320 3403 };
kenjiArai 0:5b88d5760320 3404
kenjiArai 0:5b88d5760320 3405 }
kenjiArai 0:5b88d5760320 3406
kenjiArai 0:5b88d5760320 3407 #endif
kenjiArai 0:5b88d5760320 3408