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

(*
* 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 *)