DIRECTORY Core, CoreClasses, IO, PartialOrders, RefTab; CoreTracing: CEDAR DEFINITIONS = BEGIN OPEN Core, CoreClasses; PartialOrder: TYPE = PartialOrders.PartialOrder; InstanceList: TYPE = LIST OF CoreClasses.CellInstance; LocalConnectionList: TYPE = LIST OF LocalConnection; LocalConnection: TYPE = REF LocalConnectionPrivate; LocalConnectionPrivate: TYPE = RECORD [ subscript: Path, ci: CellInstance, publicPath: Path ]; WireUpLink: TYPE = REF WireUpLinkPrivate; WireUpLinkPrivate: TYPE = RECORD [parent: Wire, index: Index]; InstancePath: TYPE = InstanceList; Index: TYPE ~ NAT; noIndex: Index ~ LAST[Index]; Path: TYPE ~ --innermore earlier--LIST OF Index; noPath: READONLY Path; ConsInner: PROC [i: Index, p: Path] RETURNS [Path] ~ INLINE {RETURN [CONS[i, p]]}; ConsOuter: PROC [i: Index, p: Path] RETURNS [Path]; Insplit: PROC [p: Path] RETURNS [first: Index, rest: Path] ~ INLINE {RETURN [p.first, p.rest]}; Outsplit: PROC [p: Path] RETURNS [first: Index, rest: Path]; PathCat: PROC [inner, outer: Path] RETURNS [Path]; SubWire: PROC [w: Wire, p: Path] RETURNS [Wire]; Simplify: PROC [anyCellType: CellType] RETURNS [cellType: CellType, recordCellType: RecordCellType]; Enumerator: TYPE = REF EnumeratorPrivate; EnumeratorPrivate: TYPE = RECORD [ Enumerate: EnumerationProc, data: REF ANY]; EnumerationProc: TYPE = PROC [data: REF ANY, Consumer: PROC [REF ANY]]; EnumeratorForSingleton: PROC [REF ANY] RETURNS [Enumerator]; EnumeratorForHashTable: PROC [ht: RefTab.Ref, key, value: BOOL] RETURNS [Enumerator]; EnumeratorForPartialOrder: PROC [po: PartialOrder--of CellTypes--, direction: PartialOrders.Direction] RETURNS [Enumerator]; EnumeratorForReachable: PROC [e0: Enumerator--of root CellTypes--] RETURNS [Enumerator]; Count: PROC [e: Enumerator, limit: INT _ INT.LAST] RETURNS [INT]; GetOne: PROC [e: Enumerator] RETURNS [REF ANY]; Prepare: PROC [e: Enumerator--of all CellTypes--]; Repair: PROC [CellType]; --fixes up after internal wiring change WireContainer: PROC [--internal--Wire] RETURNS [CellType]; UpWire: PROC [--internal--Wire] RETURNS [parent: Wire, index: Index]; InstanceContainer: PROC [CellInstance] RETURNS [CellType]; WirePublicity: PROC [w: --internal--Wire] RETURNS [public: BOOL, publicPath: Path]; IsInternal: PROC [w: Wire] RETURNS [BOOL]; IsWireSeq: PROC [REF WireRec] RETURNS [BOOL]; CheckWireSeq: PROC [ref: REF WireRec, shouldBeSeq: BOOL _ FALSE]; Atomic: PROC [CellType] RETURNS [BOOL]; EnumeratorForLocalConnections: PROC [wire: Wire] RETURNS [Enumerator]; EnumerateLocalConnections: PROC [data: REF ANY, Consumer: PROC [REF ANY]]; EnumeratorForSequences: PROC [cellType: CellType] RETURNS [Enumerator]; EnumerateSequences: PROC [data: REF ANY, Consumer: PROC [REF ANY]]; EnumeratorForInstances: PROC [cellType: CellType] RETURNS [Enumerator]; EnumerateInstances: PROC [data: REF ANY, Consumer: PROC [REF ANY]]; EnumeratorForGlobalInstances: PROC [cellType: CellType] RETURNS [Enumerator--of InstancePath--]; EnumerateGlobalInstances: PROC [data: REF ANY, Consumer: PROC [REF ANY]]; EnumeratorForWiresOfNode: PROC [wire: Wire] RETURNS [Enumerator]; EnumerateWiresOfNode: PROC [data: REF ANY, Consumer: PROC [REF ANY]]; EnumeratorForLeafConnections: PROC [wire: Wire] RETURNS [Enumerator]; EnumerateLeafConnections: PROC [data: REF ANY, Consumer: PROC [REF ANY]]; PrintTable: PROC [to: IO.STREAM, table: RefTab.Ref]; END. δCoreTracing.Mesa Last tweaked by Mike Spreitzer on March 10, 1987 1:35:00 pm PST ci = NIL signifies export w[subscript] f ci.public[publicPath] outermore earlier Recasts as long as possible (i.e., until record or atomic). ΚJ– "cedar" style˜code™K™?—K˜KšΟk œœ˜7K˜KšΠbx œœ ˜K˜Kšœœœ˜K˜Kšœœ˜0Kšœœœœ˜6K˜Kšœœœœ˜4Kšœœœ˜3šœœœ˜'K˜šœ˜K™—Kšœ˜K˜Kšœ Οmœ™$—K˜Kšœ œœ˜)Kšœœœ˜>K˜šœœ˜"K™—K˜Kšœœœ˜Kšœœ˜KšœœΟcœœ˜0Kšœœ˜K˜šΟn œœœ˜2Kšœœœœ ˜—Kš‘ œœœ˜3š‘œœ œ˜:Kšœœœ˜$—Kš‘œœ œ˜