package tezos-protocol-environment-structs

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
type read_error = Data_encoding.Binary.read_error =
  1. | Not_enough_data
  2. | Extra_bytes
  3. | No_case_matched
  4. | Unexpected_tag of int
  5. | Invalid_size of int
  6. | Invalid_int of {
    1. min : int;
    2. v : int;
    3. max : int;
    }
  7. | Invalid_float of {
    1. min : float;
    2. v : float;
    3. max : float;
    }
  8. | Trailing_zero
  9. | Size_limit_exceeded
  10. | List_too_long
  11. | Array_too_long

All the errors that might be returned while reading a binary value

exception Read_error of read_error
val pp_read_error : Format.formatter -> read_error -> unit
val read_error_encoding : read_error Data_encoding.t
type write_error = Data_encoding.Binary.write_error =
  1. | Size_limit_exceeded
  2. | No_case_matched
  3. | Invalid_int of {
    1. min : int;
    2. v : int;
    3. max : int;
    }
  4. | Invalid_float of {
    1. min : float;
    2. v : float;
    3. max : float;
    }
  5. | Invalid_bytes_length of {
    1. expected : int;
    2. found : int;
    }
  6. | Invalid_string_length of {
    1. expected : int;
    2. found : int;
    }
  7. | Invalid_natural
  8. | List_too_long
  9. | Array_too_long

All the errors that might be returned while writing a binary value

val pp_write_error : Format.formatter -> write_error -> unit
val write_error_encoding : write_error Data_encoding.t
exception Write_error of write_error
val length : 'a Data_encoding.Encoding.t -> 'a -> int

Compute the expected length of the binary representation of a value

val fixed_length : 'a Data_encoding.Encoding.t -> int option

Returns the size of the binary representation that the given encoding might produce, only when this size does not depends of the value itself.

E.g., fixed_length (tup2 int64 (Fixed.string 2)) is Some _

E.g., fixed_length (result int64 (Fixed.string 2)) is None

E.g., fixed_length (list (tup2 int64 (Fixed.string 2))) is None

val maximum_length : 'a Data_encoding.Encoding.t -> int option

Returns the maximum size of the binary representation that the given encoding might produce, only when this maximum size does not depends of the value itself.

E.g., maximum_length (tup2 int64 (Fixed.string 2)) is Some _

E.g., maximum_length (result int64 (Fixed.string 2)) is Some _

E.g., maximum_length (list (tup2 int64 (Fixed.string 2))) is None

Note that the function assumes that recursive encodings (build using mu) are used for recursive data types. As a result, maximum_length will return None if given a recursive encoding.

If there are static guarantees about the maximum size of the representation for values of a given type, you can wrap your encoding in check_size. This will cause maximum_length to return Some _.

val read_opt : 'a Data_encoding.Encoding.t -> string -> int -> int -> (int * 'a) option
val read_exn : 'a Data_encoding.Encoding.t -> string -> int -> int -> int * 'a
type 'ret status = 'ret Data_encoding.Binary.status =
  1. | Await of Bytes.t -> 'ret status
    (*

    Partially decoded value.

    *)
  2. | Error of read_error
    (*

    Failure. The stream is garbled and it should be dropped.

    *)

Return type for the function read_stream.

val read_stream : ?init:Data_encoding__.Binary_stream.t -> 'a Data_encoding.Encoding.t -> 'a status

Streamed equivalent of read. This variant cannot be called on variable-size encodings.

The internal state that writers handle. It is presented explicitely as an abstract type so that you must use the constructor to obtain it. The constructor (make_writer_state) performs basic bound checks.

val make_writer_state : bytes -> offset:int -> allowed_bytes:int -> writer_state option

make_writer_state buffer ~offset ~allowed_bytes is None if allowed_bytes < 0, None if allowed_bytes > length buffer - offset, Some _ otherwise.

val write_opt : 'a Data_encoding.Encoding.t -> 'a -> writer_state -> int option
val write_exn : 'a Data_encoding.Encoding.t -> 'a -> writer_state -> int
val of_bytes_opt : 'a Data_encoding.Encoding.t -> Bytes.t -> 'a option
val of_bytes_exn : 'a Data_encoding.Encoding.t -> Bytes.t -> 'a

of_bytes_exn enc buf is equivalent to of_bytes, except

  • raises [Read_error]

    instead of returning None in case of error.

val of_string : 'a Data_encoding.Encoding.t -> string -> ('a, read_error) result

of_string enc buf is like of_bytes enc buf but it reads bytes from a string.

val of_string_opt : 'a Data_encoding.Encoding.t -> string -> 'a option
val of_string_exn : 'a Data_encoding.Encoding.t -> string -> 'a
val to_bytes_opt : ?buffer_size:int -> 'a Data_encoding.Encoding.t -> 'a -> Bytes.t option
val to_string : ?buffer_size:int -> 'a Data_encoding.Encoding.t -> 'a -> (string, write_error) result

to_string enc v is like to_bytes but it returns a string.

Note: to_string enc v is always equal to Bytes.to_string (to_bytes enc v) but more efficient.

  • raises [Invalid_argument]

    if buffer_size < 0.

val to_string_opt : ?buffer_size:int -> 'a Data_encoding.Encoding.t -> 'a -> string option
val to_string_exn : ?buffer_size:int -> 'a Data_encoding.Encoding.t -> 'a -> string
  • raises [Write_error]

    instead of returning None in case of error.

val read : 'a Data_encoding.Encoding.t -> bytes -> int -> int -> (int * 'a) option
val write : 'a Data_encoding.Encoding.t -> 'a -> bytes -> int -> int -> int option
val of_bytes : 'a Data_encoding.Encoding.t -> Bytes.t -> 'a option
val to_bytes : 'a Data_encoding.Encoding.t -> 'a -> Bytes.t option
val to_bytes_exn : 'a Data_encoding.Encoding.t -> 'a -> Bytes.t
OCaml

Innovation. Community. Security.