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