RoseDisplayInsides.Mesa
Last Edited by: Spreitzer, July 11, 1985 7:26:36 pm PDT
Last Edited by: Barth, June 9, 1983 11:19 am
Last Edited by: Gasbarro, July 17, 1984 3:58:22 pm PDT
DIRECTORY Graphs, HierarchicalDisplays, IO, PrincOps, RedBlackTree, Rope, RoseConditions, RoseEvents, RoseRun, RoseTypes, Trees, ViewerClasses, ViewRec;
RoseDisplayInsides: CEDAR DEFINITIONS =
BEGIN
ROPE: TYPE = Rope.ROPE;
Viewer: TYPE = ViewerClasses.Viewer;
Cell: TYPE = RoseTypes.Cell;
Node: TYPE = RoseTypes.Node;
Ptr: TYPE = RoseTypes.Ptr;
PortIndex: TYPE = RoseTypes.PortIndex;
NodeTest: TYPE = RoseTypes.NodeTest;
TreeNode: TYPE = Trees.TreeNode;
Condition: TYPE = RoseConditions.Condition;
SymbolTable: TYPE = RedBlackTree.Table;
Strength: TYPE = RoseTypes.Strength;
TreeNodeList: TYPE = LIST OF TreeNode;
Display: TYPE = REF DisplayRep;
DisplayRep:
TYPE =
RECORD [
sim: RoseTypes.Simulation,
rootCell: Cell,
cth: RoseTypes.CellTestHandle ← NIL,
rootDisplay: HierarchicalDisplays.Parent,
rv: ViewRec.RecordViewer,
ctlPanel: ControlPanel,
log: IO.STREAM,
logging: Logging,
conditionHandle, conditionsHandle: REF ANY ← NIL,
notice: CONDITION,
stopResponse: StopResponse ← Abort,
stopped: PrincOps.FrameHandle ← NIL,
type: TopType,
parms: RoseRun.TestParms ← NIL,
mucking: INTEGER ← 0];
DisplayMode: TYPE = {Value, Test};
Logging: TYPE = ARRAY LogSubject OF BOOL ← ALL[FALSE];
LogSubject: TYPE = {nodeValueChanges, switchComputationSteps};
StopResponse: TYPE = {Resume, Abort};
TopType: TYPE = {Ordinary, Test};
IncList: TYPE = LIST OF RoseConditions.IncrementalCondition;
ControlPanel: TYPE = REF ControlPanelRep;
ControlPanelRep:
TYPE =
RECORD [
display: Display,
status: Status ← Idle,
incrementalDisplay: BOOLEAN ← FALSE,
logging: Logging,
Pack: PROC [display: Display],
NoticeEdits: PROC [display: Display] RETURNS [AOK: BOOLEAN],
Run: PROC [display: Display],
SingleStep: PROC [display: Display] RETURNS [stepType: RoseRun.StepType],
Interrupt: PROC [display: Display],
Disable: PROC [display: Display] RETURNS [ok: BOOL],
Proceed, Abort: PROC [display: Display],
ClearStack, ClearCondition, Or, PostCondition, RemoveCondition, PostIncremental, RemoveIncremental: PROC [display: Display],
AddNamedCondition, DeleteNamedCondition: PROC [display: Display, name: ROPE],
Save, Restore: PROC [display: Display, fileName: ROPE] RETURNS [errMsg: ROPE],
mode: DisplayMode ← Value,
conditions: SymbolTable,
conditionStack: TreeNodeList ← NIL,
condition: TreeNode ← NIL
];
Status: TYPE = {Idle, Running, Interrupted};
NodeDisplayList: TYPE = LIST OF NodeDisplay;
NodeDisplay:
TYPE =
RECORD [
org: NodeOrigin,
dc: HierarchicalDisplays.Child --where this display is
];
NodeOrigin:
TYPE =
RECORD [
circ: NodeCircuitOrigin,
display: Display];
NodeCircuitOrigin:
TYPE =
RECORD [
cell: Cell,
role: {internal, interface, effectiveInterface},
index: CARDINAL ← LAST[CARDINAL]
];
notFound: CARDINAL = RoseTypes.notFound;
notLookedFor: CARDINAL = notFound - 1;
CellBrowser: TYPE = REF CellBrowserRep;
CellBrowserRep:
TYPE =
RECORD [
cell: Cell, display: Display,
changed: BOOLEAN ← FALSE];
NodeElt: TYPE = REF NodeEltRep;
NodeEltRep:
TYPE =
RECORD [
name: ROPE,
node: Node,
org: NodeOrigin,
parent: CellBrowser,
format: RoseTypes.Format,
interfaceIndex: PortIndex ← notLookedFor,
effectiveInterfaceIndex: RoseTypes.EffectivePortIndex ← notLookedFor,
interfaceNode, effectiveInterfaceNode, badString, changed: BOOLEAN ← FALSE,
test: NodeTest ← [NIL, NIL]];
CellState: TYPE = REF CellStateRep;
CellStateRep: TYPE = RECORD [cb0: CellBrowser];
InterfaceNodes: TYPE = REF InterfaceNodesRep;
InterfaceNodesRep: TYPE = RECORD [cb1: CellBrowser];
InternalNodes: TYPE = REF InternalNodesRep;
InternalNodesRep: TYPE = RECORD [cb2: CellBrowser];
Components: TYPE = REF ComponentsRep;
ComponentsRep: TYPE = RECORD [cb3: CellBrowser];
EffectiveInterface: TYPE = REF EffectiveInterfaceRep;
EffectiveInterfaceRep: TYPE = RECORD [cb4: CellBrowser];
nodeDisplaysProp, cellStateDisplayProp: ATOM;
leafProp: ATOM;
nodeClass, cellClass, cellStateClass: HierarchicalDisplays.ChildClass;
NDLSearch: PROC [ndl: NodeDisplayList, org: NodeOrigin, remove: BOOLEAN] RETURNS [newdl: NodeDisplayList, nd: NodeDisplay, found: BOOLEAN];
NotifyNodeView: RoseEvents.NotifyProc;
NotifyCellView: RoseEvents.NotifyProc;
NotifyActivity: RoseEvents.NotifyProc;
Push: PROC [display: Display, cond: Condition];
Pop: PROC [display: Display] RETURNS [cond: Condition];
FormatNE: PROC [ne: NodeElt] RETURNS [rope: ROPE];
NCOPtr: PROC [n: Node, nco: NodeCircuitOrigin] RETURNS [p: Ptr];
HighlightNode: Graphs.EdgeConsumerProc;
NewDisplay: PROC [sim: RoseTypes.Simulation, info: ViewerClasses.ViewerRec ← [], paint: BOOLEAN ← TRUE] RETURNS [display: Display];
BrowseDisplay: PROC [display: Display, info: ViewerClasses.ViewerRec ← [], paint: BOOLEAN ← TRUE] RETURNS [v: ViewerClasses.Viewer];
END.