DIRECTORY Core; CoreClasses: CEDAR DEFINITIONS = BEGIN OPEN Core; recordCellClass: CellClass; RecordCellType: TYPE = REF RecordCellTypeRec; RecordCellTypeRec: TYPE = RECORD [ internal: WireSequence, instances: CellInstanceList _ NIL]; CellInstance: TYPE = REF CellInstanceRec; CellInstanceList: TYPE = LIST OF CellInstance; CellInstanceRec: TYPE = RECORD [ actual: WireSequence, type: CellType, properties: Properties _ NIL]; instanceNameProp: ATOM; -- for naming the instance RecordPrint: PROC [recordCellType: RecordCellType, out: STREAM]; CorrespondingActual: PROC [instance: CellInstance, public: Wire] RETURNS [actual: Wire _ NIL]; Bound: PROC [instance1, instance2: CellInstance, public1, public2: Wire] RETURNS [b: BOOL]; internalFullName: ATOM; transistorCellClass: CellClass; Transistor: TYPE = REF TransistorRec; TransistorRec: TYPE = RECORD [ type: TransistorType _ nE, length: NAT _ 2, width: NAT _ 4]; TransistorType: TYPE = {nE, pE, nD}; TransistorCreate: PROC [args: TransistorRec] RETURNS [cellType: CellType]; identityCellClass: CellClass; Identity: PROC [cellType: CellType, name: ROPE, props: Properties _ NIL] RETURNS [identity: CellType]; unspecifiedCellClass: CellClass; END. ΨCoreClasses.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Bertrand Serlet, November 12, 1985 6:01:32 pm PST Theory This interface defines a set of Classes of general interest. Record Record 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 actual field must conform to the public field of the cell type which is pointed to by the instance. Conform[w1, w2] W w1.structure = NIL g w2.elements = NIL w1.elements = NIL g w2.elements = NIL & w1.elements.size = w2.elements.size & A i B [0, w1.elements.size): Conform[w1.elements[i], w2.elements[i]] 2) The wires of each actual field must point to wires that are reachable from the internal of the RecordCell. 3) The public of the CellType must point to wires that are reachable from the internal of the RecordCell. Returns the actual bound to the public in the instance, NIL if not found b _ actual of instance1 corresponding to public1 = actual of instance2 corresponding to public2 Used to put full names on internal wires when CoreOps.NameAllWires is called. Transistor Until the next release, for simplifying the software, a transistor only have 3 wires. Public wires: gate, ch1, ch2. Identity Returns a CellType which refers to the original CellType but has a new property list. Useful when properties describe instances of a class all of whose members have the same Core data structure. Unspecified Unspecified is the (structural) cell class that means to not specify structure. Cell types in this class are not necessarily leaves, nor composites --- their internal structure is unspecified. ΚΛ˜– "Cedar" stylešœ™Jšœ Οmœ1™žœžœ˜[J™_—K˜šœžœ˜K™M——š  ™ K™UK™K˜K˜Kšœ žœžœ˜%šœžœžœ˜Kšœ˜Kšœžœ˜Kšœžœ˜—K˜šœžœ˜$K˜—Jšœ™Kš œžœžœ˜J—š ™Kšœ˜K˜š  œžœžœžœžœ˜gK™Γ——š  ™ MšœΑ™ΑK˜K˜ M™—Jšžœ˜—…—ΐc