Module Descr

module Descr: sig .. end
Type descriptor for safe unmarshalling.

This module provides a safe API on top of modules Unmarshal of Structural_descr, using module Type. This module offers the same power as Unmarshal, but in a safe way.



Type declaration


type 'a t 
Type of a type descriptor.

Predefined type descriptors


val t_unit : unit t
val t_int : int t
val t_string : string t
val t_float : float t
val t_bool : bool t
val t_int32 : int32 t
val t_int64 : int64 t
val t_nativeint : nativeint t
val unmarshable : 'a t
Descriptor for unmarshallable types.
Since Carbon-20101201
val is_unmarshable : 'a t -> bool
Since Carbon-20101201
val is_abstract : 'a t -> bool
Since Neon-20140301

Type descriptor builders


exception Invalid_descriptor
Since Carbon-20101201

Builders for standard OCaml types


val t_record : Structural_descr.pack array -> 'a -> 'a t
Type descriptor for records (the length of the array must be equal to the number of fields in the record).
Raises Invalid_descriptor if the descriptor cannot be built.
val t_tuple : Structural_descr.pack array -> 'a -> 'a t
Type descriptor for tuples of any range (the length of the array range is the range of the tuple).
Raises Invalid_descriptor if the descriptor cannot be built.
val t_pair : 'a t -> 'b t -> ('a * 'b) t
Type descriptor for pairs (2-tuples). Safer that t_tuple for pairs.
Raises Invalid_descriptor if the descriptor cannot be built.
val t_list : 'a t -> 'a list t
Type descriptor for lists.
Raises Invalid_descriptor if the descriptor cannot be built.
val t_ref : 'a t -> 'a Pervasives.ref t
Type descriptor for references.
Raises Invalid_descriptor if the descriptor cannot be built.
val t_option : 'a t -> 'a option t
Type descriptor for options.
Raises Invalid_descriptor if the descriptor cannot be built.
val t_queue : 'a t -> 'a Queue.t t
Type descriptor for queues.
Raises Invalid_descriptor if the descriptor cannot be built.

Builders from others datatypes of the Type library


val of_type : 'a Type.t -> 'a t
Type descriptor from the type value.
Since Carbon-20101201
val of_structural : 'a Type.t -> Structural_descr.t -> 'a t
Type descriptor from the structural descriptor. The given type value ensures safety.
Since Carbon-20101201

Builders mapping Unmarshal's transformers


val dependent_pair : 'a t -> ('a -> 'b t) -> ('a * 'b) t
Similar to Unmarshal.Dependent_pair, but safe.
Raises Invalid_descriptor if the descriptor cannot be built.
val transform : 'a t -> ('a -> 'a) -> 'a t
Similar to Unmarshal.Transform, but safe.
Raises Invalid_descriptor if the given descriptor is incorrect.
val return : 'a t -> (unit -> 'a) -> 'a t
Similar to Unmarshal.Return, but safe.
Raises Invalid_descriptor if the descriptor cannot be built.
val dynamic : (unit -> 'a t) -> 'a t
Similar to Unmarshal.Dynamic.
Raises Invalid_descriptor if the descriptor cannot be built.

Coercions


val str : 'a t -> Structural_descr.t
Since Carbon-20101201
Raises Invalid_descriptor if the given descriptor is incorrect.
val pack : 'a t -> Structural_descr.pack
Since Carbon-20101201

Safe unmarshaling


val input_val : Pervasives.in_channel -> 'a t -> 'a
Since Carbon-20101201