From a9ad0cc3f3855aa3eb59d7542828e0a426166908 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sun, 8 Mar 2026 18:58:54 -1000 Subject: [PATCH] [api] Remove unused ProtoVarInt instance members and ProtoVarIntResult accessors After moving decode_varint to raw proto_varint_value_t, the type- conversion accessors (as_bool, as_int32, as_sint32, as_uint64, etc.) on ProtoVarIntResult are dead code. ProtoVarInt itself is now only used as a static method container for parse(), so remove its constructors, instance accessors, and value_ member. Co-Authored-By: Claude Opus 4.6 --- esphome/components/api/proto.h | 44 +--------------------------------- 1 file changed, 1 insertion(+), 43 deletions(-) diff --git a/esphome/components/api/proto.h b/esphome/components/api/proto.h index e00bc60971e..7915b58b57c 100644 --- a/esphome/components/api/proto.h +++ b/esphome/components/api/proto.h @@ -117,22 +117,11 @@ struct ProtoVarIntResult { constexpr bool has_value() const { return this->consumed != PROTO_VARINT_PARSE_FAILED; } constexpr uint16_t as_uint16() const { return this->value; } constexpr uint32_t as_uint32() const { return this->value; } - constexpr bool as_bool() const { return this->value; } - constexpr int32_t as_int32() const { return static_cast(this->value); } - constexpr int32_t as_sint32() const { return decode_zigzag32(static_cast(this->value)); } -#ifdef USE_API_VARINT64 - constexpr uint64_t as_uint64() const { return this->value; } - constexpr int64_t as_int64() const { return static_cast(this->value); } - constexpr int64_t as_sint64() const { return decode_zigzag64(this->value); } -#endif }; -/// Representation of a VarInt - in ProtoBuf should be 64bit but we only use 32bit +/// Static varint parsing methods for the protobuf wire format. class ProtoVarInt { public: - ProtoVarInt() : value_(0) {} - explicit ProtoVarInt(uint64_t value) : value_(value) {} - /// Parse a varint from buffer. Caller must ensure len >= 1. /// Returns result with consumed=0 on failure (truncated multi-byte varint). static inline ProtoVarIntResult ESPHOME_ALWAYS_INLINE parse_non_empty(const uint8_t *buffer, uint32_t len) { @@ -162,37 +151,6 @@ class ProtoVarInt { /// Continue parsing varint bytes 4-9 with 64-bit arithmetic. static ProtoVarIntResult parse_wide(const uint8_t *buffer, uint32_t len, uint32_t result32) __attribute__((noinline)); #endif - - public: - constexpr uint16_t as_uint16() const { return this->value_; } - constexpr uint32_t as_uint32() const { return this->value_; } - constexpr bool as_bool() const { return this->value_; } - constexpr int32_t as_int32() const { - // Not ZigZag encoded - return static_cast(this->value_); - } - constexpr int32_t as_sint32() const { - // with ZigZag encoding - return decode_zigzag32(static_cast(this->value_)); - } -#ifdef USE_API_VARINT64 - constexpr uint64_t as_uint64() const { return this->value_; } - constexpr int64_t as_int64() const { - // Not ZigZag encoded - return static_cast(this->value_); - } - constexpr int64_t as_sint64() const { - // with ZigZag encoding - return decode_zigzag64(this->value_); - } -#endif - - protected: -#ifdef USE_API_VARINT64 - uint64_t value_; -#else - uint32_t value_; -#endif }; // Forward declarations for decode_to_message and related encoding helpers