SUMMARY: MODULE | CLASS | TYPE | PROC | VAR | CONST | DETAIL: TYPE | PROC | VAR | CONST |
Standard channels corresponding to the the standard file descriptors `stdin', `stdout', `stderr', and the pseudo channel `/dev/null'.
Standard channels do not have to be opened by a client program since they are already open and ready for use. Under some operating system they may be connected to sources and destinations specified before the program is run, while on a stand-alone system they may be connected to a console terminal.
The standard channels (stdin, stdout, stderr) should never be closed and the values used to identify standard channels should be constant throughout the execution of the program.
Channel Time
Class List | |
NullChannel | |
Writer |
Class Summary: NullChannel [Detail] | |
+---Channel.Channel | +--StdChannels.NullChannel | |
Inherited Fields | |
From Channel.Channel: | |
Method Summary | |
Close() Flushes all buffers associated with ch, closes the channel, and frees all system resources allocated to it. | |
Flush() Flushes all buffers related to this channel. | |
GetModTime(VAR TimeStamp) Retrieves the modification time of the data accessed by the given channel. | |
Length(): LONGINT Result is the number of bytes of data that this channel refers to. | |
NewReader(): Reader Attaches a new reader to the channel ch. | |
NewWriter(): Writer Attaches a new writer to the channel ch. | |
Inherited Methods | |
From Channel.Channel: |
Class Summary: Writer [Detail] | |
+---Channel.Writer | +--StdChannels.Writer | |
Inherited Fields | |
From Channel.Writer: | |
Method Summary | |
Pos(): LONGINT Returns the current writing position associated with the writer w in channel w.base, i.e. | |
SetPos(LONGINT) Sets the writing position to newPos. | |
WriteByte(BYTE) Writes a single byte x to the channel w.base at the writing position associated with w. | |
WriteBytes(ARRAY OF BYTE, LONGINT, LONGINT) Writes n bytes from x, starting at position start, to the channel w.base at the writing position associated with w. | |
Inherited Methods | |
From Channel.Writer: |
Variable Summary | |
null-: NullChannel Null channel. | |
stderr-: Channel Standard error output. | |
stdin-: Channel Standard input. | |
stdout-: Channel Standard output. |
Class Detail: NullChannel |
Method Detail |
PROCEDURE (ch: NullChannel) Close()
Flushes all buffers associated with ch, closes the channel, and frees all system resources allocated to it. This invalidates all riders attached to ch, and they can't be used further. On success, i.e. if all read and write operations (including flush) completed successfully, ch.res is set to done. An opened channel can only be closed once, successive calls of Channel.Close are undefined. Note that unlike the Oberon System all opened channels have to be closed explicitly. Otherwise resources allocated to them will remain blocked.
[Description inherited from Close]
Redefines: Close
PROCEDURE (ch: NullChannel) Flush()
Flushes all buffers related to this channel. Any pending write operations are passed to the underlying OS and all buffers are marked as invalid. The next read operation will get its data directly from the channel instead of the buffer. If a writing error occurs during flushing, the field ch.res will be changed to writeError, otherwise it's assigned done. Note that you have to check the channel's Channel.res flag after an explicit flush yourself, since none of the attached writers will notice any write error in this case.
[Description inherited from Flush]
Redefines: Flush
PROCEDURE (ch: NullChannel) GetModTime(VAR mtime: TimeStamp)
Retrieves the modification time of the data accessed by the given channel. If no such information is avaiblable, ch.res is set to noModTime, otherwise to done.
[Description inherited from GetModTime]
Redefines: GetModTime
PROCEDURE (ch: NullChannel) Length(): LONGINT
Result is the number of bytes of data that this channel refers to. If ch represents a file, then this value is the file's size. If ch has no fixed length (e.g. because it's interactive), the result is noLength.
[Description inherited from Length]
Redefines: Length
PROCEDURE (ch: NullChannel) NewReader(): Reader
Attaches a new reader to the channel ch. It is placed at the very start of the channel, and its Reader.res field is initialized to done. ch.res is set to done on success and the new reader is returned. Otherwise result is NIL and ch.res is changed to indicate the error cause. Note that always the same reader is returned if the channel does not support multiple reading positions.
[Description inherited from NewReader]
Redefines: NewReader
PROCEDURE (ch: NullChannel) NewWriter(): Writer
Attaches a new writer to the channel ch. It is placed at the very start of the channel, and its Writer.res field is initialized to done. ch.res is set to done on success and the new writer is returned. Otherwise result is NIL and ch.res is changed to indicate the error cause. Note that always the same reader is returned if the channel does not support multiple writing positions.
[Description inherited from NewWriter]
Redefines: NewWriter
Class Detail: Writer |
Method Detail |
PROCEDURE (w: Writer) Pos(): LONGINT
Returns the current writing position associated with the writer w in channel w.base, i.e. the index of the first byte that is written by the next call to Writer.WriteByte or Writer.WriteBytes. This procedure will return noPosition if the writer has no concept of a writing position (e.g. if it corresponds to output to terminal), otherwise the result is not negative.
[Description inherited from Pos]
Redefines: Pos
PROCEDURE (w: Writer) SetPos(newPos: LONGINT)
Sets the writing position to newPos. A negative value of newPos or calling this procedure for a writer that doesn't allow positioning will set `w.res' to outOfRange. A value larger than the channel's length is legal, the following write operation will fill the gap between the end of the channel and this position with zero bytes. Calls to this procedure while `w.res # done' will be ignored.
[Description inherited from SetPos]
Redefines: SetPos
PROCEDURE (w: Writer) WriteByte(x: BYTE)
Writes a single byte x to the channel w.base at the writing position associated with w. The writing position is moved forward by one byte on success, otherwise w.res is changed to indicate the error cause. w.bytesWritten will be `1' on success and `0' on failure. Calls to this procedure while `w.res # done' will be ignored.
[Description inherited from WriteByte]
Redefines: WriteByte
PROCEDURE (w: Writer) WriteBytes(x: ARRAY OF BYTE; start: LONGINT; n: LONGINT)
Writes n bytes from x, starting at position start, to the channel w.base at the writing position associated with w. The writing position is moved forward by n bytes on success, otherwise w.res is changed to indicate the error cause. w.bytesWritten will hold the number of bytes that were actually written (being equal to n on success). Calls to this procedure while `w.res # done' will be ignored.
Pre-condition: `(n >= 0) & (0 <= start) & (start+n <= LEN (x))'
[Description inherited from WriteBytes]
Redefines: WriteBytes
Variable Detail |
VAR null-: NullChannel
Null channel. Write only, accepts arbitrary input.
VAR stderr-: Channel
Standard error output.
VAR stdin-: Channel
Standard input.
VAR stdout-: Channel
Standard output.