takashi kadono / Mbed OS Nucleo446_SSD1331

Dependencies:   ssd1331

Committer:
kadonotakashi
Date:
Thu Oct 11 02:27:46 2018 +0000
Revision:
3:f3764f852aa8
Parent:
0:8fdf9a60065b
Nucreo 446 + SSD1331 test version;

Who changed what in which revision?

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