From c9b2cad6a92aedba63318319169d057251b2d138 Mon Sep 17 00:00:00 2001 From: Ferruccio Guidi Date: Fri, 2 Feb 2018 21:17:13 +0100 Subject: [PATCH] xoa updated a dependence from matita removed optional generation of separated objects (this should be the default) --- matita/components/binaries/xoa/lib.ml | 1 - matita/components/binaries/xoa/xoa.ml | 53 +++++++++++++++++++++------ 2 files changed, 42 insertions(+), 12 deletions(-) diff --git a/matita/components/binaries/xoa/lib.ml b/matita/components/binaries/xoa/lib.ml index e6e203e62..573e0ebfb 100644 --- a/matita/components/binaries/xoa/lib.ml +++ b/matita/components/binaries/xoa/lib.ml @@ -35,7 +35,6 @@ let print_comment och = let open_out preamble name = let path = [ - R.get_string "matita.rt_base_dir"; R.get_string "xoa.output_dir"; name ] in diff --git a/matita/components/binaries/xoa/xoa.ml b/matita/components/binaries/xoa/xoa.ml index e4e0e7c69..d6f0bca0d 100644 --- a/matita/components/binaries/xoa/xoa.ml +++ b/matita/components/binaries/xoa/xoa.ml @@ -9,39 +9,70 @@ \ / This software is distributed as is, NO WARRANTY. V_______________________________________________________________ *) -module G = Arg - module R = Helm_registry module L = Lib module A = Ast -module E = Engine +module E = Engine + +let separate = ref false + +let clear () = + separate := false; + R.clear () let unm_ex s = Scanf.sscanf s "%u %u" A.mk_exists let unm_or s = - Scanf.sscanf s "%u" A.mk_or + Scanf.sscanf s "%u" A.mk_or let unm_and s = - Scanf.sscanf s "%u" A.mk_and + Scanf.sscanf s "%u" A.mk_and -let process conf = +let process_centralized conf = let preamble = L.get_preamble conf in if R.has "xoa.objects" && R.has "xoa.notations" then begin let ooch = L.open_out preamble (R.get_string "xoa.objects") in let noch = L.open_out preamble (R.get_string "xoa.notations") in - List.iter (L.out_include ooch) (R.get_list R.string "xoa.include"); - L.out_include ooch (R.get_string "xoa.notations" ^ ".ma"); + List.iter (L.out_include ooch) (R.get_list R.string "xoa.include"); + L.out_include ooch (R.get_string "xoa.notations" ^ ".ma"); List.iter (E.generate ooch noch) (R.get_list unm_ex "xoa.ex"); List.iter (E.generate ooch noch) (R.get_list unm_or "xoa.or"); List.iter (E.generate ooch noch) (R.get_list unm_and "xoa.and"); close_out noch; close_out ooch end +let generate (p, o, n) = function + | A.Exists (c, v) as d -> + let oname = Printf.sprintf "%s/ex_%u_%u" o c v in + let nname = Printf.sprintf "%s/ex_%u_%u" n c v in + let ooch = L.open_out p oname in + let noch = L.open_out p nname in + List.iter (L.out_include ooch) (R.get_list R.string "xoa.include"); + L.out_include ooch (nname ^ ".ma"); + E.generate ooch noch d; + close_out noch; close_out ooch + | A.Or c -> () + | A.And c -> () + +let process_distributed conf = + let preamble = L.get_preamble conf in + if R.has "xoa.objects" && R.has "xoa.notations" then begin + let st = preamble, R.get_string "xoa.objects", R.get_string "xoa.notations" in + List.iter (generate st) (R.get_list unm_ex "xoa.ex"); + List.iter (generate st) (R.get_list unm_or "xoa.or"); + List.iter (generate st) (R.get_list unm_and "xoa.and"); + end + +let process conf = + if !separate then process_distributed conf else process_centralized conf + let _ = - let help = "Usage: xoa [ -X | ]*\n" in - let help_X = " Clear configuration" in + let help = "Usage: xoa [ -Xs | ]*\n" in + let help_X = " Clear configuration" in + let help_s = " Generate separate objects" in Arg.parse [ - "-X" , G.Unit R.clear, help_X; + "-X", Arg.Unit clear, help_X; + "-s", Arg.Set separate, help_s; ] process help -- 2.39.2