jam.utils.codec.composite.vectors module

Vector codec implementation for JAM.

Implements encoding and decoding of dynamic-length sequences according to the JAM specification. Vectors are encoded with a length prefix followed by concatenated encoded elements.

Format:

[Length_Tag: GeneralInt][Length_Data: varies][Elements…]

class jam.utils.codec.composite.vectors.VectorCodec[source]

Bases: Codec[Sequence[Codable[T]]], Generic[T]

Codec for dynamic-length sequences (vectors).

Vectors are encoded with a variable-length prefix indicating size, followed by the concatenated encoded elements.

encode_size(value: Sequence[Codable[T]]) int[source]

Calculate number of bytes needed to encode vector.

Parameters:

value – Sequence to encode

Returns:

Number of bytes needed

Raises:

EncodeError – If sequence is invalid type or too long

encode_into(value: Sequence[Codable[T]], buffer: bytearray, offset: int = 0) int[source]

Encode vector into buffer.

Parameters:
  • value – Sequence to encode

  • buffer – Target buffer

  • offset – Starting position in buffer

Returns:

Number of bytes written

Raises:

EncodeError – If sequence invalid or buffer too small

static decode_from(codable_class: Type[Codable[T]], buffer: bytes | bytearray | memoryview, offset: int = 0, max_length: int = 9223372036854775807) tuple[List[T], int][source]

Decode vector from buffer.

Parameters:
  • buffer – Source buffer

  • offset – Starting position in buffer

Returns:

Tuple of (decoded list, bytes read)

Raises:

DecodeError – If buffer too small or invalid encoding