Module Bin_prot.Common

Common definitions used by binary protocol converters

Buffers

type pos = int

Position within buffers

type pos_ref = pos Pervasives.ref

Reference to a position within buffers

type buf = (char, Bigarray.int8_unsigned_elt, Bigarray.c_layout) Bigarray.Array1.t

Buffers

val create_buf : int ‑> buf

create_buf n creates a buffer of size n.

val buf_len : buf ‑> int

buf_len buf returns the length of buf.

val assert_pos : pos ‑> unit

assert_pos pos raises Invalid_argument if position pos is negative.

val check_pos : buf ‑> pos ‑> unit

check_pos buf pos raises Buffer_short if position pos exceeds the length of buffer buf.

val check_next : buf ‑> pos ‑> unit

check_next buf pos raises Buffer_short if the next position after pos exceeds the length of buffer buf.

val safe_get_pos : buf ‑> pos_ref ‑> pos

safe_get_pos buf pos_ref returns the position referenced by pos_ref within buffer buf.

val blit_string_buf : ?⁠src_pos:int ‑> string ‑> ?⁠dst_pos:int ‑> buf ‑> len:int ‑> unit

blit_string_buf ?src_pos src ?dst_pos dst ~len blits len bytes of the source string src starting at position src_pos to buffer dst starting at position dst_pos.

val blit_bytes_buf : ?⁠src_pos:int ‑> bytes ‑> ?⁠dst_pos:int ‑> buf ‑> len:int ‑> unit

blit_bytes_buf ?src_pos src ?dst_pos dst ~len blits len bytes of the source byte sequence src starting at position src_pos to buffer dst starting at position dst_pos.

val blit_buf_string : ?⁠src_pos:int ‑> buf ‑> ?⁠dst_pos:int ‑> bytes ‑> len:int ‑> unit

blit_buf_string ?src_pos src ?dst_pos dst ~len blits len bytes of the source buffer src starting at position src_pos to string dst starting at position dst_pos.

val blit_buf_bytes : ?⁠src_pos:int ‑> buf ‑> ?⁠dst_pos:int ‑> bytes ‑> len:int ‑> unit

blit_buf_bytes ?src_pos src ?dst_pos dst ~len blits len bytes of the source buffer src starting at position src_pos to byte sequence dst starting at position dst_pos.

val blit_buf : ?⁠src_pos:int ‑> src:buf ‑> ?⁠dst_pos:int ‑> dst:buf ‑> int ‑> unit

blit_buf ?src_pos ~src ?dst_pos ~dst len blits len bytes of the source buffer src starting at position src_pos to destination buffer dst starting at position dst_pos.

Errors and exceptions

exception Buffer_short

Buffer too short for read/write operation

exception No_variant_match

Used internally for backtracking

module ReadError : sig ... end
exception Read_error of ReadError.t * pos

ReadError (err, err_pos)

exception Poly_rec_write of string

PolyRecWrite type gets raised when the user attempts to write or estimate the size of a value of a type that is bound through a polymorphic record field in type definition type.

exception Empty_type of string

EmptyType gets raised when the user attempts to write or estimate the size of a value of an empty type, which would not make sense.

val raise_read_error : ReadError.t ‑> pos ‑> 'a

raise_read_error err pos

val raise_variant_wrong_type : string ‑> pos ‑> 'a

raise_variant_wrong_type name pos

val raise_concurrent_modification : string ‑> 'a

raise_concurrent_modification loc raises Failure if a binary writer detects a concurrent change to the underlying data structure.

val array_bound_error : unit ‑> 'a

array_bound_error ()

Bigarrays

type vec32 = (float, Bigarray.float32_elt, Bigarray.fortran_layout) Bigarray.Array1.t
type vec64 = (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array1.t
type vec = vec64
type mat32 = (float, Bigarray.float32_elt, Bigarray.fortran_layout) Bigarray.Array2.t
type mat64 = (float, Bigarray.float64_elt, Bigarray.fortran_layout) Bigarray.Array2.t
type mat = mat64

Miscellaneous

val copy_htbl_list : ('a'b) Hashtbl.t ‑> ('a * 'b) list ‑> ('a'b) Hashtbl.t

copy_htbl_list htbl lst adds all (key, value) pairs in lst to hash table htbl.

NOTE: unsafe functions!!!

external unsafe_blit_buf : src_pos:int ‑> src:buf ‑> dst_pos:int ‑> dst:buf ‑> len:int ‑> unit = "bin_prot_blit_buf_stub"
external unsafe_blit_string_buf : src_pos:int ‑> string ‑> dst_pos:int ‑> buf ‑> len:int ‑> unit = "bin_prot_blit_string_buf_stub"
external unsafe_blit_bytes_buf : src_pos:int ‑> bytes ‑> dst_pos:int ‑> buf ‑> len:int ‑> unit = "bin_prot_blit_bytes_buf_stub"
external unsafe_blit_buf_string : src_pos:int ‑> buf ‑> dst_pos:int ‑> bytes ‑> len:int ‑> unit = "bin_prot_blit_buf_bytes_stub"
external unsafe_blit_buf_bytes : src_pos:int ‑> buf ‑> dst_pos:int ‑> bytes ‑> len:int ‑> unit = "bin_prot_blit_buf_bytes_stub"
external unsafe_blit_float_array_buf : src_pos:int ‑> float array ‑> dst_pos:int ‑> buf ‑> len:int ‑> unit = "bin_prot_blit_float_array_buf_stub"
external unsafe_blit_buf_float_array : src_pos:int ‑> buf ‑> dst_pos:int ‑> float array ‑> len:int ‑> unit = "bin_prot_blit_buf_float_array_stub"