<> <> <> <> <> DIRECTORY AlpineEnvironment USING[FileID, VolumeID], AlpineInternal USING[FPMFileHandle, LogMapHandle], FileMap, FileMapPrivate USING[FileObject], Rope USING[ROPE]; FileMapObjectImpl: CEDAR MONITOR LOCKS handle USING handle: Handle EXPORTS AlpineInternal, FileMap = BEGIN OPEN AE: AlpineEnvironment, AI: AlpineInternal, FMP: FileMapPrivate; Handle: TYPE = REF FileObject; FileObject: PUBLIC TYPE = FMP.FileObject; <> GetVolumeID: PUBLIC PROCEDURE[handle: Handle] RETURNS [volumeID: AE.VolumeID] = BEGIN -- errors defined in FileMap: none. RETURN[handle.volumeID]; END; <> GetFileID: PUBLIC PROCEDURE[handle: Handle] RETURNS [file: AE.FileID] = BEGIN -- errors defined in FileMap: none. RETURN[handle.fileID]; END; <> GetVolumeIDAndFileID: PUBLIC PROCEDURE[handle: Handle] RETURNS [volumeID:AE.VolumeID, fileID: AE.FileID] = BEGIN -- errors defined in FileMap: none. RETURN[handle.volumeID, handle.fileID]; END; <> GetName: PUBLIC PROC [handle: Handle] RETURNS [Rope.ROPE] ~ { RETURN[handle.name]; }; SetName: PUBLIC PROC [file: Handle, name: Rope.ROPE] ~ { file.name _ name }; SetInterlock: PUBLIC ENTRY PROCEDURE [handle: Handle, new: BOOLEAN] RETURNS [old: BOOLEAN] = BEGIN -- errors defined in FileMap: none. old _ handle.interlock; handle.interlock _ new; END; <> VerifyLogMapHandle: PUBLIC ENTRY PROCEDURE [handle: Handle, proc: PROCEDURE RETURNS [AI.LogMapHandle]] RETURNS [logMapHandle: AI.LogMapHandle] = BEGIN -- errors defined in FileMap: none. ENABLE UNWIND => NULL; IF handle.logMapHandle = NIL THEN handle.logMapHandle _ proc[]; RETURN[handle.logMapHandle]; END; <> VerifyFilePageMgrHandle: PUBLIC ENTRY PROCEDURE[handle: Handle, proc: PROCEDURE RETURNS [AI.FPMFileHandle]] RETURNS [filePageMgrHandle: AI.FPMFileHandle] = BEGIN -- errors defined in FileMap: none. ENABLE UNWIND => NULL; IF handle.fPMFileHandle = NIL THEN handle.fPMFileHandle _ proc[]; RETURN[handle.fPMFileHandle]; END; <> ClearLogMapHandle: PUBLIC ENTRY PROCEDURE [handle: Handle, proc: PROCEDURE RETURNS [AI.LogMapHandle]] = BEGIN -- errors defined in FileMap: none. ENABLE UNWIND => NULL; handle.logMapHandle _ proc[]; END; <> Enter: PUBLIC ENTRY PROCEDURE [handle: Handle, proc: PROCEDURE] = BEGIN -- errors defined in FileMap: none. ENABLE UNWIND => NULL; proc[]; END; END. CHANGE LOG. Initial: Kolling: October 12, 1982 12:13 pm: an impl module for FileMap. <> <> <<>>