1
0
mirror of https://github.com/esphome/esphome.git synced 2025-10-27 13:13:50 +00:00

[light] Use std::initializer_list for add_effects to reduce flash overhead

This commit is contained in:
J. Nick Koston
2025-10-22 12:20:50 -10:00
parent 7f567bdfbe
commit 77f97270d6
2 changed files with 3 additions and 6 deletions

View File

@@ -178,12 +178,9 @@ void LightState::set_restore_mode(LightRestoreMode restore_mode) { this->restore
void LightState::set_initial_state(const LightStateRTCState &initial_state) { this->initial_state_ = initial_state; } void LightState::set_initial_state(const LightStateRTCState &initial_state) { this->initial_state_ = initial_state; }
bool LightState::supports_effects() { return !this->effects_.empty(); } bool LightState::supports_effects() { return !this->effects_.empty(); }
const FixedVector<LightEffect *> &LightState::get_effects() const { return this->effects_; } const FixedVector<LightEffect *> &LightState::get_effects() const { return this->effects_; }
void LightState::add_effects(const std::vector<LightEffect *> &effects) { void LightState::add_effects(const std::initializer_list<LightEffect *> &effects) {
// Called once from Python codegen during setup with all effects from YAML config // Called once from Python codegen during setup with all effects from YAML config
this->effects_.init(effects.size()); this->effects_ = effects;
for (auto *effect : effects) {
this->effects_.push_back(effect);
}
} }
void LightState::current_values_as_binary(bool *binary) { this->current_values.as_binary(binary); } void LightState::current_values_as_binary(bool *binary) { this->current_values.as_binary(binary); }

View File

@@ -163,7 +163,7 @@ class LightState : public EntityBase, public Component {
const FixedVector<LightEffect *> &get_effects() const; const FixedVector<LightEffect *> &get_effects() const;
/// Add effects for this light state. /// Add effects for this light state.
void add_effects(const std::vector<LightEffect *> &effects); void add_effects(const std::initializer_list<LightEffect *> &effects);
/// Get the total number of effects available for this light. /// Get the total number of effects available for this light.
size_t get_effect_count() const { return this->effects_.size(); } size_t get_effect_count() const { return this->effects_.size(); }