aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/flags.ml
diff options
context:
space:
mode:
authorGravatar ppedrot <ppedrot@85f007b7-540e-0410-9357-904b9bb8a0f7>2013-08-06 11:34:34 +0000
committerGravatar ppedrot <ppedrot@85f007b7-540e-0410-9357-904b9bb8a0f7>2013-08-06 11:34:34 +0000
commit2ae3a9f3e560be989c0b8b38be4ef1eb6cd648cf (patch)
treec15f196cbacab4c996a02b0908a184216cc00ffa /lib/flags.ml
parentacd450f5c2eef92a1079b674a5cc4575f627ae45 (diff)
Added more flags choice in desambiguating printer. The code is
parametric on the list of possible flags. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@16665 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'lib/flags.ml')
-rw-r--r--lib/flags.ml11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/flags.ml b/lib/flags.ml
index af40e946e..06c52e4b2 100644
--- a/lib/flags.ml
+++ b/lib/flags.ml
@@ -14,6 +14,17 @@ let with_option o f x =
let () = o := old in
raise reraise
+let with_options ol f x =
+ let vl = List.map (!) ol in
+ let () = List.iter (fun r -> r := true) ol in
+ try
+ let r = f x in
+ let () = List.iter2 (:=) ol vl in r
+ with reraise ->
+ let reraise = Backtrace.add_backtrace reraise in
+ let () = List.iter2 (:=) ol vl in
+ raise reraise
+
let without_option o f x =
let old = !o in o:=false;
try let r = f x in o := old; r