DIRECTORY Asserting, Rope; Graphs: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; Vertex: TYPE = REF VertexRep; VertexRep: TYPE = RECORD [ rep: REF ANY, type: VertexType, other: Asserting.Assertions _ NIL ]; VertexType: TYPE = REF VertexTypeRep; VertexTypeRep: TYPE = RECORD [ data: REF ANY _ NIL, Expand: ExpandProc, GetLabel: GetLabelProc _ NIL, LabelEdges: LabelEdgesProc _ NIL, CrossLabeledEdge: CrossLabeledEdgeProc _ NIL, GetIndexedNeighbor: GetIndexedNeighborProc _ NIL, GetNeighborCount: NeighborCountProc _ NIL, other: Asserting.Assertions _ NIL ]; Label: TYPE = ROPE _ NIL; unlabeled: Label = NIL; ExpandProc: TYPE = PROC [vertex: Vertex, consume: EdgeConsumer]; EdgeConsumer: TYPE = RECORD [ proc: EdgeConsumerProc, data: REF ANY _ NIL]; EdgeConsumerProc: TYPE = PROC [edge: Edge, data: REF ANY]; Edge: TYPE = RECORD [label: Label, otherSide: Vertex]; GetLabelProc: TYPE = PROC [vertex: Vertex] RETURNS [label: Label]; LabelEdgesProc: TYPE = PROC [vertex: Vertex, consume: LabelConsumer]; LabelConsumer: TYPE = RECORD [ proc: LabelConsumerProc, data: REF ANY _ NIL]; LabelConsumerProc: TYPE = PROC [edgeLabel: Label, data: REF ANY]; CrossLabeledEdgeProc: TYPE = PROC [vertex: Vertex, edgeLabel: Label] RETURNS [neighbor: Vertex]; GetIndexedNeighborProc: TYPE = PROC [vertex: Vertex, index: INT--origin 1--] RETURNS [neighbor: Vertex]; NeighborCountProc: TYPE = PROC [vertex: Vertex] RETURNS [neighborCount: INT]; NewVertexType: PROC [VertexTypeRep] RETURNS [vt: VertexType]; Proc: TYPE = PROC ANY RETURNS ANY; AddOtherProc: PROC [vt: VertexType, key: ATOM, proc: Proc]; GetOtherProc: PROC [vt: VertexType, key: ATOM] RETURNS [proc: Proc]; END. žGraphs.Mesa Last Edited by: Spreitzer, June 6, 1985 4:35:25 pm PDT Provides default implementations of procedures that can be derived from given procs. Κ– "cedar" style˜J™ J™6J˜JšΟk œ˜J˜IcodešΠbxœœ œ˜K˜Kš˜K˜Kšœœœ˜K˜Kšœœœ ˜šœ œœ˜Kšœœœ˜ Kšœ˜Kšœ˜!Kšœ˜—K˜Kšœ œœ˜%šœœœ˜Kšœœœœ˜K˜Kšœœ˜Kšœœ˜!Kšœ)œ˜-Kšœ-œ˜1Kšœ&œ˜*Kšœ˜!K˜—K˜Kšœœœœ˜Kšœœ˜K˜šΟn œœœ)˜@K˜šœœœ˜Kšœ˜Kšœœœœ˜—K˜Kš Ÿœœœœœ˜:K˜Kšœœœ#˜6—K˜KšŸ œœœœ˜BK˜šŸœœœ*˜EK˜šœœœ˜Kšœ˜Kšœœœœ˜—K˜Kš Ÿœœœœœ˜A—K˜KšŸœœœ$œ˜`K˜Kš ŸœœœΟc œœ˜hK˜Kš Ÿœœœœœ˜MK˜šŸ œœœ˜=K™T—K˜Kš Ÿœœœœœœ˜"K˜KšŸ œœœ˜;KšŸ œœœœ˜DK˜Kšœ˜—…—’ 0