Reduce component_iterator memory usage (#9205)

This commit is contained in:
J. Nick Koston 2025-06-27 08:56:54 +02:00 committed by GitHub
parent 13512440ac
commit 837dd46adf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 5 additions and 3 deletions

View File

@ -375,7 +375,7 @@ void ComponentIterator::advance() {
} }
if (advance_platform) { if (advance_platform) {
this->state_ = static_cast<IteratorState>(static_cast<uint32_t>(this->state_) + 1); this->state_ = static_cast<IteratorState>(static_cast<uint8_t>(this->state_) + 1);
this->at_ = 0; this->at_ = 0;
} else if (success) { } else if (success) {
this->at_++; this->at_++;

View File

@ -93,7 +93,9 @@ class ComponentIterator {
virtual bool on_end(); virtual bool on_end();
protected: protected:
enum class IteratorState { // Iterates over all ESPHome entities (sensors, switches, lights, etc.)
// Supports up to 256 entity types and up to 65,535 entities of each type
enum class IteratorState : uint8_t {
NONE = 0, NONE = 0,
BEGIN, BEGIN,
#ifdef USE_BINARY_SENSOR #ifdef USE_BINARY_SENSOR
@ -167,7 +169,7 @@ class ComponentIterator {
#endif #endif
MAX, MAX,
} state_{IteratorState::NONE}; } state_{IteratorState::NONE};
size_t at_{0}; uint16_t at_{0}; // Supports up to 65,535 entities per type
bool include_internal_{false}; bool include_internal_{false};
}; };