Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/src/MLRISC/graphs/graph-minor.sml
ViewVC logotype

Diff of /sml/trunk/src/MLRISC/graphs/graph-minor.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 411, Fri Sep 3 00:25:03 1999 UTC revision 429, Wed Sep 8 09:47:00 1999 UTC
# Line 11  Line 11 
11     val minor : ('n,'e,'g) Graph.graph     val minor : ('n,'e,'g) Graph.graph
12              -> ('n * 'n * 'e Graph.edge list -> 'n)              -> ('n * 'n * 'e Graph.edge list -> 'n)
13              -> { view  : ('n,'e,'g) Graph.graph,              -> { view  : ('n,'e,'g) Graph.graph,
14                   union : Graph.node_id * Graph.node_id -> bool,                   union : Graph.node_id * Graph.node_id -> unit,
15                   ==    : Graph.node_id * Graph.node_id -> bool,                   ==    : Graph.node_id * Graph.node_id -> bool,
16                   partition : Graph.node_id -> Graph.node_id list                   partition : Graph.node_id -> Graph.node_id list
17                 }                 }
# Line 22  Line 22 
22  struct  struct
23    
24     structure G = Graph     structure G = Graph
25     structure U = UnionFindRef     structure U = URef
26     structure H = HashArray     structure H = HashArray
27    
28     datatype ('n,'e) node =     datatype ('n,'e) node =
# Line 41  Line 41 
41         val _ = #forall_nodes G         val _ = #forall_nodes G
42                  (fn (n,n') =>                  (fn (n,n') =>
43                      H.update(table,n,                      H.update(table,n,
44                         U.uref(NODE{key=n,                         U.uRef(NODE{key=n,
45                                     data=n',                                     data=n',
46                                     nodes=[n],                                     nodes=[n],
47                                     succ= #out_edges G n,                                     succ= #out_edges G n,
48                                     pred= #in_edges G n})))                                     pred= #in_edges G n})))
49         fun same(i,j) = U.== (H.sub(table,i),H.sub(table,j))         fun same(i,j) = U.equal (H.sub(table,i),H.sub(table,j))
50         fun partition i = #nodes(get i)         fun partition i = #nodes(get i)
51         val size  = ref (#size G ())         val size  = ref (#size G ())
52         val order = ref (#order G ())         val order = ref (#order G ())
# Line 96  Line 96 
96             val _ = size  := !size - length s'             val _ = size  := !size - length s'
97         in  n         in  n
98         end         end
99         fun union(i,j) = U.union merge (H.sub(table,i),H.sub(table,j))         fun union(i,j) = U.unify merge (H.sub(table,i),H.sub(table,j))
100         val view =         val view =
101         G.GRAPH         G.GRAPH
102         { name            = #name G,         { name            = #name G,

Legend:
Removed from v.411  
changed lines
  Added in v.429

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0