From 2db64746cc8addb01e6da33bbca55d9d1d4d1f22 Mon Sep 17 00:00:00 2001 From: Erwan Jahier <erwan.jahier@univ-grenoble-alpes.fr> Date: Thu, 28 Jul 2022 14:29:13 +0200 Subject: [PATCH] refactor: remove a code dupl --- lib/soc2yaml.ml | 46 +++++++++++++--------------------------------- test/lus2lic | 2 +- 2 files changed, 14 insertions(+), 34 deletions(-) diff --git a/lib/soc2yaml.ml b/lib/soc2yaml.ml index 6613618e..ce1bf839 100644 --- a/lib/soc2yaml.ml +++ b/lib/soc2yaml.ml @@ -1,9 +1,6 @@ -(* Time-stamp: <modified the 28/06/2022 (at 17:43) by Erwan Jahier> *) -(* -open printf;; -#use "topfind";; -#require "yaml";; -#require "yaml.unix";;*) +(* Time-stamp: <modified the 28/07/2022 (at 14:28) by Erwan Jahier> *) + +(* Author: Antony Zahran *) open Printf (*open Soc2cIdent*) @@ -16,8 +13,6 @@ let (f : Soc.key -> Soc.tbl -> string -> unit) = fun sk stbl basename -> printf "%s.yaml file created\n%!" basename; - - let filename = SocNameC.get_filename main_soc in let ctx_name = SocNameC.get_ctx_name main_soc in let ctx_new = SocNameC.get_ctx_new main_soc in @@ -26,31 +21,24 @@ let (f : Soc.key -> Soc.tbl -> string -> unit) = fun sk stbl basename -> let variables = SocNameC.get_variables main_soc in let nodes = SocNameC.get_nodes main_soc in let instances = SocNameC.get_instances main_soc in - - let yaml_file = open_out (filename ^ ".yml") in - - - - let inst_of_var = List.init ((List.length inputs) + (List.length outputs) + (List.length variables)) (fun _ -> ref 0) in + let inst_of_var = List.init ((List.length inputs) + (List.length outputs) + + (List.length variables)) (fun _ -> ref 0) in let set_inst_of_var = fun i -> List.iter (fun v -> (List.nth inst_of_var v) := i.id) i.var_out in List.iter set_inst_of_var instances; - let inst_to_inst = (List.init (List.length instances + 1) (fun _ -> ref [])) in + let add_inst = fun id v -> + if not (List.mem !(List.nth inst_of_var v) !(List.nth inst_to_inst id)) then + (List.nth inst_to_inst id) := List.append !(List.nth inst_to_inst id) [!(List.nth inst_of_var v)] + in let set_inst_to_inst = fun i -> - let add_inst = fun v -> - if not (List.mem !(List.nth inst_of_var v) !(List.nth inst_to_inst i.id)) then - (List.nth inst_to_inst i.id) := List.append !(List.nth inst_to_inst i.id) [!(List.nth inst_of_var v)] - in - List.iter add_inst i.var_in + List.iter (add_inst i.id) i.var_in in List.iter set_inst_to_inst instances; - let (add_inst : variable_type -> unit) = fun v -> - if not (List.mem !(List.nth inst_of_var v.id) !(List.nth inst_to_inst 0)) then - (List.nth inst_to_inst 0) := List.append !(List.nth inst_to_inst 0) [!(List.nth inst_of_var v.id)] - in + let (add_inst : variable_type -> unit) = fun v -> add_inst 0 v.id in + List.iter add_inst outputs; let channel_id = ref 0 in @@ -62,11 +50,6 @@ let (f : Soc.key -> Soc.tbl -> string -> unit) = fun sk stbl basename -> in List.iteri (fun x -> fun yl -> (List.iter (add_channel x) !yl)) inst_to_inst; - - - - - let (var2yaml : variable_type -> unit) = fun i -> let s = " - id: " ^ (string_of_int i.id) ^ "\n name: " ^ i.name @@ -126,9 +109,6 @@ let (f : Soc.key -> Soc.tbl -> string -> unit) = fun sk stbl basename -> (List.nth inst_id i.node) := !(List.nth inst_id i.node) + 1; fprintf yaml_file "%s\n" s in - - - fprintf yaml_file "variables:\n"; List.iter var2yaml (inputs); List.iter var2yaml (outputs); @@ -146,4 +126,4 @@ let (f : Soc.key -> Soc.tbl -> string -> unit) = fun sk stbl basename -> fprintf yaml_file "instances:\n"; List.iter instance2yaml instances; - close_out yaml_file \ No newline at end of file + close_out yaml_file diff --git a/test/lus2lic b/test/lus2lic index e8b9e775..d2f52adc 120000 --- a/test/lus2lic +++ b/test/lus2lic @@ -1 +1 @@ -../_build/default/bin/main.exe \ No newline at end of file +../_build/default/bin/lv6/main.exe \ No newline at end of file -- GitLab