CoreSequenceCells.mesa
Copyright © 1985 by Xerox Corporation. All rights reversed.
Last Edited by: Barth, August 13, 1985 7:44:53 pm PDT
Bertrand Serlet August 14, 1985 10:55:10 am PDT
Theory
This interface describes the structuring mechanism which takes a collection of cell instances of identical type and binds them together. Currently it is only useful to sequence cells whose publicWire consists of a top level record or sequence structure. The public wire of the assembly is computed from the base and the sequence and stitch fields. The components of the top level sequence indicated by the sequence field turn into wires which are sequenced by the count. The components of the top level sequence indicated by the stitches field represent portions of the public wire which are bound together with an internal node. The sink of the first instance and the source of the last instance are made part of the public wire of the assembly.
Practice
sequenceCellClass: CellClass;
SequenceCell: TYPE = REF SequenceCellRec;
SequenceCellRec:
TYPE =
RECORD [
base: CellType,
count: NAT,
stitches: Stitches ← NIL,
sequence: SEQUENCE length: NAT OF NAT];
Stitches: TYPE = REF StitchesRec;
StitchesRec: TYPE = RECORD [SEQUENCE length: NAT OF BindPair];
BindPair:
TYPE =
RECORD [
source: NAT,
sink: NAT];
Create:
PROC [design: Design, name:
ROPE ←
NIL, args: SequenceCell]
RETURNS [cellType: CellType];
May raise StructureError[MissingParameter].
Print: PROC [cell: SequenceCell, out: STREAM];