DIRECTORY RoseTypes; RoseCreate: CEDAR DEFINITIONS = BEGIN OPEN RoseTypes; InterfaceMismatch: ERROR [cell: Cell, index: CARDINAL, expected, got: NodeType]; RegisterCellClass: PROC [className: ROPE, expandProc: ExpandProc _ NIL, ioCreator: IOCreator _ NIL, initializer: Initializer _ NIL, evals: EvalProcs, blackBox, stateToo: CellTestProc _ NIL, ports: Ports, drivePrototype: REF ANY _ NIL, classData: REF ANY _ NIL] RETURNS [class: CellClass]; GetCellClass: PROC [className: ROPE] RETURNS [class: CellClass]; CreateSim: PROC [steady: BOOL] RETURNS [sim: Simulation]; CreateTopCell: PROC [instanceName, className: ROPE, decider: ExpandDeciderClosure, initData: REF ANY _ NIL, steady: BOOL _ TRUE] RETURNS [cell: Cell, osim: Simulation]; ExpandDeciderClosure: TYPE = REF ExpandDeciderClosureRep; ExpandDeciderClosureRep: TYPE = RECORD [ Decide: ExpandDecider, otherData: REF ANY]; ExpandDecider: TYPE = PROC [cell: Cell, otherData: REF ANY] RETURNS [ExpandDecision]; Possible: PROC [cell: Cell, whatToDo: ExpandDecision] RETURNS [possible: BOOLEAN]; CreateTest: PROC [rootName, testerName, testeeName, className: ROPE, stateToo: BOOL _ TRUE, decider: ExpandDeciderClosure, initData: REF ANY _ NIL, steady: BOOL _ TRUE] RETURNS [root: Cell, osim: Simulation, cth: CellTestHandle]; WrapTop: PROC [rootName, className: ROPE, decider: ExpandDeciderClosure, initData: REF ANY _ NIL, clocks: ROPE _ NIL, steady: BOOL _ TRUE] RETURNS [root: Cell, osim: Simulation]; CreateCell: PROC [within: Cell, instanceName, className, interfaceNodes: ROPE, initData: REF ANY _ NIL] RETURNS [cell: Cell]; CreateNode: PROC [within: Cell, name: ROPE, type: NodeType, initialValue: ROPE _ NIL, initData: REF ANY _ NIL] RETURNS [node: Node]; PortsFromROPE: PROC [asRope: ROPE] RETURNS [ports: Ports]; PortsFromFile: PROC [fileName: ROPE] RETURNS [ports: Ports]; PortsFromStream: PROC [stream: STREAM] RETURNS [ports: Ports]; SplitJoin: PROC [within: Cell, a, b: StretchList, writeA, writeB: BOOLEAN]; ChangeReps: PROC [within: Cell, a, b: Node, writeA, writeB: BOOLEAN]; DecideFromFile: PROC [fileName: ROPE] RETURNS [dff: ExpandDeciderClosure]; LookupCell: PROC [ path: RopeList, from: Cell _ NIL --NIL means first name names root--] RETURNS [cell: Cell]; LookupNode: PROC [ path: RopeList, from: Cell _ NIL] RETURNS [node: Node]; EnsureEnvironment: PROC [in: Cell, forClass: CellClass]; MirrorPorts: PROC [fwd: Ports, alwaysOutput, alwaysInput: BOOL _ FALSE] RETURNS [bkwd: Ports]; MakeMirrorIO: PROC [cell: Cell] RETURNS [a, b: REF ANY]; END. H[Indigo]2.3>Rosemary.df=>RoseCreate.Mesa Last Edited by: Spreitzer, May 1, 1984 4:09:34 pm PDT interfaceNodes must be empty at the top. steady indicates whether this is for working on the steady-state, or initialization. Given a class with a non-empty interface, this will create (if necessary) and instantiate a class, with an empty interface, whose ExpandProc instantiates the given class, and the nodes it needs. The instance name used for the component is the class name with its first character lowercased. If clocks # NIL, a clock generator will also be instantiated, with its outputs connected to the nodes named in clocks. This proc declares the alignment of two lists of subarrays or elements. This proc declares that the two nodes are electrically identical, but use different representations during simulation. ΚŽ– "cedar" style˜J™2J™5J˜IcodešΟk œ ˜K˜KšΠbx œœ œ˜K˜Kšœœ ˜K˜šΟbœœ ˜%Kšœœ˜Kšœ˜—K˜KšΟnœœ œœœœ7œ œœœ œœœœ˜ K˜Kš  œœ œœ˜@K˜Kš  œœ œœ˜9K˜š  œœœ+œœœ œœœ ˜¨J™(J™TK˜Kšœœœ˜9šœœœ˜(Kšœ"œœ˜+—K˜Kš   œœœœœœ˜UK˜Kš œœ(œ œ˜R—K˜Kš  œœ/œ œœ+œœœ œœœ5˜εK˜š œœœ+œœœ œœ œœœ ˜²K™›—K˜Kš  œœ9œ œœœœ˜}K˜Kš  œœœ œœ œœœœ˜„K˜Kš  œœ œœ˜:Kš  œœ œœ˜K˜š  œœ3œ˜KK™GK˜—š  œœ,œ˜EK™v—K˜Kš œœ œœ˜JK˜š  œœ˜Kšœ˜Kšœ œΟc#œ˜5Kšœ˜—K˜š  œœ˜K˜Kšœ œ˜Kšœ˜—K˜Kš œœ!˜8K˜Kš   œœ)œœœ˜^Kš   œœœœœ˜8K˜Kšœ˜—…— ςΘ