-- File: DisjointTypes.mesa
-- Global types used by disjoint programs
-- Written by Martin Newell/Dan Fitzpatrick February 1981
-- Last edited: June 25, 1981 2:36 PM

DisjointTypes
: DEFINITIONS =
BEGIN

DisCell: TYPE = LONG POINTER TO DisCellRecord;
DisCellRecord: TYPE = RECORD [
next: DisCell,
geom: Geometry,-- private list of geometry in this discell
insts: PIP,-- indirect list of caller instances to this discell
windows: Rectangle,-- list of windows, may be shared (temp) with its coresponding symbol
symbol: Symbol-- this discell defines this symbol
];

PIP: TYPE = LONG POINTER TO PIPRecord;
--Instance Pointer
PIPRecord: TYPE = RECORD [
next: PIP,
inst: Instance
];

Instance: TYPE = LONG POINTER TO InstanceRecord;
InstanceRecord: TYPE = RECORD [
next: Instance,
symbol: Symbol,--of which this is an instance
xOffset,yOffset: REAL--position of instance
];

Symbol: TYPE = LONG POINTER TO SymbolRecord;
SymbolRecord: TYPE = RECORD [
next: Symbol,
name: STRING,
geom: Geometry,-- private list of geometry in this symbol
insts: Instance,-- list of callee’s of this symbol
windows: Rectangle,-- windows of this symbol, usually a private list
data: UNSPECIFIED ← 0,-- user handle
mark: BOOLEAN ← FALSE,-- temp mark
prop: PropList ← NIL-- user handle
];

Rectangle: TYPE = LONG POINTER TO RectangleRecord;
RectangleRecord: TYPE = RECORD [
next: Rectangle,
l,b,r,t: REAL
];

Geometry: TYPE = LONG POINTER TO GeometryRecord;
GeometryRecord: TYPE = RECORD [
next: Geometry,
layer: CARDINAL,
l,b,r,t: REAL
];

PropID: TYPE = CARDINAL;
PropList: TYPE = LONG POINTER TO PropListRecord;
PropListRecord: TYPE = RECORD [
next: PropList,
id: PropID,
data: LONG UNSPECIFIED
];

END.