]> matita.cs.unibo.it Git - helm.git/commitdiff
improved interface for brgEnvironment
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Wed, 3 Dec 2008 19:24:54 +0000 (19:24 +0000)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Wed, 3 Dec 2008 19:24:54 +0000 (19:24 +0000)
helm/software/lambda-delta/basic_rg/brg.ml
helm/software/lambda-delta/basic_rg/brgEnvironment.ml
helm/software/lambda-delta/basic_rg/brgEnvironment.mli
helm/software/lambda-delta/basic_rg/brgOutput.ml
helm/software/lambda-delta/toplevel/metaBrg.ml

index eaaeb6e6054c8c3fc426b74cd776f0256e89985d..45777ead4f41d41dcc1ab793d5473a35b54df016 100644 (file)
@@ -21,6 +21,6 @@ type term = Sort of int                     (* hierarchy index *)
          | Appl of term * term             (* argument, function *)
          | Bind of id * bind * term * term (* name, binder, content, scope *)
 
-type obj = bind * term (* binder, contents *)
+type obj = int * uri * bind * term (* age, uri, binder, contents *)
 
-type item = (obj * uri) option (* uri, object *)
+type item = obj option
index f1561516d1cb47f31abe87e8127913610b0b9d27..b0cb9596e3ea2848b5d36029a2e4f24e3131dd9e 100644 (file)
@@ -17,14 +17,17 @@ exception ObjectNotFound of string Lazy.t
 
 let hsize = 7000 
 let env = H.create hsize
+let entry = ref 0
 
 (* Internal functions *******************************************************)
 
 (* Interface functions ******************************************************)
 
-let set_obj f obj uri =
-   H.add env uri obj; f obj uri
-   
+let set_obj f obj =
+   let _, uri, b, t = obj in
+   let obj = !entry, uri, b, t in
+   incr entry; H.add env uri obj; f obj
+
 let get_obj f uri =
-   try f (H.find env uri) uri
+   try f (H.find env uri)
    with Not_found -> raise (ObjectNotFound (lazy (U.string_of_uri uri)))
index a6fec6db08fe90625c05ce0625da5c8c53d36445..ddf55d7a46b20709514ec3f2bb71382fd76a8aa1 100644 (file)
@@ -11,6 +11,6 @@
 
 exception ObjectNotFound of string Lazy.t
 
-val set_obj: (Brg.obj -> NUri.uri -> 'a) -> Brg.obj -> NUri.uri -> 'a
+val set_obj: (Brg.obj -> 'a) -> Brg.obj -> 'a
 
-val get_obj: (Brg.obj -> NUri.uri -> 'a) -> NUri.uri -> 'a
+val get_obj: (Brg.obj -> 'a) -> NUri.uri -> 'a
index dcefefa2efb758ca1922bceca594573bce6427f0..e29b3f4953bddeead3251d5c46957e7c5b361589 100644 (file)
@@ -58,13 +58,13 @@ let count_obj_binder f c = function
    | B.Abst -> f {c with eabsts = succ c.eabsts}
    | B.Abbr -> f {c with eabbrs = succ c.eabbrs}
 
-let count_obj f c (b, t) =
+let count_obj f c (_, _, b, t) =
    let f c = count_obj_binder f c b in
    count_term f c t
 
 let count_item f c = function
-   | Some (obj, _) -> count_obj f c obj
-   | None          -> f c
+   | Some obj -> count_obj f c obj
+   | None     -> f c
 
 let print_counters f c =
    let terms =
index 7c7adce7e73bbb41c63a6133751030313183d05a..4088c2982f25115891f09fcc51d3c8f57f86a1b3 100644 (file)
@@ -45,12 +45,12 @@ let xlate_pars f (id, w) =
    xlate_term f w
 
 let xlate_entry f = function
-   | _, pars, uri, u, None        ->
-      let f u = f ((B.Abst, u), uri) in
+   | e, pars, uri, u, None        ->
+      let f u = f (e, uri, B.Abst, u) in
       let f pars = map_fold_left f xlate_term map_pars u pars in      
       Cps.list_rev_map f xlate_pars pars
-   | _, pars, uri, u, Some (_, t) ->
-      let f u t = f ((B.Abbr, (B.Cast (u, t))), uri) in
+   | e, pars, uri, u, Some (_, t) ->
+      let f u t = f (e, uri, B.Abbr, (B.Cast (u, t))) in
       let f pars u = map_fold_left (f u) xlate_term map_pars t pars in      
       let f pars = map_fold_left (f pars) xlate_term map_pars u pars in
       Cps.list_rev_map f xlate_pars pars