Frama_c_kernel.Structural_descrInternal representations of OCaml type as first class values. These values are called structural descriptors.
Type used for handling (possibly mutually) recursive structural descriptors. See module Recursive.
type single_pack = private Unmarshal.ttype pack = private | NopackWas impossible to build a pack.
*)| Pack of single_packA standard pack.
*)| Recursive of recursiveStructural descriptor used inside structures.
type t = private | UnknownUse 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.
*)| AbstractThe data is marshable as an usual OCaml value. No specific processing will be applied on any part of such a data.
*)| Structure of structureProvide a description of the representation of data.
*)| T_pack of single_packInternal 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.
and structure = private | Sum of pack array arraySum c describes a non-array type where c is an array describing the non-constant constructors of the type being described (in the order of their declarations in that type). Each element of this latter array is an array of t that describes (in order) the fields of the corresponding constructor.
| Array of packThe data is an array of values of the same type, each value being described by the pack.
*)Description with details.
module Recursive : sig ... endUse this module for handling a (possibly recursive) structural descriptor d. Call Recursive.create () (returning r) before building d. Build d and use Recursive r in places where d should be put. Call Recursive.update r d after building d.
val t_unknown : tval t_abstract : tval t_unit : tval t_int : tval t_string : tval t_float : tval t_bool : tval t_int32 : tval t_int64 : tval t_nativeint : tUse the functions below only if the compare/hash functions cannot change by marshalling.
Packed versions of predefined descriptors.
val p_abstract : packEquivalent to pack Abstract
val p_unit : packval p_int : packval p_string : packval p_float : packval p_bool : packval p_int32 : packval p_int64 : packval p_nativeint : packThese values must be used only inside the Type library.
val unsafe_pack : Unmarshal.t -> packval of_pack : single_pack -> t