]> matita.cs.unibo.it Git - helm.git/blobdiff - components/library/librarySync.ml
Added an hook useful in many situations.
[helm.git] / components / library / librarySync.ml
index 5189547d33135903df0731105a50fa99041b2f91..c71c24f11c109f46458ceb7c030a8e374b5f0bcf 100644 (file)
 
 (* $Id$ *)
 
+let object_declaration_hook = ref (fun _ _ -> ());;
+let set_object_declaration_hook f =
+ object_declaration_hook := f
+
 exception AlreadyDefined of UriManager.uri
 
 let auxiliary_lemmas_hashtbl = UriManager.UriHashtbl.create 29
@@ -70,24 +74,25 @@ let save_object_to_disk uri obj ugraph univlist =
     HExtlib.mkdir dir
   in
   (* generate annobj, ids_to_inner_sorts and ids_to_inner_types *)
-  let annobj, innertypes =
+  let annobj, innertypes, ids_to_inner_sorts, generate_attributes =
    if Helm_registry.get_bool "matita.system" then
-    let annobj, _, _,  ids_to_inner_sorts, ids_to_inner_types, _, _ =
+    let annobj, _, _, ids_to_inner_sorts, ids_to_inner_types, _, _ =
      Cic2acic.acic_object_of_cic_object obj 
     in
     let innertypesxml = 
      Cic2Xml.print_inner_types
       uri ~ids_to_inner_sorts ~ids_to_inner_types ~ask_dtd_to_the_getter:false
     in
-    annobj, Some innertypesxml
+    annobj, Some innertypesxml, Some ids_to_inner_sorts, false
    else 
     let annobj = Cic2acic.plain_acic_object_of_cic_object obj in  
-    annobj, None 
+    annobj, None, None, true 
   in 
   (* prepare XML *)
   let xml, bodyxml =
    Cic2Xml.print_object
-    uri ?ids_to_inner_sorts:None ~ask_dtd_to_the_getter:false annobj 
+    uri ?ids_to_inner_sorts ~ask_dtd_to_the_getter:false 
+    ~generate_attributes annobj 
   in    
   let xmlpath, xmlbodypath, innertypespath, bodyuri, innertypesuri, 
       xmlunivgraphpath, univgraphuri = 
@@ -159,6 +164,10 @@ let add_single_obj uri obj refinement_toolkit =
       try
         (*3*)
         let new_stuff = save_object_to_disk uri obj ugraph univlist in
+        (* EXPERIMENTAL: pretty print the object in natural language *)
+       (try !object_declaration_hook uri obj
+        with exc ->
+         prerr_endline "Error: object_declaration_hook failed");
         try 
          HLog.message
           (Printf.sprintf "%s defined" (UriManager.string_of_uri uri))