SUMMARY: MODULE | CLASS | TYPE | PROC | VAR | CONST | DETAIL: TYPE | PROC | VAR | CONST |
IO Msg
Class List | |
Buffer |
Class Summary: Buffer [Detail] | |
+--XML:InputBuffer.Buffer | |
Field Summary | |
chars-: CharArray Character data from input channel. | |
discardable: CharPos The client can define here how many bytes that have been read into the buffer will not be inspected again later, and can therefore be discarded by Buffer.NextBlock. | |
endOfBuffer-: CharPos Number of valid characters in chars. | |
errList-: MsgList Error messages are appended to this list. | |
offsetFromPos0-: CharPos Offset of `chars[0]' from the beginning of the input text. | |
Constructor Summary | |
New(ByteChannel, MsgList): Buffer Creates a new input buffer for reader reader and tries to read the first block of data from it. | |
Method Summary | |
Close() Closes the channel associated with buffer b. | |
EndOfBuffer(CharPos): BOOLEAN Returns TRUE iff character position cpos refers to the position after the last valid byte in the buffer. | |
NextBlock(): BOOLEAN Tries to read additional data from b's channel. |
Type Summary | |
Char = CHAR Character type used to represent the input data. | |
CharArray = POINTER TO ARRAY OF Char Character array of arbitrary length. | |
CharPos = LONGINT Character position for a channel. |
Constant Summary | |
markerEOB This is the character value that is used to mark the first invalid character after the buffer. | |
sizeOfBuffer |
Class Detail: Buffer |
Field Detail |
FIELD chars-: CharArray
Character data from input channel.
FIELD discardable: CharPos
The client can define here how many bytes that have been read into the buffer will not be inspected again later, and can therefore be discarded by Buffer.NextBlock. Possible values for this field are [0..endOfBuffer].
FIELD endOfBuffer-: CharPos
Number of valid characters in chars. All index values in the range [0..endOfBuffer-1] hold valid characters. The value of `chars[endOfBuffer]' is markerEOB.
FIELD errList-: MsgList
Error messages are appended to this list.
FIELD offsetFromPos0-: CharPos
Offset of `chars[0]' from the beginning of the input text.
Constructor Detail |
PROCEDURE New(reader: ByteChannel; errList: MsgList): Buffer RAISES Error;
Creates a new input buffer for reader reader and tries to read the first block of data from it. Returns an initialized input buffer with up to sizeOfBuffer characters of input.
Method Detail |
PROCEDURE (b: Buffer) Close() RAISES Error;
Closes the channel associated with buffer b. Afterwards, no further operations are permitted on b, except for reading the field Buffer.errList.
PROCEDURE (b: Buffer) EndOfBuffer(cpos: CharPos): BOOLEAN
Returns TRUE iff character position cpos refers to the position after the last valid byte in the buffer.
Pre-condition: `0' <= cpos <= `b.endOfBuffer' and `b. chars[cpos] = markerEOB'
PROCEDURE (b: Buffer) NextBlock(): BOOLEAN RAISES Error;
Tries to read additional data from b's channel. If at least one byte could be read, result is TRUE. FALSE means that not a single byte was added to the buffer, either because the end of the file was reached, or because of a read error. In the latter case, an message is added to b's error list.
A call to this buffer may change the fields Buffer.chars, Buffer.offsetFromPos0, and Buffer.endOfBuffer. If part of the buffer is discarded, Buffer.discardable is set to zero.
Type Detail |
TYPE Char = CHAR
Character type used to represent the input data.
TYPE CharArray = POINTER TO ARRAY OF Char
Character array of arbitrary length. This type is used for the character data of the input buffer.
TYPE CharPos = LONGINT
Character position for a channel. The very first byte that would be read from the channel has position 0.
Constant Detail |
CONST markerEOB
This is the character value that is used to mark the first invalid character after the buffer. Use Buffer.EndOfBuffer to determine, whether the character position is indeed the end of the buffer.
CONST sizeOfBuffer