module Structural_descr:sig..end
Internal representations of OCaml type as first class values. These values are called structural descriptors.
type recursive
Type used for handling (possibly mutually) recursive structural
descriptors. See module Structural_descr.Recursive.
typesingle_pack = privateUnmarshal.t
type pack = private
| |
Nopack |
(* | Was impossible to build a pack. | *) |
| |
Pack of |
(* | A standard pack. | *) |
| |
Recursive of |
(* | Pack for a recursive descriptor.
See module | *) |
Structural descriptor used inside structures.
type t = private
| |
Unknown |
(* | Use it either for unmarshable types or if you don't know its internal representation. In any case, values of types with this descriptor will never be written on disk. | *) |
| |
Abstract |
(* | The data is marshable as an usual OCaml value. No specific processing will be applied on any part of such a data. | *) |
| |
Structure of |
(* | Provide a description of the representation of data.
| *) |
| |
T_pack of |
(* | Internal use only. Do not use it outside the library | *) |
Type of internal representations of OCaml type.
Example: the structural descriptor of A | B of int * bool | C of string
is Structure (Sum [| [| p_int; p_bool |]; [| p_string |] |]). Ok, in
this case, just Abstract is valid too.
type structure = private
| |
Sum of |
(* |
| *) |
| |
Array of |
(* | The data is an array of values of the same type, each value being described by the pack. | *) |
Description with details.
val pack : t -> packPack a structural descriptor in order to embed it inside another one.
val recursive_pack : recursive -> packPack a recursive descriptor.
module Recursive:sig..end
Use this module for handling a (possibly recursive) structural descriptor
d.
val t_unknown : tval t_abstract : tval t_unit : t
val t_int : t
val t_string : t
val t_float : t
val t_bool : t
val t_int32 : t
val t_int64 : t
val t_nativeint : t
val t_record : pack array -> t
val t_tuple : pack array -> t
val t_list : t -> t
val t_ref : t -> t
val t_option : t -> t
val t_array : t -> t
val t_queue : t -> t
val t_sum : pack array array -> tUse the functions below only if the compare/hash functions cannot change by marshalling.
val t_set_unchanged_compares : t -> t
val t_map_unchanged_compares : t -> t -> t
val t_hashtbl_unchanged_hashs : t -> t -> tPacked versions of predefined descriptors.
val p_abstract : packEquivalent to pack Abstract
val p_unit : pack
val p_int : packval p_string : pack
val p_float : pack
val p_bool : pack
val p_int32 : pack
val p_int64 : pack
val p_nativeint : packThese values must be used only inside the Type library.
exception Cannot_pack
val unsafe_pack : Unmarshal.t -> packCannot_pack if packing failed.val of_pack : single_pack -> t
val cleanup : t -> t
val are_consistent : t -> t -> boolNot symmetrical: check that the second argument is a correct refinement of the first one.