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 -> []
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 =
let remove ~verbose 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 ::