]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/helena/src/xml/xmlLibrary.ml
update in helena
[helm.git] / helm / software / helena / src / xml / xmlLibrary.ml
index 2e3fdef8a6d9322725977a6c45cee3bf121fd974..59dbc4d66917ea8ae8f5e6101b1ffc5a129117d3 100644 (file)
@@ -9,13 +9,17 @@
      \ /   This software is distributed as is, NO WARRANTY.              
       V_______________________________________________________________ *)
 
-module F = Filename
-module U = NUri
-module C = Cps
-module H = Hierarchy
-module G = Options
-module E = Entity
-module N = Level
+module KF = Filename
+module KP = Printf
+
+module U  = NUri
+module C  = Cps
+module G  = Options
+module H  = Hierarchy
+module N  = Layer
+module E  = Entity
+
+IFDEF OBJECTS THEN
 
 (* internal functions *******************************************************)
 
@@ -23,21 +27,17 @@ let base = "xml"
 
 let ext = ".xml"
 
-let obj_root = "ENTITY"
-
-let ccs_name = "ccs.ldc"
-
-let ccs_root = "CCS"
+let obj_root = "CONSTANT"
 
 let home = "http://lambdadelta.info/"
 
-let system = F.concat (F.concat home base) "ld.dtd"
+let system = KF.concat (KF.concat home base) "ld.dtd"
 
 let xmlns = "xmlns", home
 
 let path_of_uri xdir uri =
-   let base = F.concat xdir base in 
-   F.concat base (Str.string_after (U.string_of_uri uri) 3)
+   let base = KF.concat xdir base in 
+   KF.concat base (Str.string_after (U.string_of_uri uri) 3)
 
 (* interface functions ******************************************************)
 
@@ -91,6 +91,9 @@ let void = "Void"
 let position i =
    "position", string_of_int i
 
+let depth i =
+   "depth", string_of_int i
+
 let uri u =
    "uri", U.string_of_uri u
 
@@ -99,13 +102,24 @@ let name a =
    let f n r = "name", if r then n else "-" ^ n in 
    E.name err f a
 
-let apix a =
-   let err () = "age", "" in
-   let f i = "age", string_of_int i in
-   E.apix err f a
+let restricted r =
+   "restricted", KP.sprintf "%b" r
 
-let level st n =
-   "level", N.to_string st n
+let layer st n =
+   "layer", N.to_string st n
+
+let main (sort, degr) =
+   ["main-position", string_of_int sort;
+    "main-degree", string_of_int degr;
+   ]
+
+let side (sort, degr) =
+   ["side-position", string_of_int sort;
+    "side-degree", string_of_int degr;
+   ]
+
+let apix a =
+   "level", string_of_int a.E.n_apix
 
 let meta a =
    let map = function
@@ -124,15 +138,15 @@ let info a =
 
 let export_entity pp_term (ra, na, u, b) = 
    let path = path_of_uri !G.xdir u in
-   let _ = Sys.command (Printf.sprintf "mkdir -p %s" (F.dirname path)) in
+   let _ = Sys.command (Printf.sprintf "mkdir -p %s" (KF.dirname path)) in
    let och = open_out (path ^ ext) in
    let out = output_string och in
    xml out "1.0" "UTF-8"; doctype out obj_root system;
-   let na = {na with E.n_name = Some (U.name_of_uri u, true)} in
-   let attrs = uri u :: name na :: apix na :: meta ra :: info ra in 
+   let ba = E.bind_attrs ~name:(U.name_of_uri u, true) () in
+   let attrs a = uri u :: name ba :: apix na :: meta ra :: info ra @ side a.E.e_side in 
    let contents = match b with
-      | E.Abst w -> tag "GDec" attrs ~contents:(pp_term w) 
-      | E.Abbr v -> tag "GDef" attrs ~contents:(pp_term v)
+      | E.Abst (a, w) -> tag "GDec" (attrs a) ~contents:(pp_term w) 
+      | E.Abbr (a, v) -> tag "GDef" (attrs a) ~contents:(pp_term v)
       | E.Void   -> assert false
    in
    let opts = if !G.si then "si" else "" in
@@ -140,3 +154,5 @@ let export_entity pp_term (ra, na, u, b) =
    let attrs = [xmlns; "hierarchy", shp; "options", opts] in
    tag obj_root attrs ~contents out 0;
    close_out och
+
+END