]> matita.cs.unibo.it Git - helm.git/commitdiff
avoid collapsing node that does not need to be, i.e.:
authorStefano Zacchiroli <zack@upsilon.cc>
Thu, 20 Jul 2006 15:02:52 +0000 (15:02 +0000)
committerStefano Zacchiroli <zack@upsilon.cc>
Thu, 20 Jul 2006 15:02:52 +0000 (15:02 +0000)
- nodes with no outgoing edges
- nodes which have not been expanded before

helm/software/components/metadata/metadataDeps.ml

index 0e1dbb817c45ef39bf8de27a43d81bab315bf13c..3247114a2e5489e5528d8301d86ef5c5c2438487 100644 (file)
@@ -205,9 +205,16 @@ struct
       [], 0
 
   let collapse uri (adjlist, _root, f, _invert) =
+    try
+      let neighbs = UriTbl.find adjlist uri in
+      if Lazy.lazy_is_val neighbs.adjacency then
+        (* do not collapse already collapsed nodes *)
+        if Lazy.force neighbs.adjacency <> [] then
+          (* do not collapse nodes with no outgoing edges *)
+          UriTbl.replace adjlist uri { adjacency = lazy (f uri); shown = 0 }
+    with Not_found ->
       (* do not add a collapsed node if it was not part of the graph *)
-    if UriTbl.mem adjlist uri then
-      UriTbl.replace adjlist uri { adjacency = lazy (f uri); shown = 0 }
+      ()
 
   let graph_of_fun ?(invert = false) f ~dbd uri =
     let f ~dbd uri =