blob: 1d601f7b6026bdbbbddaf298d151e8549b03e3a1 (
plain)
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
|
(* $Id$ *)
(*i*)
open Names
open Libobject
open Summary
(*i*)
(* This module provides a general mechanism to keep a trace of all operations
and to backtrack (undo) those operations. It provides also the section
mechanism (at a low level; discharge is not known at this step). *)
type node =
| Leaf of obj
| Module of string
| OpenedSection of string
| ClosedSection of string * library_segment
| FrozenState of Summary.frozen
and library_entry = section_path * node
and library_segment = library_entry list
(*s Adding operations (which calls the [cache] method, and getting the
current list of operations (most recent ones coming first). *)
val add_leaf : identifier -> path_kind -> obj -> section_path
val add_anonymous_leaf : obj -> unit
val contents_after : section_path option -> library_segment
(*s Opening and closing a section. *)
val open_section : string -> section_path
val close_section : string -> section_path * library_segment
val make_path : identifier -> path_kind -> section_path
val cwd : unit -> string list
val is_section_p : section_path -> bool
val start_module : string -> unit
val export_module : unit -> library_segment
(*s Backtracking (undo). *)
val reset_to : section_path -> unit
val reset_name : identifier -> unit
(*s We can get and set the state of the operations (used in [States]). *)
type frozen
val freeze : unit -> frozen
val unfreeze : frozen -> unit
val init : unit -> unit
val declare_initial_state : unit -> unit
val reset_initial : unit -> unit
|