1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
The following overview shows which members are called by which em(stream)
read/write/seek requests:
itemization(
itt(seek) requests tt(seekg, seekp) call tt(seekoff). The member
tt(streambuf::seekpos) is maybe also called, but in practice
tt(seekpos) calls tt(seekoff);
itt(get) calls tt(underflow) if there's no (or an exhausted) read
buffer. Otherwise it returns the character at tt(gptr()), incrementing
its position;
itt(>>) calls tt(underflow) if there's no (or an exhausted) read
buffer. Otherwise if white-space characters are ignored (which is the
default) all white-space characters are skipped and the stream reads
the matching bytes from the read buffer, refreshing the buffer when
needed;
itt(read) calls tt(xsgetn) (which itself calls tt(underflow)) if there's
no or an exhausted read buffer, and tries to read the requested number
of characters from the device;
itt(rdbuf()) is used to insert the device's content from its current
offset position. It calls tt(underflow) and reads all the buffer's
characters until tt(underflow) returns bf(EOF).
itt(put) calls tt(overflow) if there's no (or a filled up) write
buffer. Otherwise it returns the character at tt(pptr()), incrementing
its position;
itt(<<) calls tt(overflow) if there's no (or a filled up) write
buffer. Otherwise the argument may be converted to characters (like
when insterting an tt(int) value) and the resulting characters are
inserted into the device, refreshing the buffer when needed;
itt(write) calls tt(xsputn) (which itself calls tt(overflow)) if there's
no or a filled up wrte buffer, and tries to write the requested number
of characters to the device.
)
|