mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 06:33:51 +00:00 
			
		
		
		
	Optimize API proto size calculations by removing redundant force parameter
This commit is contained in:
		
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -141,9 +141,9 @@ class ProtoSize { | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of an int32 field to the total message size | ||||
|    */ | ||||
|   static inline void add_int32_field(uint32_t &total_size, uint32_t field_id_size, int32_t value, bool force = false) { | ||||
|     // Skip calculation if value is zero and not forced | ||||
|     if (value == 0 && !force) { | ||||
|   static inline void add_int32_field(uint32_t &total_size, uint32_t field_id_size, int32_t value) { | ||||
|     // Skip calculation if value is zero | ||||
|     if (value == 0) { | ||||
|       return;  // No need to update total_size | ||||
|     } | ||||
|  | ||||
| @@ -157,13 +157,26 @@ class ProtoSize { | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of an int32 field to the total message size (repeated field version) | ||||
|    */ | ||||
|   static inline void add_int32_field_repeated(uint32_t &total_size, uint32_t field_id_size, int32_t value) { | ||||
|     // Always calculate size for repeated fields | ||||
|     if (value < 0) { | ||||
|       // Negative values are encoded as 10-byte varints in protobuf | ||||
|       total_size += field_id_size + 10; | ||||
|     } else { | ||||
|       // For non-negative values, use the standard varint size | ||||
|       total_size += field_id_size + varint(static_cast<uint32_t>(value)); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of a uint32 field to the total message size | ||||
|    */ | ||||
|   static inline void add_uint32_field(uint32_t &total_size, uint32_t field_id_size, uint32_t value, | ||||
|                                       bool force = false) { | ||||
|     // Skip calculation if value is zero and not forced | ||||
|     if (value == 0 && !force) { | ||||
|   static inline void add_uint32_field(uint32_t &total_size, uint32_t field_id_size, uint32_t value) { | ||||
|     // Skip calculation if value is zero | ||||
|     if (value == 0) { | ||||
|       return;  // No need to update total_size | ||||
|     } | ||||
|  | ||||
| @@ -171,12 +184,20 @@ class ProtoSize { | ||||
|     total_size += field_id_size + varint(value); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of a uint32 field to the total message size (repeated field version) | ||||
|    */ | ||||
|   static inline void add_uint32_field_repeated(uint32_t &total_size, uint32_t field_id_size, uint32_t value) { | ||||
|     // Always calculate size for repeated fields | ||||
|     total_size += field_id_size + varint(value); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of a boolean field to the total message size | ||||
|    */ | ||||
|   static inline void add_bool_field(uint32_t &total_size, uint32_t field_id_size, bool value, bool force = false) { | ||||
|     // Skip calculation if value is false and not forced | ||||
|     if (!value && !force) { | ||||
|   static inline void add_bool_field(uint32_t &total_size, uint32_t field_id_size, bool value) { | ||||
|     // Skip calculation if value is false | ||||
|     if (!value) { | ||||
|       return;  // No need to update total_size | ||||
|     } | ||||
|  | ||||
| @@ -184,6 +205,15 @@ class ProtoSize { | ||||
|     total_size += field_id_size + 1; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of a boolean field to the total message size (repeated field version) | ||||
|    */ | ||||
|   static inline void add_bool_field_repeated(uint32_t &total_size, uint32_t field_id_size, bool value) { | ||||
|     // Always calculate size for repeated fields | ||||
|     // Boolean fields always use 1 byte | ||||
|     total_size += field_id_size + 1; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of a fixed field to the total message size | ||||
|    * | ||||
| @@ -193,10 +223,9 @@ class ProtoSize { | ||||
|    * @param is_nonzero Whether the value is non-zero | ||||
|    */ | ||||
|   template<uint32_t NumBytes> | ||||
|   static inline void add_fixed_field(uint32_t &total_size, uint32_t field_id_size, bool is_nonzero, | ||||
|                                      bool force = false) { | ||||
|     // Skip calculation if value is zero and not forced | ||||
|     if (!is_nonzero && !force) { | ||||
|   static inline void add_fixed_field(uint32_t &total_size, uint32_t field_id_size, bool is_nonzero) { | ||||
|     // Skip calculation if value is zero | ||||
|     if (!is_nonzero) { | ||||
|       return;  // No need to update total_size | ||||
|     } | ||||
|  | ||||
| @@ -204,14 +233,26 @@ class ProtoSize { | ||||
|     total_size += field_id_size + NumBytes; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of a fixed field to the total message size (repeated field version) | ||||
|    * | ||||
|    * @tparam NumBytes The number of bytes for this fixed field (4 or 8) | ||||
|    */ | ||||
|   template<uint32_t NumBytes> | ||||
|   static inline void add_fixed_field_repeated(uint32_t &total_size, uint32_t field_id_size) { | ||||
|     // Always calculate size for repeated fields | ||||
|     // Fixed fields always take exactly NumBytes | ||||
|     total_size += field_id_size + NumBytes; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of an enum field to the total message size | ||||
|    * | ||||
|    * Enum fields are encoded as uint32 varints. | ||||
|    */ | ||||
|   static inline void add_enum_field(uint32_t &total_size, uint32_t field_id_size, uint32_t value, bool force = false) { | ||||
|     // Skip calculation if value is zero and not forced | ||||
|     if (value == 0 && !force) { | ||||
|   static inline void add_enum_field(uint32_t &total_size, uint32_t field_id_size, uint32_t value) { | ||||
|     // Skip calculation if value is zero | ||||
|     if (value == 0) { | ||||
|       return;  // No need to update total_size | ||||
|     } | ||||
|  | ||||
| @@ -219,14 +260,25 @@ class ProtoSize { | ||||
|     total_size += field_id_size + varint(value); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of an enum field to the total message size (repeated field version) | ||||
|    * | ||||
|    * Enum fields are encoded as uint32 varints. | ||||
|    */ | ||||
|   static inline void add_enum_field_repeated(uint32_t &total_size, uint32_t field_id_size, uint32_t value) { | ||||
|     // Always calculate size for repeated fields | ||||
|     // Enums are encoded as uint32 | ||||
|     total_size += field_id_size + varint(value); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of a sint32 field to the total message size | ||||
|    * | ||||
|    * Sint32 fields use ZigZag encoding, which is more efficient for negative values. | ||||
|    */ | ||||
|   static inline void add_sint32_field(uint32_t &total_size, uint32_t field_id_size, int32_t value, bool force = false) { | ||||
|     // Skip calculation if value is zero and not forced | ||||
|     if (value == 0 && !force) { | ||||
|   static inline void add_sint32_field(uint32_t &total_size, uint32_t field_id_size, int32_t value) { | ||||
|     // Skip calculation if value is zero | ||||
|     if (value == 0) { | ||||
|       return;  // No need to update total_size | ||||
|     } | ||||
|  | ||||
| @@ -235,12 +287,24 @@ class ProtoSize { | ||||
|     total_size += field_id_size + varint(zigzag); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of a sint32 field to the total message size (repeated field version) | ||||
|    * | ||||
|    * Sint32 fields use ZigZag encoding, which is more efficient for negative values. | ||||
|    */ | ||||
|   static inline void add_sint32_field_repeated(uint32_t &total_size, uint32_t field_id_size, int32_t value) { | ||||
|     // Always calculate size for repeated fields | ||||
|     // ZigZag encoding for sint32: (n << 1) ^ (n >> 31) | ||||
|     uint32_t zigzag = (static_cast<uint32_t>(value) << 1) ^ (static_cast<uint32_t>(value >> 31)); | ||||
|     total_size += field_id_size + varint(zigzag); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of an int64 field to the total message size | ||||
|    */ | ||||
|   static inline void add_int64_field(uint32_t &total_size, uint32_t field_id_size, int64_t value, bool force = false) { | ||||
|     // Skip calculation if value is zero and not forced | ||||
|     if (value == 0 && !force) { | ||||
|   static inline void add_int64_field(uint32_t &total_size, uint32_t field_id_size, int64_t value) { | ||||
|     // Skip calculation if value is zero | ||||
|     if (value == 0) { | ||||
|       return;  // No need to update total_size | ||||
|     } | ||||
|  | ||||
| @@ -248,13 +312,20 @@ class ProtoSize { | ||||
|     total_size += field_id_size + varint(value); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of an int64 field to the total message size (repeated field version) | ||||
|    */ | ||||
|   static inline void add_int64_field_repeated(uint32_t &total_size, uint32_t field_id_size, int64_t value) { | ||||
|     // Always calculate size for repeated fields | ||||
|     total_size += field_id_size + varint(value); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of a uint64 field to the total message size | ||||
|    */ | ||||
|   static inline void add_uint64_field(uint32_t &total_size, uint32_t field_id_size, uint64_t value, | ||||
|                                       bool force = false) { | ||||
|     // Skip calculation if value is zero and not forced | ||||
|     if (value == 0 && !force) { | ||||
|   static inline void add_uint64_field(uint32_t &total_size, uint32_t field_id_size, uint64_t value) { | ||||
|     // Skip calculation if value is zero | ||||
|     if (value == 0) { | ||||
|       return;  // No need to update total_size | ||||
|     } | ||||
|  | ||||
| @@ -262,14 +333,22 @@ class ProtoSize { | ||||
|     total_size += field_id_size + varint(value); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of a uint64 field to the total message size (repeated field version) | ||||
|    */ | ||||
|   static inline void add_uint64_field_repeated(uint32_t &total_size, uint32_t field_id_size, uint64_t value) { | ||||
|     // Always calculate size for repeated fields | ||||
|     total_size += field_id_size + varint(value); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of a sint64 field to the total message size | ||||
|    * | ||||
|    * Sint64 fields use ZigZag encoding, which is more efficient for negative values. | ||||
|    */ | ||||
|   static inline void add_sint64_field(uint32_t &total_size, uint32_t field_id_size, int64_t value, bool force = false) { | ||||
|     // Skip calculation if value is zero and not forced | ||||
|     if (value == 0 && !force) { | ||||
|   static inline void add_sint64_field(uint32_t &total_size, uint32_t field_id_size, int64_t value) { | ||||
|     // Skip calculation if value is zero | ||||
|     if (value == 0) { | ||||
|       return;  // No need to update total_size | ||||
|     } | ||||
|  | ||||
| @@ -278,33 +357,51 @@ class ProtoSize { | ||||
|     total_size += field_id_size + varint(zigzag); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of a sint64 field to the total message size (repeated field version) | ||||
|    * | ||||
|    * Sint64 fields use ZigZag encoding, which is more efficient for negative values. | ||||
|    */ | ||||
|   static inline void add_sint64_field_repeated(uint32_t &total_size, uint32_t field_id_size, int64_t value) { | ||||
|     // Always calculate size for repeated fields | ||||
|     // ZigZag encoding for sint64: (n << 1) ^ (n >> 63) | ||||
|     uint64_t zigzag = (static_cast<uint64_t>(value) << 1) ^ (static_cast<uint64_t>(value >> 63)); | ||||
|     total_size += field_id_size + varint(zigzag); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of a string/bytes field to the total message size | ||||
|    */ | ||||
|   static inline void add_string_field(uint32_t &total_size, uint32_t field_id_size, const std::string &str, | ||||
|                                       bool force = false) { | ||||
|     // Skip calculation if string is empty and not forced | ||||
|     if (str.empty() && !force) { | ||||
|   static inline void add_string_field(uint32_t &total_size, uint32_t field_id_size, const std::string &str) { | ||||
|     // Skip calculation if string is empty | ||||
|     if (str.empty()) { | ||||
|       return;  // No need to update total_size | ||||
|     } | ||||
|  | ||||
|     // Calculate and directly add to total_size | ||||
|     const uint32_t str_size = static_cast<uint32_t>(str.size()); | ||||
|     total_size += field_id_size + varint(str_size) + str_size; | ||||
|     total_size += field_id_size + varint(static_cast<uint32_t>(str.size())) + str.size(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of a string/bytes field to the total message size (repeated field version) | ||||
|    */ | ||||
|   static inline void add_string_field_repeated(uint32_t &total_size, uint32_t field_id_size, const std::string &str) { | ||||
|     // Always calculate size for repeated fields | ||||
|     // No local variable needed for simple case | ||||
|     total_size += field_id_size + varint(static_cast<uint32_t>(str.size())) + str.size(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of a nested message field to the total message size | ||||
|    * | ||||
|    * This helper function directly updates the total_size reference if the nested size | ||||
|    * is greater than zero or force is true. | ||||
|    * is greater than zero. | ||||
|    * | ||||
|    * @param nested_size The pre-calculated size of the nested message | ||||
|    */ | ||||
|   static inline void add_message_field(uint32_t &total_size, uint32_t field_id_size, uint32_t nested_size, | ||||
|                                        bool force = false) { | ||||
|     // Skip calculation if nested message is empty and not forced | ||||
|     if (nested_size == 0 && !force) { | ||||
|   static inline void add_message_field(uint32_t &total_size, uint32_t field_id_size, uint32_t nested_size) { | ||||
|     // Skip calculation if nested message is empty | ||||
|     if (nested_size == 0) { | ||||
|       return;  // No need to update total_size | ||||
|     } | ||||
|  | ||||
| @@ -313,6 +410,17 @@ class ProtoSize { | ||||
|     total_size += field_id_size + varint(nested_size) + nested_size; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of a nested message field to the total message size (repeated field version) | ||||
|    * | ||||
|    * @param nested_size The pre-calculated size of the nested message | ||||
|    */ | ||||
|   static inline void add_message_field_repeated(uint32_t &total_size, uint32_t field_id_size, uint32_t nested_size) { | ||||
|     // Always calculate size for repeated fields | ||||
|     // Field ID + length varint + nested message content | ||||
|     total_size += field_id_size + varint(nested_size) + nested_size; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of a nested message field to the total message size | ||||
|    * | ||||
| @@ -322,13 +430,26 @@ class ProtoSize { | ||||
|    * | ||||
|    * @param message The nested message object | ||||
|    */ | ||||
|   static inline void add_message_object(uint32_t &total_size, uint32_t field_id_size, const ProtoMessage &message, | ||||
|                                         bool force = false) { | ||||
|   static inline void add_message_object(uint32_t &total_size, uint32_t field_id_size, const ProtoMessage &message) { | ||||
|     uint32_t nested_size = 0; | ||||
|     message.calculate_size(nested_size); | ||||
|  | ||||
|     // Use the base implementation with the calculated nested_size | ||||
|     add_message_field(total_size, field_id_size, nested_size, force); | ||||
|     add_message_field(total_size, field_id_size, nested_size); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @brief Calculates and adds the size of a nested message field to the total message size (repeated field version) | ||||
|    * | ||||
|    * @param message The nested message object | ||||
|    */ | ||||
|   static inline void add_message_object_repeated(uint32_t &total_size, uint32_t field_id_size, | ||||
|                                                  const ProtoMessage &message) { | ||||
|     uint32_t nested_size = 0; | ||||
|     message.calculate_size(nested_size); | ||||
|  | ||||
|     // Use the base implementation with the calculated nested_size | ||||
|     add_message_field_repeated(total_size, field_id_size, nested_size); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
| @@ -348,9 +469,9 @@ class ProtoSize { | ||||
|       return; | ||||
|     } | ||||
|  | ||||
|     // For repeated fields, always use force=true | ||||
|     // Use the repeated field version for all messages | ||||
|     for (const auto &message : messages) { | ||||
|       add_message_object(total_size, field_id_size, message, true); | ||||
|       add_message_object_repeated(total_size, field_id_size, message); | ||||
|     } | ||||
|   } | ||||
| }; | ||||
|   | ||||
| @@ -296,7 +296,11 @@ class DoubleType(TypeInfo): | ||||
|  | ||||
|     def get_size_calculation(self, name: str, force: bool = False) -> str: | ||||
|         field_id_size = self.calculate_field_id_size() | ||||
|         o = f"ProtoSize::add_fixed_field<8>(total_size, {field_id_size}, {name} != 0.0, {force_str(force)});" | ||||
|         method = "add_fixed_field_repeated<8>" if force else "add_fixed_field<8>" | ||||
|         if force: | ||||
|             o = f"ProtoSize::{method}(total_size, {field_id_size});" | ||||
|         else: | ||||
|             o = f"ProtoSize::{method}(total_size, {field_id_size}, {name} != 0.0);" | ||||
|         return o | ||||
|  | ||||
|     def get_estimated_size(self) -> int: | ||||
| @@ -318,7 +322,11 @@ class FloatType(TypeInfo): | ||||
|  | ||||
|     def get_size_calculation(self, name: str, force: bool = False) -> str: | ||||
|         field_id_size = self.calculate_field_id_size() | ||||
|         o = f"ProtoSize::add_fixed_field<4>(total_size, {field_id_size}, {name} != 0.0f, {force_str(force)});" | ||||
|         method = "add_fixed_field_repeated<4>" if force else "add_fixed_field<4>" | ||||
|         if force: | ||||
|             o = f"ProtoSize::{method}(total_size, {field_id_size});" | ||||
|         else: | ||||
|             o = f"ProtoSize::{method}(total_size, {field_id_size}, {name} != 0.0f);" | ||||
|         return o | ||||
|  | ||||
|     def get_estimated_size(self) -> int: | ||||
| @@ -340,7 +348,8 @@ class Int64Type(TypeInfo): | ||||
|  | ||||
|     def get_size_calculation(self, name: str, force: bool = False) -> str: | ||||
|         field_id_size = self.calculate_field_id_size() | ||||
|         o = f"ProtoSize::add_int64_field(total_size, {field_id_size}, {name}, {force_str(force)});" | ||||
|         method = "add_int64_field_repeated" if force else "add_int64_field" | ||||
|         o = f"ProtoSize::{method}(total_size, {field_id_size}, {name});" | ||||
|         return o | ||||
|  | ||||
|     def get_estimated_size(self) -> int: | ||||
| @@ -362,7 +371,8 @@ class UInt64Type(TypeInfo): | ||||
|  | ||||
|     def get_size_calculation(self, name: str, force: bool = False) -> str: | ||||
|         field_id_size = self.calculate_field_id_size() | ||||
|         o = f"ProtoSize::add_uint64_field(total_size, {field_id_size}, {name}, {force_str(force)});" | ||||
|         method = "add_uint64_field_repeated" if force else "add_uint64_field" | ||||
|         o = f"ProtoSize::{method}(total_size, {field_id_size}, {name});" | ||||
|         return o | ||||
|  | ||||
|     def get_estimated_size(self) -> int: | ||||
| @@ -384,7 +394,8 @@ class Int32Type(TypeInfo): | ||||
|  | ||||
|     def get_size_calculation(self, name: str, force: bool = False) -> str: | ||||
|         field_id_size = self.calculate_field_id_size() | ||||
|         o = f"ProtoSize::add_int32_field(total_size, {field_id_size}, {name}, {force_str(force)});" | ||||
|         method = "add_int32_field_repeated" if force else "add_int32_field" | ||||
|         o = f"ProtoSize::{method}(total_size, {field_id_size}, {name});" | ||||
|         return o | ||||
|  | ||||
|     def get_estimated_size(self) -> int: | ||||
| @@ -406,7 +417,11 @@ class Fixed64Type(TypeInfo): | ||||
|  | ||||
|     def get_size_calculation(self, name: str, force: bool = False) -> str: | ||||
|         field_id_size = self.calculate_field_id_size() | ||||
|         o = f"ProtoSize::add_fixed_field<8>(total_size, {field_id_size}, {name} != 0, {force_str(force)});" | ||||
|         method = "add_fixed_field_repeated<8>" if force else "add_fixed_field<8>" | ||||
|         if force: | ||||
|             o = f"ProtoSize::{method}(total_size, {field_id_size});" | ||||
|         else: | ||||
|             o = f"ProtoSize::{method}(total_size, {field_id_size}, {name} != 0);" | ||||
|         return o | ||||
|  | ||||
|     def get_estimated_size(self) -> int: | ||||
| @@ -428,7 +443,11 @@ class Fixed32Type(TypeInfo): | ||||
|  | ||||
|     def get_size_calculation(self, name: str, force: bool = False) -> str: | ||||
|         field_id_size = self.calculate_field_id_size() | ||||
|         o = f"ProtoSize::add_fixed_field<4>(total_size, {field_id_size}, {name} != 0, {force_str(force)});" | ||||
|         method = "add_fixed_field_repeated<4>" if force else "add_fixed_field<4>" | ||||
|         if force: | ||||
|             o = f"ProtoSize::{method}(total_size, {field_id_size});" | ||||
|         else: | ||||
|             o = f"ProtoSize::{method}(total_size, {field_id_size}, {name} != 0);" | ||||
|         return o | ||||
|  | ||||
|     def get_estimated_size(self) -> int: | ||||
| @@ -449,7 +468,8 @@ class BoolType(TypeInfo): | ||||
|  | ||||
|     def get_size_calculation(self, name: str, force: bool = False) -> str: | ||||
|         field_id_size = self.calculate_field_id_size() | ||||
|         o = f"ProtoSize::add_bool_field(total_size, {field_id_size}, {name}, {force_str(force)});" | ||||
|         method = "add_bool_field_repeated" if force else "add_bool_field" | ||||
|         o = f"ProtoSize::{method}(total_size, {field_id_size}, {name});" | ||||
|         return o | ||||
|  | ||||
|     def get_estimated_size(self) -> int: | ||||
| @@ -472,7 +492,8 @@ class StringType(TypeInfo): | ||||
|  | ||||
|     def get_size_calculation(self, name: str, force: bool = False) -> str: | ||||
|         field_id_size = self.calculate_field_id_size() | ||||
|         o = f"ProtoSize::add_string_field(total_size, {field_id_size}, {name}, {force_str(force)});" | ||||
|         method = "add_string_field_repeated" if force else "add_string_field" | ||||
|         o = f"ProtoSize::{method}(total_size, {field_id_size}, {name});" | ||||
|         return o | ||||
|  | ||||
|     def get_estimated_size(self) -> int: | ||||
| @@ -510,7 +531,8 @@ class MessageType(TypeInfo): | ||||
|  | ||||
|     def get_size_calculation(self, name: str, force: bool = False) -> str: | ||||
|         field_id_size = self.calculate_field_id_size() | ||||
|         o = f"ProtoSize::add_message_object(total_size, {field_id_size}, {name}, {force_str(force)});" | ||||
|         method = "add_message_object_repeated" if force else "add_message_object" | ||||
|         o = f"ProtoSize::{method}(total_size, {field_id_size}, {name});" | ||||
|         return o | ||||
|  | ||||
|     def get_estimated_size(self) -> int: | ||||
| @@ -539,7 +561,8 @@ class BytesType(TypeInfo): | ||||
|  | ||||
|     def get_size_calculation(self, name: str, force: bool = False) -> str: | ||||
|         field_id_size = self.calculate_field_id_size() | ||||
|         o = f"ProtoSize::add_string_field(total_size, {field_id_size}, {name}, {force_str(force)});" | ||||
|         method = "add_string_field_repeated" if force else "add_string_field" | ||||
|         o = f"ProtoSize::{method}(total_size, {field_id_size}, {name});" | ||||
|         return o | ||||
|  | ||||
|     def get_estimated_size(self) -> int: | ||||
| @@ -561,7 +584,8 @@ class UInt32Type(TypeInfo): | ||||
|  | ||||
|     def get_size_calculation(self, name: str, force: bool = False) -> str: | ||||
|         field_id_size = self.calculate_field_id_size() | ||||
|         o = f"ProtoSize::add_uint32_field(total_size, {field_id_size}, {name}, {force_str(force)});" | ||||
|         method = "add_uint32_field_repeated" if force else "add_uint32_field" | ||||
|         o = f"ProtoSize::{method}(total_size, {field_id_size}, {name});" | ||||
|         return o | ||||
|  | ||||
|     def get_estimated_size(self) -> int: | ||||
| @@ -591,7 +615,8 @@ class EnumType(TypeInfo): | ||||
|  | ||||
|     def get_size_calculation(self, name: str, force: bool = False) -> str: | ||||
|         field_id_size = self.calculate_field_id_size() | ||||
|         o = f"ProtoSize::add_enum_field(total_size, {field_id_size}, static_cast<uint32_t>({name}), {force_str(force)});" | ||||
|         method = "add_enum_field_repeated" if force else "add_enum_field" | ||||
|         o = f"ProtoSize::{method}(total_size, {field_id_size}, static_cast<uint32_t>({name}));" | ||||
|         return o | ||||
|  | ||||
|     def get_estimated_size(self) -> int: | ||||
| @@ -613,7 +638,11 @@ class SFixed32Type(TypeInfo): | ||||
|  | ||||
|     def get_size_calculation(self, name: str, force: bool = False) -> str: | ||||
|         field_id_size = self.calculate_field_id_size() | ||||
|         o = f"ProtoSize::add_fixed_field<4>(total_size, {field_id_size}, {name} != 0, {force_str(force)});" | ||||
|         method = "add_fixed_field_repeated<4>" if force else "add_fixed_field<4>" | ||||
|         if force: | ||||
|             o = f"ProtoSize::{method}(total_size, {field_id_size});" | ||||
|         else: | ||||
|             o = f"ProtoSize::{method}(total_size, {field_id_size}, {name} != 0);" | ||||
|         return o | ||||
|  | ||||
|     def get_estimated_size(self) -> int: | ||||
| @@ -635,7 +664,11 @@ class SFixed64Type(TypeInfo): | ||||
|  | ||||
|     def get_size_calculation(self, name: str, force: bool = False) -> str: | ||||
|         field_id_size = self.calculate_field_id_size() | ||||
|         o = f"ProtoSize::add_fixed_field<8>(total_size, {field_id_size}, {name} != 0, {force_str(force)});" | ||||
|         method = "add_fixed_field_repeated<8>" if force else "add_fixed_field<8>" | ||||
|         if force: | ||||
|             o = f"ProtoSize::{method}(total_size, {field_id_size});" | ||||
|         else: | ||||
|             o = f"ProtoSize::{method}(total_size, {field_id_size}, {name} != 0);" | ||||
|         return o | ||||
|  | ||||
|     def get_estimated_size(self) -> int: | ||||
| @@ -657,7 +690,8 @@ class SInt32Type(TypeInfo): | ||||
|  | ||||
|     def get_size_calculation(self, name: str, force: bool = False) -> str: | ||||
|         field_id_size = self.calculate_field_id_size() | ||||
|         o = f"ProtoSize::add_sint32_field(total_size, {field_id_size}, {name}, {force_str(force)});" | ||||
|         method = "add_sint32_field_repeated" if force else "add_sint32_field" | ||||
|         o = f"ProtoSize::{method}(total_size, {field_id_size}, {name});" | ||||
|         return o | ||||
|  | ||||
|     def get_estimated_size(self) -> int: | ||||
| @@ -679,7 +713,8 @@ class SInt64Type(TypeInfo): | ||||
|  | ||||
|     def get_size_calculation(self, name: str, force: bool = False) -> str: | ||||
|         field_id_size = self.calculate_field_id_size() | ||||
|         o = f"ProtoSize::add_sint64_field(total_size, {field_id_size}, {name}, {force_str(force)});" | ||||
|         method = "add_sint64_field_repeated" if force else "add_sint64_field" | ||||
|         o = f"ProtoSize::{method}(total_size, {field_id_size}, {name});" | ||||
|         return o | ||||
|  | ||||
|     def get_estimated_size(self) -> int: | ||||
| @@ -1701,7 +1736,6 @@ static const char *const TAG = "api.service"; | ||||
|         exec_clang_format(root / "api_pb2_service.cpp") | ||||
|         exec_clang_format(root / "api_pb2.h") | ||||
|         exec_clang_format(root / "api_pb2.cpp") | ||||
|         exec_clang_format(root / "api_pb2_dump.h") | ||||
|         exec_clang_format(root / "api_pb2_dump.cpp") | ||||
|     except ImportError: | ||||
|         pass | ||||
|   | ||||
		Reference in New Issue
	
	Block a user