CoreLibrary.mesa
Copyright c 1985 by Xerox Corporation. All rights reserved.
Curry, August 20, 1986 5:41:15 pm PDT
This module extracts and caches the Core for CDObjects. Besides the 3 geometry properties, the property CoreBlock.coreBlockSides is also initialized on the Public wire.
WriteCapa.wireCapProp, rootCapProp and capaLabelProp are also set.
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,
flatten:   INT    ← -1,
merge:   BOOL    ← FALSE]
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,
flatten:   INT    ← -1]
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];
END.