You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.1 KiB
42 lines
1.1 KiB
(*
|
|
* Copyright (c) 2009-2013, Monoidics ltd.
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*)
|
|
|
|
open! IStd
|
|
|
|
(** Serialization of data stuctures *)
|
|
|
|
module Key : sig
|
|
(** Serialization key, used to distinguish versions of serializers and avoid assert faults *)
|
|
type t
|
|
|
|
val issues : t
|
|
(** current key for lint issues *)
|
|
|
|
val summary : t
|
|
(** current key for a procedure summary *)
|
|
|
|
val tenv : t
|
|
(** current key for tenv *)
|
|
end
|
|
|
|
(** Generic serializer *)
|
|
type 'a serializer
|
|
|
|
val create_serializer : Key.t -> 'a serializer
|
|
(** create a serializer from a file name given an integer key used as double-check of the file type *)
|
|
|
|
val read_from_file : 'a serializer -> DB.filename -> 'a option
|
|
(** Deserialize a file and check the keys *)
|
|
|
|
val write_to_file : 'a serializer -> data:'a -> DB.filename -> unit
|
|
(** Serialize into a file writing value *)
|
|
|
|
val generate_keys : unit -> int * int * int
|
|
[@@warning "-32"]
|
|
(** Generate new (random) serialization keys, to be used in an ocaml toplevel *)
|