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 ANYNIL
];
Coord: TYPE = REF CoordRep; CoordRep: TYPE = RECORD [
name: ROPE,
pic: PictureDef,
axis: Axis ← X,
editable: BOOLEANTRUE,
z, sz, dz: REAL ← 0,
dependents: LORA, --LIST OF UNION [Coord, Point]
parent: REF ANYNIL, --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 REALALL[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 ANYNIL];
PictureInstance: TYPE = REF PictureInstanceRep;
PictureInstanceRep: TYPE = RECORD [
name: ROPE,
pic: PictureDef,
org: Point,
s: VertexReals,
asComponent: Component ← NIL];
END.