Mark user-configurable classes as final (part 20/21)

Add the C++ `final` specifier to leaf, user-configurable component classes and
automation action/trigger/condition primitives so that classes meant to be
terminal cannot be subclassed by external components. Only classes never used as
a base anywhere in the tree are marked. Part 20 of 21, split alphabetically by
component (wts01 .. zephyr_ble_server).
This commit is contained in:
Jesse Hills
2026-06-15 13:23:01 +12:00
parent a25ac28ae5
commit c9f0018c7e
31 changed files with 43 additions and 43 deletions

View File

@@ -8,7 +8,7 @@ namespace esphome::wts01 {
constexpr uint8_t PACKET_SIZE = 9;
class WTS01Sensor : public sensor::Sensor, public uart::UARTDevice, public Component {
class WTS01Sensor final : public sensor::Sensor, public uart::UARTDevice, public Component {
public:
void loop() override;
void dump_config() override;

View File

@@ -6,7 +6,7 @@
namespace esphome::x9c {
class X9cOutput : public output::FloatOutput, public Component {
class X9cOutput final : public output::FloatOutput, public Component {
public:
void set_cs_pin(InternalGPIOPin *pin) { cs_pin_ = pin; }
void set_inc_pin(InternalGPIOPin *pin) { inc_pin_ = pin; }

View File

@@ -6,7 +6,7 @@
namespace esphome::xdb401 {
class XDB401Component : public PollingComponent, public i2c::I2CDevice {
class XDB401Component final : public PollingComponent, public i2c::I2CDevice {
public:
void set_temperature_sensor(sensor::Sensor *temperature_sensor) { this->temperature_sensor_ = temperature_sensor; }
void set_pressure_sensor(sensor::Sensor *pressure_sensor) { this->pressure_sensor_ = pressure_sensor; }

View File

@@ -20,7 +20,7 @@ enum XGZP68XXOversampling : uint8_t {
XGZP68XX_OVERSAMPLING_UNKNOWN = (uint8_t) -1,
};
class XGZP68XXComponent : public PollingComponent, public sensor::Sensor, public i2c::I2CDevice {
class XGZP68XXComponent final : public PollingComponent, public sensor::Sensor, public i2c::I2CDevice {
public:
SUB_SENSOR(temperature)
SUB_SENSOR(pressure)

View File

@@ -72,7 +72,7 @@ optional<XiaomiParseResult> parse_xiaomi_header(const esp32_ble_tracker::Service
bool decrypt_xiaomi_payload(std::vector<uint8_t> &raw, const uint8_t *bindkey, const uint64_t &address);
bool report_xiaomi_results(const optional<XiaomiParseResult> &result, const char *address);
class XiaomiListener : public esp32_ble_tracker::ESPBTDeviceListener {
class XiaomiListener final : public esp32_ble_tracker::ESPBTDeviceListener {
public:
bool parse_device(const esp32_ble_tracker::ESPBTDevice &device) override;
};

View File

@@ -9,7 +9,7 @@
namespace esphome::xiaomi_cgdk2 {
class XiaomiCGDK2 : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
class XiaomiCGDK2 final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
public:
void set_address(uint64_t address) { address_ = address; };
void set_bindkey(const char *bindkey);

View File

@@ -9,7 +9,7 @@
namespace esphome::xiaomi_cgg1 {
class XiaomiCGG1 : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
class XiaomiCGG1 final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
public:
void set_address(uint64_t address) { address_ = address; }
void set_bindkey(const char *bindkey);

View File

@@ -10,7 +10,7 @@
namespace esphome::xiaomi_cgpr1 {
class XiaomiCGPR1 : public Component,
class XiaomiCGPR1 final : public Component,
public binary_sensor::BinarySensorInitiallyOff,
public esp32_ble_tracker::ESPBTDeviceListener {
public:

View File

@@ -9,7 +9,7 @@
namespace esphome::xiaomi_gcls002 {
class XiaomiGCLS002 : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
class XiaomiGCLS002 final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
public:
void set_address(uint64_t address) { address_ = address; }

View File

@@ -9,7 +9,7 @@
namespace esphome::xiaomi_hhccjcy01 {
class XiaomiHHCCJCY01 : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
class XiaomiHHCCJCY01 final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
public:
void set_address(uint64_t address) { address_ = address; }

View File

@@ -8,7 +8,7 @@
namespace esphome::xiaomi_hhccjcy10 {
class XiaomiHHCCJCY10 : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
class XiaomiHHCCJCY10 final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
public:
void set_address(uint64_t address) { this->address_ = address; }

View File

@@ -9,7 +9,7 @@
namespace esphome::xiaomi_hhccpot002 {
class XiaomiHHCCPOT002 : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
class XiaomiHHCCPOT002 final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
public:
void set_address(uint64_t address) { address_ = address; }

View File

@@ -9,7 +9,7 @@
namespace esphome::xiaomi_jqjcy01ym {
class XiaomiJQJCY01YM : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
class XiaomiJQJCY01YM final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
public:
void set_address(uint64_t address) { address_ = address; }

View File

@@ -9,7 +9,7 @@
namespace esphome::xiaomi_lywsd02 {
class XiaomiLYWSD02 : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
class XiaomiLYWSD02 final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
public:
void set_address(uint64_t address) { address_ = address; }

View File

@@ -9,7 +9,7 @@
namespace esphome::xiaomi_lywsd02mmc {
class XiaomiLYWSD02MMC : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
class XiaomiLYWSD02MMC final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
public:
void set_address(uint64_t address) { this->address_ = address; }
void set_bindkey(const char *bindkey);

View File

@@ -9,7 +9,7 @@
namespace esphome::xiaomi_lywsd03mmc {
class XiaomiLYWSD03MMC : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
class XiaomiLYWSD03MMC final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
public:
void set_address(uint64_t address) { address_ = address; };
void set_bindkey(const char *bindkey);

View File

@@ -9,7 +9,7 @@
namespace esphome::xiaomi_lywsdcgq {
class XiaomiLYWSDCGQ : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
class XiaomiLYWSDCGQ final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
public:
void set_address(uint64_t address) { address_ = address; }

View File

@@ -9,7 +9,7 @@
namespace esphome::xiaomi_mhoc303 {
class XiaomiMHOC303 : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
class XiaomiMHOC303 final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
public:
void set_address(uint64_t address) { address_ = address; }

View File

@@ -9,7 +9,7 @@
namespace esphome::xiaomi_mhoc401 {
class XiaomiMHOC401 : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
class XiaomiMHOC401 final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
public:
void set_address(uint64_t address) { address_ = address; };
void set_bindkey(const char *bindkey);

View File

@@ -16,7 +16,7 @@ struct ParseResult {
optional<float> impedance;
};
class XiaomiMiscale : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
class XiaomiMiscale final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
public:
void set_address(uint64_t address) { address_ = address; };

View File

@@ -10,7 +10,7 @@
namespace esphome::xiaomi_mjyd02yla {
class XiaomiMJYD02YLA : public Component,
class XiaomiMJYD02YLA final : public Component,
public binary_sensor::BinarySensorInitiallyOff,
public esp32_ble_tracker::ESPBTDeviceListener {
public:

View File

@@ -9,7 +9,7 @@
namespace esphome::xiaomi_mue4094rt {
class XiaomiMUE4094RT : public Component,
class XiaomiMUE4094RT final : public Component,
public binary_sensor::BinarySensorInitiallyOff,
public esp32_ble_tracker::ESPBTDeviceListener {
public:

View File

@@ -15,7 +15,7 @@
namespace esphome::xiaomi_rtcgq02lm {
class XiaomiRTCGQ02LM : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
class XiaomiRTCGQ02LM final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
public:
void set_address(uint64_t address) { address_ = address; };
void set_bindkey(const char *bindkey);

View File

@@ -10,7 +10,7 @@
namespace esphome::xiaomi_wx08zm {
class XiaomiWX08ZM : public Component,
class XiaomiWX08ZM final : public Component,
public binary_sensor::BinarySensorInitiallyOff,
public esp32_ble_tracker::ESPBTDeviceListener {
public:

View File

@@ -9,7 +9,7 @@
namespace esphome::xiaomi_xmwsdj04mmc {
class XiaomiXMWSDJ04MMC : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
class XiaomiXMWSDJ04MMC final : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
public:
void set_address(uint64_t address) { this->address_ = address; }
void set_bindkey(const char *bindkey);

View File

@@ -17,7 +17,7 @@ enum {
XL9535_CONFIG_PORT_1_REGISTER = 0x07,
};
class XL9535Component : public Component, public i2c::I2CDevice {
class XL9535Component final : public Component, public i2c::I2CDevice {
public:
bool digital_read(uint8_t pin);
void digital_write(uint8_t pin, bool value);
@@ -28,7 +28,7 @@ class XL9535Component : public Component, public i2c::I2CDevice {
float get_setup_priority() const override { return setup_priority::IO; }
};
class XL9535GPIOPin : public GPIOPin {
class XL9535GPIOPin final : public GPIOPin {
public:
void set_parent(XL9535Component *parent) { this->parent_ = parent; }
void set_pin(uint8_t pin) { this->pin_ = pin; }

View File

@@ -11,7 +11,7 @@ namespace esphome::xpt2046 {
using namespace touchscreen;
class XPT2046Component : public Touchscreen,
class XPT2046Component final : public Touchscreen,
public spi::SPIDevice<spi::BIT_ORDER_MSB_FIRST, spi::CLOCK_POLARITY_LOW,
spi::CLOCK_PHASE_LEADING, spi::DATA_RATE_2MHZ> {
public:

View File

@@ -9,7 +9,7 @@
namespace esphome::yashima {
class YashimaClimate : public climate::Climate, public Component {
class YashimaClimate final : public climate::Climate, public Component {
public:
void setup() override;
void set_transmitter(remote_transmitter::RemoteTransmitterComponent *transmitter) {

View File

@@ -7,7 +7,7 @@
namespace esphome::zephyr {
class CdcAcm : public Component {
class CdcAcm final : public Component {
public:
CdcAcm();
void setup() override;

View File

@@ -5,7 +5,7 @@
#include <zephyr/device.h>
namespace esphome::zephyr {
class ZephyrGPIOPin : public InternalGPIOPin {
class ZephyrGPIOPin final : public InternalGPIOPin {
public:
ZephyrGPIOPin(const device *gpio, int gpio_size, const char *pin_name_prefix) {
this->gpio_ = gpio;

View File

@@ -6,7 +6,7 @@
namespace esphome::zephyr_ble_server {
class BLEServer : public Component {
class BLEServer final : public Component {
public:
void setup() override;
void dump_config() override;
@@ -21,7 +21,7 @@ class BLEServer : public Component {
CallbackManager<void(uint32_t)> passkey_cb_;
};
template<typename... Ts> class BLENumericComparisonReplyAction : public Action<Ts...> {
template<typename... Ts> class BLENumericComparisonReplyAction final : public Action<Ts...> {
public:
explicit BLENumericComparisonReplyAction(BLEServer *parent) : parent_(parent) {}