Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
This module can be used to write compact encoding for complex types without relying on the existing combinators.
Combine multiple tags; will throw an error if the total length of the tags is more than 16.
module type S = sig ... end
make (module M)
is a compact encoding for the type of M.input
.
The JSON representation is entirely determined by M.json_encoding
.
The binary representation is determined as follows.
v : M.input
is classified into a layout l
by M.classify v
.M.tag l
is used (which may be combined with the tags of other compact encodings as described before).Data_encoding.Binary.to_string (M.partial_encoding l) v
.In other words, the tag of a value is M.(tag (layout v))
and the payload of a value is M.(partial_encoding (layout v) v)
.
It is the user's responsibility to ensure that all the values of M
follow the invariants documented in S
.