<> <> <> <<>> <<>> DIRECTORY BasicTime USING [GMT], Camelot USING [tidT], File USING [wordsPerPage], FileStream USING [StreamFromOpenFile], FS USING [FileType, Lock, OpenFile, tUnspecified], FSBackdoor USING [CreateProcsOpenFile, CreateFileProcs, FileProcs], IO USING [STREAM], PBasics USING [bytesPerWord, Move, Word], Rope USING [ROPE], YggBuffMan USING [ReadPages, WritePages, VMPageSet], YggDID USING [], YggFile USING [FileHandle, Info, SetByteSize, SetSize, WordsForPages], YggFileStream USING [], YggFileInternal USING [FileHandleRep], YggInternal USING [FileHandle]; YggFileStreamImpl: CEDAR PROGRAM IMPORTS FileStream, FSBackdoor, PBasics, YggBuffMan, YggFile EXPORTS YggFile, YggFileStream, YggInternal ~ BEGIN ROPE: TYPE ~ Rope.ROPE; FileProcs: REF FSBackdoor.FileProcs; FileHandle: TYPE = YggInternal.FileHandle; FileHandleRep: PUBLIC TYPE = YggFileInternal.FileHandleRep; FileDataRep: TYPE = RECORD [ openFile: YggFile.FileHandle, tid: Camelot.tidT ]; wordsPerPage: INT _ 1024; bytesPerPage: INT _ wordsPerPage * PBasics.bytesPerWord; unitsPerPage: INT _ wordsPerPage * UNITS[PBasics.Word]; fileBytesPerPage: INT _ File.wordsPerPage * BYTES[WORD]; filePagesPerMyPage: INT _ bytesPerPage/fileBytesPerPage; <> FileFromComponentFiles: PUBLIC PROC [componentFiles: LIST OF FileHandle, fileUse: ATOM] RETURNS [file: FileHandle _ NIL] ~ { <