-- AlpineEnvironmentP2201V1.Mesa
	-- Copyright (C) 1986 by Xerox Corporation.  All rights reserved.
	-- Generated by CHauser.pa at November 16, 1987 5:11:01 pm PST
	--  using Sirocco [2.0] of January 31, 1987 1:52:42 am PST
	
DIRECTORY
	CrRPC,
	TimeP15V2,
	Rope;

AlpineEnvironmentP2201V1: CEDAR DEFINITIONS ~ {
	
	ROPE: TYPE ~ Rope.ROPE;
	
	
	nullOpenFileID: CARD32 ~ 0;

	OperationFailure: TYPE ~ MACHINE DEPENDENT { busy(0), damagedLeaderPage(1), duplicateOwner(2), duplicateVolumeGroup(3), duplicateVolume(4), inconsistentDescriptor(5), volumeFragmented(6), insufficientSpace(7), nonexistentFilePage(8), notAlpineWheel(9), ownerDatabaseFull(10), ownerFileFormatOrVolGroupMismatch(11), ownerRecordFull(12), ownerRecordInUse(13), quotaExceeded(14), regServersUnavailable(15), spaceInUseByThisOwner(16), tooManyRNames(17), totalQuotaExceeded(18), unwritableProperty(19)};

	VolumeIDs: TYPE ~ REF VolumeIDsObject;
	VolumeIDsObject: TYPE ~ MACHINE DEPENDENT RECORD [
		body: PACKED SEQUENCE length: CARDINAL OF VolumeID
		];

	CommitOrAbort: TYPE ~ MACHINE DEPENDENT { abort(0), commit(1)};

	LockFailure: TYPE ~ MACHINE DEPENDENT { conflict(0), timeout(1)};

	maxPagesPerFile: INT32 ~ 2147483647;

	VolOrVolGroupID: TYPE ~ ARRAY [0..5) OF CARD16;

	AccessRights: TYPE ~ MACHINE DEPENDENT { readOnly(0), readWrite(1)};

	PropertySet: TYPE ~ ARRAY [0..8) OF BOOLEAN;

	VolumeID: TYPE ~ RECORD [
		vgid: VolOrVolGroupID];

	ConflictResolution: TYPE ~ MACHINE DEPENDENT { wait(0), fail(1)};

	GMT: TYPE ~ CARD32;

	UniversalFile: TYPE ~ RECORD [
		volumeID: VolumeID,
		fileID: FileID];

	nullTransIDRep: TransID ~ [0, 0, 0, 0, 0, 0, 0, 0, 0];

	LockMode: TYPE ~ MACHINE DEPENDENT { none(0), read(1), update(2), write(3), readIntendUpdate(4), readIntendWrite(5), intendRead(6), intendUpdate(7), intendWrite(8)};

	Principal: TYPE ~ ROPE;

	nullVolumeGroupID: VolumeGroupID ~ [vgid~[0, 0, 0, 0, 0]];

	RecoveryOption: TYPE ~ MACHINE DEPENDENT { log(0), noLog(1)};

	AccessList: TYPE ~ REF AccessListObject;
	AccessListObject: TYPE ~ MACHINE DEPENDENT RECORD [
		body: PACKED SEQUENCE length: CARDINAL OF ROPE
		];

	Outcome: TYPE ~ MACHINE DEPENDENT { abort(0), commit(1), unknown(2)};

	allOwnerProperties: OwnerPropertySet ~ [TRUE, TRUE, TRUE, TRUE, TRUE];

	OwnerPropertyValuePair: TYPE ~ REF OwnerPropertyValuePairObject;
	OwnerPropertyValuePairObject: TYPE ~ RECORD [
		SELECT type: OwnerProperty FROM
			createAccessList => [createAccessList: AccessList],
			modifyAccessList => [modifyAccessList: AccessList],
			quota => [quota: INT32],
			spaceInUse => [spaceInUse: INT32],
			rootFile => [rootFile: UniversalFile]
			ENDCASE
		];

	nullRootFile: UniversalFile ~ [volumeID~[vgid~[0, 0, 0, 0, 0]], fileID~[id~[0, 0], da~[0, 0]]];

	UnknownType: TYPE ~ MACHINE DEPENDENT { coordinator(0), fileID(1), openFileID(2), owner(3), transID(4), volumeID(5), volumeGroupID(6)};

	FileID: TYPE ~ RECORD [
		id: FID,
		da: DA];

	ByteCount: TYPE ~ INT32;

	NeededAccess: TYPE ~ MACHINE DEPENDENT { alpineWheel(0), fileModify(1), fileRead(2), handleReadWrite(3), ownerCreate(4), ownerEntry(5), spaceQuota(6)};

	PageCount: TYPE ~ INT32;

	OpenFileID: TYPE ~ CARD32;

	PageNumber: TYPE ~ INT32;

	Property: TYPE ~ MACHINE DEPENDENT { byteLength(0), createTime(1), highWaterMark(2), modifyAccess(3), owner(4), readAccess(5), stringName(6), version(7)};

	RName: TYPE ~ ROPE;

	nullVolumeID: VolumeID ~ [vgid~[0, 0, 0, 0, 0]];

	VolumeGroupID: TYPE ~ RECORD [
		vgid: VolOrVolGroupID];

	maxStringNameChars: CARD16 ~ 100;

	TransID: TYPE ~ ARRAY [0..9) OF CARD16;

	OwnerName: TYPE ~ ROPE;

	FileVersion: TYPE ~ INT32;

	FalseBool: TYPE ~ BOOLEAN;

	Properties: TYPE ~ REF PropertiesObject;
	PropertiesObject: TYPE ~ MACHINE DEPENDENT RECORD [
		body: PACKED SEQUENCE length: CARDINAL OF PropertyValuePair
		];

	FileStore: TYPE ~ ROPE;

	PropertyValuePair: TYPE ~ REF PropertyValuePairObject;
	PropertyValuePairObject: TYPE ~ RECORD [
		SELECT type: Property FROM
			byteLength => [byteLength: INT32],
			createTime => [createTime: CARD32],
			highWaterMark => [highWaterMark: INT32],
			modifyAccess => [modifyAccess: AccessList],
			owner => [owner: ROPE],
			readAccess => [readAccess: AccessList],
			stringName => [stringName: ROPE],
			version => [version: INT32]
			ENDCASE
		];

	wordsPerPage: CARD16 ~ 256;

	WorkerState: TYPE ~ MACHINE DEPENDENT { notReady(0), readOnlyReady(1), ready(2)};

	DA: TYPE ~ ARRAY [0..2) OF CARD16;

	logWordsPerPage: CARD16 ~ 8;

	bytesPerPage: CARD16 ~ 512;

	OwnerProperty: TYPE ~ MACHINE DEPENDENT { createAccessList(0), modifyAccessList(1), quota(2), spaceInUse(3), rootFile(4)};

	FID: TYPE ~ ARRAY [0..2) OF CARD16;

	nullUniversalFile: UniversalFile ~ [volumeID~[vgid~[0, 0, 0, 0, 0]], fileID~[id~[0, 0], da~[0, 0]]];

	nullTransID: TransID ~ [0, 0, 0, 0, 0, 0, 0, 0, 0];

	LockOption: TYPE ~ RECORD [
		mode: LockMode,
		ifConflict: ConflictResolution];

	logBytesPerPage: CARD16 ~ 9;

	OwnerProperties: TYPE ~ REF OwnerPropertiesObject;
	OwnerPropertiesObject: TYPE ~ MACHINE DEPENDENT RECORD [
		body: PACKED SEQUENCE length: CARDINAL OF OwnerPropertyValuePair
		];

	OwnerPropertySet: TYPE ~ ARRAY [0..5) OF BOOLEAN;

	nullFileID: FileID ~ [id~[0, 0], da~[0, 0]];

	ReferencePattern: TYPE ~ MACHINE DEPENDENT { random(0), sequential(1)};

	PageRun: TYPE ~ RECORD [
		firstPage: INT32,
		count: CARD16];

}...