(** Representation of data allocated on the OCaml heap. *) type data =
| Int of int
| Ptr of int
| Atm of int (* tag *)
| Funof int (* address *)
type obj =
| Structof int * data array (* tag × data *)
| Int64 of Int64.t (* Primitive integer *)
| Float64 of float (* Primitive float *)
| Stringofstring
module LargeArray : sig type'a t val empty : 'a t val length : 'a t -> int val make : int -> 'a -> 'a t val get : 'a t -> int -> 'a valset : 'a t -> int -> 'a -> unit end (** A data structure similar to arrays but allowing to overcome the 2^22 length
limitation on 32-bit architecture. *)
val parse_channel : in_channel -> (data * obj LargeArray.t) val parse_string : string -> (data * obj LargeArray.t)
(** {6 Functorized version} *)
module type Input = sig type t val input_byte : t -> int (** Input a single byte *)
val input_binary_int : t -> int (** Input a big-endian 31-bits signed integer *) end (** Type of inputs *)
module type S = sig type input val parse : input -> (data * obj LargeArray.t) (** Return the entry point and the reification of the memory out of a
marshalled structure. *) end
module Make (M : Input) : S withtype input = M.t (** Functorized version of the previous code. *)
val instantiate : data * obj LargeArray.t -> Obj.t (** Create the OCaml object out of the reified representation. *)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.