From a089738aa464521c0ae79944eb00fc147cc37ac9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Kim=20Nguy=E1=BB=85n?= Date: Mon, 9 Dec 2013 10:57:59 +0100 Subject: [PATCH] Refactor the tracing code, store the whole tree structure in a javascript array and handle it from the javascript side. --- src/html_trace.ml | 74 +++++++++++++++++++++++++++++++------------- src/pretty.ml | 25 ++++++++++++--- src/pretty.mli | 12 +++++++ src/run.ml | 1 + src/trace_css.ml.str | 15 +++++++-- src/trace_js.ml.str | 70 +++++++++++++++++++++++------------------ 6 files changed, 139 insertions(+), 58 deletions(-) diff --git a/src/html_trace.ml b/src/html_trace.ml index 0d4890e..7ce3f39 100644 --- a/src/html_trace.ml +++ b/src/html_trace.ml @@ -83,10 +83,18 @@ let get_conf sel l i = accb || StateSet.intersect a.(i) sel, a.(i) :: accl) (false,[]) l +let dup_rev_list l = + List.fold_left (fun acc e -> e::e::acc) [] l + let gen_trace (type s) = fun auto sat_arrays t tree -> + let sat_arrays = dup_rev_list sat_arrays in let module T = (val (t) : Tree.S with type t = s) in let root = T.root tree in let sel = Ata.get_selecting_states auto in + let todos = Ata.get_states_by_rank auto in + let pr_sets = Pretty.print_list ~sep:", " + (fun fmt s -> fprintf fmt "'%a'" StateSet.print s) + in let rec loop output node parent prevsib x y = if node != T.nil then begin let node_id = T.preorder tree node in @@ -97,9 +105,31 @@ let gen_trace (type s) = fun auto sat_arrays t tree -> let s_node = "node" ^ (string_of_int node_id) in let first = T.first_child tree node in let next = T.next_sibling tree node in + fprintf output "\n" + s_node + marked + (T.preorder tree first) (T.preorder tree next) + (T.preorder tree parent) (T.preorder tree prevsib) + max_active_pass + pr_sets (List.rev diff_list) + pr_sets (List.rev full_list); fprintf output "%!" + width=\"%i\" height=\"22\" style=\"fill:%s;stroke:rgb(0,0,0)%s\"/>%!" s_node s_node x y @@ -108,10 +138,6 @@ let gen_trace (type s) = fun auto sat_arrays t tree -> (if marked then ";stroke-width:4" else ";stroke-width:2;stroke-dasharray:2,2"); - fprintf output "node%inode%inode%inode%i\n%!" -s_node (T.preorder tree first) s_node (T.preorder tree next) -s_node (T.preorder tree parent) s_node (T.preorder tree prevsib) -; fprintf output "%s\n" (x+10) @@ -148,29 +174,35 @@ style=\"stroke:rgb(0,0,0);stroke-width:2\"/>\n"
%a
\n\
\n\ \n\ +
+
\n\ +\n\ +\n\ +\n\ +\n\ +
\n - \n"; + \n" + (Pretty.print_range (fun fmt i -> + fprintf fmt "\n" i i)) + (0,(List.length sat_arrays - 1)); let maxw, maxh = loop ohtml (T.root tree) T.nil T.nil 50 50 in - fprintf ohtml "\n