28 std::span<const enums::ServiceArgType> arg_types, std::span<char>
scratch)
const {
33#ifdef USE_API_USER_DEFINED_ACTION_METADATA
36 msg.
args.init(arg_types.size());
37 for (
size_t i = 0; i < arg_types.size(); i++) {
38 size_t base = USER_ACTION_HEADER_STRINGS + i * USER_ACTION_ARG_STRINGS;
39 auto &arg = msg.
args.emplace_back();
40 arg.type = arg_types[i];
42#ifdef USE_API_USER_DEFINED_ACTION_METADATA
63 std::vector<bool> result;
64 result.reserve(arg.bool_array.size());
65 result.insert(result.end(), arg.bool_array.begin(), arg.bool_array.end());
69 std::vector<int32_t> result;
70 result.reserve(arg.int_array.size());
71 result.insert(result.end(), arg.int_array.begin(), arg.int_array.end());
75 std::vector<float> result;
76 result.reserve(arg.float_array.size());
77 result.insert(result.end(), arg.float_array.begin(), arg.float_array.end());
81 std::vector<std::string> result;
82 result.reserve(arg.string_array.size());
83 result.insert(result.end(), arg.string_array.begin(), arg.string_array.end());
90 return arg.bool_array;
98 return arg.float_array;
103 return arg.string_array;
Fixed-capacity vector - allocates once at runtime, never reallocates This avoids std::vector template...
StringRef is a reference to a string owned by something else.
enums::SupportsResponseType supports_response
FixedVector< ListEntitiesServicesArgument > args
const char *const * strings_
StringRef str_(size_t idx, std::span< char > &scratch) const
Reference table entry idx; nullptr gives an empty StringRef.
ListEntitiesServicesResponse encode_list_service_response_(std::span< const enums::ServiceArgType > arg_types, std::span< char > scratch) const
enums::SupportsResponseType supports_response_
@ SERVICE_ARG_TYPE_INT_ARRAY
@ SERVICE_ARG_TYPE_BOOL_ARRAY
@ SERVICE_ARG_TYPE_STRING
@ SERVICE_ARG_TYPE_STRING_ARRAY
@ SERVICE_ARG_TYPE_FLOAT_ARRAY
float get_execute_arg_value< float >(const ExecuteServiceArgument &arg)
bool get_execute_arg_value< bool >(const ExecuteServiceArgument &arg)
int32_t get_execute_arg_value< int32_t >(const ExecuteServiceArgument &arg)
enums::ServiceArgType to_service_arg_type()
enums::ServiceArgType to_service_arg_type< StringRef >()
StringRef get_execute_arg_value< StringRef >(const ExecuteServiceArgument &arg)
enums::ServiceArgType to_service_arg_type< int32_t >()
enums::ServiceArgType to_service_arg_type< bool >()
enums::ServiceArgType to_service_arg_type< std::string >()
std::string get_execute_arg_value< std::string >(const ExecuteServiceArgument &arg)
T get_execute_arg_value(const ExecuteServiceArgument &arg)
enums::ServiceArgType to_service_arg_type< float >()
const char * progmem_read_ptr(const char *const *addr)
void progmem_memcpy(void *dst, const void *src, size_t len)