aboutsummaryrefslogtreecommitdiffhomepage
path: root/library/states.ml
diff options
context:
space:
mode:
authorGravatar filliatr <filliatr@85f007b7-540e-0410-9357-904b9bb8a0f7>1999-09-29 07:34:20 +0000
committerGravatar filliatr <filliatr@85f007b7-540e-0410-9357-904b9bb8a0f7>1999-09-29 07:34:20 +0000
commit60b1e4b4cc6783013e055838f5f2f5cca10f7d75 (patch)
tree0ba591989345a1b523d31be392455bbf6f0eb58a /library/states.ml
parentea5408dc21bd8748e7d9917e8deaf9c639883475 (diff)
with_heavy_rollback deplace dans States
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@89 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'library/states.ml')
-rw-r--r--library/states.ml13
1 files changed, 13 insertions, 0 deletions
diff --git a/library/states.ml b/library/states.ml
index 2e198e36f..d8fed1437 100644
--- a/library/states.ml
+++ b/library/states.ml
@@ -20,3 +20,16 @@ let (extern_state,intern_state) =
let (raw_extern, raw_intern) = extern_intern state_magic_number ".coq" in
(fun s -> raw_extern s (get_state())),
(fun s -> set_state (raw_intern s))
+
+(* Rollback. *)
+
+let with_heavy_rollback f x =
+ let sum = freeze_summaries ()
+ and flib = freeze() in
+ try
+ f x
+ with reraise -> begin
+ unfreeze_summaries sum;
+ unfreeze flib;
+ raise reraise
+ end