From 7a9a0f9e75baf9c401a11050f3c15095dfa24262 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Fri, 20 Feb 2026 23:21:53 -0600 Subject: [PATCH] Remove deprecated offsetof hack from NumberTraits MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit NumberTraits no longer needs get_device_class_ref() or get_unit_of_measurement_ref() — no internal callers exist. Callers should use number->get_device_class_ref() directly. Eliminates offsetof warning on non-standard-layout type. --- esphome/components/number/number.cpp | 13 ------------- esphome/components/number/number_traits.h | 14 ++------------ 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/esphome/components/number/number.cpp b/esphome/components/number/number.cpp index 91d5a260ad2..c0653c3b304 100644 --- a/esphome/components/number/number.cpp +++ b/esphome/components/number/number.cpp @@ -1,5 +1,4 @@ #include "number.h" -#include #include "esphome/core/defines.h" #include "esphome/core/controller_registry.h" #include "esphome/core/log.h" @@ -20,18 +19,6 @@ void log_number(const char *tag, const char *prefix, const char *type, Number *o LOG_ENTITY_DEVICE_CLASS(tag, prefix, *obj); } -// Deprecated backward-compat: delegate to parent Number's EntityBase methods -StringRef NumberTraits::get_device_class_ref() const { - const auto *number = - reinterpret_cast(reinterpret_cast(this) - offsetof(Number, traits)); - return number->get_device_class_ref(); -} -StringRef NumberTraits::get_unit_of_measurement_ref() const { - const auto *number = - reinterpret_cast(reinterpret_cast(this) - offsetof(Number, traits)); - return number->get_unit_of_measurement_ref(); -} - void Number::publish_state(float state) { this->set_has_state(true); this->state = state; diff --git a/esphome/components/number/number_traits.h b/esphome/components/number/number_traits.h index 642768ea8f1..f855813c9bf 100644 --- a/esphome/components/number/number_traits.h +++ b/esphome/components/number/number_traits.h @@ -1,7 +1,7 @@ #pragma once -#include "esphome/core/entity_base.h" -#include "esphome/core/helpers.h" +#include +#include namespace esphome::number { @@ -27,16 +27,6 @@ class NumberTraits { void set_mode(NumberMode mode) { this->mode_ = mode; } NumberMode get_mode() const { return this->mode_; } - // Deprecated: use Number::get_device_class_ref() instead. - // Delegates to parent Number's EntityBase via offsetof. - ESPDEPRECATED("Use number->get_device_class_ref() instead. Removed in 2027.2.0", "2026.8.0") - StringRef get_device_class_ref() const; - - // Deprecated: use Number::get_unit_of_measurement_ref() instead. - // Delegates to parent Number's EntityBase via offsetof. - ESPDEPRECATED("Use number->get_unit_of_measurement_ref() instead. Removed in 2027.2.0", "2026.8.0") - StringRef get_unit_of_measurement_ref() const; - protected: float min_value_ = NAN; float max_value_ = NAN;