~npalix/coccinelle/upstream

« back to all changes in this revision

Viewing changes to commons/ograph_extended.ml

  • Committer: Yoann Padioleau
  • Date: 2007-08-03 13:08:05 UTC
  • Revision ID: git-v1:95bf957d216fa0de145e75df8c2e2ef60a67fef6
adding info on C

svn path=/coccinelle/; revision=3099

Show diffs side-by-side

added added

removed removed

Lines of Context:
193
193
  end   
194
194
 
195
195
 
196
 
 
197
 
 
198
 
let print_ograph_xxx g filename =
 
196
(* depth first search *)
 
197
let dfs_iter xi f g =
 
198
  let already = Hashtbl.create 101 in
 
199
  let rec aux_dfs xs = 
 
200
    xs +> List.iter (fun xi -> 
 
201
      if Hashtbl.mem already xi then ()
 
202
      else begin
 
203
        Hashtbl.add already xi true;
 
204
        f xi;
 
205
        let succ = g#successors xi in
 
206
        aux_dfs (succ#tolist +> List.map fst);
 
207
      end
 
208
    ) in
 
209
  aux_dfs [xi]
 
210
 
 
211
 
 
212
 
 
213
let generate_ograph_xxx g filename =
199
214
  with_open_outfile filename (fun (pr,_) ->
200
215
    pr "digraph misc {\n" ;
201
216
    let nodes = g#nodes in
213
228
    pr "}\n" ;
214
229
    );
215
230
  let _status = 
216
 
    Unix.system ("dot " ^ filename ^ " -Tps  -o " ^ filename ^ ".ps;" ^ 
217
 
                 "gv " ^ filename ^ ".ps &")
 
231
    Unix.system ("dot " ^ filename ^ " -Tps  -o " ^ filename ^ ".ps;") in
 
232
  ()
 
233
 
 
234
let launch_gv filename =
 
235
  let _status = Unix.system ("gv " ^ filename ^ ".ps &")
218
236
  in
219
237
  (* zarb: I need this when I launch the program via eshell, otherwise gv
220
238
     do not get the chance to be launched *)
221
239
  Unix.sleep 1; 
222
240
  ()
223
241
 
224
 
let print_ograph_extended g filename = 
225
 
  print_ograph_xxx g filename 
 
242
let print_ograph_extended g filename launchgv = 
 
243
  generate_ograph_xxx g filename;
 
244
  if launchgv then launch_gv filename
226
245
 
227
 
let print_ograph_mutable g filename = 
228
 
  print_ograph_xxx g filename 
 
246
let print_ograph_mutable g filename launchgv = 
 
247
  generate_ograph_xxx g filename;
 
248
  if launchgv then launch_gv filename