field_len library

Length-delimited (wire type 2) field encoding/decoding for protobuf.

Builds on the wire primitives in wire_varint.dart, wire_fixed.dart, and wire_bytes.dart to provide complete field-level encode/decode for strings, bytes, embedded messages, and packed repeated scalars.

Proto3 default-value elision: all encode functions are no-ops when the value is empty (empty string, empty byte list, empty values list).

References:

Functions

decodePackedFixed32(List<int> data) List<int>
Decode concatenated fixed32 (4-byte little-endian) integers from data.
decodePackedVarints(List<int> data) List<int>
Decode concatenated varint-encoded integers from data.
decodeStringValue(List<int> data) String
Decode a UTF-8 string from raw length-delimited data.
encodeBytesField(List<int> buffer, int fieldNumber, List<int> value) List<int>
Encode a bytes field (wire type 2): tag + varint(len) + raw_bytes.
encodeMessageField(List<int> buffer, int fieldNumber, List<int> messageBytes) List<int>
Encode an embedded message field (wire type 2): tag + varint(msg_len) + msg_bytes.
encodePackedFixed32Field(List<int> buffer, int fieldNumber, List<int> values) List<int>
Encode a packed repeated fixed32 field (wire type 2): tag + varint(total_len) + concatenated 4-byte little-endian values.
encodePackedFixed64Field(List<int> buffer, int fieldNumber, List<int> values) List<int>
Encode a packed repeated fixed64 field (wire type 2): tag + varint(total_len) + concatenated 8-byte little-endian values.
encodePackedVarintsField(List<int> buffer, int fieldNumber, List<int> values) List<int>
Encode a packed repeated varints field (wire type 2): tag + varint(total_len) + concatenated varint-encoded values.
encodeStringField(List<int> buffer, int fieldNumber, String value) List<int>
Encode a string field (wire type 2): tag + varint(utf8_len) + utf8_bytes.