FilingP10V5AuxImpl:
CEDAR
PROGRAM
IMPORTS Convert, Rope, AuthenticationP14V2Aux, FilingAttributesP10V5Aux
EXPORTS FilingP10V5Aux ~ {
OPEN FilingP10V5, FilingP10V5Aux;
ROPE: TYPE ~ Rope.ROPE;
ExposeSecondaryCredentials:
PUBLIC
PROC [arg: SecondaryCredentials, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ← Rope.Cat["SecondaryCredentials(", ExposeStrength[arg.type, (level+1)], "): "];
WITH arg
SELECT
FROM
it:
REF SecondaryCredentialsObject.none => {
res ← Rope.Concat[res, ExposeEmptyRecord[it.none, (level+1)]] };
it:
REF SecondaryCredentialsObject.simple => {
res ← Rope.Concat[res, ExposeSecondary[it.simple, (level+1)]] };
it:
REF SecondaryCredentialsObject.strong => {
res ← Rope.Concat[res, ExposeEncryptedSecondary[it.strong, (level+1)]] };
ENDCASE => ERROR
};
ExposeEmptyRecord:
PUBLIC
PROC [arg: EmptyRecord, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ← "[]";
};
ExposeTransferProblem:
PUBLIC
PROC [arg: TransferProblem, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
aborted => res ← "aborted";
checksumIncorrect => res ← "checksumIncorrect";
formatIncorrect => res ← "formatIncorrect";
noRendevous => res ← "noRendevous";
wrongDirection => res ← "wrongDirection";
ENDCASE => ERROR
};
ExposeByteRange:
PUBLIC
PROC [arg: ByteRange, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ← "[";
res ← Rope.Cat[res, "firstByte~", Convert.RopeFromCard[arg.firstByte], ", "];
res ← Rope.Cat[res, "count~", Convert.RopeFromCard[arg.count], "]"];
};
ExposePatternFilter:
PUBLIC
PROC [arg: PatternFilter, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ← "[";
res ← Rope.Cat[res, "attribute~", FilingAttributesP10V5Aux.ExposeAttribute[arg.attribute, (level+1)], "]"];
};
ExposeDirection:
PUBLIC
PROC [arg: Direction, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
forward => res ← "forward";
backward => res ← "backward";
ENDCASE => ERROR
};
ExposeConnectionProblem:
PUBLIC
PROC [arg: ConnectionProblem, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
noRoute => res ← "noRoute";
noResponse => res ← "noResponse";
transmissionHardware => res ← "transmissionHardware";
transportTimeout => res ← "transportTimeout";
tooManyLocalConnections => res ← "tooManyLocalConnections";
tooManyRemoteConnections => res ← "tooManyRemoteConnections";
missingCourier => res ← "missingCourier";
missingProgram => res ← "missingProgram";
missingProcedure => res ← "missingProcedure";
protocolMismatch => res ← "protocolMismatch";
parameterInconsistency => res ← "parameterInconsistency";
invalidMessage => res ← "invalidMessage";
returnTimedOut => res ← "returnTimedOut";
otherCallProblem => res ← "otherCallProblem";
ENDCASE => ERROR
};
ExposeFilterType:
PUBLIC
PROC [arg: FilterType, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
less => res ← "less";
lessOrEqual => res ← "lessOrEqual";
equal => res ← "equal";
notEqual => res ← "notEqual";
greaterOrEqual => res ← "greaterOrEqual";
greater => res ← "greater";
and => res ← "and";
or => res ← "or";
not => res ← "not";
none => res ← "none";
all => res ← "all";
matches => res ← "matches";
ENDCASE => ERROR
};
ExposeScopeSequence:
PUBLIC
PROC [arg: ScopeSequence, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ← "[";
FOR i:
CARDINAL
IN [0..arg.length)
DO
res ← Rope.Cat[res, IF i>0 THEN ", " ELSE NIL, ExposeScope[arg.body[i], (level+1)]];
ENDLOOP;
res ← Rope.Concat[res, "]"];
};
ExposeControlType:
PUBLIC
PROC [arg: ControlType, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
lock => res ← "lock";
timeout => res ← "timeout";
access => res ← "access";
ENDCASE => ERROR
};
ExposeScope:
PUBLIC
PROC [arg: Scope, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ← Rope.Cat["Scope(", ExposeScopeType[arg.type, (level+1)], "): "];
WITH arg
SELECT
FROM
it:
REF ScopeObject.count => {
res ← Rope.Concat[res, Convert.RopeFromCard[it.count]] };
it:
REF ScopeObject.depth => {
res ← Rope.Concat[res, Convert.RopeFromCard[it.depth]] };
it:
REF ScopeObject.direction => {
res ← Rope.Concat[res, ExposeDirection[it.direction, (level+1)]] };
it:
REF ScopeObject.filter => {
res ← Rope.Concat[res, ExposeFilter[it.filter, (level+1)]] };
ENDCASE => ERROR
};
ExposeHandle:
PUBLIC
PROC [arg: Handle, 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, "]"];
};
ExposeSecondary:
PUBLIC
PROC [arg: Secondary, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ← "[";
FOR i:
CARDINAL
IN [0..arg.length)
DO
res ← Rope.Cat[res, IF i>0 THEN ", " ELSE NIL, ExposeSecondaryItem[arg.body[i], (level+1)]];
ENDLOOP;
res ← Rope.Concat[res, "]"];
};
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, "]"];
};
ExposeInsertionProblem:
PUBLIC
PROC [arg: InsertionProblem, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
positionUnavailable => res ← "positionUnavailable";
fileNotUnique => res ← "fileNotUnique";
loopInHierarchy => res ← "loopInHierarchy";
ENDCASE => ERROR
};
ExposeFilter:
PUBLIC
PROC [arg: Filter, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ← Rope.Cat["Filter(", ExposeFilterType[arg.type, (level+1)], "): "];
WITH arg
SELECT
FROM
it:
REF FilterObject.less => {
res ← Rope.Concat[res, ExposeRelationFilter[it.less, (level+1)]] };
it:
REF FilterObject.lessOrEqual => {
res ← Rope.Concat[res, ExposeRelationFilter[it.lessOrEqual, (level+1)]] };
it:
REF FilterObject.equal => {
res ← Rope.Concat[res, ExposeRelationFilter[it.equal, (level+1)]] };
it:
REF FilterObject.notEqual => {
res ← Rope.Concat[res, ExposeRelationFilter[it.notEqual, (level+1)]] };
it:
REF FilterObject.greaterOrEqual => {
res ← Rope.Concat[res, ExposeRelationFilter[it.greaterOrEqual, (level+1)]] };
it:
REF FilterObject.greater => {
res ← Rope.Concat[res, ExposeRelationFilter[it.greater, (level+1)]] };
it:
REF FilterObject.and => {
res ← Rope.Concat[res, ExposeEmptyRecord[it.and, (level+1)]] };
it:
REF FilterObject.or => {
res ← Rope.Concat[res, ExposeEmptyRecord[it.or, (level+1)]] };
it:
REF FilterObject.not => {
res ← Rope.Concat[res, ExposeEmptyRecord[it.not, (level+1)]] };
it:
REF FilterObject.none => {
res ← Rope.Concat[res, ExposeEmptyRecord[it.none, (level+1)]] };
it:
REF FilterObject.all => {
res ← Rope.Concat[res, ExposeEmptyRecord[it.all, (level+1)]] };
it:
REF FilterObject.matches => {
res ← Rope.Concat[res, ExposePatternFilter[it.matches, (level+1)]] };
ENDCASE => ERROR
};
ExposeSecondaryItem:
PUBLIC
PROC [arg: SecondaryItem, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ← "[";
res ← Rope.Cat[res, "type~", Convert.RopeFromCard[arg.type], ", "];
res ← Rope.Cat[res, "value~", ExposeSecondaryValueType[arg.value, (level+1)], "]"];
};
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)], "]"];
};
ExposeAttributeTypeSequence:
PUBLIC
PROC [arg: AttributeTypeSequence, 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, "]"];
};
ExposeRelationFilter:
PUBLIC
PROC [arg: RelationFilter, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ← "[";
res ← Rope.Cat[res, "attribute~", FilingAttributesP10V5Aux.ExposeAttribute[arg.attribute, (level+1)], ", "];
res ← Rope.Cat[res, "interpretation~", FilingAttributesP10V5Aux.ExposeInterpretation[arg.interpretation, (level+1)], "]"];
};
ExposeEncryptedSecondary:
PUBLIC
PROC [arg: EncryptedSecondary, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ← "[";
FOR i:
CARDINAL
IN [0..arg.length)
DO
res ← Rope.Cat[res, IF i>0 THEN ", " ELSE NIL, AuthenticationP14V2Aux.ExposeBlock[arg.body[i], (level+1)]];
ENDLOOP;
res ← Rope.Concat[res, "]"];
};
ExposeArgumentProblem:
PUBLIC
PROC [arg: ArgumentProblem, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
illegal => res ← "illegal";
disallowed => res ← "disallowed";
unreasonable => res ← "unreasonable";
unimplemented => res ← "unimplemented";
duplicated => res ← "duplicated";
missing => res ← "missing";
ENDCASE => ERROR
};
ExposeSecondaryValueType:
PUBLIC
PROC [arg: SecondaryValueType, 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, "]"];
};
ExposeSpaceProblem:
PUBLIC
PROC [arg: SpaceProblem, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
allocationExceeded => res ← "allocationExceeded";
attributeAreaFull => res ← "attributeAreaFull";
mediumFull => res ← "mediumFull";
ENDCASE => ERROR
};
ExposeServiceProblem:
PUBLIC
PROC [arg: ServiceProblem, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
cannotAuthenticate => res ← "cannotAuthenticate";
serviceFull => res ← "serviceFull";
serviceUnavailable => res ← "serviceUnavailable";
sessionInUse => res ← "sessionInUse";
serviceUnknown => res ← "serviceUnknown";
ENDCASE => ERROR
};
ExposeAccessProblem:
PUBLIC
PROC [arg: AccessProblem, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
accessRightsInsufficient => res ← "accessRightsInsufficient";
accessRightsIndeterminate => res ← "accessRightsIndeterminate";
fileChanged => res ← "fileChanged";
fileDamaged => res ← "fileDamaged";
fileInUse => res ← "fileInUse";
fileNotFound => res ← "fileNotFound";
fileOpen => res ← "fileOpen";
ENDCASE => ERROR
};
ExposeScopeType:
PUBLIC
PROC [arg: ScopeType, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
count => res ← "count";
direction => res ← "direction";
filter => res ← "filter";
depth => res ← "depth";
ENDCASE => ERROR
};
ExposeStrength:
PUBLIC
PROC [arg: Strength, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
none => res ← "none";
simple => res ← "simple";
strong => res ← "strong";
ENDCASE => ERROR
};
ExposeHandleProblem:
PUBLIC
PROC [arg: HandleProblem, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
invalid => res ← "invalid";
nullDisallowed => res ← "nullDisallowed";
directoryRequired => res ← "directoryRequired";
ENDCASE => ERROR
};
ExposeSecondaryType:
PUBLIC
PROC [arg: SecondaryType, 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, "]"];
};
ExposeControlTypeSequence:
PUBLIC
PROC [arg: ControlTypeSequence, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ← "[";
FOR i:
CARDINAL
IN [0..arg.length)
DO
res ← Rope.Cat[res, IF i>0 THEN ", " ELSE NIL, ExposeControlType[arg.body[i], (level+1)]];
ENDLOOP;
res ← Rope.Concat[res, "]"];
};
ExposeSessionProblem:
PUBLIC
PROC [arg: SessionProblem, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
tokenInvalid => res ← "tokenInvalid";
serviceAlreadySet => res ← "serviceAlreadySet";
ENDCASE => ERROR
};
ExposeControlSequence:
PUBLIC
PROC [arg: ControlSequence, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ← "[";
FOR i:
CARDINAL
IN [0..arg.length)
DO
res ← Rope.Cat[res, IF i>0 THEN ", " ELSE NIL, ExposeControl[arg.body[i], (level+1)]];
ENDLOOP;
res ← Rope.Concat[res, "]"];
};
ExposeLogicFilter:
PUBLIC
PROC [arg: LogicFilter, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ← "[";
FOR i:
CARDINAL
IN [0..arg.length)
DO
res ← Rope.Cat[res, IF i>0 THEN ", " ELSE NIL, ExposeFilter[arg.body[i], (level+1)]];
ENDLOOP;
res ← Rope.Concat[res, "]"];
};
ExposeControl:
PUBLIC
PROC [arg: Control, level:
NAT]
RETURNS [res:
ROPE] ~ {
res ← Rope.Cat["Control(", ExposeControlType[arg.type, (level+1)], "): "];
WITH arg
SELECT
FROM
it:
REF ControlObject.lock => {
res ← Rope.Concat[res, ExposeLock[it.lock, (level+1)]] };
it:
REF ControlObject.timeout => {
res ← Rope.Concat[res, Convert.RopeFromCard[it.timeout]] };
it:
REF ControlObject.access => {
res ← Rope.Concat[res, FilingAttributesP10V5Aux.ExposeAccessSequence[it.access, (level+1)]] };
ENDCASE => ERROR
};
ExposeLock:
PUBLIC
PROC [arg: Lock, level:
NAT]
RETURNS [res:
ROPE] ~ {
SELECT arg
FROM
lockNone => res ← "lockNone";
share => res ← "share";
exclusive => res ← "exclusive";
ENDCASE => ERROR
};
}...