<> <> <> <> <> <> <> <> <> <> DIRECTORY Core, RefTab; CoreOps: CEDAR DEFINITIONS = BEGIN OPEN Core; <> <> <> nameProp: ATOM; <> <> SetClassPrintProc: PROC [class: CellClass, proc: PrintClassProc] RETURNS [sameClass: CellClass]; PrintClassProc: TYPE = PROC [data: REF ANY, out: STREAM, indent: NAT _ 0, level: NAT _ 2]; <> CreateCellType: PROC [class: CellClass, public: WireSeq, data: REF ANY _ NIL, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [cellType: CellType]; <> SetCellTypeName: PROC [cellType: CellType, name: ROPE] RETURNS [sameCellType: CellType]; <> GetCellTypeName: PROC [cellType: CellType] RETURNS [name: ROPE]; <> InheritCellTypeName: PROC [cellType: CellType] RETURNS [name: ROPE]; <> Recast: PROC [me: CellType, fillCacheIfEmpty: BOOL _ TRUE] RETURNS [new: CellType]; <> RecastBindingTable: PROC [cellType: CellType] RETURNS [table: RefTab.Ref]; <> <> <<>> ToBasic: PROC [cellType: Core.CellType] RETURNS [basic: Core.CellType]; <> PrintCellType: PROC [cellType: CellType, out: STREAM _ NIL, indent: NAT _ 0, level: NAT _ 2]; PrintIndent: PROC [indent: NAT, out: STREAM, cr: BOOL _ TRUE]; <> CreateWire: PROC [elements: Wires _ NIL, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [wire: Wire]; <> CreateWires: PROC [size: NAT, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [wire: Wire]; <> SubrangeWire: PROC [wire: Wire, start, size: NAT, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [sub: Wire]; <> CopyWire: PROC [wire: Wire] RETURNS [new: Wire]; <> <> CopyWireUsingTable: PROC [old: Wire, oldToNew: RefTab.Ref, copyName: BOOL _ TRUE] RETURNS [new: Wire]; <> <
> <> UnionWire: PROC [wire1, wire2: Wire, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [union: Wire]; <> <> <> EachWireProc: TYPE = PROC [wire: Wire] RETURNS [subWires: BOOL _ TRUE, quit: BOOL _ FALSE]; EachWirePairProc: TYPE = PROC [actualWire, publicWire: Wire] RETURNS [subWires: BOOL _ TRUE, quit: BOOL _ FALSE]; VisitWire: PROC [wire: Wire, eachWire: EachWireProc] RETURNS [quit: BOOL]; <> <> VisitWireSeq: PROC [seq: WireSeq, eachWire: EachWireProc] RETURNS [quit: BOOL]; <> VisitRootAtomics: PROC [root: WireSeq, eachWire: PROC [Wire]]; <> <> VisitBinding: PROC [actual, public: Wire, eachWirePair: EachWirePairProc] RETURNS [quit: BOOL]; <> VisitBindingSeq: PROC [actual, public: WireSeq, eachWirePair: EachWirePairProc] RETURNS [quit: BOOL]; <> <<>> CorrespondingActual: PROC [actual, public: WireSeq, subPublic: Wire] RETURNS [subActual: Wire]; <> <<>> Conform: PROC [actual, public: Wire] RETURNS [BOOL]; <> <<>> CorrectConform: PROC [actual, public: WireSeq] RETURNS [BOOL]; <> <<>> WireBits: PROC [wire: Wire] RETURNS [bits: NAT]; <> <<>> WireSeqBits: PROC [seq: WireSeq] RETURNS [bits: NAT]; <> <<>> CreateBindingTable: PROC [wire1, wire2: Wire] RETURNS [table: RefTab.Ref]; <> <<>> <
> VisitAtomicPairs: PROC [wire1, wire2: WireSeq, eachPair: PROC [Wire, Wire]]; <> <> <> <<>> SetShortWireName: PROC [wire: Wire, name: ROPE] RETURNS [sameWire: Wire]; GetShortWireName: PROC [wire: Wire] RETURNS [name: ROPE]; GetWireIndex: PROC [wire: Wire, name: ROPE] RETURNS [n: INT _ -1]; <> GetFullWireNames: PROC [root: WireSeq, wire: Wire] RETURNS [names: LIST OF ROPE]; <> GetFullWireName: PROC [root: WireSeq, wire: Wire] RETURNS [name: ROPE]; <> <> <> IsFullWireName: PROC [root: WireSeq, wire: Wire, name: ROPE] RETURNS [BOOL]; FindWire: PROC [root: WireSeq, name: ROPE] RETURNS [wire: Wire _ NIL]; <> ParseWireName: PROC [name: ROPE] RETURNS [base: ROPE, components: LIST OF ROPE _ NIL]; <> PrintWire: PROC [wire: Wire, out: STREAM _ NIL, indent: NAT _ 0, level: NAT _ 2]; FlushNameCaches: PROC [root: WireSeq]; <> <> Reverse: PROC [wires: Wires] RETURNS [revWires: Wires _ NIL]; Delete: PROC [wires: Wires, wire: Wire] RETURNS [newWires: Wires _ NIL]; Member: PROC [wires: Wires, wire: Wire] RETURNS [BOOL]; <> <<>> ParentWires: PROC [root, candidate: Wire] RETURNS [parents: LIST OF Wire _ NIL]; <> <> <<>> RecursiveMember: PROC [wire, candidate: Wire] RETURNS [BOOL]; <> <> Index: PROC [rope: ROPE, index: NAT] RETURNS [indexed: ROPE]; <> <<>> FixStupidRef: PROC [ref: REF ANY] RETURNS [rope: ROPE]; <> <<>> RopeDammit: PROC [ref: ROPE] RETURNS [rope: ROPE] = INLINE {rope _ ref}; <> <<>> Print: PROC [ref: REF, out: STREAM _ NIL, indent: NAT _ 0, level: NAT _ 2]; <> END.