77 sizeof(T),
alignof(T),
108 void*
const* arg_slots);
119template <
typename R,
typename... Args>
123 template <fl::size... Is>
145template <
typename... Args>
149 template <fl::size... Is>
170template <
typename... Args>
185 static const RpcTypeOps*
const kTable[1] = {
nullptr };
246template <
typename R,
typename... Args>
251 FunctionType* user_fn =
new FunctionType(
fl::move(fn));
253 static_cast<void*
>(user_fn),
RpcDestroyFn mDestroyUserFn
const RpcTypeOps *const * mArgTypes
const RpcTypeOps * mResultType
RuntimeRpcBinding(void *user_fn, RpcTrampolineFn trampoline, RpcDestroyFn destroy_user_fn, const RpcTypeOps *const *arg_types, fl::size arg_count, const RpcTypeOps *result_type) FL_NO_EXCEPT
fl::tuple< TypeConversionResult, json > invoke(const json &jsonArgs) FL_NO_EXCEPT override
~RuntimeRpcBinding() FL_NO_EXCEPT override
RpcTrampolineFn mTrampoline
RuntimeRpcBinding & operator=(const RuntimeRpcBinding &) FL_NO_EXCEPT=delete
RuntimeRpcBinding(const RuntimeRpcBinding &) FL_NO_EXCEPT=delete
FastLED's Elegant JSON Library: fl::json
fl::shared_ptr< RuntimeRpcBinding > makeRuntimeRpcBinding(fl::function< R(Args...)> fn) FL_NO_EXCEPT
void(*)(void *user_fn, void *result_slot, void *const *arg_slots) RpcTrampolineFn
void(*)(void *user_fn) RpcDestroyFn
Compile-time linker keep-alive hook for a single fl::Bus.
TypeConversionResult(* decode)(const json &src, void *dst)
void(* default_construct)(void *p)
json(* encode)(const void *src)
constexpr remove_reference< T >::type && move(T &&t) FL_NO_EXCEPT
constexpr int type_rank< T >::value
shared_ptr< T > make_shared(Args &&... args) FL_NO_EXCEPT
InputGamut g FL_NO_EXCEPT
pair_element< I, T1, T2 >::type & get(pair< T1, T2 > &p) FL_NO_EXCEPT
typename make_index_sequence_impl< N >::type make_index_sequence
Base definition for an LED controller.
typename fl::remove_cv< typename fl::remove_reference< T >::type >::type type
static fl::tuple< T, TypeConversionResult > convert(const json &j)
static const RpcTypeOps * ops() FL_NO_EXCEPT
static void destroy_(void *p) FL_NO_EXCEPT
static TypeConversionResult decode_(const json &src, void *dst) FL_NO_EXCEPT
static json encode_(const void *src) FL_NO_EXCEPT
static const RpcTypeOps * ops() FL_NO_EXCEPT
static void default_construct_(void *p) FL_NO_EXCEPT
static json convert(const T &value)
static const RpcTypeOps *const * table() FL_NO_EXCEPT
static const RpcTypeOps *const * table() FL_NO_EXCEPT
fl::function< void(Args...)> FunctionType
static void invoke_(FunctionType &fn, void *const *arg_slots, index_sequence< Is... >) FL_NO_EXCEPT
static void destroy(void *user_fn) FL_NO_EXCEPT
static void trampoline(void *user_fn, void *result_slot, void *const *arg_slots) FL_NO_EXCEPT
static R invoke_(FunctionType &fn, void *const *arg_slots, index_sequence< Is... >) FL_NO_EXCEPT
static void trampoline(void *user_fn, void *result_slot, void *const *arg_slots) FL_NO_EXCEPT
static void destroy(void *user_fn) FL_NO_EXCEPT
fl::function< R(Args...)> FunctionType