CoreSequence.mesa 
Copyright © 1985 by Xerox Corporation. All rights reserved.
Barth, August 21, 1985 4:22:03 pm PDT
Serlet, July 11, 1985 3:49:37 pm PDT
Bertrand Serlet November 26, 1985 11:48:40 am PST
DIRECTORY Core;
CoreSequence: CEDAR DEFINITIONS = BEGIN OPEN Core;
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 public wire 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;
SequenceCellType: TYPE = REF SequenceCellTypeRec;
SequenceCellTypeRec: 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 [args: SequenceCellType, name: ROPENIL, props: Properties ← NIL] RETURNS [cellType: CellType];
Print: PROC [cell: SequenceCellType, out: STREAM];
END.