(DisambiguatePp.commands_of_domain_and_codomain_items_list new_aliases)
new_status
-let compute_diff_and_set_proof_aliases status aliases =
- let new_status = { status with aliases = aliases } in
- let diff = alias_diff ~from:status new_status in
- set_proof_aliases status diff
-
(** given a uri and a type list (the contructors types) builds a list of pairs
* (name,uri) that is used to generate authomatic aliases **)
let extract_alias types uri =
let basedir = get_string_option status "basedir" ^ "/xml" in
let innertypesuri = UriManager.innertypesuri_of_uri uri in
let bodyuri = UriManager.bodyuri_of_uri uri in
+ let univgraphuri = UriManager.univgraphuri_of_uri uri in
let innertypesfilename = Str.replace_first (Str.regexp "^cic:") ""
(UriManager.string_of_uri innertypesuri) ^ ".xml.gz" in
let innertypespath = basedir ^ "/" ^ innertypesfilename in
let xmlbodyfilename = Str.replace_first (Str.regexp "^cic:/") ""
(UriManager.string_of_uri uri) ^ ".body.xml.gz" in
let xmlbodypath = basedir ^ "/" ^ xmlbodyfilename in
- xmlpath, xmlbodypath, innertypespath, bodyuri, innertypesuri
+ let xmlunivgraphfilename = Str.replace_first (Str.regexp "^cic:/") ""
+ (UriManager.string_of_uri univgraphuri) ^ ".xml.gz" in
+ let xmlunivgraphpath = basedir ^ "/" ^ xmlunivgraphfilename in
+ xmlpath, xmlbodypath, innertypespath, bodyuri, innertypesuri,
+ xmlunivgraphpath, univgraphuri
-let save_object_to_disk status uri obj =
+let save_object_to_disk status uri obj ugraph univlist =
let ensure_path_exists path =
let dir = Filename.dirname path in
MatitaMisc.mkdir dir
Cic2Xml.print_object
uri ?ids_to_inner_sorts:None ~ask_dtd_to_the_getter:false annobj
in
- let xmlpath, xmlbodypath, innertypespath, bodyuri, innertypesuri =
+ let xmlpath, xmlbodypath, innertypespath, bodyuri, innertypesuri,
+ xmlunivgraphpath, univgraphuri =
paths_and_uris_of_obj uri status
in
let path_scheme_of path = "file://" ^ path in
(List.map Filename.dirname [innertypespath; xmlpath]);
(* now write to disk *)
ensure_path_exists xmlpath;
- Xml.pp ~gzip:true xml (Some xmlpath) ;
+ Xml.pp ~gzip:true xml (Some xmlpath);
+ CicUniv.write_xml_of_ugraph xmlunivgraphpath ugraph univlist;
(* we return a list of uri,path we registered/created *)
- (uri,xmlpath) ::
+ (uri,xmlpath) :: (innertypesuri,innertypespath) ::
+ (univgraphuri,xmlunivgraphpath) ::
(* now the optional body, both write and register *)
(match bodyxml,bodyuri with
None,None -> []
let save_object_to_disk =
let profiler = CicUtil.profile "add_obj.save_object_to_disk" in
- fun status uri obj ->
- profiler.CicUtil.profile (save_object_to_disk status uri) obj
+ fun status uri obj ugraph univlist ->
+ profiler.CicUtil.profile (save_object_to_disk status uri obj ugraph) univlist
let add_obj uri obj status =
let dbd = MatitaDb.instance () in
command_error (sprintf "%s already defined" suri)
else begin
typecheck_obj uri obj; (* 1 *)
+ let _, ugraph, univlist =
+ CicEnvironment.get_cooked_obj_with_univlist CicUniv.empty_ugraph uri in
try
index_obj ~dbd ~uri; (* 2 must be in the env *)
try
- let new_stuff = save_object_to_disk status uri obj in (* 3 *)
+ let new_stuff=save_object_to_disk status uri obj ugraph univlist in(*3*)
try
MatitaLog.message (sprintf "%s defined" suri);
let status = add_aliases_for_object status suri obj in
raise exc
with exc ->
CicEnvironment.remove_obj uri; (* -1 *)
- raise exc
+ raise exc
end
let add_obj =
List.iter MatitaLog.debug l2
*)
-let remove ~verbose uri =
+let last_baseuri = ref ""
+
+let remove ?(verbose=false) uri =
let derived_uris_of_uri uri =
UriManager.innertypesuri_of_uri uri ::
+ UriManager.univgraphuri_of_uri uri ::
(match UriManager.bodyuri_of_uri uri with
| None -> []
- | Some u -> [u])
+ | Some u -> [u])
in
let to_remove =
uri ::
List.iter
(fun uri ->
(try
+ (* WARNING: non reentrant debugging code *)
if verbose then
- MatitaLog.debug ("Removing: " ^ UriManager.string_of_uri uri);
+ let baseuri = UriManager.buri_of_uri uri in
+ if !last_baseuri <> baseuri then
+ begin
+ MatitaLog.debug ("Removing: " ^ baseuri ^ "/*");
+ last_baseuri := baseuri
+ end;
MatitaMisc.safe_remove (Http_getter.resolve' uri)
with Http_getter_types.Key_not_found _ -> ());
remove_coercion uri;