IPPinNets:
CEDAR
DEFINITIONS
IMPORTS IPParams = BEGIN
-- Intro: IP.PinNetRep is the structure shared between nets and instances.
Component: TYPE = REF IP.ComponentRep;
PinNets: TYPE = LIST OF PinNet;
PinNet: TYPE = REF PinNetRep;
PinNetRep: TYPE = IP.PinNetRep;
PhysicalPins: TYPE = LIST OF PhysicalPin;
PhysicalPin: TYPE = REF PhysicalPinRep;
PhysicalPinRep: TYPE = IP.PhysicalPinRep;
Net: TYPE = REF IP.NetRep;
EachPhysicalPinAction: TYPE = PROC[phyPin: PhysicalPin] RETURNS [quit: BOOL ← FALSE];
PaintPinNets: PROC[pNetsOwner: Component, context: Graphics.Context, xOffset, yOffset: REAL ← 0.0, scaleFactor: REAL ← 1.0, showNames: BOOL ← TRUE, size: NAT ← IPParams.PhyPinRectSize, activeStipple: CARDINAL ← IPConstants.Black, nonActiveStipple: CARDINAL ← IPConstants.White];
--Orientation Operations on PinNets
OrientPinNets: PROC [pNetsOwner: Component, operation: IP.Orientation];
MirrorPinNets:
PROC[pNetsOwner: Component, mirrorOrient:
IP.OrientationTypes];
--mirrorOrient = ver <=> MirrorX
--mirrorOrient = hor <=> MirrorY
Rotate90PinNets: PROC [pNetsOwner: Component, numberOfRot: INT ← 1];
--Book Keeping Operations on PinNets
NilPinNetsNet:
PROC[pinNets: PinNets] =
INLINE {
-- Used for Cleaning up circular garbage. See IPCoTabImpl.DestroySelf
WHILE pinNets #
NIL
DO
pinNets.first.net ← NIL;
pinNets ← pinNets.rest;
ENDLOOP;
};--NilPinNetsNet
RemPinNetsFromNets: PROC [pinNets: PinNets];
AddPinNetsToNets: PROC [pinNets: PinNets];
SetPinNetsOwner:
PROC[pinNets: PinNets, owner:
REF
IP.ComponentRep] =
INLINE {
WHILE pinNets #
NIL
DO
pinNets.first.owner ← owner;
pinNets ← pinNets.rest
ENDLOOP;
};--SetPinNetOwner
EnumPhysicalPins: PROC[pinNets: PinNets, action: EachPhysicalPinAction];
END.