Module Data_encoding.Registration

type id = string
type t

A encoding that has been registered. It can be retrieved using either list or find.

Note registration/retrieval erases the type information that is built by the combinator. In other words, t is a non-parametric type. As a result, you cannot recover an OCaml value of the type of the registered encoding. You can only perform operations where the type doesn't escape — e.g., converting between binary and json.

val binary_schema : t -> Binary_schema.t

Descriptions and schemas of registered encodings.

val json_schema : t -> Json.schema
val description : t -> string option
val json_pretty_printer : t -> Stdlib.Format.formatter -> Json.t -> unit

Printers for the encodings.

val binary_pretty_printer : t -> Stdlib.Format.formatter -> Stdlib.Bytes.t -> unit
val register : ?pp:( Stdlib.Format.formatter -> 'a -> unit ) -> 'a Encoding.t -> unit

register (def id encoding) registers the encoding with the id. It can later be found using find and providing the matching id. It will also appear in the results of list.

  • raises [Invalid_argument]

    if encoding is not of one of the following form:

    • def id _ (see Encoding.def)
    • splitted ~binary:(def id _) (see Encoding.splitted)
    • dynamic_size (def id _) (see Encoding.dynamic_size)
    • check_size _ (def id _) (see Encoding.check_size)
val slice : t -> string -> ( Binary.Slicer.slice list, Binary.read_error ) Stdlib.result

slice r b attempts to slice a binary representation b of some data assuming it is correctly described by the registered encoding r. If r does not correctly describe b, then it returns None.

See Binary.Slicer.slice_string for details about slicing.

val slice_all : string -> (string * Binary.Slicer.slice list) list

slice_all b attempts to slice a binary representation b of some data for all of the registered encodings. It returns a list of the slicing for each of the registered encodings that correctly describe b.

See Binary.Slicer.slice_string for details about slicing.

val find : id -> t option

find id is Some r if register (def id e) has been called, in which case r matches e. Otherwise, it is None.

val list : unit -> (id * t) list

list () is a list of pairs (id, r) where r is a registered encoding for the id.

val bytes_of_json : t -> Json.t -> Stdlib.Bytes.t option

Conversion functions from JSON to bytes.

val json_of_bytes : t -> Stdlib.Bytes.t -> Json.t option

Conversion functions from bytes to JSON.