--File: IPPinNets.mesa
Last Edited by: CSChow, February 2, 1985 2:20:03 am PST
DIRECTORY
IPParams,
IPConstants,
Graphics,
IP;
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: BOOLFALSE];
PaintPinNets: PROC[pNetsOwner: Component, context: Graphics.Context, xOffset, yOffset: REAL ← 0.0, scaleFactor: REAL ← 1.0, showNames: BOOLTRUE, 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.