24#define ENTITY_TYPE_(type, singular, plural, count, upper)
25#define ENTITY_CONTROLLER_TYPE_(type, singular, plural, count, upper, callback) \
26 controller.on_##callback(static_cast<type *>(nullptr));
29#undef ENTITY_CONTROLLER_TYPE_
36 "A registered controller is missing an on_*_update() callback for an entity type in this build "
37 "(ControllerContract in esphome/core/controller_dispatch.h)");
39#define ENTITY_TYPE_(type, singular, plural, count, upper)
40#define ENTITY_CONTROLLER_TYPE_(type, singular, plural, count, upper, callback) \
41 void ControllerRegistry::notify_##callback(type *obj) { \
42 std::apply([obj](auto *...controller) { (controller->on_##callback(obj), ...); }, esphome_controllers()); \
46#undef ENTITY_CONTROLLER_TYPE_
A controller provides a plain on_*_update() member for every entity type in the build.
constexpr bool controllers_satisfy_contract(std::tuple< Controllers... > *)