Release coccinelle-0.2.1-rc1
[bpt/coccinelle.git] / commons / ograph_simple.ml
index 45a9028..815ae93 100644 (file)
@@ -13,7 +13,7 @@ open Osetb
  * in ograph_extended we dont force the user to have a key and we
  * generate those keys as he add nodes. Here we assume the user already
  * have an idea of what kind of key he wants to use (a string, a
- * filename, a, int, whatever) 
+ * filename, a, int, whatever)
 *)
 
 class ['key, 'a,'b] ograph_mutable =
@@ -21,54 +21,54 @@ class ['key, 'a,'b] ograph_mutable =
   let build_set ()   = new osetb Setb.empty in
 
 object(o)
-  
+
 
   val mutable succ = build_assoc()
   val mutable pred = build_assoc()
   val mutable nods = (build_assoc() : ('key, 'a) Oassocb.oassocb)
 
-  method add_node i (e: 'a) = 
-    nods <- nods#add (i, e); 
+  method add_node i (e: 'a) =
+    nods <- nods#add (i, e);
     pred <- pred#add (i, build_set() );
     succ <- succ#add (i, build_set() );
 
-  method del_node (i) = 
-    (* check: e is effectively the index associated with e, 
+  method del_node (i) =
+    (* check: e is effectively the index associated with e,
        and check that already in *)
 
     (* todo: assert that have no pred and succ, otherwise
-     * will have some dangling pointers 
+     * will have some dangling pointers
      *)
-    nods <- nods#delkey i; 
+    nods <- nods#delkey i;
     pred <- pred#delkey i;
     succ <- succ#delkey i;
 
-  method del_leaf_node_and_its_edges (i) = 
+  method del_leaf_node_and_its_edges (i) =
     let succ = o#successors i in
     if not (succ#null)
     then failwith "del_leaf_node_and_its_edges: have some successors"
     else begin
       let pred = o#predecessors i in
-      pred#tolist +> List.iter (fun (k, edge) -> 
+      pred#tolist +> List.iter (fun (k, edge) ->
         o#del_arc (k,i) edge;
       );
       o#del_node i
     end
-      
-  method leaf_nodes () = 
+
+  method leaf_nodes () =
     let (set : 'key Oset.oset)  = build_set () in
-    o#nodes#tolist +> List.fold_left (fun acc (k,v) -> 
+    o#nodes#tolist +> List.fold_left (fun acc (k,v) ->
       if (o#successors k)#null
       then acc#add k
       else acc
     ) set
-    
 
-  method replace_node i (e: 'a) = 
+
+  method replace_node i (e: 'a) =
     assert (nods#haskey i);
     nods <- nods#replkey (i, e);
-    
-  method add_arc (a,b) (v: 'b) = 
+
+  method add_arc (a,b) (v: 'b) =
     succ <- succ#replkey (a, (succ#find a)#add (b, v));
     pred <- pred#replkey (b, (pred#find b)#add (a, v));
   method del_arc (a,b) v =
@@ -82,14 +82,14 @@ object(o)
   method allsuccessors = succ
 
   (* detect if no loop ? *)
-  method ancestors k = 
+  method ancestors k =
     let empty_set = build_set() in
 
-    
-    let rec aux acc x = 
+
+    let rec aux acc x =
       if acc#mem x
-      then 
-        (* bugfix: have_loop := true; ? not, not necessarally. 
+      then
+        (* bugfix: have_loop := true; ? not, not necessarally.
          * if you got a diamon, seeing a second time the same
          * x does not mean we are in a loop
          *)
@@ -107,7 +107,7 @@ object(o)
 
 
 
-end   
+end
 
 
 let print_ograph_generic ~str_of_key ~str_of_node filename g =
@@ -116,10 +116,10 @@ let print_ograph_generic ~str_of_key ~str_of_node filename g =
     pr "size = \"10,10\";\n" ;
 
     let nodes = g#nodes in
-    nodes#iter (fun (k,node) -> 
+    nodes#iter (fun (k,node) ->
       pr (spf "%s [label=\"%s\"];\n" (str_of_key k) (str_of_node k node))
     );
-    nodes#iter (fun (k,node) -> 
+    nodes#iter (fun (k,node) ->
       let succ = g#successors k in
       succ#iter (fun (j,edge) ->
         pr (spf "%s -> %s;\n" (str_of_key k) (str_of_key j));