<> <> 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.