Frama-C API - Descr

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).

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).

val t_pair : 'a t -> 'b t -> ('a * 'b) t

Type descriptor for pairs (2-tuples). Safer that t_tuple for pairs.

val t_list : 'a t -> 'a list t

Type descriptor for lists.

val t_ref : 'a t -> 'a Stdlib.ref t

Type descriptor for references.

val t_option : 'a t -> 'a option t

Type descriptor for options.

val t_queue : 'a t -> 'a Stdlib.Queue.t t

Type descriptor for queues.

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.structure.Dependent_pair, but safe.

val transform : 'a t -> ('a -> 'a) -> 'a t

Similar to Unmarshal.t.Transform, but safe.

val return : 'a t -> (unit -> 'a) -> 'a t

Similar to Unmarshal.t.Return, but safe.

val dynamic : (unit -> 'a t) -> 'a t

Similar to Unmarshal.t.Dynamic.


val str : 'a t -> Structural_descr.t
  • since Carbon-20101201
val pack : 'a t -> Structural_descr.pack
  • since Carbon-20101201

Safe unmarshaling

val input_val : Stdlib.in_channel -> 'a t -> 'a
  • since Carbon-20101201