PipalCoreBackdoor:
CEDAR
DEFINITIONS ~
BEGIN
OPEN PipalCore;
maxInstanceSeq:
NAT = 9000;
Maximum size of InstanceSeq
InstanceSeq: TYPE = REF InstanceSeqRec;
InstanceSeqRec:
TYPE =
RECORD [instances:
SEQUENCE size:
NAT
OF Instance];
TransWireIR: TYPE = REF TransWireIRRec;
TransWireIRRec: TYPE = RECORD [ir: Rect, tws: SEQUENCE size: NAT OF TransWire];
TransWire:
TYPE =
RECORD [trans: Transformation, wire: Wire];
LazyEnumerateData: TYPE = REF LazyEnumerateDataRec;
LazyEnumerateDataRec:
TYPE =
RECORD [
proc: LazyEnumerateProc, data1, data2: REF ← NIL
];
Handle:
TYPE = CoreIO.Handle;
ObjectClassWriteProc: TYPE = PROC [h: Handle, me: Object];
ObjectClassReadProc:
TYPE =
PROC [h: Handle]
RETURNS [obj: Object];
RawEnumeratePins:
PUBLIC
PROC [prop:
ATOM, value:
REF, eachInstance: EachInstanceProc]
RETURNS [quit:
BOOL ←
FALSE];
Raw enumeration of pins that necessitates very little context.
RawEnumerateGeometry:
PUBLIC
PROC [prop:
ATOM, value:
REF, eachInstance: EachInstanceProc]
RETURNS [quit:
BOOL ←
FALSE];
Raw enumeration of geometry that necessitates very little context.
RegisterDecorationIO:
PROC [decoration: Decoration];
RegisterObjectClass:
PROC [objectClass:
CD.ObjectClass, write: ObjectClassWriteProc, read: ObjectClassReadProc];
WritePosition: PROC [h: Handle, position: CD.Position];
ReadPosition: PROC [h: Handle] RETURNS [position: CD.Position];
WriteRect: PROC [h: Handle, rect: CD.Rect];
ReadRect: PROC [h: Handle] RETURNS [rect: CD.Rect];
WriteTechnology: PROC [h: Handle, technology: CD.Technology];
ReadTechnology: PROC [h: Handle] RETURNS [technology: CD.Technology];
WriteLayer: PROC [h: Handle, layer: CD.Layer];
ReadLayer: PROC [h: Handle] RETURNS [layer: CD.Layer];
WriteOrient: PROC [h: Handle, orient: CD.Orientation];
ReadOrient: PROC [h: Handle] RETURNS [orient: CD.Orientation];
WriteTrans: PROC [h: Handle, trans: CD.Transformation];
ReadTrans:
PROC [h: Handle]
RETURNS [trans:
CD.Transformation];
WriteCDProperties: PROC [h: Handle, properties: CD.PropList];
ReadCDProperties: PROC [h: Handle] RETURNS [properties: CD.PropList ← NIL];
WriteCDInstance: PROC [h: Handle, instance: CD.Instance];
ReadCDInstance: PROC [h: Handle] RETURNS [instance: CD.Instance];
WriteCDInstances: PROC [h: Handle, instances: LIST OF CD.Instance];
ReadCDInstances:
PROC [h: Handle]
RETURNS [instances:
LIST
OF
CD.Instance ←
NIL];
WriteInstance: PROC [h: Handle, instance: PipalCore.Instance];
ReadInstance: PROC [h: Handle] RETURNS [instance: PipalCore.Instance];
WriteInstances: PROC [h: Handle, instances: PipalCore.Instances];
ReadInstances:
PROC [h: Handle]
RETURNS [instances: PipalCore.Instances ←
NIL];
WriteObject: PROC [h: Handle, obj: CD.Object];
ReadObject:
PROC [h: Handle]
RETURNS [obj:
CD.Object];