DIRECTORY
AMEvents USING[BreakID],
AMModel USING[Section, Source],
AMTypes USING[Type, TV],
CirioTypes USING[CompilerContext, Type, Node],
Frames USING[StackOfFrames, TargetWorld],
RefTab USING[Ref],
Rope USING[ROPE];
LocalPrincOpsTargetWorld:
CEDAR
DEFINITIONS =
BEGIN
CC: TYPE = CirioTypes.CompilerContext;
Remark: There is only one accessable local princ ops target world, the one in which your code is running when it calls these procedures.
PrincOpsTWData: TYPE = REF PrincOpsTWDataBody;
PrincOpsTWDataBody:
TYPE =
MONITORED
RECORD[
typeHashTable: RefTab.Ref,
zeroLengthRecordType: CirioTypes.Type,
breakSet: LocalTWBreakSet,
cc: CC];
LocalTWBreakSet: TYPE = REF LocalTWBreakSetBody;
LocalTWBreakSetBody:
TYPE =
RECORD[
nextCounter: CARD,
first: LocalTWBreakRcd,
last: LocalTWBreakRcd];
LocalTWBreakRcd: TYPE = REF LocalTWBreakRcdBody;
LocalTWBreakRcdBody:
TYPE =
RECORD[
brkIndex: CARD,
codePos: REF CodePositionInfo,
id: AMEvents.BreakID,
next: LocalTWBreakRcd];
CodePositionInfo:
TYPE =
RECORD[
twData: PrincOpsTWData,
section: AMModel.Section,
atExit: BOOLEAN,
amsource: AMModel.Source,
fileName: Rope.ROPE,
index: INT,
sourcePosNode: CirioTypes.Node,
codePosNode: CirioTypes.Node];
LocalTW: TYPE = RECORD[potw: PrincOpsTWData, tw: Frames.TargetWorld];
GetLocalTW: PROC[cc: CC] RETURNS[LocalTW];
CreateStack: PROC[frameTV: AMTypes.TV, potw: PrincOpsTWData] RETURNS[Frames.StackOfFrames];
CreateNodeFromRefAny:
PROC[ra:
REF
ANY, potw: PrincOpsTWData]
RETURNS[CirioTypes.Node];
Of course, this is only applicable to the local world
CreateBreakInfoFromBreakEvent: PROC[id: AMEvents.BreakID, clientData: REF, potw: PrincOpsTWData] RETURNS[CirioTypes.Node];
CreateTypeFromAMType: PROC[amType: AMTypes.Type, potw: PrincOpsTWData] RETURNS[CirioTypes.Type];
GetZeroLengthRecordType: PROC[potw: PrincOpsTWData] RETURNS[CirioTypes.Type];
CreatePrincOpsIndirectNode: PROC[tv: AMTypes.TV, targetType: CirioTypes.Type, potw: PrincOpsTWData] RETURNS[CirioTypes.Node];
END..