-- File CIFExtScanDefs.mesa
-- Written by Martin Newell, June 1980
-- Last updated: November 13, 1980 2:33 AM

-- CIF Circuit Extractor utility procedures

CIFExtScanDefs: DEFINITIONS =

BEGIN


InitExtScan: PUBLIC PROCEDURE;
ExtractorMakeEdge: PUBLIC PROCEDURE [layer: CARDINAL, xstart,ystart,xend,yend: REAL, up: BOOLEAN]
RETURNS[edge: Edge];

ExtractorScanConvert: PUBLIC PROCEDURE [upto: REAL];

AddToEdgeList: PUBLIC PROCEDURE[edge: Edge];

In: PUBLIC PROCEDURE [layer: CARDINAL] RETURNS[BOOLEAN];

XatY: PUBLIC PROCEDURE[edge: Edge, y: REAL] RETURNS[x: REAL];

EdgeLength: PUBLIC PROCEDURE[edge: Edge, from, to: REAL] RETURNS[x: REAL];

Edge: PUBLIC TYPE = LONG POINTER TO EdgeRecord;
EdgeRecord: PUBLIC TYPE = RECORD [
next: Edge,
xstart: REAL,
ystart: REAL,
yend: REAL,
layer: CARDINAL,
mate: Edge,
up: BOOLEAN,
vert: BOOLEAN,
var:SELECT COMPUTED EdgeAngle FROM
oblique => [
xend: REAL,
slope: REAL],
vertical => NULL,
ENDCASE
];
EdgeAngle: PUBLIC TYPE = {oblique,vertical};

END.