-
Notifications
You must be signed in to change notification settings - Fork 63
Expand file tree
/
Copy pathser_libobject.ml
More file actions
88 lines (70 loc) · 2.92 KB
/
Copy pathser_libobject.ml
File metadata and controls
88 lines (70 loc) · 2.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
(************************************************************************)
(* * The Coq Proof Assistant / The Coq Development Team *)
(* v * Copyright INRIA, CNRS and contributors *)
(* <O___,, * (see version control and CREDITS file for authors & dates) *)
(* VV/ **************************************************************)
(* // * This file is distributed under the terms of the *)
(* * GNU Lesser General Public License Version 2.1 *)
(* * (see LICENSE file for the text of the license) *)
(************************************************************************)
(************************************************************************)
(* SerAPI: Coq interaction protocol with bidirectional serialization *)
(************************************************************************)
(* Copyright 2016-2019 MINES ParisTech -- License LGPL 2.1+ *)
(* Copyright 2019-2023 Inria -- License LGPL 2.1+ *)
(* Written by: Emilio J. Gallego Arias and others *)
(************************************************************************)
open Sexplib.Std
module Names = Ser_names
module Mod_subst = Ser_mod_subst
module Libnames = Ser_libnames
module CString = struct
module Pred = struct
include CString.Pred
let t_of_sexp _ = CString.Pred.empty
let sexp_of_t _ = Sexplib.Sexp.Atom "XXX: CString.Pred.t"
end
end
type _open_filter =
| Unfiltered
| Filtered of CString.Pred.t
[@@deriving sexp]
let _t_put x = Obj.magic x
let _t_get x = Obj.magic x
type open_filter = [%import: Libobject.open_filter]
let open_filter_of_sexp x = _t_put (_open_filter_of_sexp x)
let sexp_of_open_filter x = sexp_of__open_filter (_t_get x)
module Dyn = struct
type t = Libobject.Dyn.t
module Reified = struct
type t =
(* | Constant of Internal.Constant.t
* | Inductive of DeclareInd.Internal.inductive_obj *)
| TaggedAnon of string
[@@deriving sexp]
let to_t (x : Libobject.Dyn.t) =
let Libobject.Dyn.Dyn (tag, _) = x in
TaggedAnon (Libobject.Dyn.repr tag)
end
let t_of_sexp x = Serlib_base.opaque_of_sexp ~typ:"Libobject.Dyn.t" x
let sexp_of_t x = Reified.sexp_of_t (Reified.to_t x)
end
type obj =
[%import: Libobject.obj]
[@@deriving sexp]
module ExportObj = struct
type t = [%import: Libobject.ExportObj.t]
[@@unboxed] [@@deriving sexp]
end
type ('subs, 'alg, 'keep, 'escape) object_view =
[%import: ('subs, 'alg, 'keep, 'escape) Libobject.object_view ]
[@@deriving sexp]
type t = [%import: Libobject.t]
and algebraic_objects =
[%import: Libobject.algebraic_objects]
and substitutive_objects = [%import: Libobject.substitutive_objects]
and keep_objects = [%import: Libobject.keep_objects]
and escape_objects = [%import: Libobject.escape_objects]
[@@deriving sexp]
type object_prefix = [%import: Libobject.object_prefix]
[@@deriving sexp]