-- File DJExtAllocDefs.mesa
-- Written by Martin Newell/Dan Fitzpatrick, June 1981
-- Last updated: July 31, 1981 2:36 PM

DIRECTORY
DJExtTypes: FROM "DJExtTypes" USING [Box, Edge, Segment, Side, Position, NodeLocation, NodeNumber, NodeSegment, ActualParameter, Node, Diffusion];

DJExtAllocDefs: DEFINITIONS =
BEGIN
OPEN DJExtTypes;

MakeHEdge: PUBLIC PROCEDURE [h, left, right: REAL] RETURNS[e:Edge];

MakeVEdge: PUBLIC PROCEDURE [v, bottom, top: REAL] RETURNS[e:Edge];

AllocateEdge: PUBLIC PROCEDURE RETURNS[e:Edge];

FreeEdge: PUBLIC PROCEDURE[e:Edge];

AllocateSegment: PUBLIC PROCEDURE RETURNS[e:Segment];

FreeSegment: PUBLIC PROCEDURE[e:Segment];

AllocateBox: PUBLIC PROCEDURE RETURNS[e:Box];

FreeBox: PUBLIC PROCEDURE[e:Box];

MakeSide: PUBLIC PROCEDURE [x, bottom, top: REAL, node: NodeNumber, pos:Position, layer:INTEGER]
RETURNS[s:Side];

AllocateSide: PUBLIC PROCEDURE RETURNS[s:Side];

FreeSide: PUBLIC PROCEDURE[s:Side];

AllocateNodeSegment: PUBLIC PROCEDURE RETURNS[e:NodeSegment];

FreeNodeSegment: PUBLIC PROCEDURE[e:NodeSegment];

AllocateActualParameter: PUBLIC PROCEDURE RETURNS[e:ActualParameter];

FreeActualParameter: PUBLIC PROCEDURE[e:ActualParameter];

MakeNodeLocation: PUBLIC PROCEDURE[node:NodeNumber, x,y:REAL] RETURNS[e:NodeLocation];

AllocateNodeLocation: PUBLIC PROCEDURE RETURNS[e:NodeLocation];

FreeNodeLocation: PUBLIC PROCEDURE[e:NodeLocation];

AllocateCap: PUBLIC PROCEDURE RETURNS[e:Node];

FreeCap: PUBLIC PROCEDURE[e:Node];

AllocateTransistor: PUBLIC PROCEDURE RETURNS[e:Node];

FreeTransistor: PUBLIC PROCEDURE[e:Node];

AllocateDiffusion: PUBLIC PROCEDURE RETURNS[e:Diffusion];

FreeDiffusion: PUBLIC PROCEDURE[e:Diffusion];

END.