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:

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 rawVarint as a boolean.
decodeAsInt32(int rawVarint) int
Interprets rawVarint as a signed 32-bit integer.
decodeAsInt64(int rawVarint) int
Interprets rawVarint as a signed 64-bit integer.
decodeAsSint32(int rawVarint) int
Interprets rawVarint as a ZigZag-encoded signed 32-bit integer.
decodeAsSint64(int rawVarint) int
Interprets rawVarint as a ZigZag-encoded signed 64-bit integer.
decodeAsUint32(int rawVarint) int
Interprets rawVarint as an unsigned 32-bit integer.
decodeAsUint64(int rawVarint) int
Interprets rawVarint as 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).