Scheme.Mesa
Last Edited by: Spreitzer, February 12, 1984 0:30 am
DIRECTORY Atom, OrderedSymbolTableRef, Rope;
Scheme: 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,
file: ROPE,
icons: Table --of PictureDef--,
expansion: PictureDef,
ports: Table --of Port--,
nets: Table --of Net--,
components: Table --of Component--];
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 [Port, ComponentPort, Point, Line, Text]
eatenBy: Net ← NIL];
ComponentPort:
TYPE =
RECORD [
component: Component,
port: Port];
Component:
TYPE =
REF ComponentRep; ComponentRep:
TYPE =
RECORD [
name: ROPE,
otherProps: PropList ← NIL,
type: CellType,
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,
exports: Table --of PictureDefPort--,
objects: Table --OF UNION [Line, Text, PictureInstance]--,
editor: REF ANY ← NIL
];
Coord:
TYPE =
REF CoordRep; CoordRep:
TYPE =
RECORD [
name: ROPE,
pic: PictureDef,
axis: Axis ← X,
editable: BOOLEAN ← TRUE,
z, sz, dz: REAL ← 0,
dependents: LORA, --LIST OF UNION [Coord, Point]
parent: REF ANY ← NIL, --UNION [Coord, PictureInstance]
exportedTo: PictureInstance --only meaningful during instantiation operation--
];
Axis: TYPE = {X, Y};
Point:
TYPE =
REF PointRep; PointRep:
TYPE =
RECORD [
c: Vertex,
name: ROPE,
pic: PictureDef,
dependents: LORA, --LIST OF UNION [Text, Line, PictureInstance]
net: Net ← NIL];
Vertex: TYPE = ARRAY Axis OF Coord;
VertexReals: TYPE = ARRAY Axis OF REAL ← ALL[0];
PictureDefPort:
TYPE =
REF PictureDefPortRep; PictureDefPortRep:
TYPE =
RECORD [
pic: PictureDef,
portName: ROPE,
point: Point];
PictureInstPort:
TYPE =
REF PictureInstPortRep; PictureInstPortRep:
TYPE =
RECORD [
pi: PictureInstance,
portName: ROPE,
hint: Point];
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,
s: VertexReals,
rope: ROPE,
labelOf: REF ANY ← NIL];
PictureInstance: TYPE = REF PictureInstanceRep;
PictureInstanceRep:
TYPE =
RECORD [
name: ROPE,
pic: PictureDef,
org: Point,
s: VertexReals,
asComponent: Component ← NIL];
END.