val is_in_frozen: UriManager.uri -> bool
val is_in_unchecked: UriManager.uri -> bool
val is_in_cooked: UriManager.uri -> bool
+ val list_all_cooked_uris: unit -> UriManager.uri list
end
=
struct
*)
empty ();
HT.iter
- (fun k v ->
+ (fun k (v,u) ->
callback (UriManager.string_of_uri k);
HT.add cacheOfCookedObjects
(UriManager.uri_of_string (UriManager.string_of_uri k))
(***********************************************
TSSI: FIXME add channel stuff for universes
************************************************)
- ((restore_uris v),CicUniv.empty_ugraph))
+ (restore_uris v,u))
restored
;;
(*******************************************************************
TASSI: invariant
we need, in the universe generation phase, to traverse objects
- that are not jet committed, so we search them in the frozen list.
+ that are not yet committed, so we search them in the frozen list.
Only uncommitted objects without a universe file (see the assertion)
can be searched with method
*******************************************************************)
* something. this means check and frozen must be empty.
*)
let remove uri =
- if (!unchecked_list <> []) || (!frozen_list <> []) then
+ if !frozen_list <> [] then
failwith "CicEnvironment.remove while type checking"
else
HT.remove cacheOfCookedObjects uri
;;
+ let list_all_cooked_uris () =
+ HT.fold (fun u _ l -> u::l) cacheOfCookedObjects []
+ ;;
+
end
;;
(* the replacement ugraph must be the one returned by the *)
(* typechecker, restricted with the CicUnivUtils.clean_and_fill *)
let set_type_checking_info ?(replace_ugraph=None) uri =
- if Cache.can_be_cooked uri && replace_ugraph <> None then
- invalid_arg (
+(*
+ if not (Cache.can_be_cooked uri) && replace_ugraph <> None then begin
+ prerr_endline (
"?replace_ugraph must be None if you are not committing an "^
"object that has a universe graph associated "^
"(can happen only in the fase of universes graphs generation).");
- if not (Cache.can_be_cooked uri) && replace_ugraph = None then
- invalid_arg (
- "?replace_ugraph must be (Some ugraph) when committing an object that "^
- "has no associated universe graph. If this is in make_univ phase you "^
- "should drop this exception and let univ_make commit thi object with "^
- "proper arguments");
- begin
- match replace_ugraph with
- None -> ()
- | Some g -> Cache.hack_univ uri g
- end;
- Cache.frozen_to_cooked uri
+ assert false
+ else
+*)
+ match Cache.can_be_cooked uri, replace_ugraph with
+ | true, Some _
+ | false, None ->
+ prerr_endline (
+ "?replace_ugraph must be (Some ugraph) when committing an object that "^
+ "has no associated universe graph. If this is in make_univ phase you "^
+ "should drop this exception and let univ_make commit thi object with "^
+ "proper arguments");
+ assert false
+ | _ ->
+ (match replace_ugraph with
+ | None -> ()
+ | Some g -> Cache.hack_univ uri g);
+ Cache.frozen_to_cooked uri
;;
(* fetch, unfreeze and commit an uri to the cacheOfCookedObjects and
CheckedObj ( o, CicUniv.merge_ugraphs u base_univ )
else
let o,u = find_or_add_to_unchecked uri in
+ Cache.unchecked_to_frozen uri;
UncheckedObj o
;;
o,(CicUniv.merge_ugraphs base_univ u)
with Not_found ->
(* this should be an error case, but if we trust the uri... *)
- if trust_obj uri then
- (* trusting we add it to the unchecked list *)
let o,u = find_or_add_to_unchecked uri in
o,(CicUniv.merge_ugraphs base_univ u)
- else
- raise Not_found
;;
exception OnlyPutOfInductiveDefinitionsIsAllowed
true
with Http_getter_types.Key_not_found _ -> false)
-let remove_term = Cache.remove
+let remove_obj = Cache.remove
+
+let list_uri () =
+ Cache.list_all_cooked_uris ()
+;;
+let list_obj () =
+ try
+ List.map (fun u ->
+ let o,ug = get_obj CicUniv.empty_ugraph u in
+ (u,o,ug))
+ (list_uri ())
+ with
+ Not_found ->
+ prerr_endline "Who has removed the uri in the meanwhile?";
+ raise Not_found
+;;