<> <> <> DIRECTORY FS USING [defaultStreamBufferParms, defaultStreamOptions, ErrorDesc, ExtendFileProc, InitialPosition, Lock, OpenFile, StreamBufferParms, StreamOptions], IO USING [STREAM, UnsafeBlock]; FileStream: CEDAR DEFINITIONS = BEGIN OpenFile: TYPE = FS.OpenFile; STREAM: TYPE = IO.STREAM; <> <> <> <> <> <> StreamFromOpenFile: PROCEDURE [openFile: FS.OpenFile, accessRights: FS.Lock _ $read, initialPosition: FS.InitialPosition _ $start, streamOptions: FS.StreamOptions _ FS.defaultStreamOptions, streamBufferParms: FS.StreamBufferParms _ FS.defaultStreamBufferParms, extendFileProc: FS.ExtendFileProc _ NIL] RETURNS [STREAM]; <> <> <> StreamFromOpenStream: PROCEDURE [self: STREAM] RETURNS [STREAM]; <> <> <> <> GetChar: PROCEDURE [self: STREAM] RETURNS [CHAR]; <> GetBlock: PROCEDURE [self: STREAM, block: REF TEXT, startIndex: NAT, count: NAT] RETURNS [nBytesRead: NAT]; <> UnsafeGetBlock: UNSAFE PROCEDURE [self: STREAM, block: IO.UnsafeBlock] RETURNS [nBytesRead: INT]; <> EndOf: PROCEDURE [self: STREAM] RETURNS [BOOL]; <> CharsAvail: PROCEDURE [self: STREAM, wait: BOOL] RETURNS [INT]; <> Backup: PROCEDURE [self: STREAM, char: CHAR]; <> PutChar: PROCEDURE [self: STREAM, char: CHAR]; <> PutBlock: PROCEDURE [self: STREAM, block: REF READONLY TEXT, startIndex: NAT, count: NAT]; <> UnsafePutBlock: PROCEDURE [self: STREAM, block: IO.UnsafeBlock]; <> Flush: PROCEDURE [self: STREAM]; <> EraseChar: PROCEDURE [self: STREAM, char: CHAR]; <> Reset: PROCEDURE [self: STREAM]; <> Close: PROCEDURE [self: STREAM, abort: BOOL]; <> GetIndex: PROCEDURE [self: STREAM] RETURNS [index: INT]; <> SetIndex: PROCEDURE [self: STREAM, index: INT]; <> GetLength: PROCEDURE [self: STREAM] RETURNS [length: INT]; <> SetLength: PROCEDURE [self: STREAM, length: INT]; <> <> <> <> OpenFileFromStream: PROCEDURE [self: STREAM] RETURNS [FS.OpenFile]; <> <> ErrorFromStream: PROCEDURE [self: STREAM] RETURNS [FS.ErrorDesc]; <> <> <> SaveStreamError: PROCEDURE [self: STREAM, error: FS.ErrorDesc]; <> <> <> SetStreamClassData: PROCEDURE [self: STREAM, data: REF ANY]; <> GetStreamClassData: PROCEDURE [self: STREAM] RETURNS [data: REF ANY]; <> <> <> <> FinalizationProc: TYPE = PROCEDURE [openFile: FS.OpenFile, data: REF ANY, closed: BOOL]; <> SetFinalizationProc: PROCEDURE [self: STREAM, proc: FinalizationProc]; <> GetFinalizationProc: PROCEDURE [self: STREAM] RETURNS [proc: FinalizationProc]; <> <> END.