-- file: ExceptionDefs.Mesa
-- edited by Brotz, June 24, 1982 10:43 AM
-- edited by Levin, August 6, 1980 4:47 PM
-- edited by Schroeder, August 6, 1980 4:47 PM


exD: DEFINITIONS = PUBLIC

BEGIN

-- Exceptions Department of the Interactor Division
-- Provides mnemonic constants identifying exception strings defined in IntExceptions.


maxExceptionStringLength: CARDINAL = 100;
Exception: TYPE = CARDINAL;

nil: Exception = 0;
tryToContinue: Exception = 1;
recursiveTrouble: Exception = 2;
mustEndSession: Exception = 3;
unrecDiskError: Exception = 4;
systemError: Exception = 5;
autoErrorReport: Exception = 6;
noBugReportFile: Exception = 7;
cannotProceed: Exception = 8;
cantConnect: Exception = 9;
loginTryAgain: Exception = 10;
noMailboxes: Exception = 11;
newMailOverfill: Exception = 12;
tocOverflow: Exception = 13;
noNewMail: Exception = 14;
probDiskError: Exception = 15;
diskFull: Exception = 16;
dotsEmpty: Exception = 17;
dots: Exception = 18;
emptySemi: Exception = 19;
semi: Exception = 20;
moveTargetExists: Exception = 21;
cantAnswer: Exception = 22;
willReplaceMessage: Exception = 23;
answerIncomplete: Exception = 24;
confirmMessage: Exception = 25;
illegalCommand: Exception = 26;
noCurrentFile: Exception = 27;
noSelectedEntries: Exception = 28;
noUndeletedMessages: Exception = 29;
cantDisplayMessage: Exception = 30;
newFile: Exception = 31;
cantMoveToFileInUse: Exception = 32;
noMessagesMoved: Exception = 33;
moveWouldOverfill: Exception = 34;
noMoveIllegalName: Exception = 35;
diskErrorTargetDamage: Exception = 36;
cantForward: Exception = 37;
noUndeletedEntries: Exception = 38;
printerNotRespond: Exception = 39;
cancelHardcopy: Exception = 40;
printerBusy: Exception = 41;
hardcopyCanceled: Exception = 42;
printerTimeout: Exception = 43;
printerTrouble: Exception = 44;
cantFindPrinter: Exception = 45;
cannotConnectToPrinter: Exception = 46;
transmissionTo: Exception = 47;
proceeding: Exception = 48;
hardcopyTo: Exception = 49;
completed: Exception = 50;
onePagePrinted: Exception = 51;
pagesPrinted: Exception = 52;
suggestRestart: Exception = 53;
internalError: Exception = 54;
messageNotFiled: Exception = 55;
noFileCantGetMail: Exception = 56;
formatErrorCantGet: Exception = 57;
mayBeTruncated: Exception = 58;
tocOverflowSomeNotIndexed: Exception = 59;
diskFullSomeNotIndexed: Exception = 60;
illegalMailFileName: Exception = 61;
diskErrorGetFailed: Exception = 62;
returnMayBeDamaged: Exception = 63;
programTooLarge: Exception = 64;
insertionOverflow: Exception = 65;
errorsDuringInstall: Exception = 66;
totalMessageLengthTooBig: Exception = 67;
textNotFound: Exception = 68;
findHintOne: Exception = 69;
findHintTwo: Exception = 70;
oneSubMade: Exception = 71;
noSubMade: Exception = 72;
malformedSearchString: Exception = 73;
installFailed: Exception = 74;
noMessage: Exception = 75;
notAuthentic: Exception = 76;
tryAgainOrCancel: Exception = 77;
wishToCancelDelivery: Exception = 78;
errorNearSelection: Exception = 79;
errorInDL: Exception = 80;
cannotExpandDL: Exception = 81;
unqualNameInDL: Exception = 82;
arpaNeedsRegistry: Exception = 83;
noRecipients: Exception = 84;
unexpectedServerResp: Exception = 85;
deliveryCanceled: Exception = 86;
arpaAtExpansion: Exception = 87;
passwordWritten: Exception = 88;
maybeDelivered: Exception = 89;
notDelivered: Exception = 90;
expandingMsg: Exception = 91;
deliveryToDL: Exception = 92;
noValidRecipients: Exception = 93;
uncertainClosing: Exception = 94;
cantExpand: Exception = 95;
busySemi: Exception = 96;
anotherServer: Exception = 97;
badServerNameSemi: Exception = 98;
cantConnectToMailServer: Exception = 99;
ftpError: Exception = 100;
failedSemi: Exception = 101;
fileNotFound: Exception = 102;
cancelingDelivery: Exception = 103;
fileTooLong: Exception = 104;
ioError: Exception = 105;
cantPut: Exception = 106;
badCredentialsSemi: Exception = 107;
dotsDidntRespond: Exception = 108;
overflow: Exception = 109;
unknownErrorSemi: Exception = 110;
illegalBrackets: Exception = 111;
pressToContinue: Exception = 112;
pressSpaceWhenReady: Exception = 113;
continuationHeader: Exception = 114;
fileInUse: Exception = 115;
confirmFileName: Exception = 116;
commandsAre: Exception = 117;
unrecCommand: Exception = 118;
hytypeNotConnected: Exception = 119;
getFailed: Exception = 120;
messageTooBig: Exception = 121;
putWillOverwrite: Exception = 122;
runCanceled: Exception = 123;
remoteFileWillOverwrite: Exception = 124;
hardcopyCompleted: Exception = 125;
noBlankFound: Exception = 126;
retrievingRemoteFile: Exception = 127;
printing: Exception = 128;
versionMismatch: Exception = 129;
requiredFileMissing: Exception = 130;
bcdUnexecutable: Exception = 131;
noReplyTo: Exception = 132;
spare133: Exception = 133;
spare134: Exception = 134;
spare135: Exception = 135;
spare136: Exception = 136;
spare137: Exception = 137;
spare138: Exception = 138;
spare139: Exception = 139;



