field_int library
Protobuf integer field encoding/decoding.
Each encode function appends a complete field (tag + value) to a buffer for wire type 0 (VARINT) integer types: int32, int64, uint32, uint64, sint32, sint64, bool, and enum.
Each decode function interprets a raw varint value as the appropriate type.
Proto3 default-value rule: encode functions return the buffer unchanged when the value is the default (0 for integers, false for bool), because proto3 does not serialize default values on the wire.
References:
- https://protobuf.dev/programming-guides/encoding/#varints
- https://protobuf.dev/programming-guides/encoding/#signed-ints
Test vectors:
encodeInt32Field([], 1, 150) -> 8, 150, 1 (tag 0x08, varint 150)
encodeInt32Field([], 1, 0) -> [] (default skipped)
encodeSint32Field([], 1, -1) -> 8, 1 (tag 0x08, zigzag(-1)=1)
encodeBoolField([], 1, true) -> 8, 1
encodeBoolField([], 1, false)-> [] (default skipped)
decodeAsInt32(0xFFFFFFFF) -> -1 (32-bit signed)
decodeAsUint32(0x1FFFFFFFF) -> 0xFFFFFFFF (mask to 32 bits)
decodeAsSint32(1) -> -1 (zigzag decode)
decodeAsBool(0) -> false
decodeAsBool(1) -> true
Functions
-
decodeAsBool(
int rawVarint) → bool -
Interprets
rawVarintas a boolean. -
decodeAsInt32(
int rawVarint) → int -
Interprets
rawVarintas a signed 32-bit integer. -
decodeAsInt64(
int rawVarint) → int -
Interprets
rawVarintas a signed 64-bit integer. -
decodeAsSint32(
int rawVarint) → int -
Interprets
rawVarintas a ZigZag-encoded signed 32-bit integer. -
decodeAsSint64(
int rawVarint) → int -
Interprets
rawVarintas a ZigZag-encoded signed 64-bit integer. -
decodeAsUint32(
int rawVarint) → int -
Interprets
rawVarintas an unsigned 32-bit integer. -
decodeAsUint64(
int rawVarint) → int -
Interprets
rawVarintas an unsigned 64-bit integer. -
encodeBoolField(
List< int> buffer, int fieldNumber, bool value) → List<int> - Encodes a bool field: tag(fieldNumber, VARINT) + varint(value ? 1 : 0).
-
encodeEnumField(
List< int> buffer, int fieldNumber, int value) → List<int> - Encodes an enum field: tag(fieldNumber, VARINT) + varint(value).
-
encodeInt32Field(
List< int> buffer, int fieldNumber, int value) → List<int> - Encodes an int32 field: tag(fieldNumber, VARINT) + varint(value).
-
encodeInt64Field(
List< int> buffer, int fieldNumber, int value) → List<int> - Encodes an int64 field: tag(fieldNumber, VARINT) + varint(value).
-
encodeSint32Field(
List< int> buffer, int fieldNumber, int value) → List<int> - Encodes a sint32 field: tag(fieldNumber, VARINT) + varint(zigzag32(value)).
-
encodeSint64Field(
List< int> buffer, int fieldNumber, int value) → List<int> - Encodes a sint64 field: tag(fieldNumber, VARINT) + varint(zigzag64(value)).
-
encodeUint32Field(
List< int> buffer, int fieldNumber, int value) → List<int> - Encodes a uint32 field: tag(fieldNumber, VARINT) + varint(value).
-
encodeUint64Field(
List< int> buffer, int fieldNumber, int value) → List<int> - Encodes a uint64 field: tag(fieldNumber, VARINT) + varint(value).