-- file: LaurelSendDefs.mesa
-- last edited: Mike Schroeder, April 2, 1981 10:30 AM
-- edited by Brotz, April 8, 1981 4:10 PM

DIRECTORY
ovD: FROM "OverviewDefs",
exD: FROM "ExceptionDefs";


LaurelSendDefs: DEFINITIONS = BEGIN


SendErrorType: TYPE =
{cancelCode, dlExpandError, dlSyntaxError, ftpError,
uncertainClosing, cantConnect, badSender, illegalFileExpansion,
illegalRecipient, messageSyntaxError, missingQualification, illegalFromField,
noRecipientsSpecified, unexpectedResponse, noValidRecipients};

SendMode: TYPE = {red, blue};

SendError: ERROR;


ParseForSend: PROCEDURE[expandPublicDLs:BOOLEAN, sendMode: SendMode]
RETURNS [unexpandedPublicDLs:CARDINAL, netMail:BOOLEAN,
fromField:BOOLEAN, replyTo: BOOLEAN];

GVSend: PROCEDURE[publicDLs:CARDINAL, sendMode: SendMode,
netMail:BOOLEAN, fromField:BOOLEAN, replyTo: BOOLEAN, formatProc: PROCEDURE];

MTPSend: PROCEDURE[sendMode: SendMode, netMail:BOOLEAN,
fromField:BOOLEAN, replyTo: BOOLEAN, formatProc: PROCEDURE];


DeliverBody: PROCEDURE
[netMail: BOOLEAN, fromField: BOOLEAN,
SendBlock: PROCEDURE [POINTER, CARDINAL]];

ReportRejectedRecipients: PUBLIC PROCEDURE [rejected: CARDINAL,
nameList: STRING, nameListFull: BOOLEAN];

ReportDelivery: PUBLIC PROCEDURE [chars, goodOther, totalOther: CARDINAL,
goodList: CARDINAL ← 0, totalList: CARDINAL ← 0];


InitReadChar: PROCEDURE;

ReadChar: PROCEDURE RETURNS [ch: CHARACTER];

BackupChar: PROCEDURE;

GetCharPosition: PUBLIC PROCEDURE RETURNS[ovD.CharIndex];


CancelDelivery: PROCEDURE;

AbortPoint: PROCEDURE;

NoticeUserAbort: PROCEDURE;

AskUser: PROCEDURE [exception: exD.Exception, string: STRING];

RetryThis: PROCEDURE[string: STRING, excep: exD.Exception ← exD.nil]
RETURNS [BOOLEAN];


ReportProgress: PROCEDURE[exception: exD.Exception, string: STRING,
displayCancelMessage: BOOLEAN];

ReportError: PROCEDURE[erc: SendErrorType, msg: STRING,
start, end: ovD.CharIndex];

MoveUnderline: PROCEDURE[start, end: ovD.CharIndex];

InsertReplyToField: PROCEDURE;


InitializeRecipientList: PROCEDURE[];

FlushRecipientList: PROCEDURE [];

EnumerateRecipientList: PROCEDURE [space: CARDINAL,
proc: PROCEDURE[s: STRING] RETURNS[BOOLEAN]]
RETURNS [outcome: BOOLEAN];
-- "s" is guarenteed to have at least "space" free characters at the end.
-- "proc" returning TRUE stops the enumeration.
-- "outcome" reports last value returned by "proc".

InsertRecipientInList: PROCEDURE [s: STRING];

GetRecipients: PROCEDURE RETURNS [CARDINAL];

ProtocolType: TYPE = {gv, mtp};

GetSendProtocol: PROCEDURE RETURNS [ProtocolType];


END.