+ try
+ CicEnvironment.get_obj CicUniv.oblivion_ugraph ouri
+ with exn -> prerr_endline (UriManager.string_of_uri ouri); raise exn
+ in
+ (* FIX: add all objects to the environment and give back the last one *)
+ let l = OCic2NCic.convert_obj ouri o in
+ List.iter (fun (u,_,_,_,_ as o) ->
+(* prerr_endline ("+"^NUri.string_of_uri u); *)
+ NUri.UriHash.add cache u (false,o)) l;
+ HExtlib.list_last l
+;;
+
+let get_obj u =
+ try NUri.UriHash.find cache u
+ with Not_found ->
+ (* in th final implementation should get it from disk *)
+ let ouri = NUri.ouri_of_nuri u in
+ let o,_ = CicEnvironment.get_obj CicUniv.oblivion_ugraph ouri in
+ let l = OCic2NCic.convert_obj ouri o in
+ List.iter (fun (u,_,_,_,_ as o) ->
+(* prerr_endline ("+"^NUri.string_of_uri u); *)
+ NUri.UriHash.add cache u (false,o)) l;
+ false, HExtlib.list_last l
+;;
+
+let add_obj (u,_,_,_,_ as o) =
+ NUri.UriHash.replace cache u (true, o)