<<>> <> <> <> DIRECTORY IO, Rope ; ProcStream: CEDAR DEFINITIONS ~ { <> <> <> GetProc: TYPE ~ UNSAFE PROC [clientData: REF, offset: CARD, block: IO.UnsafeBlock] RETURNS [nBytesRead: INT, atEnd: BOOL]; <> <> PutProc: TYPE ~ PROC [clientData: REF, offset: CARD, block: IO.UnsafeBlock] RETURNS [nBytesWritten: INT]; <> <> <> CloseProc: TYPE ~ PROC [clientData: REF, abort: BOOL] RETURNS [ok: INT]; <> <> <> GetErrorProc: TYPE ~ PROC [clientData: REF, code: INT] RETURNS [ec: IO.ErrorCode, msg: Rope.ROPE]; <> <<>> PIS: PROC [clientData: REF, get: GetProc, close: CloseProc ¬ NIL, getError: GetErrorProc ¬ NIL, oldStream: IO.STREAM ¬ NIL, canSetIndex: BOOL ¬ TRUE] RETURNS [in: IO.STREAM]; <> <> <> POS: PROC [clientData: REF, put: PutProc, close: CloseProc ¬ NIL, getError: GetErrorProc ¬ NIL, oldStream: IO.STREAM ¬ NIL, canSetIndex: BOOL ¬ TRUE] RETURNS [out: IO.STREAM]; <> <> <> PIOS: PROC [clientData: REF, get: GetProc, put: PutProc, close: CloseProc ¬ NIL, getError: GetErrorProc ¬ NIL, oldStream: IO.STREAM ¬ NIL, canSetIndex: BOOL ¬ TRUE, shared: BOOL ¬ TRUE] RETURNS [inOut: IO.STREAM]; <> <> <> <> GetClientData: PROC [self: IO.STREAM] RETURNS [clientData: REF]; <> GetErrorDetails: PROC [self: IO.STREAM] RETURNS [ec: IO.ErrorCode, code: INT, msg: Rope.ROPE]; <> }.