<<[Indigo]®>Rosemary.df=>RoseCreate.Mesa>> <> <> DIRECTORY RedBlackTree, RoseTypes; RoseCreate: CEDAR DEFINITIONS = BEGIN OPEN RoseTypes; InterfaceMismatch: ERROR [cell: Cell, index: CARDINAL, expected, got: NodeType]; CellTestList: TYPE = LIST OF CellTestRep; RegisterCellType: PROC [ incrementally: BOOL _ FALSE, <> name: ROPE, <> expandProc: ExpandProc _ NIL, <> ioCreator: IOCreator _ NIL, driveCreator: DriveCreator _ NIL, initializer: Initializer _ NIL, evals: EvalProcs _ [], tests: CellTestList _ NIL, <> ports: Ports, typeData: REF ANY _ NIL, other: Assertions _ NIL ] RETURNS [type: CellType]; <> <> GetCellType: PROC [name: ROPE] RETURNS [type: CellType]; CreateSim: PROC [steady: BOOL] RETURNS [sim: Simulation]; <> CreateTopCell: PROC [instanceName, typeName: ROPE, decider: ExpandDeciderClosure, sim: 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]; PickInOrder: PROC [--earlier=better--ExpandDecisionList] RETURNS [ExpandDeciderClosure]; ExpandDecisionList: TYPE = LIST OF ExpandDecision; expandFirst: ExpandDeciderClosure --= PickInOrder[LIST[Expand, Leaf]]--; leafFirst: ExpandDeciderClosure --= PickInOrder[LIST[Leaf, Expand]]--; ByDepth: PROC [shallow: ExpandDeciderClosure, boundary: INT, deep: ExpandDeciderClosure] RETURNS [ExpandDeciderClosure]; < boundary.>> <> CreateTest: PROC [rootName, typeName, testName: ROPE, decider: ExpandDeciderClosure, sim: Simulation, dual: BOOL _ FALSE]; <> SetTest: PROC [test: CellTest, of: CellType, mayOverwriteOld: BOOL _ FALSE] RETURNS [old: CellTest]; GetTest: PROC [name: ROPE, from: CellType] RETURNS [CellTest]; WrapTop: PROC [rootName, typeName: ROPE, decider: ExpandDeciderClosure, clocks: ROPE _ NIL, sim: Simulation]; <> <> PortsFromROPE: PROC [asRope: ROPE] RETURNS [ports: Ports]; PortsFromFile: PROC [fileName: ROPE] RETURNS [ports: Ports]; PortsFromStream: PROC [stream: STREAM] RETURNS [ports: Ports]; AssertionsFromFile: PROC [fileName: ROPE] RETURNS [Assertions]; GetOtherss: PROC [fileName: ROPE] RETURNS [SymbolTable]; GetOthers: PROC [otherss: SymbolTable, cellTypeName: ROPE] RETURNS [SymbolTable]; GetOther: PROC [others: SymbolTable, partName: ROPE] RETURNS [Assertions]; DecideFromFile: PROC [fileName: ROPE] RETURNS [dff: ExpandDeciderClosure]; LookupCell: PROC [ path: LIST OF REF ANY --ROPEs or REF TEXTs--, from: Cell _ NIL --NIL means first name names root--] RETURNS [cell: Cell]; LookupNode: PROC [ path: LIST OF REF ANY, from: Cell _ NIL] RETURNS [node: Node]; LookupCellNode: PROC [cell: Cell, name: ROPE] RETURNS [node: Node]; LongNodeName: PROC [n: Node, relativeTo: Cell _ NIL] RETURNS [name: ROPE]; LongCellName: PROC [c: Cell, relativeTo: Cell _ NIL] RETURNS [name: ROPE]; LongPortName: PROC [c: REF ANY--UNION[CellType, Cell]--, pi: PortIndex _ nilPortIndex, epi: EffectivePortIndex _ nilEffectivePortIndex] RETURNS [name: ROPE]; LowestCommonAncestor: PROC [c1, c2: Cell] RETURNS [lca: Cell]; FillInInterfaceNodes: PROC [cell: Cell, interfaceNodes: ROPE]; EnumerateConnections: PROC [asRope: ROPE, to: PROC [key: Key, nodeName: ROPE]]; Key: TYPE = RECORD [variant: SELECT kind: * FROM position => [index: NAT], keyword => [name: ROPE], ENDCASE]; GetIDKey, GetNodeKey, GetComponentKey: RedBlackTree.GetKey; CompareRopes, CompareNodes, CompareComponents: RedBlackTree.Compare; EnsureEnvironment: PROC [in: Cell, forType: CellType, to: ExpansionReceiver]; EqualInterfaces: PROC [a, b: Ports] RETURNS [structurally, fully: BOOL]; roots: SymbolTable; END.