MailTransportP17V5AuxImpl:
CEDAR
PROGRAM
IMPORTS Convert, Rope, AuthenticationP14V2Aux, CHNameP2V0Aux
EXPORTS MailTransportP17V5Aux ~ {
OPEN MailTransportP17V5, MailTransportP17V5Aux;
ROPE: TYPE ~ Rope.ROPE;
ExposeGatewaySpecInfo:
PUBLIC
PROC [arg: GatewaySpecInfo, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ "[";
FOR i:
CARDINAL
IN [0..arg.length)
DO
res ¬ Rope.Cat[res, IF i>0 THEN ", " ELSE NIL, ExposeAttribute[arg.body[i], (level+1)]];
ENDLOOP;
res ¬ Rope.Concat[res, "]"];
};
ExposePerChoiceKind:
PUBLIC
PROC [arg: PerChoiceKind, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
whole => res ¬ "whole";
broken => res ¬ "broken";
ENDCASE => ERROR
};
ExposeTransferProblem:
PUBLIC
PROC [arg: TransferProblem, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
aborted => res ¬ "aborted";
ENDCASE => ERROR
};
ExposeSessionToken:
PUBLIC
PROC [arg: SessionToken, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ "[";
FOR i:
CARDINAL
IN [0..2)
DO
res ¬ Rope.Cat[res, IF i>0 THEN ", " ELSE NIL, Convert.RopeFromCard[arg[i]]];
ENDLOOP;
res ¬ Rope.Concat[res, "]"];
};
ExposeReportType:
PUBLIC
PROC [arg: ReportType, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
none => res ¬ "none";
nonDeliveryOnly => res ¬ "nonDeliveryOnly";
all => res ¬ "all";
unknown => res ¬ "unknown";
ENDCASE => ERROR
};
ExposeAttribute:
PUBLIC
PROC [arg: Attribute, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ "[";
res ¬ Rope.Cat[res, "type~", arg.type, ", "];
res ¬ Rope.Cat[res, "value~", arg.value, "]"];
};
ExposeSessionProblem:
PUBLIC
PROC [arg: SessionProblem, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
invalidHandle => res ¬ "invalidHandle";
wrongState => res ¬ "wrongState";
ENDCASE => ERROR
};
ExposeRNameKind:
PUBLIC
PROC [arg: RNameKind, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
xns => res ¬ "xns";
gateway => res ¬ "gateway";
ENDCASE => ERROR
};
ExposeWillingness:
PUBLIC
PROC [arg: Willingness, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ "[";
FOR i:
CARDINAL
IN [0..arg.length)
DO
res ¬ Rope.Cat[res, IF i>0 THEN ", " ELSE NIL, Convert.RopeFromCard[arg.body[i]]];
ENDLOOP;
res ¬ Rope.Concat[res, "]"];
};
ExposeOptionalEnvItemSeq:
PUBLIC
PROC [arg: OptionalEnvItemSeq, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ "[";
FOR i:
CARDINAL
IN [0..arg.length)
DO
res ¬ Rope.Cat[res, IF i>0 THEN ", " ELSE NIL, ExposeEnvelopeItem[arg.body[i], (level+1)]];
ENDLOOP;
res ¬ Rope.Concat[res, "]"];
};
ExposeMessageID:
PUBLIC
PROC [arg: MessageID, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ "[";
FOR i:
CARDINAL
IN [0..5)
DO
res ¬ Rope.Cat[res, IF i>0 THEN ", " ELSE NIL, Convert.RopeFromCard[arg[i]]];
ENDLOOP;
res ¬ Rope.Concat[res, "]"];
};
ExposePerChoice:
PUBLIC
PROC [arg: PerChoice, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ Rope.Cat["PerChoice(", ExposePerChoiceKind[arg.type, (level+1)], "): "];
WITH arg
SELECT
FROM
it:
REF PerChoiceObject.whole => {
res ¬ Rope.Concat[res, it.whole] };
it:
REF PerChoiceObject.broken => {
res ¬ Rope.Concat[res, ExposeBrokenName[it.broken, (level+1)]] };
ENDCASE => ERROR
};
ExposeBrokenName:
PUBLIC
PROC [arg: BrokenName, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ "[";
res ¬ Rope.Cat[res, "given~", arg.given, ", "];
res ¬ Rope.Cat[res, "initials~", arg.initials, ", "];
res ¬ Rope.Cat[res, "family~", arg.family, ", "];
res ¬ Rope.Cat[res, "generation~", arg.generation, "]"];
};
ExposeBPSeq:
PUBLIC
PROC [arg: BPSeq, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ "[";
FOR i:
CARDINAL
IN [0..arg.length)
DO
res ¬ Rope.Cat[res, IF i>0 THEN ", " ELSE NIL, Convert.RopeFromCard[arg.body[i]]];
ENDLOOP;
res ¬ Rope.Concat[res, "]"];
};
ExposeOtherProblem:
PUBLIC
PROC [arg: OtherProblem, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
cantExpedite => res ¬ "cantExpedite";
malformedMessage => res ¬ "malformedMessage";
incorrectContentsSize => res ¬ "incorrectContentsSize";
last => res ¬ "last";
ENDCASE => ERROR
};
ExposeInvalidNameList:
PUBLIC
PROC [arg: InvalidNameList, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ "[";
FOR i:
CARDINAL
IN [0..arg.length)
DO
res ¬ Rope.Cat[res, IF i>0 THEN ", " ELSE NIL, ExposeInvalidName[arg.body[i], (level+1)]];
ENDLOOP;
res ¬ Rope.Concat[res, "]"];
};
ExposeSession:
PUBLIC
PROC [arg: Session, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ "[";
res ¬ Rope.Cat[res, "token~", ExposeSessionToken[arg.token, (level+1)], ", "];
res ¬ Rope.Cat[res, "verifier~", AuthenticationP14V2Aux.ExposeSeqWords[arg.verifier, (level+1)], "]"];
};
ExposeAccessProblem:
PUBLIC
PROC [arg: AccessProblem, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
accessRightsInsufficient => res ¬ "accessRightsInsufficient";
accessRightsIndeterminate => res ¬ "accessRightsIndeterminate";
deliverySlotInUse => res ¬ "deliverySlotInUse";
noSuchDeliverySlot => res ¬ "noSuchDeliverySlot";
deliverySlotIndeterminate => res ¬ "deliverySlotIndeterminate";
wrongService => res ¬ "wrongService";
ENDCASE => ERROR
};
ExposePostingData:
PUBLIC
PROC [arg: PostingData, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ "[";
res ¬ Rope.Cat[res, "recipients~", ExposeRecipientList[arg.recipients, (level+1)], ", "];
res ¬ Rope.Cat[res, "contentsType~", Convert.RopeFromCard[arg.contentsType], ", "];
res ¬ Rope.Cat[res, "contentsSize~", Convert.RopeFromCard[arg.contentsSize], ", "];
res ¬ Rope.Cat[res, "bodyPartTypesSequence~", ExposeBPSeq[arg.bodyPartTypesSequence, (level+1)], "]"];
};
ExposeEnvelopeItem:
PUBLIC
PROC [arg: EnvelopeItem, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ "[";
res ¬ Rope.Cat[res, "type~", Convert.RopeFromCard[arg.type], ", "];
res ¬ Rope.Cat[res, "value~", ExposeOpaque[arg.value, (level+1)], "]"];
};
ExposeInvalidName:
PUBLIC
PROC [arg: InvalidName, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ "[";
res ¬ Rope.Cat[res, "id~", Convert.RopeFromCard[arg.id], ", "];
res ¬ Rope.Cat[res, "invalidReason~", ExposeInvalidReason[arg.invalidReason, (level+1)], "]"];
};
ExposeOrgUnits:
PUBLIC
PROC [arg: OrgUnits, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ "[";
FOR i:
CARDINAL
IN [0..arg.length)
DO
res ¬ Rope.Cat[res, IF i>0 THEN ", " ELSE NIL, arg.body[i]];
ENDLOOP;
res ¬ Rope.Concat[res, "]"];
};
ExposeRecipientList:
PUBLIC
PROC [arg: RecipientList, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ "[";
FOR i:
CARDINAL
IN [0..arg.length)
DO
res ¬ Rope.Cat[res, IF i>0 THEN ", " ELSE NIL, ExposeRecipient[arg.body[i], (level+1)]];
ENDLOOP;
res ¬ Rope.Concat[res, "]"];
};
ExposeRName:
PUBLIC
PROC [arg: RName, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ Rope.Cat["RName(", ExposeRNameKind[arg.type, (level+1)], "): "];
WITH arg
SELECT
FROM
it:
REF RNameObject.xns => {
res ¬ Rope.Concat[res, CHNameP2V0Aux.ExposeThreePartName[it.xns, (level+1)]] };
it:
REF RNameObject.gateway => {
res ¬ Rope.Concat[res, ExposeGatewayRecord[it.gateway, (level+1)]] };
ENDCASE => ERROR
};
ExposeServiceProblem:
PUBLIC
PROC [arg: ServiceProblem, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
cannotAuthenticate => res ¬ "cannotAuthenticate";
serviceFull => res ¬ "serviceFull";
serviceUnavailable => res ¬ "serviceUnavailable";
mediumFull => res ¬ "mediumFull";
ENDCASE => ERROR
};
ExposeOpaque:
PUBLIC
PROC [arg: Opaque, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ "[";
FOR i:
CARDINAL
IN [0..arg.length)
DO
res ¬ Rope.Cat[res, IF i>0 THEN ", " ELSE NIL, Convert.RopeFromCard[arg.body[i]]];
ENDLOOP;
res ¬ Rope.Concat[res, "]"];
};
ExposeEnvelope:
PUBLIC
PROC [arg: Envelope, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ "[";
FOR i:
CARDINAL
IN [0..arg.length)
DO
res ¬ Rope.Cat[res, IF i>0 THEN ", " ELSE NIL, ExposeEnvelopeItem[arg.body[i], (level+1)]];
ENDLOOP;
res ¬ Rope.Concat[res, "]"];
};
ExposeRecipient:
PUBLIC
PROC [arg: Recipient, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ "[";
res ¬ Rope.Cat[res, "name~", ExposeRName[arg.name, (level+1)], ", "];
res ¬ Rope.Cat[res, "recipientID~", Convert.RopeFromCard[arg.recipientID], ", "];
res ¬ Rope.Cat[res, "report~", ExposeReportType[arg.report, (level+1)], "]"];
};
ExposeGatewayRecord:
PUBLIC
PROC [arg: GatewayRecord, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ¬ "[";
res ¬ Rope.Cat[res, "country~", arg.country, ", "];
res ¬ Rope.Cat[res, "adminDomain~", arg.adminDomain, ", "];
res ¬ Rope.Cat[res, "privateDomain~", arg.privateDomain, ", "];
res ¬ Rope.Cat[res, "organization~", arg.organization, ", "];
res ¬ Rope.Cat[res, "organizationalUnits~", ExposeOrgUnits[arg.organizationalUnits, (level+1)], ", "];
res ¬ Rope.Cat[res, "personal~", ExposePerChoice[arg.personal, (level+1)], ", "];
res ¬ Rope.Cat[res, "gatewaySpecificInformation~", ExposeGatewaySpecInfo[arg.gatewaySpecificInformation, (level+1)], "]"];
};
ExposeInvalidReason:
PUBLIC
PROC [arg: InvalidReason, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
noSuchRecipient => res ¬ "noSuchRecipient";
noMailboxForRecipient => res ¬ "noMailboxForRecipient";
illegalName => res ¬ "illegalName";
noDLsAllowed => res ¬ "noDLsAllowed";
reportNotAllowed => res ¬ "reportNotAllowed";
ENDCASE => ERROR
};
}...