DIRECTORY Core, RefTab, Rope; Sequence: CEDAR DEFINITIONS = BEGIN sequenceCellClass: Core.CellClass; SequenceCellType: TYPE = REF SequenceCellTypeRec; SequenceCellTypeRec: TYPE = RECORD [ base: Core.CellType, count: NAT, bindings: WireBindings _ NIL, operations: Operations _ NIL]; WireBindings: TYPE = LIST OF WireBindRec; WireBindRec: TYPE = RECORD [this, that: Core.Wire]; Operations: TYPE = RefTab.Ref; Operation: TYPE = REF OperationRec; OperationRec: TYPE = RECORD [ expose: ARRAY PublicWireType OF BOOL _ ALL[FALSE]]; PublicWireType: TYPE = {sequence, flatSequence, common, first, last}; DecorateProc: TYPE = PROC [baseWire: Core.Wire, parentWires: ARRAY PublicWireType OF Core.Wire _ ALL[NIL]]; CreateSequence: PROC [base: Core.CellType, count: NAT, bindings: WireBindings _ NIL, operations: Operations _ NIL, name: Rope.ROPE _ NIL, props: Core.Properties _ NIL, decorateProc: DecorateProc _ NIL] RETURNS [cellType: Core.CellType]; END. Sequence.mesa Copyright Σ 1988 by Xerox Corporation. All rights reserved. Barth, April 28, 1988 12:55:44 pm PDT Theory Sequences describes the class of cellTypes made from a collection of cell instances of identical type bound together. Types and Procedures FOR cell: NAT IN [0..count-1) DO FOR wpl: WirePairs _ bindings, wpl.rest UNTIL wpl=NIL DO bind CorrespondingActual[instances[cell+1].actual, base.public, wpl.first.this] to CorrespondingActual[instances[cell].actual, base.public, wpl.first.that] ENDLOOP; ENDLOOP; Κυ˜– "Cedar" stylešœ™Icode– "Cedar" style™