FILE: [Ivy]<Spreitzer>ViewRec>ViewRecInsides.Mesa
last edited by Spreitzer March 10, 1983 4:27 pm
Last Edited by: Maxwell, November 16, 1982 3:29 pm
DIRECTORY
AMBridge, AMTypes, RTTypesBasic, RTMiniModel, BBApply, Rope, Menus, ViewerClasses, ViewerOps, ViewerTools, ViewRec, VFonts, Buttons, Containers, Labels, Rules, Process, Convert, MessageWindow, IO, Icons, Real;
ViewRecInsides: CEDAR DEFINITIONS =
BEGIN
ROPE: TYPE = Rope.ROPE;
TypedVariable: TYPE = AMTypes.TypedVariable;
Type: TYPE = AMTypes.Type;
Viewer: TYPE = ViewerClasses.Viewer;
Int: TYPE = ViewRec.Int;
RecordViewer: TYPE = ViewRec.RecordViewer;
OtherStuffProc: TYPE = ViewRec.OtherStuffProc;
DoitProc: TYPE = ViewRec.DoitProc;
CreateOptions: TYPE = ViewRec.CreateOptions;
Recognizer: TYPE = ViewRec.Recognizer;
Reductions: TYPE = ViewRec.Reductions;
Handler: TYPE = ViewRec.Handler;
SimpleHandler: TYPE = ViewRec.SimpleHandler;
ComplexHandler: TYPE = ViewRec.ComplexHandler;
Updater: TYPE = ViewRec.Updater;
AddPlace: TYPE = ViewRec.AddPlace;
RList: TYPE = LIST OF Recognizer;
DataList: TYPE = LIST OF Data;
Data: TYPE = REF DataRec;
DataRec: TYPE = RECORD [
v: Viewer ← NIL,
asRV: RecordViewer ← NIL,
rvParent: Data ← NIL,
edParent: EltData ← NIL,
feedBack, argContainer: Viewer ← NIL,
toDo: DoitProc ← NIL,
toDoData: REF ANYNIL,
argPlace: INTEGER ← 0,
curProc: ProcData ← NIL,
running: BOOLEANFALSE,
runner: PROCESS,
runningProc: ProcData ← NIL,
destroyed: BOOLEANFALSE,
first, last: EltData ← NIL,
holdOff, highlightSelectedProc: BOOLEAN];
EltData: TYPE = REF EltDataRec;
EltDataRec: TYPE = RECORD [
name: ROPE,
parent: Data,
prev, next: EltData ← NIL,
update: UpdateProc ← NIL,
destroyed: BOOLEANFALSE,
opened: BOOLEANFALSE,
variable: BOOLEANTRUE,
b: Buttons.Button,   --only non-NIL for some
t: Viewer ← NIL,   --only non-NIL for some
ToRope: ToRopeProc ← NIL,  --only non-NIL for some
AssignRope: AssignRopeProc ← NIL,  --only non-NIL for some
var, old: TypedVariable,   --unless a Proc
typeDoc: ROPENIL,
notifyRequests: NotifyList ← NIL,
details: SELECT et: EltType FROM
Proc => [
argret: Viewer,
argRV, retRV: Data,
hasDom, hasRet: BOOLEAN,
domainInst, retInst: TypedVariable,
proc: TypedVariable,
stateLabel: Labels.Label ← NIL,
gregState: GregState ← Other,
running, argsShown: BOOLEANFALSE,
runningProcess: PROCESS,
userAbort: CARDINAL ← 0],
Simple => [
handler: SimpleHandler,
handlerData: REF ANY,
wideAsTV: TypedVariable,
targType: Type],
Complex => [
handlerData, clientData: REF ANY,
updater: Updater],
Record => [
d: Data]
ENDCASE
];
EltType: TYPE = {Proc, Record, Simple, Complex};
GregState: TYPE = {Dispatched, DispatchedAndEdited, Returned, Aborted, Other};
ToRopeProc: TYPE = PROC [ed: EltData] RETURNS [asRope: ROPE];
AssignRopeProc: TYPE = PROC [ed: EltData, asRope: ROPE]
RETURNS [success: BOOLEAN];
ProcData: TYPE = REF EltDataRec[Proc];
RecordData: TYPE = REF EltDataRec[Record];
SimpleData: TYPE = REF EltDataRec[Simple];
ComplexData: TYPE = REF EltDataRec[Complex];
UpdateProc: TYPE = PROC [ed: EltData, always: BOOLEAN];
BindingList: TYPE = ViewRec.BindingList;
Binding: TYPE = ViewRec.Binding;
NotifyList: TYPE = ViewRec.NotifyList;
NameStyles: TYPE = RECORD [quiescent, opened, invariant,
running, beingShown: ATOM];
nowhere: INTEGER = 1000;
nameStyles: NameStyles;
roots: DataList;
befores: ARRAY Reductions OF RList;
afterAlls: RList;
classRecers: ARRAY AMTypes.Class OF RList;
ecHandlerProp, gtHandlerProp: ATOM;
ProcButtonProc, InnerProcButtonProc, NVButtonProc, RecordButtonProc: Menus.ClickProc;
ProcDoit: DoitProc;
ProcUpdate, UpdateNV, UpdateRecord, UpdateComplex: UpdateProc;
SimpleToRope: ToRopeProc;
SimpleAssignRope: AssignRopeProc;
DestroyEltViewer: ViewerClasses.DestroyProc;
OKProc: PROC [pt: Type, argSpecs, retSpecs: BindingList, doAllRecords: BOOLEAN] RETURNS [ok, hasDom, hasRange: BOOLEAN];
SimpleEnough: PROC [rt: Type, specs: BindingList, doAllRecords: BOOLEAN] RETURNS [ok: BOOLEAN, count: CARDINAL];
Recognize: PROC [t: Type, specials: RList, onlyRecognize: BOOLEAN] RETURNS [recognized: BOOLEAN, handler, handlerData: REF ANY];
MemberStuff: PROC [tt, et: Type] RETURNS [biggest, listr: ROPE];
SelectBindings: PROC [bl: BindingList, name: ROPE, pos: INT]
RETURNS [sublist, altSublist: BindingList, val: TypedVariable, found, visible, editable: BOOLEAN, notifies: NotifyList, recers: RList];
BindingListAppend: PROC [a, b: BindingList] RETURNS [c: BindingList];
ShowState: PROC [ed: EltData, paint: BOOLEANTRUE];
SetRope: PROC [ed: EltData, to: ROPE, paint: BOOLEANTRUE];
RVToData: PROC [RecordViewer] RETURNS [Data];
END.