encodeDoubleField function
Encodes a double field (wire type 1) into buffer.
Proto3 rule: if value is +0.0, nothing is written. Note -0.0 IS
written — it is a distinct wire value from +0.0 and must round-trip.
The IEEE 754 double-precision value is serialized as a field tag followed
by 8 little-endian bytes.
Returns the same buffer list, possibly with bytes appended.
Implementation
List<int> encodeDoubleField(List<int> buffer, int fieldNumber, double value) {
// Use `identical` (not `==`) so -0.0 is preserved: identical(-0.0, 0.0) is
// false, so negative zero falls through and is serialized.
if (identical(value, 0.0)) return buffer;
encodeTag(buffer, fieldNumber, 1);
buffer.addAll(_encodeDoubleBytes(value));
return buffer;
}