CoreRecordCellClass.mesa 
Copyright © 1985 by Xerox Corporation. All rights reserved.
Barth, August 14, 1985 4:53:22 pm PDT
Serlet, July 11, 1985 3:49:37 pm PDT
DIRECTORY Core;
CoreRecordCellClass: CEDAR DEFINITIONS = BEGIN OPEN Core;
Theory
This interface describes the structuring mechanism which takes a collection of cell types of various classes and binds them together.
Some invariants must be established by a program which creates this data structure:
1) For each instance the actualWire field must be isomorphic to the publicWire field of the cell type which is pointed to by the instance.
2) The wires of each actualWire field must point to wires that are reachable from the internalWire field of the RecordCell.
3) The publicWire of the CellType must point to wires reachable from the internalWire of the RecordCell.
Practice
recordCellClass: CellClass;
RecordCellType: TYPE = REF RecordCellTypeRec;
RecordCellTypeRec: TYPE = RECORD [
internalWire: Wire,
instances: InstanceList ← NIL];
Instance: TYPE = REF InstanceRec;
InstanceList: TYPE = LIST OF Instance;
InstanceRec: TYPE = RECORD [
name: ROPENIL,
actualWire: Wire,
type: CellType,
properties: Properties ← NIL];
PrintRecordCellType: PROC [recordCellType: RecordCellType, out: STREAM];
END.