Scheme.Mesa
Last Edited by: Spreitzer, February 12, 1984 6:33 pm
DIRECTORY Atom, OrderedSymbolTableRef, Rope;
SchemeRep: CEDAR DEFINITIONS =
BEGIN
LORA: TYPE = LIST OF REF ANY;
ROPE: TYPE = Rope.ROPE;
Table: TYPE = OrderedSymbolTableRef.Table;
PropList: TYPE = Atom.PropList;
CellType:
TYPE =
REF CellTypeRep; CellTypeRep:
TYPE =
RECORD [
name: ROPE,
otherProps: PropList ← NIL,
icons: Table --of PictureDef--,
expansion: PictureDef,
ports: Table --of Port--,
nets: Table --of Net--,
components: Table --of Component--,
writtenFor: INT ← 0 --used only during Write--];
Port:
TYPE =
REF PortRep;
PortRep:
TYPE =
RECORD [
name: ROPE,
otherProps: PropList ← NIL,
pt: Point,
label: Text ← NIL];
Net:
TYPE =
REF NetRep; NetRep:
TYPE =
RECORD [
name: ROPE,
otherProps: PropList ← NIL,
stuff: LORA, --LIST OF UNION [Point, Line, Text]
eatenBy: Net ← NIL];
ComponentPort:
TYPE =
REF ComponentPortRep; ComponentPortRep:
TYPE =
RECORD [
component: Component,
port: Port,
point: Point];
Component:
TYPE =
REF ComponentRep; ComponentRep:
TYPE =
RECORD [
name: ROPE,
otherProps: PropList ← NIL,
type: CellType,
ports: Table--Of ComponentPort--,
inst: PictureInstance,
label: Text ← NIL];
PictureDef:
TYPE =
REF PictureDefRep;
PictureDefRep:
TYPE =
RECORD [
name: ROPE,
coordsByValue: ARRAY Axis OF Table --of UNION [Coord, LORA]--,
coordsByName, points: Table,
objects: Table --OF UNION [Line, Text, PictureInstance]--,
instances--of self--: LORA ← NIL, --LIST OF PictureInstance
editor: REF ANY ← NIL
];
Coord:
TYPE =
REF CoordRep; CoordRep:
TYPE =
RECORD [
name: ROPE,
pic: PictureDef,
axis: Axis ← X,
exported: BOOLEAN ← FALSE,
z, sz, dz: REAL ← 0,
dependents: LORA, --LIST OF UNION [Coord, Point]
portName: ROPE ← NIL, --if from PictureInstance
parent: REF ANY ← NIL, --UNION [Coord, PictureInstance]
exportedTo: Coord --only meaningful during instantiation operation
];
Axis: TYPE = {X, Y};
Vertex: TYPE = ARRAY Axis OF Coord;
VertexReals: TYPE = ARRAY Axis OF REAL ← ALL[0];
Point:
TYPE =
REF PointRep; PointRep:
TYPE =
RECORD [
c: Vertex,
name: ROPE,
pic: PictureDef,
exported, deleted: BOOLEAN ← FALSE,
dependents: LORA, --LIST OF UNION [Text, Line, PictureInstance]
fromPort: ROPE ← NIL,
fromPI: PictureInstance ← NIL,
fromCP: ComponentPort ← NIL,
toPort: Port ← NIL,
net: Net ← NIL];
Line:
TYPE =
REF LineRep; LineRep:
TYPE =
RECORD [
name: ROPE,
a, b: Point,
sa, sb: VertexReals,
net: Net ← NIL];
Text:
TYPE =
REF TextRep; TextRep:
TYPE =
RECORD [
name: ROPE,
org: Point,
sxy: VertexReals,
rope, sr: ROPE,
labelOf: REF ANY ← NIL --UNION [Port, Net, Component]
];
PictureInstance: TYPE = REF PictureInstanceRep;
PictureInstanceRep:
TYPE =
RECORD [
name: ROPE,
in, of: PictureDef,
org: Point,
s: VertexReals,
coords, points: Table,
asComponent: Component ← NIL];
END.
PictureDefPort: TYPE = REF PictureDefPortRep; PictureDefPortRep: TYPE = RECORD [
pic: PictureDef,
portName: ROPE,
point: Point];
PictureInstancePort: TYPE = REF PictureInstancePortRep;
PictureInstancePortRep: TYPE = RECORD [
pi: PictureInstance,
portName: ROPE,
point: Point];