aboutsummaryrefslogtreecommitdiffhomepage
path: root/pretyping/evd.ml
diff options
context:
space:
mode:
authorGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2015-05-19 19:36:31 +0200
committerGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2015-05-19 19:36:31 +0200
commit5a52a74592496353d562d9f3e958fb59ab585531 (patch)
treebb1e7ac53b8ff60a51ef7efab050540da0b5acd0 /pretyping/evd.ml
parentd5c1f2133a80304ce8a1890e3568b14fafd8f283 (diff)
Adding an extensible global state to evarmaps.
Evars already had their own extensible state, but adding it globally allows to write out extensible state-passing code in e.g. plugins. The additional data is hopefully transparently preserved by the code out there. Trespassers ought to be prosecuted.
Diffstat (limited to 'pretyping/evd.ml')
-rw-r--r--pretyping/evd.ml9
1 files changed, 9 insertions, 0 deletions
diff --git a/pretyping/evd.ml b/pretyping/evd.ml
index f414d71dc..18e668d28 100644
--- a/pretyping/evd.ml
+++ b/pretyping/evd.ml
@@ -564,6 +564,7 @@ type evar_map = {
name) of the evar which
will be instantiated with
a term containing [e]. *)
+ extras : Store.t;
}
(*** Lifting primitive from Evar.Map. ***)
@@ -745,6 +746,7 @@ let empty = {
evar_names = (EvMap.empty,Idmap.empty); (* id<->key for undefined evars *)
future_goals = [];
principal_future_goal = None;
+ extras = Store.empty;
}
let from_env ?ctx e =
@@ -1320,6 +1322,7 @@ let set_metas evd metas = {
evar_names = evd.evar_names;
future_goals = evd.future_goals;
principal_future_goal = evd.principal_future_goal;
+ extras = Store.empty;
}
let meta_list evd = metamap_to_list evd.metas
@@ -1468,6 +1471,12 @@ let dependent_evar_ident ev evd =
| (_,Evar_kinds.VarInstance id) -> id
| _ -> anomaly (str "Not an evar resulting of a dependent binding")
+(**********************************************************)
+(* Extra data *)
+
+let get_extra_data evd = evd.extras
+let set_extra_data extras evd = { evd with extras }
+
(*******************************************************************)
type pending = (* before: *) evar_map * (* after: *) evar_map