1
0
mirror of https://github.com/esphome/esphome.git synced 2025-10-28 13:43:54 +00:00

try to avoid some of the ram

This commit is contained in:
J. Nick Koston
2025-10-21 11:40:48 -10:00
parent f3f419077b
commit 88e3f02c9c

View File

@@ -194,12 +194,8 @@ template<typename T> class FixedVector {
size_ = 0; size_ = 0;
} }
public: // Helper to assign from initializer list (shared by constructor and assignment operator)
FixedVector() = default; void assign_from_initializer_list_(std::initializer_list<T> init_list) {
/// Constructor from initializer list - allocates exact size needed
/// This enables brace initialization: FixedVector<int> v = {1, 2, 3};
FixedVector(std::initializer_list<T> init_list) {
init(init_list.size()); init(init_list.size());
size_t idx = 0; size_t idx = 0;
for (const auto &item : init_list) { for (const auto &item : init_list) {
@@ -209,6 +205,13 @@ template<typename T> class FixedVector {
size_ = init_list.size(); size_ = init_list.size();
} }
public:
FixedVector() = default;
/// Constructor from initializer list - allocates exact size needed
/// This enables brace initialization: FixedVector<int> v = {1, 2, 3};
FixedVector(std::initializer_list<T> init_list) { assign_from_initializer_list_(init_list); }
~FixedVector() { cleanup_(); } ~FixedVector() { cleanup_(); }
// Disable copy operations (avoid accidental expensive copies) // Disable copy operations (avoid accidental expensive copies)
@@ -234,6 +237,15 @@ template<typename T> class FixedVector {
return *this; return *this;
} }
/// Assignment from initializer list - avoids temporary and move overhead
/// This enables: FixedVector<int> v; v = {1, 2, 3};
FixedVector &operator=(std::initializer_list<T> init_list) {
cleanup_();
reset_();
assign_from_initializer_list_(init_list);
return *this;
}
// Allocate capacity - can be called multiple times to reinit // Allocate capacity - can be called multiple times to reinit
void init(size_t n) { void init(size_t n) {
cleanup_(); cleanup_();