CoreLibrary.mesa
Copyright c 1985 by Xerox Corporation. All rights reserved.
Curry, July 14, 1986 2:10:01 pm PDT
This module extracts and caches the Core for CDObjects. Besides the 3 Sinix geometry properties, the property CoreBlock.coreBlockSides is also initialized on the Public wire.
A library corresponds to an open CD.Design library. Get corresponds to the functionality of PW.Get and PW.Inst.
Flatten enables the use of library CD.Objects which are strange overlayed compositions. (ie. do not maintain the InterestRect-Pins protocol internally)
DIRECTORY CD, Core, CoreFrame, HashTable;
CoreLibrary: CEDAR DEFINITIONS = BEGIN
ROPE:    TYPE = Core.ROPE;
Side:    TYPE = CoreFrame.Side;
Library:   TYPE = REF LibraryRec;
LibraryRec:  TYPE = RECORD[
design: CD.Design,
table:  HashTable.Table ];
OpenLibrary: PROC[name: ROPE] RETURNS[lib: Library];
Set: PROC[
lib:    Library,
name:    ROPE,
cell:    Core.CellType];
Get: PROC[
lib:    Library,
name:    ROPE,
removeNamed: BOOL    ← TRUE,
conds:    LIST OF ROPE ← NIL]
RETURNS[cell: Core.CellType];
RenamePinsProc: TYPE = PROC[old: ROPE, side: Side, pos: INT] RETURNS[new: ROPENIL];
ObjCell: PROC[
obj:    CD.Object,
name:    ROPE,
rename:   RenamePinsProc ← NIL]
RETURNS[cell: Core.CellType];
Flatten: PROC [cell: CD.Object, rename: RenamePinsProc←NIL] RETURNS [new: CD.Object];
FlattenOneLevel: PROC [cell: CD.Object, rename: RenamePinsProc←NIL]
RETURNS [new: CD.Object, flat: BOOLTRUE];
Crystallize:  PROC [cell: CD.Object]  RETURNS [new: CD.Object];
HardLayout: PROC [cell: Core.CellType] RETURNS [obj: CD.Object];
END.