DIRECTORY Core; CoreArray: CEDAR DEFINITIONS = BEGIN OPEN Core; arrayCellClass: CellClass; ArrayCellType: TYPE = REF ArrayCellTypeRec; ArrayCellTypeRec: TYPE = RECORD [ xparams: ArrayParams _ NIL, yparams: ArrayParams _ NIL, select: XYSelect _ NIL, bind: XYBind _ NIL, cellTypes: SEQUENCE length: NAT OF CellType]; ArrayParams: TYPE = REF ArrayParamsRec; ArrayParamsRec: TYPE = RECORD [ count: NAT _ 0, orthogonal: Ports _ NIL, chains: SEQUENCE length: NAT OF Ports]; Ports: TYPE = REF PortsRec; PortsRec: TYPE = RECORD [SEQUENCE length: NAT OF PortIndex]; PortIndex: TYPE = NAT; XYSelect: TYPE = PROC [x, y: INT, cellType: CellType] RETURNS [cellTypeIndex: NAT]; XYBind: TYPE = PROC [x, y: INT, cellType: CellType] RETURNS [actual: Wire]; Create: PROC [arrayCellType: ArrayCellType, name: ROPE _ NIL, publicWire: Wire _ NIL] RETURNS [cellType: CellType]; Print: PROC [arrayCellType: ArrayCellType, out: STREAM]; END. ζCoreArray.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Barth, August 21, 1985 4:01:15 pm PDT Theory The theory section is not up to date. This interface has been generalized to handle heterogenous and homogenous arrays. 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 If the select is NIL then there must be one and only one cellType. If the bind is NIL then the actual wire of each instance is computed according to the following rules: The publicWire of each of the cellTypes must have the same structure. These procedures must persist during the lifetime of the core data structure which accesses them. If the publicWire argument is NIL then the client must set cellType.publicWire. Data may be passed to the select procedure on the property list of cellType. Κ2˜– "Cedar" stylešœ™Icode– "Cedar" stylešœ Οmœ1™