From 2e16b3ea312a6baeca01e9f5d5e6e278626e19df Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 26 Jul 2025 14:52:15 -1000 Subject: [PATCH] dry --- esphome/components/api/proto.h | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/esphome/components/api/proto.h b/esphome/components/api/proto.h index eaf3f587af..03fa5e0452 100644 --- a/esphome/components/api/proto.h +++ b/esphome/components/api/proto.h @@ -541,9 +541,8 @@ class ProtoSize { if (value == 0) { return; // No need to update total_size_ } - - // Calculate and directly add to total_size - total_size_ += field_id_size + varint(value); + // Delegate to repeated version + add_uint32_repeated(field_id_size, value); } /** @@ -622,10 +621,8 @@ class ProtoSize { if (value == 0) { return; // No need to update total_size_ } - - // ZigZag encoding for sint32: (n << 1) ^ (n >> 31) - uint32_t zigzag = (static_cast(value) << 1) ^ (static_cast(value >> 31)); - total_size_ += field_id_size + varint(zigzag); + // Delegate to repeated version + add_sint32_repeated(field_id_size, value); } /** @@ -648,9 +645,8 @@ class ProtoSize { if (value == 0) { return; // No need to update total_size_ } - - // Calculate and directly add to total_size - total_size_ += field_id_size + varint(value); + // Delegate to repeated version + add_int64_repeated(field_id_size, value); } /** @@ -669,9 +665,8 @@ class ProtoSize { if (value == 0) { return; // No need to update total_size_ } - - // Calculate and directly add to total_size - total_size_ += field_id_size + varint(value); + // Delegate to repeated version + add_uint64_repeated(field_id_size, value); } /** @@ -693,9 +688,8 @@ class ProtoSize { if (len == 0) { return; // No need to update total_size_ } - - // Field ID + length varint + data bytes - total_size_ += field_id_size + varint(static_cast(len)) + static_cast(len); + // Delegate to repeated version + add_length_repeated(field_id_size, len); } /**