+ fprintf output "<script type='text/javascript'><![CDATA[ ";
+ let pass, max_active_pass, diff_list, full_list =
+ List.fold_left
+ (fun (pass, max_active_pass, diff_list, full_list) a ->
+ let todo = if pass >= Array.length todos then StateSet.empty
+ else todos.(pass)
+ in
+ let diff = StateSet.inter a.(node_id) todo in
+ let new_active_pass =
+ if diff == StateSet.empty then max_active_pass else pass
+ in
+ pass+1, new_active_pass, diff::diff_list, a.(node_id) :: full_list)
+ (0, -1, [], []) sat_arrays
+ in
+ fprintf output "tree['%s'] = { marked: %b, fc: 'node%i', ns: 'node%i', par: 'node%i', ps: 'node%i', max: %i, dlist: [%a], flist: [%a] };]]></script>\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);