CoreGeometryBackdoor:
CEDAR
DEFINITIONS ~
BEGIN
OPEN CoreGeometry;
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
];
ObjectClassWriteProc: TYPE = PROC [stream: IO.STREAM, me: Object];
ObjectClassReadProc:
TYPE =
PROC [stream:
IO.
STREAM]
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 [stream: IO.STREAM, position: CD.Position];
ReadPosition: PROC [stream: IO.STREAM] RETURNS [position: CD.Position];
WriteRect: PROC [stream: IO.STREAM, rect: CD.Rect];
ReadRect: PROC [stream: IO.STREAM] RETURNS [rect: CD.Rect];
WriteTechnology: PROC [stream: IO.STREAM, technology: CD.Technology];
ReadTechnology: PROC [stream: IO.STREAM] RETURNS [technology: CD.Technology];
WriteLayer: PROC [stream: IO.STREAM, layer: CD.Layer];
ReadLayer: PROC [stream: IO.STREAM] RETURNS [layer: CD.Layer];
WriteOrient: PROC [stream: IO.STREAM, orient: CD.Orientation];
ReadOrient: PROC [stream: IO.STREAM] RETURNS [orient: CD.Orientation];
WriteTrans: PROC [stream: IO.STREAM, trans: CD.Transformation];
ReadTrans:
PROC [stream:
IO.
STREAM]
RETURNS [trans:
CD.Transformation];
WriteCDProperties: PROC [stream: IO.STREAM, properties: CD.PropList];
ReadCDProperties: PROC [stream: IO.STREAM] RETURNS [properties: CD.PropList ← NIL];
WriteCDInstance: PROC [stream: IO.STREAM, instance: CD.Instance];
ReadCDInstance: PROC [stream: IO.STREAM] RETURNS [instance: CD.Instance];
WriteCDInstances: PROC [stream: IO.STREAM, instances: LIST OF CD.Instance];
ReadCDInstances:
PROC [stream:
IO.
STREAM]
RETURNS [instances:
LIST
OF
CD.Instance ←
NIL];
WriteInstance: PROC [stream: IO.STREAM, instance: CoreGeometry.Instance];
ReadInstance: PROC [stream: IO.STREAM] RETURNS [instance: CoreGeometry.Instance];
WriteInstances: PROC [stream: IO.STREAM, instances: CoreGeometry.Instances];
ReadInstances:
PROC [stream:
IO.
STREAM]
RETURNS [instances: CoreGeometry.Instances ←
NIL];
WriteObject: PROC [stream: IO.STREAM, obj: CD.Object];
ReadObject:
PROC [stream:
IO.
STREAM]
RETURNS [obj:
CD.Object];