encodeSint32Field function
Encodes a sint32 field: tag(fieldNumber, VARINT) + varint(zigzag32(value)).
ZigZag encoding maps signed values to unsigned so that small absolute values produce small varints (efficient for fields that are often negative).
Returns buffer unchanged if value is 0 (proto3 default).
Implementation
List<int> encodeSint32Field(List<int> buffer, int fieldNumber, int value) {
if (value == 0) return buffer;
encodeTag(buffer, fieldNumber, _wireTypeVarint);
encodeVarint(buffer, encodeZigZag32(value));
return buffer;
}