SysBugSignal: SIGNAL [systemError: BOOLEAN];


SysBug: PROCEDURE [exception: Exception ← nil, message: STRING ← NIL];
-- Called when Laurel cannot proceed due to internal or user errors. When exception = nil
-- and message = NIL, assumes that an internal error has occurred. Otherwise,
-- assumes that a user error has occurred.


DisplayException: PROCEDURE [exception: Exception ← nil];
-- Displays error messages in the exceptions region.


DisplayExceptionString: PROCEDURE [string: STRING];
-- Displays error string in the exceptions region.


DisplayExceptionLine: PROCEDURE [exception: Exception,
lineNumber: CARDINAL];
-- Maps exception to its string and displays it on lineNumber of the exceptions region.


DisplayExceptionStringOnLine: PROCEDURE [exceptionString: STRING,
lineNumber: CARDINAL];
-- Displays exceptionString on lineNumber of the exceptions region.


DisplayExceptionOrStringOnLine: PROCEDURE [exception: Exception, string: STRING,
lineNumber: CARDINAL];
-- Displays exception if non-nil, otherwise string on lineNumber of the exceptions region.


DisplayBothExceptionLines: PROCEDURE [string1: STRING, exception1: Exception,
string2: STRING, exception2: Exception, flash: BOOLEAN ← TRUE];
-- Displays exception messages. Will use string1 if non-NIL and non-zero length, exception1
-- otherwise. Mutatis mutandis for string2. If flash, then will flash exceptions region.


AppendStringToExceptionLine: PROCEDURE [s: STRING, line: CARDINAL];
-- Appends s to the text already on line. May signal ExceptionLineOverflow with parameter
-- i being the index of the first character in s that doesn’t fit on line.


AppendExceptionToExceptionLine: PROCEDURE [exception: Exception, line: CARDINAL];
-- Appends exception to the text already on line. May signal ExceptionLineOverflow with
-- parameter i being the the index of the first character in exception that doesn’t fit on line.


AppendDecimalToExceptionLine: PROCEDURE [n: CARDINAL, line: CARDINAL];
-- Appends n to the text already on line. May signal ExceptionLineOverflow with parameter
-- i being the index of the first character in n that doesn’t fit on line.


ExceptionLineOverflow: ERROR [i: CARDINAL];
-- Raised by AppendStringToExceptionLine (see above).


FlashExceptionsRegion: PROCEDURE;
-- Flashes a rectangle within the exceptions region.


ClearExceptionsRegion: PROCEDURE = INLINE
-- Clears the exceptions region only if needed.
{IF exceptionRegionDirty THEN RealClearExceptionsRegion[]};


exceptionRegionDirty: BOOLEAN;

RealClearExceptionsRegion: PROCEDURE;
-- Really clears the entire text area of the exceptions region.


ExceptionType: TYPE = {Laurel, LaurelX};


InitializeExceptions: PROCEDURE;
-- Must be called before BringInLaurelState.


SetUpExceptionTable: PROCEDURE;
-- Establishes proper table for Get/Append ExceptionString.


GetExceptionString: PROCEDURE [exception: Exception, exceptionString: STRING];
-- Fills in caller supplied exceptionString with text corresponding to exception.


AppendExceptionString: PROCEDURE [exception: Exception, exceptionString: STRING];
-- Appends text corresponding to exception to end of caller supplied exceptionString.


SetExternalExceptionProc: PUBLIC PROCEDURE [proc: PROCEDURE [STRING] ];
-- Allows a loaded program to redirect exception output. To cancel, call this procedure with
-- argument NIL.


END. -- of ExceptionDefs --