PartialOrders: CEDAR DEFINITIONS = BEGIN PartialOrder: TYPE = REF PartialOrderPrivate; PartialOrderPrivate: TYPE; IsPartialOrder: PROC [REF ANY] RETURNS [BOOL]; NarrowToPartialOrder: PROC [REF ANY] RETURNS [PartialOrder]; Element: TYPE = REF ANY; Vertex: TYPE = REF VertexPrivate; VertexPrivate: TYPE; IsVertex: PROC [REF ANY] RETURNS [BOOL]; NarrowToVertex: PROC [REF ANY] RETURNS [Vertex]; Create: PROC RETURNS [PartialOrder]; Insert: PROC [po: PartialOrder, elt: Element, lesser, greater: Vertex _ NIL] RETURNS [Vertex]; Relate: PROC [po: PartialOrder, lesser, greater: Vertex]; IsSource: PROC [po: PartialOrder, v: Vertex, dir: Direction] RETURNS [BOOL]; Direction: TYPE = {increasing, decreasing}; Consumer: TYPE = PROC [rank: INT, elt: Element, v: Vertex]; Enumerate: PROC [po: PartialOrder, direction: Direction, start: Vertex _ NIL, consume: Consumer]; EnumerateNeighbors: PROC [po: PartialOrder, direction: Direction, vertex: Vertex _ NIL, consume: Consumer]; ComputeDirectDominance: PROC [po: PartialOrder]; EnumerateDirectDominees: PROC [po: PartialOrder, vertex: Vertex _ NIL, consume: Consumer]; END.  PartialOrders.Mesa Spreitzer, May 10, 1986 6:40:14 pm PDT Last tweaked by Mike Spreitzer on July 19, 1988 3:44:27 pm PDT rank is length of maximal path in relevent direction from some source to this vertex; sources have rank 1. Enumerates the vertices greater than (or less than) the start vertex, nearer first. start=NIL means to enumerate the whole graph. Don't change graph during enumeration. Enumerate only the vertices immediately greater or lesser than the given vertex. Don't change graph during enumeration. Κϊ– "cedar" style˜code™K™&K™>—K˜KšΠbx œΟkœž ˜ K˜Kšœž˜K˜Kšœžœžœ˜-Kšœžœ˜Kš Οnœžœžœžœžœžœ˜.Kš Ÿœžœžœžœžœ˜