CoreTracing.Mesa
Last tweaked by Mike Spreitzer on March 10, 1987 1:35:00 pm PST
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,
ci = NIL signifies export
publicPath: Path
];
w[subscript] é ci.public[publicPath]
WireUpLink: TYPE = REF WireUpLinkPrivate;
WireUpLinkPrivate: TYPE = RECORD [parent: Wire, index: Index];
InstancePath: TYPE = InstanceList;
outermore earlier
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];
Recasts as long as possible (i.e., until record or atomic).
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: INTINT.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: BOOLFALSE];
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.