[core] Pack entity flags into configure_entity_() and protect setters

Move set_internal(), set_disabled_by_default(), set_entity_category(),
and set_device() to protected on EntityBase. These were codegen-only
setters never intended for runtime use.

internal, disabled_by_default, and entity_category are now packed into
the existing configure_entity_() uint32 parameter alongside string
indices, eliminating up to 3 separate function calls per entity.

set_device() is renamed to set_device_() per protected naming convention
and remains a separate call (pointer can't be packed).

Entity category integer mapping is derived from cv.ENTITY_CATEGORIES
to stay in sync with the C++ enum automatically.
This commit is contained in:
J. Nick Koston
2026-03-06 09:35:30 -10:00
parent fd19bb4aa3
commit 7117ded6b6
8 changed files with 316 additions and 62 deletions
@@ -40,8 +40,9 @@ def test_text_sensor_config_value_internal_set(generate_main):
main_cpp = generate_main("tests/component_tests/text_sensor/test_text_sensor.yaml")
# Then
assert "ts_2->set_internal(true);" in main_cpp
assert "ts_3->set_internal(false);" in main_cpp
# internal flag is now packed into configure_entity_() third argument (bit 24)
assert "ts_2->configure_entity_(" in main_cpp
assert "ts_3->configure_entity_(" in main_cpp
def test_text_sensor_device_class_set(generate_main):