package frama-c
Install
dune-project
Dependency
Authors
-
MMichele Alberti
-
TThibaud Antignac
-
GGergö Barany
-
PPatrick Baudin
-
TThibaut Benjamin
-
AAllan Blanchard
-
LLionel Blatter
-
FFrançois Bobot
-
RRichard Bonichon
-
QQuentin Bouillaguet
-
DDavid Bühler
-
ZZakaria Chihani
-
LLoïc Correnson
-
JJulien Crétin
-
PPascal Cuoq
-
ZZaynah Dargaye
-
BBasile Desloges
-
JJean-Christophe Filliâtre
-
PPhilippe Herrmann
-
MMaxime Jacquemin
-
FFlorent Kirchner
-
AAlexander Kogtenkov
-
TTristan Le Gall
-
JJean-Christophe Léchenet
-
MMatthieu Lemerre
-
DDara Ly
-
DDavid Maison
-
CClaude Marché
-
AAndré Maroneze
-
TThibault Martin
-
FFonenantsoa Maurica
-
MMelody Méaulle
-
BBenjamin Monate
-
YYannick Moy
-
AAnne Pacalet
-
VValentin Perrelle
-
GGuillaume Petiot
-
DDario Pinto
-
VVirgile Prevosto
-
AArmand Puccetti
-
FFélix Ridoux
-
VVirgile Robles
-
MMuriel Roger
-
JJulien Signoles
-
NNicolas Stouls
-
KKostyantyn Vorobyov
-
BBoris Yakobowski
Maintainers
Sources
sha256=9c1b14a689ac8ccda9e827c2eede13bb8d781fb8e4e33c1b5360408e312127d2
doc/frama-c.kernel/Frama_c_kernel/Structural_descr/index.html
Module Frama_c_kernel.Structural_descr
Internal representations of OCaml type as first class values. These values are called structural descriptors.
Type declarations
Type used for handling (possibly mutually) recursive structural descriptors. See module Recursive.
type single_pack = private Unmarshal.ttype pack = private | Nopack(*Was impossible to build a pack.
*)| Pack of single_pack(*A standard pack.
*)| Recursive of recursive
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 structure(*Provide a description of the representation of data.
*)| T_pack of single_pack(*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.
and structure = private | Sum of pack array array(*
*)Sum cdescribes a non-array type wherecis 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 oftthat describes (in order) the fields of the corresponding constructor.| Array of pack(*The data is an array of values of the same type, each value being described by the pack.
*)
Description with details.
Pack builders
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.
Predefined descriptors
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 : packInternals
These values must be used only inside the Type library.
val unsafe_pack : Unmarshal.t -> packval of_pack : single_pack -> t