Module B0_std.Conv.Bin

module Bin: sig .. end

Binary codecs.


Encoding

type 'a enc = Stdlib.Buffer.t -> 'a -> unit 

The type for binary encoders. enc b v binary encodes the value v in b. Raises B0_std.Conv.Error in case of error.

val enc_err : kind:string -> ('a, Stdlib.Format.formatter, unit, 'b) Stdlib.format4 -> 'a

enc_err ~kind fmt raises a binary encoding error message for kind kind formatted according to fmt.

val enc_byte : int enc

enc_byte encodes an integer in range [0;255].

val enc_bytes : string enc

enc_bytes encodes the given bytes.

val enc_list : 'a enc -> 'a list enc

enc_list enc_v encodes a list of values encoded with enc_v.

Decoding

type 'a dec = string -> start:int -> int * 'a 

The type for binary decoders. dec s ~start binary decodes a value at start in s. start is either the index of a byte in s or the length of s. The function returns (i, v) with v the decoded value and i the first index in s after the decoded value or the length of s if there is no such index. Raises B0_std.Conv.Error in case of error.

val dec_err : kind:string ->
int -> ('a, Stdlib.Format.formatter, unit, 'b) Stdlib.format4 -> 'a

dec_err ~kind i fmt raises a binary decoding error message for kind kind at input byte index i formatted according to fmt.

val dec_err_eoi : kind:string -> int -> 'a

dec_err_eoi ~kind i raises a decoding error message for kind kind at input byte index i indicating an unexpected end of input.

val dec_err_exceed : kind:string -> int -> int -> max:int -> 'a

dec_err_exceed ~kind i v ~max raises a decoding error message for kind kind at input byte index i indicating v is not in the range 0;max.

val dec_need : kind:string -> string -> start:int -> len:int -> unit

dec_need ~kind s ~start ~len checks that len bytes are available starting at start (which can be out of bounds) in s and calls err_eoi if that is not the case.

val dec_byte : kind:string -> int dec

dec_byte decodes an integer in range [0;255] for the given kind.

val dec_bytes : kind:string -> string dec

dec_bytes ~kind decodes the given bytes for the given kind.

val dec_list : 'a dec -> kind:string -> 'a list dec

bin_dec_list dec_v ~kind decodes a list of values decoded with dec_v for the given kind.