From f5c1b8839da0fdea431d11542dfd6f6bebe5332a Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 5 May 2026 18:29:10 -0500 Subject: [PATCH] [web_server] Use entity_types.h X-macro for ListEntitiesIterator declarations (#16077) --- .../components/web_server/list_entities.cpp | 4 + esphome/components/web_server/list_entities.h | 83 +++---------------- 2 files changed, 15 insertions(+), 72 deletions(-) diff --git a/esphome/components/web_server/list_entities.cpp b/esphome/components/web_server/list_entities.cpp index c1e7599c7e..869ed3ea17 100644 --- a/esphome/components/web_server/list_entities.cpp +++ b/esphome/components/web_server/list_entities.cpp @@ -167,5 +167,9 @@ bool ListEntitiesIterator::on_update(update::UpdateEntity *obj) { } #endif +#ifdef USE_MEDIA_PLAYER +bool ListEntitiesIterator::on_media_player(media_player::MediaPlayer *obj) { return true; } +#endif + } // namespace esphome::web_server #endif diff --git a/esphome/components/web_server/list_entities.h b/esphome/components/web_server/list_entities.h index 9cfc6c7e33..3edb84f555 100644 --- a/esphome/components/web_server/list_entities.h +++ b/esphome/components/web_server/list_entities.h @@ -24,78 +24,17 @@ class ListEntitiesIterator final : public ComponentIterator { #elif defined(USE_ARDUINO) ListEntitiesIterator(const WebServer *ws, DeferredUpdateEventSource *es); #endif -#ifdef USE_BINARY_SENSOR - bool on_binary_sensor(binary_sensor::BinarySensor *obj) override; -#endif -#ifdef USE_COVER - bool on_cover(cover::Cover *obj) override; -#endif -#ifdef USE_FAN - bool on_fan(fan::Fan *obj) override; -#endif -#ifdef USE_LIGHT - bool on_light(light::LightState *obj) override; -#endif -#ifdef USE_SENSOR - bool on_sensor(sensor::Sensor *obj) override; -#endif -#ifdef USE_SWITCH - bool on_switch(switch_::Switch *obj) override; -#endif -#ifdef USE_BUTTON - bool on_button(button::Button *obj) override; -#endif -#ifdef USE_TEXT_SENSOR - bool on_text_sensor(text_sensor::TextSensor *obj) override; -#endif -#ifdef USE_CLIMATE - bool on_climate(climate::Climate *obj) override; -#endif -#ifdef USE_NUMBER - bool on_number(number::Number *obj) override; -#endif -#ifdef USE_DATETIME_DATE - bool on_date(datetime::DateEntity *obj) override; -#endif -#ifdef USE_DATETIME_TIME - bool on_time(datetime::TimeEntity *obj) override; -#endif -#ifdef USE_DATETIME_DATETIME - bool on_datetime(datetime::DateTimeEntity *obj) override; -#endif -#ifdef USE_TEXT - bool on_text(text::Text *obj) override; -#endif -#ifdef USE_SELECT - bool on_select(select::Select *obj) override; -#endif -#ifdef USE_LOCK - bool on_lock(lock::Lock *obj) override; -#endif -#ifdef USE_VALVE - bool on_valve(valve::Valve *obj) override; -#endif -#ifdef USE_MEDIA_PLAYER - bool on_media_player(media_player::MediaPlayer *obj) override { return true; } -#endif -#ifdef USE_ALARM_CONTROL_PANEL - bool on_alarm_control_panel(alarm_control_panel::AlarmControlPanel *obj) override; -#endif -#ifdef USE_WATER_HEATER - bool on_water_heater(water_heater::WaterHeater *obj) override; -#endif -#ifdef USE_INFRARED - bool on_infrared(infrared::Infrared *obj) override; -#endif -#ifdef USE_RADIO_FREQUENCY - bool on_radio_frequency(radio_frequency::RadioFrequency *obj) override; -#endif -#ifdef USE_EVENT - bool on_event(event::Event *obj) override; -#endif -#ifdef USE_UPDATE - bool on_update(update::UpdateEntity *obj) override; -#endif + +// Entity overrides (generated from entity_types.h). +// Implementations live in list_entities.cpp. +// NOLINTBEGIN(bugprone-macro-parentheses) +#define ENTITY_TYPE_(type, singular, plural, count, upper) bool on_##singular(type *obj) override; +#define ENTITY_CONTROLLER_TYPE_(type, singular, plural, count, upper, callback) \ + ENTITY_TYPE_(type, singular, plural, count, upper) +#include "esphome/core/entity_types.h" +#undef ENTITY_TYPE_ +#undef ENTITY_CONTROLLER_TYPE_ + // NOLINTEND(bugprone-macro-parentheses) bool completed() { return this->state_ == IteratorState::NONE; } protected: