Module Mavryk_lazy_containers.Immutable_chunked_byte_vector

exception Bounds
exception SizeOverflow
module Chunk : sig ... end
type t

Chunked byte vector

val create : ?origin:Mavryk_tree_encoding.wrapped_tree -> ?get_chunk:(int64 -> Chunk.t Lwt.t) -> int64 -> t

create length creates a chunked byte vector that has capacity for length bytes.

Note: This function is expected to be used only by the tree-encoding library. To create a brand new chunked byte vector, use allocate.

val origin : t -> Mavryk_tree_encoding.wrapped_tree option

origin vec returns the tree of origin of the vector, if it exists.

Note: The sole consumer of this function is expected to be the tree-encoding library.

val allocate : int64 -> t

allocate len creates a new zeroed chunked byte vector.

Note: This function may be dangerous to use in a tick if len is too large.

val of_string : string -> t

of_string str creates a chunked byte vector from the given str.

val of_bytes : bytes -> t

of_bytes bytes creates a chunked byte vector from the given bytes. The underlying memory is effectively copied - further modifications to bytes are not reflected in the chunked byte vector. Use this over of_string when turning your bytes into a string would be potentially expensive.

val to_string : t -> string Lwt.t

to_string vector creates a string from the given vector.

val to_bytes : t -> bytes Lwt.t

to_bytes vector creates a bytes from the given vector.

val grow : t -> int64 -> t

grow vector length_delta creates a new vector with the byte vector length increased by length_delta and initializes the memory with empty chunks.

Note: This function may be dangerous to use in a tick if length_delta is too large.

val length : t -> int64

length vector returns the length of vector in bytes.

val load_byte : t -> int64 -> int Lwt.t

load_byte vector offset read the byte at offset.

val load_bytes : t -> int64 -> int64 -> bytes Lwt.t

load_bytes vector offset num_bytes loads the bytes at offset to offset + num_bytes.

Note: This function may be dangerous to use in a tick if num_bytes is too large.

val store_byte : t -> int64 -> int -> t Lwt.t

store_byte vector offset byte creates a new vector with the byte at offset set to byte.

val store_bytes : t -> int64 -> bytes -> t Lwt.t

store_bytes vector offset bytes creates a new vector with the bytes from offset set to the given bytes.

val loaded_chunks : t -> (int64 * Chunk.t option) list

loaded_chunks vector returns the chunks of vector that have been cached in-memory since vector has been created, either by reading its contents, or by writing to those chunks.

val encoding : t Mavryk_tree_encoding.t

encoding is a Mavryk_tree_encoding for t.