31 #ifndef ETL_DELEGATE_SERVICE_INCLUDED
32 #define ETL_DELEGATE_SERVICE_INCLUDED
36 #include "static_assert.h"
48 template <const
size_t RANGE, const
size_t OFFSET = 0U>
61 lookup.
fill(default_delegate);
70 template <const
size_t ID>
73 ETL_STATIC_ASSERT(ID < (OFFSET + RANGE),
"Callback Id out of range");
74 ETL_STATIC_ASSERT(ID >= OFFSET,
"Callback Id out of range");
87 if ((
id >= OFFSET) && (
id < (OFFSET + RANGE)))
107 template <const
size_t ID>
110 ETL_STATIC_ASSERT(ID < (OFFSET + RANGE),
"Callback Id out of range");
111 ETL_STATIC_ASSERT(ID >= OFFSET,
"Callback Id out of range");
113 lookup[ID - OFFSET](ID);
122 if ((
id >= OFFSET) && (
id < (OFFSET + RANGE)))
124 lookup[
id - OFFSET](id);
128 if (unhandled_delegate.is_valid())
130 unhandled_delegate(
id);
141 void unhandled(
size_t id)
143 if (unhandled_delegate.is_valid())
145 unhandled_delegate(
id);
Definition: callback.h:45
Definition: delegate_service.h:50
void register_unhandled_delegate(etl::delegate< void(size_t)> callback)
Definition: delegate_service.h:97
void call()
Definition: delegate_service.h:108
delegate_service()
Definition: delegate_service.h:57
void register_delegate(const size_t id, etl::delegate< void(size_t)> callback)
Definition: delegate_service.h:85
void register_delegate(etl::delegate< void(size_t)> callback)
Definition: delegate_service.h:71
void call(const size_t id)
Definition: delegate_service.h:120
Definition: delegate.h:91
void fill(parameter_t value)
Definition: array.h:341
Definition: absolute.h:37