Section [27.5.1] of the standard describes the requirements and behavior of stream buffer classes. That section (three paragraphs) is reproduced here, for simplicity and accuracy.
charT
array object. The array object represents, at any moment, a (sub)sequence of characters from the sequence. Operations performed on a sequence alter the values stored in these pointers, perform reads and writes directly to or from associated sequences, and alter "the stream position" and conversion state as needed to maintain this subsequence relationship. The three pointers are:charT
array, as described above; otherwise, xbeg and xend shall also be null.
Definition at line 122 of file streambuf.
|
These are standard types. They permit a standardized way of referring to names of (or names dependant on) the template parameters, which are specific to the implementation. Reimplemented in stdio_filebuf, stdio_sync_filebuf, basic_filebuf, and basic_stringbuf. |
|
These are standard types. They permit a standardized way of referring to names of (or names dependant on) the template parameters, which are specific to the implementation. Reimplemented in stdio_filebuf, stdio_sync_filebuf, basic_filebuf, and basic_stringbuf. |
|
These are standard types. They permit a standardized way of referring to names of (or names dependant on) the template parameters, which are specific to the implementation. Reimplemented in stdio_filebuf, stdio_sync_filebuf, basic_filebuf, and basic_stringbuf. |
|
These are standard types. They permit a standardized way of referring to names of (or names dependant on) the template parameters, which are specific to the implementation. Reimplemented in stdio_filebuf, stdio_sync_filebuf, basic_filebuf, and basic_stringbuf. |
|
These are standard types. They permit a standardized way of referring to names of (or names dependant on) the template parameters, which are specific to the implementation. Reimplemented in stdio_filebuf, stdio_sync_filebuf, basic_filebuf, and basic_stringbuf. |
|
Destructor deallocates no buffer space.
|
|
Base constructor. Only called from derived constructors, and sets up all the buffer data to zero, including the pointers described in the basic_streambuf class description. Note that, as a result,
|
|
Access to the get area. These functions are only available to other protected functions, including derived classes.
Definition at line 456 of file streambuf. References basic_streambuf::_M_in_beg. Referenced by basic_filebuf::_M_destroy_pback(), basic_filebuf::imbue(), basic_stringbuf::overflow(), basic_stringbuf::seekoff(), basic_filebuf::seekoff(), basic_stringbuf::seekpos(), basic_streambuf::sputbackc(), basic_filebuf::underflow(), and basic_filebuf::xsgetn(). |
|
Access to the get area. These functions are only available to other protected functions, including derived classes.
Definition at line 462 of file streambuf. References basic_streambuf::_M_in_end. Referenced by basic_filebuf::_M_create_pback(), basic_stringbuf::_M_update_egptr(), basic_streambuf::in_avail(), basic_streambuf::sbumpc(), basic_stringbuf::seekoff(), basic_filebuf::seekoff(), basic_stringbuf::seekpos(), basic_streambuf::sgetc(), basic_filebuf::showmanyc(), basic_streambuf::stossc(), basic_stringbuf::str(), basic_stringbuf::underflow(), basic_filebuf::underflow(), basic_streambuf::xsgetn(), and basic_filebuf::xsgetn(). |
|
Moving the read position.
Definition at line 472 of file streambuf. References basic_streambuf::_M_in_cur. Referenced by basic_stringbuf::pbackfail(), basic_filebuf::pbackfail(), basic_streambuf::sbumpc(), basic_stringbuf::seekoff(), basic_stringbuf::seekpos(), basic_streambuf::sputbackc(), basic_streambuf::stossc(), basic_streambuf::sungetc(), basic_streambuf::uflow(), basic_streambuf::xsgetn(), and basic_filebuf::xsgetn(). |
|
Locale access.
loc is returned. Otherwise the global locale in effect at the time of construction is returned.
Definition at line 219 of file streambuf. References basic_streambuf::_M_buf_locale. |
|
Access to the get area. These functions are only available to other protected functions, including derived classes.
Definition at line 459 of file streambuf. References basic_streambuf::_M_in_cur. Referenced by basic_filebuf::_M_create_pback(), basic_filebuf::_M_destroy_pback(), basic_stringbuf::_M_update_egptr(), basic_streambuf::in_avail(), basic_stringbuf::overflow(), basic_stringbuf::pbackfail(), basic_filebuf::pbackfail(), basic_stringbuf::seekoff(), basic_filebuf::seekoff(), basic_filebuf::showmanyc(), basic_streambuf::sputbackc(), basic_streambuf::sungetc(), basic_streambuf::xsgetn(), and basic_filebuf::xsgetn(). |
|
Changes translations.
Reimplemented in basic_filebuf. Definition at line 550 of file streambuf. Referenced by basic_streambuf::pubimbue(). |
|
Looking ahead into the stream.
showmanyc() .
Definition at line 259 of file streambuf. References basic_streambuf::egptr(), basic_streambuf::gptr(), and basic_streambuf::showmanyc(). |
|
Consumes data from the buffer; writes to the controlled sequence.
eof() .For a formal definiton of this function, see a good text such as Langer & Kreft, or [27.5.2.4.5]/3-7. A functioning output streambuf can be created by overriding only this function (no buffer area will be used).
Reimplemented in stdio_sync_filebuf, basic_filebuf, and basic_stringbuf. Definition at line 741 of file streambuf. Referenced by basic_streambuf::sputc(), and basic_streambuf::xsputn(). |
|
Tries to back up the input sequence.
Reimplemented in stdio_sync_filebuf, basic_filebuf, and basic_stringbuf. Definition at line 698 of file streambuf. Referenced by basic_streambuf::sputbackc(), and basic_streambuf::sungetc(). |
|
Access to the put area. These functions are only available to other protected functions, including derived classes.
Definition at line 503 of file streambuf. References basic_streambuf::_M_out_beg. Referenced by basic_stringbuf::overflow(), basic_filebuf::overflow(), basic_stringbuf::seekoff(), basic_stringbuf::seekpos(), and basic_filebuf::xsputn(). |
|
Moving the write position.
Definition at line 519 of file streambuf. References basic_streambuf::_M_out_cur. Referenced by basic_stringbuf::_M_sync(), basic_filebuf::overflow(), basic_stringbuf::seekoff(), basic_stringbuf::seekpos(), basic_streambuf::sputc(), and basic_streambuf::xsputn(). |
|
Entry point for imbue().
Definition at line 202 of file streambuf. References basic_streambuf::_M_buf_locale, and basic_streambuf::imbue(). |
|
Locale access.
loc is returned. Otherwise the global locale in effect at the time of construction is returned.
Definition at line 236 of file streambuf. References basic_streambuf::seekoff(). |
|
Locale access.
loc is returned. Otherwise the global locale in effect at the time of construction is returned.
Definition at line 241 of file streambuf. References basic_streambuf::seekpos(). |
|
Entry points for derived buffer functions.
The public versions of Definition at line 232 of file streambuf. References basic_streambuf::setbuf(). |
|
Locale access.
loc is returned. Otherwise the global locale in effect at the time of construction is returned.
Definition at line 246 of file streambuf. References basic_streambuf::sync(). Referenced by basic_istream::sync(). |
|
Getting the next character.
uflow() .
Definition at line 291 of file streambuf. References basic_streambuf::egptr(), basic_streambuf::gbump(), and basic_streambuf::uflow(). Referenced by basic_istream::getline(), basic_istream::ignore(), istreambuf_iterator::operator++(), and std::operator>>(). |
|
Alters the stream positions. Each derived class provides its own appropriate behavior.
Definition at line 576 of file streambuf. Referenced by basic_streambuf::pubseekoff(). |
|
Alters the stream positions. Each derived class provides its own appropriate behavior.
Definition at line 588 of file streambuf. Referenced by basic_streambuf::pubseekpos(). |
|
Maniuplates the buffer. Each derived class provides its own appropriate behavior. See the next-to-last paragraph of http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html#2 for more on this function.
Reimplemented in basic_filebuf, and basic_stringbuf. Definition at line 565 of file streambuf. Referenced by basic_streambuf::pubsetbuf(). |
|
Setting the three read area pointers.
Definition at line 483 of file streambuf. References basic_streambuf::_M_in_beg, basic_streambuf::_M_in_cur, and basic_streambuf::_M_in_end. Referenced by basic_filebuf::_M_create_pback(), basic_filebuf::_M_destroy_pback(), basic_filebuf::_M_set_buffer(), basic_stringbuf::_M_sync(), and basic_stringbuf::_M_update_egptr(). |
|
Setting the three write area pointers.
Definition at line 529 of file streambuf. References basic_streambuf::_M_out_beg, basic_streambuf::_M_out_cur, and basic_streambuf::_M_out_end. Referenced by basic_filebuf::_M_set_buffer(), and basic_stringbuf::_M_sync(). |
|
Getting the next character.
underflow() . Does not move the read position after fetching the character.
Definition at line 313 of file streambuf. References basic_streambuf::egptr(), and basic_streambuf::underflow(). Referenced by std::__copy_streambufs(), basic_istream::get(), basic_istream::getline(), basic_istream::ignore(), basic_istream::sentry::sentry(), and basic_streambuf::snextc(). |
|
Entry point for xsgetn.
Definition at line 332 of file streambuf. References basic_streambuf::xsgetn(). |
|
Investigating the data available.
underflow() will not return traits::eof() until at least that number of characters have been supplied. If showmanyc() returns -1, then calls to underflow() or uflow() will fail." [27.5.2.4.3]/1
Reimplemented in basic_filebuf. Definition at line 623 of file streambuf. Referenced by basic_streambuf::in_avail(). |
|
Getting the next character.
sbumpc() , and if that function returns traits::eof() , so does this function. Otherwise, sgetc() .
Definition at line 273 of file streambuf. References basic_streambuf::sgetc(). Referenced by std::__copy_streambufs(), basic_istream::get(), basic_istream::getline(), basic_istream::ignore(), and basic_istream::sentry::sentry(). |
|
Pushing characters back into the input stream.
Definition at line 346 of file streambuf. References basic_streambuf::eback(), basic_streambuf::gbump(), basic_streambuf::gptr(), and basic_streambuf::pbackfail(). Referenced by std::operator>>(), and basic_istream::putback(). |
|
Entry point for all single-character output functions.
If a write position is available for the output sequence (i.e., the buffer is not full), stores c in that position, increments the position, and returns Definition at line 398 of file streambuf. References basic_streambuf::epptr(), basic_streambuf::overflow(), basic_streambuf::pbump(), and basic_streambuf::pptr(). Referenced by std::__copy_streambufs(), basic_istream::get(), ostreambuf_iterator::operator=(), and basic_stringbuf::overflow(). |
|
Entry point for all single-character output functions.
Returns xsputn(s,n). The effect is to write s[0] through s[n-1] to the output sequence, if possible. Definition at line 424 of file streambuf. References basic_streambuf::xsputn(). |
|
Tosses a character. Advances the read pointer, ignoring the character that would have been read. See http://gcc.gnu.org/ml/libstdc++/2002-05/msg00168.html
Definition at line 760 of file streambuf. References basic_streambuf::egptr(), basic_streambuf::gbump(), and basic_streambuf::uflow(). |
|
Moving backwards in the input stream.
Definition at line 371 of file streambuf. References basic_streambuf::gbump(), basic_streambuf::gptr(), and basic_streambuf::pbackfail(). Referenced by basic_istream::unget(). |
|
Synchronizes the buffer arrays with the controlled sequences.
Reimplemented in stdio_sync_filebuf, and basic_filebuf. Definition at line 601 of file streambuf. Referenced by basic_streambuf::pubsync(). |
|
Fetches more data from the controlled sequence.
underflow() , and in fact is required to call that function. It also returns the new character, like underflow() does. However, this function also moves the read position forward by one.
Reimplemented in stdio_sync_filebuf. Definition at line 674 of file streambuf. References basic_streambuf::gbump(). Referenced by basic_streambuf::sbumpc(), basic_streambuf::stossc(), and basic_streambuf::xsgetn(). |
|
Fetches more data from the controlled sequence.
traits::eof() to indicate a null pending sequence.For a formal definiton of the pending sequence, see a good text such as Langer & Kreft, or [27.5.2.4.3]/7-14. A functioning input streambuf can be created by overriding only this function (no buffer area will be used). For an example, see http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html#6
Reimplemented in stdio_sync_filebuf, basic_filebuf, and basic_stringbuf. Definition at line 661 of file streambuf. Referenced by basic_streambuf::sgetc(). |
|
Multiple character extraction.
sbumpc() . Stops when either n characters have been copied, or when traits::eof() would be copied.It is expected that derived classes provide a more efficient implementation by overriding this definition. Reimplemented in stdio_sync_filebuf, and basic_filebuf. Definition at line 50 of file streambuf.tcc. References std::copy(), basic_streambuf::egptr(), basic_streambuf::gbump(), basic_streambuf::gptr(), std::min(), and basic_streambuf::uflow(). Referenced by basic_streambuf::sgetn(), and basic_filebuf::xsgetn(). |
|
Multiple character insertion.
sputc() . Stops when either n characters have been copied, or when sputc() would return traits::eof() .It is expected that derived classes provide a more efficient implementation by overriding this definition. Reimplemented in stdio_sync_filebuf, and basic_filebuf. Definition at line 84 of file streambuf.tcc. References std::copy(), basic_streambuf::epptr(), std::min(), basic_streambuf::overflow(), basic_streambuf::pbump(), and basic_streambuf::pptr(). Referenced by basic_streambuf::sputn(), and basic_filebuf::xsputn(). |
|
Locale access.
loc is returned. Otherwise the global locale in effect at the time of construction is returned.
Definition at line 185 of file streambuf. Referenced by basic_filebuf::basic_filebuf(), basic_streambuf::getloc(), and basic_streambuf::pubimbue(). |
|
Locale access.
loc is returned. Otherwise the global locale in effect at the time of construction is returned.
Definition at line 173 of file streambuf. Referenced by basic_streambuf::eback(), and basic_streambuf::setg(). |
|
Locale access.
loc is returned. Otherwise the global locale in effect at the time of construction is returned.
Definition at line 174 of file streambuf. Referenced by basic_streambuf::gbump(), basic_streambuf::gptr(), and basic_streambuf::setg(). |
|
Locale access.
loc is returned. Otherwise the global locale in effect at the time of construction is returned.
Definition at line 175 of file streambuf. Referenced by basic_streambuf::egptr(), and basic_streambuf::setg(). |
|
Locale access.
loc is returned. Otherwise the global locale in effect at the time of construction is returned.
Definition at line 176 of file streambuf. Referenced by basic_streambuf::pbase(), and basic_streambuf::setp(). |
|
Locale access.
loc is returned. Otherwise the global locale in effect at the time of construction is returned.
Definition at line 177 of file streambuf. Referenced by basic_streambuf::pbump(), basic_streambuf::pptr(), and basic_streambuf::setp(). |
|
Locale access.
loc is returned. Otherwise the global locale in effect at the time of construction is returned.
Definition at line 178 of file streambuf. Referenced by basic_streambuf::epptr(), and basic_streambuf::setp(). |