diff --git a/esphome/codegen.py b/esphome/codegen.py index 6d55c6023d..6decd77c62 100644 --- a/esphome/codegen.py +++ b/esphome/codegen.py @@ -62,7 +62,6 @@ from esphome.cpp_types import ( # noqa: F401 EntityBase, EntityCategory, ESPTime, - FixedVector, GPIOPin, InternalGPIOPin, JsonObject, diff --git a/esphome/components/api/__init__.py b/esphome/components/api/__init__.py index ee35d7f904..cf95da1bf0 100644 --- a/esphome/components/api/__init__.py +++ b/esphome/components/api/__init__.py @@ -71,12 +71,10 @@ SERVICE_ARG_NATIVE_TYPES = { "int": cg.int32, "float": float, "string": cg.std_string, - "bool[]": cg.FixedVector.template(bool).operator("const").operator("ref"), - "int[]": cg.FixedVector.template(cg.int32).operator("const").operator("ref"), - "float[]": cg.FixedVector.template(float).operator("const").operator("ref"), - "string[]": cg.FixedVector.template(cg.std_string) - .operator("const") - .operator("ref"), + "bool[]": cg.std_vector.template(bool), + "int[]": cg.std_vector.template(cg.int32), + "float[]": cg.std_vector.template(float), + "string[]": cg.std_vector.template(cg.std_string), } CONF_ENCRYPTION = "encryption" CONF_BATCH_DELAY = "batch_delay" diff --git a/esphome/components/api/user_services.cpp b/esphome/components/api/user_services.cpp index a4b83e96c1..3cbf2ab5f9 100644 --- a/esphome/components/api/user_services.cpp +++ b/esphome/components/api/user_services.cpp @@ -11,58 +11,23 @@ template<> int32_t get_execute_arg_value(const ExecuteServiceArgument & } template<> float get_execute_arg_value(const ExecuteServiceArgument &arg) { return arg.float_; } template<> std::string get_execute_arg_value(const ExecuteServiceArgument &arg) { return arg.string_; } - -// Legacy std::vector versions for custom C++ code - optimized with reserve template<> std::vector get_execute_arg_value>(const ExecuteServiceArgument &arg) { - std::vector result; - result.reserve(arg.bool_array.size()); - result.insert(result.end(), arg.bool_array.begin(), arg.bool_array.end()); - return result; + return std::vector(arg.bool_array.begin(), arg.bool_array.end()); } template<> std::vector get_execute_arg_value>(const ExecuteServiceArgument &arg) { - std::vector result; - result.reserve(arg.int_array.size()); - result.insert(result.end(), arg.int_array.begin(), arg.int_array.end()); - return result; + return std::vector(arg.int_array.begin(), arg.int_array.end()); } template<> std::vector get_execute_arg_value>(const ExecuteServiceArgument &arg) { - std::vector result; - result.reserve(arg.float_array.size()); - result.insert(result.end(), arg.float_array.begin(), arg.float_array.end()); - return result; + return std::vector(arg.float_array.begin(), arg.float_array.end()); } template<> std::vector get_execute_arg_value>(const ExecuteServiceArgument &arg) { - std::vector result; - result.reserve(arg.string_array.size()); - result.insert(result.end(), arg.string_array.begin(), arg.string_array.end()); - return result; -} - -// New FixedVector const reference versions for YAML-generated services - zero-copy -template<> -const FixedVector &get_execute_arg_value &>(const ExecuteServiceArgument &arg) { - return arg.bool_array; -} -template<> -const FixedVector &get_execute_arg_value &>(const ExecuteServiceArgument &arg) { - return arg.int_array; -} -template<> -const FixedVector &get_execute_arg_value &>(const ExecuteServiceArgument &arg) { - return arg.float_array; -} -template<> -const FixedVector &get_execute_arg_value &>( - const ExecuteServiceArgument &arg) { - return arg.string_array; + return std::vector(arg.string_array.begin(), arg.string_array.end()); } template<> enums::ServiceArgType to_service_arg_type() { return enums::SERVICE_ARG_TYPE_BOOL; } template<> enums::ServiceArgType to_service_arg_type() { return enums::SERVICE_ARG_TYPE_INT; } template<> enums::ServiceArgType to_service_arg_type() { return enums::SERVICE_ARG_TYPE_FLOAT; } template<> enums::ServiceArgType to_service_arg_type() { return enums::SERVICE_ARG_TYPE_STRING; } - -// Legacy std::vector versions for custom C++ code template<> enums::ServiceArgType to_service_arg_type>() { return enums::SERVICE_ARG_TYPE_BOOL_ARRAY; } template<> enums::ServiceArgType to_service_arg_type>() { return enums::SERVICE_ARG_TYPE_INT_ARRAY; @@ -74,18 +39,4 @@ template<> enums::ServiceArgType to_service_arg_type>() return enums::SERVICE_ARG_TYPE_STRING_ARRAY; } -// New FixedVector const reference versions for YAML-generated services -template<> enums::ServiceArgType to_service_arg_type &>() { - return enums::SERVICE_ARG_TYPE_BOOL_ARRAY; -} -template<> enums::ServiceArgType to_service_arg_type &>() { - return enums::SERVICE_ARG_TYPE_INT_ARRAY; -} -template<> enums::ServiceArgType to_service_arg_type &>() { - return enums::SERVICE_ARG_TYPE_FLOAT_ARRAY; -} -template<> enums::ServiceArgType to_service_arg_type &>() { - return enums::SERVICE_ARG_TYPE_STRING_ARRAY; -} - } // namespace esphome::api diff --git a/esphome/cpp_types.py b/esphome/cpp_types.py index 0d1813f63b..a0dd62cb4e 100644 --- a/esphome/cpp_types.py +++ b/esphome/cpp_types.py @@ -23,7 +23,6 @@ size_t = global_ns.namespace("size_t") const_char_ptr = global_ns.namespace("const char *") NAN = global_ns.namespace("NAN") esphome_ns = global_ns # using namespace esphome; -FixedVector = esphome_ns.class_("FixedVector") App = esphome_ns.App EntityBase = esphome_ns.class_("EntityBase") Component = esphome_ns.class_("Component")