CrAEToAE.mesa
Carl Hauser, November 9, 1987 4:59:27 pm PST
DIRECTORY
AlpineEnvironment,
AlpineEnvironmentP2201V1,
Rope;
CrAEToAE: CEDAR DEFINITIONS IMPORTS Rope
~ BEGIN
OPEN AE: AlpineEnvironment, CrAE: AlpineEnvironmentP2201V1;
Principal: PROC [in: CrAE.Principal] RETURNS [out: AE.Principal] ~ INLINE {
RETURN[in]
};
FileStore: PROC [in: CrAE.FileStore] RETURNS [out: AE.FileStore] ~ INLINE {
RETURN[in]
};
RName: PROC [in: CrAE.RName] RETURNS [out: AE.RName] ~ INLINE {
RETURN[in]
};
OwnerName: PROC [in: CrAE.OwnerName] RETURNS [out: AE.OwnerName] ~ INLINE {
IF in.InlineLength[] = 0 THEN RETURN[NIL];
RETURN[in]
};
AccessList: PROC [in: CrAE.AccessList] RETURNS [out: AE.AccessList] ~ INLINE {
out ← NIL;
FOR i: CARDINAL DECREASING IN [0..in.length) DO
out ← CONS[RName[in[i]], out];
ENDLOOP;
};
VolOrVolGroupID: PROC [in: CrAE.VolOrVolGroupID] RETURNS [out: AE.VolOrVolGroupID] ~ INLINE {
RETURN[LOOPHOLE[in]];
};
VolumeID: PROC [in: CrAE.VolumeID] RETURNS [out: AE.VolumeID] ~ INLINE {
RETURN[LOOPHOLE[in]];
};
VolumeIDs: PROC [in: CrAE.VolumeIDs] RETURNS [out: LIST OF AE.VolumeID] ~ INLINE {
out ← NIL;
FOR i: CARDINAL DECREASING IN [0..in.length) DO
out ← CONS[VolumeID[in[i]], out];
ENDLOOP;
};
VolumeGroupID: PROC [in: CrAE.VolumeGroupID] RETURNS [out: AE.VolumeGroupID] ~ INLINE {
RETURN[LOOPHOLE[in]];
};
FileID: PROC [in: CrAE.FileID] RETURNS [out: AE.FileID] ~ INLINE {
RETURN[LOOPHOLE[in]];
};
UniversalFile: PROC [in: CrAE.UniversalFile] RETURNS [out: AE.UniversalFile] ~ INLINE {
RETURN[LOOPHOLE[in]];
};
PageNumber: PROC [in: CrAE.PageNumber] RETURNS [out: AE.PageNumber] ~ INLINE {
RETURN[LOOPHOLE[in]];
};
PageCount: PROC [in: CrAE.PageCount] RETURNS [out: AE.PageCount] ~ INLINE {
RETURN[LOOPHOLE[in]];
};
PageRun: PROC [in: CrAE.PageRun] RETURNS [out: AE.PageRun] ~ INLINE {
RETURN[LOOPHOLE[in]];
};
Property: PROC [in: CrAE.Property] RETURNS [out: AE.Property] ~ INLINE {
out ← SELECT in FROM
byteLength => byteLength,
createTime => createTime,
highWaterMark => highWaterMark,
modifyAccess => modifyAccess,
owner => owner,
readAccess => readAccess,
stringName => stringName,
version => version,
ENDCASE => ERROR;
};
PropertySet: PROC [in: CrAE.PropertySet] RETURNS [out: PACKED ARRAY AE.Property OF BOOLEAN] ~ INLINE {
FOR prop: CrAE.Property IN CrAE.Property DO
out[Property[prop]] ← in[LOOPHOLE[prop]];
ENDLOOP;
};
PropertyValuePair: PROC [in: CrAE.PropertyValuePair] RETURNS [out: AE.PropertyValuePair] ~ TRUSTED INLINE {
WITH pvp: in SELECT FROM
byteLength => out ← [byteLength[ByteCount[pvp.byteLength]]];
createTime => out ← [createTime[LOOPHOLE[pvp.createTime]]];
highWaterMark => out ← [highWaterMark[PageCount[pvp.highWaterMark]]];
modifyAccess => out ← [modifyAccess[AccessList[pvp.modifyAccess]]];
owner => out ← [owner[OwnerName[pvp.owner]]];
readAccess => out ← [readAccess[AccessList[pvp.readAccess]]];
stringName => out ← [stringName[pvp.stringName]];
version => out ← [version[FileVersion[pvp.version]]];
ENDCASE => ERROR;
};
Properties: PROC [in: CrAE.Properties] RETURNS [out: LIST OF AE.PropertyValuePair] ~ INLINE {
out ← NIL;
FOR i: CARDINAL DECREASING IN [0..in.length) DO
out ← CONS[PropertyValuePair[in[i]], out];
ENDLOOP;
};
ByteCount: PROC [in: CrAE.ByteCount] RETURNS [out: AE.ByteCount] ~ INLINE {
RETURN[in];
};
FileVersion: PROC [in: CrAE.FileVersion] RETURNS [out: AE.FileVersion] ~ INLINE {
RETURN[in];
};
OpenFileID: PROC [in: CrAE.OpenFileID] RETURNS [out: AE.OpenFileID] ~ INLINE {
RETURN[LOOPHOLE[in]];
};
AccessRights: PROC [in: CrAE.AccessRights] RETURNS [out: AE.AccessRights] ~ INLINE {
out ← SELECT in FROM
readOnly => readOnly,
readWrite => readWrite,
ENDCASE => ERROR;
};
LockMode: PROC [in: CrAE.LockMode] RETURNS [out: AE.LockMode] ~ INLINE {
out ← SELECT in FROM
none => none,
read => read,
update => update,
write => write,
readIntendUpdate => readIntendUpdate,
readIntendWrite => readIntendWrite,
intendRead => intendRead,
intendUpdate => intendUpdate,
intendWrite => intendWrite,
ENDCASE => ERROR;
};
LockOption: PROC [in: CrAE.LockOption] RETURNS [out: AE.LockOption] ~ INLINE {
out ← [mode ~ LockMode[in.mode], ifConflict ~ SELECT in.ifConflict FROM
wait => wait,
fail => fail,
ENDCASE => ERROR];
};
RecoveryOption: PROC [in: CrAE.RecoveryOption] RETURNS [out: AE.RecoveryOption] ~ INLINE {
out ← SELECT in FROM
log => log,
noLog => noLog,
ENDCASE => ERROR;
};
ReferencePattern: PROC [in: CrAE.ReferencePattern] RETURNS [out: AE.ReferencePattern] ~ INLINE {
out ← SELECT in FROM
random => random,
sequential => sequential,
ENDCASE => ERROR;
};
OwnerProperty: PROC [in: CrAE.OwnerProperty] RETURNS [out: AE.OwnerProperty] ~ INLINE {
out ← SELECT in FROM
createAccessList => createAccessList,
modifyAccessList => modifyAccessList,
quota => quota,
spaceInUse => spaceInUse,
rootFile => rootFile,
ENDCASE => ERROR;
};
OwnerPropertyValuePair: PROC [in: CrAE.OwnerPropertyValuePair] RETURNS [out: AE.OwnerPropertyValuePair] ~ TRUSTED INLINE {
WITH opvp: in SELECT FROM
createAccessList => out ← [createAccessList[AccessList[opvp.createAccessList]]];
modifyAccessList => out ← [modifyAccessList[AccessList[opvp.modifyAccessList]]];
quota => out ← [quota[PageCount[opvp.quota]]];
spaceInUse => out ← [spaceInUse[PageCount[opvp.spaceInUse]]];
rootFile => out ← [rootFile[UniversalFile[opvp.rootFile]]];
ENDCASE => ERROR;
};
OwnerPropertySet: PROC [in: CrAE.OwnerPropertySet] RETURNS [out: AE.OwnerPropertySet] ~ INLINE {
FOR prop: CrAE.OwnerProperty IN CrAE.OwnerProperty DO
out[OwnerProperty[prop]] ← in[LOOPHOLE[prop]];
ENDLOOP;
};
OwnerProperties: PROC [in: CrAE.OwnerProperties] RETURNS [out: LIST OF AE.OwnerPropertyValuePair] ~ INLINE {
out ← NIL;
FOR i: CARDINAL DECREASING IN [0..in.length) DO
out ← CONS[OwnerPropertyValuePair[in[i]], out];
ENDLOOP;
};
TransID: PROC [in: CrAE.TransID] RETURNS [out: AE.TransID] ~ INLINE {
RETURN[LOOPHOLE[in]];
};
Outcome: PROC [in: CrAE.Outcome] RETURNS [out: AE.Outcome] ~ INLINE {
out ← SELECT in FROM
abort => abort,
commit => commit,
unknown => unknown,
ENDCASE => ERROR
};
CommitOrAbort: PROC [in: CrAE.CommitOrAbort] RETURNS [out: AE.CommitOrAbort] ~ INLINE {
out ← SELECT in FROM
abort => abort,
commit => commit,
ENDCASE => ERROR
};
WorkerState: PROC [in: CrAE.WorkerState] RETURNS [out: AE.WorkerState] ~ INLINE {
out ← SELECT in FROM
notReady => notReady,
readOnlyReady => readOnlyReady,
ready => ready,
ENDCASE => ERROR
};
NeededAccess: PROC [in: CrAE.NeededAccess] RETURNS [out: AE.NeededAccess] ~ INLINE {
out ← SELECT in FROM
alpineWheel => alpineWheel,
fileModify => fileModify,
fileRead => fileRead,
handleReadWrite => handleReadWrite,
ownerCreate => ownerCreate,
ownerEntry => ownerEntry,
spaceQuota => spaceQuota,
ENDCASE => ERROR
};
OperationFailure: PROC [in: CrAE.OperationFailure] RETURNS [out: AE.OperationFailure] ~ INLINE {
out ← SELECT in FROM
busy => busy,
damagedLeaderPage => damagedLeaderPage,
duplicateOwner => duplicateOwner,
duplicateVolumeGroup => duplicateVolumeGroup,
duplicateVolume => duplicateVolume,
inconsistentDescriptor => inconsistentDescriptor,
volumeFragmented => volumeFragmented,
insufficientSpace => insufficientSpace,
nonexistentFilePage => nonexistentFilePage,
notAlpineWheel => notAlpineWheel,
ownerDatabaseFull => ownerDatabaseFull,
ownerFileFormatOrVolGroupMismatch => ownerFileFormatOrVolGroupMismatch,
ownerRecordFull => ownerRecordFull,
ownerRecordInUse => ownerRecordInUse,
quotaExceeded => quotaExceeded,
regServersUnavailable => regServersUnavailable,
spaceInUseByThisOwner => spaceInUseByThisOwner,
tooManyRNames => tooManyRNames,
totalQuotaExceeded => totalQuotaExceeded,
unwritableProperty => unwritableProperty,
ENDCASE => ERROR
};
LockFailure: PROC [in: CrAE.LockFailure] RETURNS [out: AE.LockFailure] ~ INLINE {
out ← SELECT in FROM
conflict => conflict,
timeout => timeout,
ENDCASE => ERROR
};
UnknownType: PROC [in: CrAE.UnknownType] RETURNS [out: AE.UnknownType] ~ INLINE {
out ← SELECT in FROM
coordinator => coordinator,
fileID => fileID,
openFileID => openFileID,
owner => owner,
transID => transID,
volumeID => volumeID,
volumeGroupID => volumeGroupID,
ENDCASE => ERROR
};
END.