SilKernel:
CEDAR
DEFINITIONS =
BEGIN
SilError: ERROR[explain: SilErrorType];
SilErrorType: TYPE = {BadFile, BadFileName};
Each Sil window will have one of these SilData records - which contains three sub-records. SilData keeps all the state that a particular Sil instance needs.
SilData: TYPE = REF SilDataObject;
SilDataObject:
TYPE =
RECORD [
model: SilModel, --Internal representation of Sil File
uiData: SilUIData, --User input data
displayData: SilDisplayData, --Display data
mainProcess: PROCESS, --The process that is going to get all of the work done . . .
mainProcessShouldStop: BOOL ← FALSE --TRUE if the sil instance/viewer is being destroyed
];
SilModel: TYPE = REF SilModelRec;
SilModelRec:
TYPE;
-- SilFile's private business (SilFileImpl.SilModelRec)
SilUIData: TYPE = REF SilUIDataRec;
SilUIDataRec: TYPE; -- SilUserInput's private business (SilUserInputImpl.SilUIDataRec)
SilDisplayData: TYPE = REF SilDisplayDataRec;
SilDisplayDataRec: TYPE; -- SilDisplay's private business (SilDisplayInternal.SilDisplayDataRec)
StartSilInstance:
PROC [fileName: Rope.
ROPE];
Initialize everything that will be needed to start a bare Sil viewer open on fileName (the fileName may be an empty rope).
RepaintSilViewers:
PROC;
called from the Sil font manager when fonts are swapped