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