Go to the documentation of this file.
33 #ifndef _GLIBXX_STREAMBUF
34 #define _GLIBXX_STREAMBUF 1
36 #pragma GCC system_header
45 namespace std _GLIBCXX_VISIBILITY(default)
47 _GLIBCXX_BEGIN_NAMESPACE_VERSION
49 #define _IsUnused __attribute__ ((__unused__))
51 template<
typename _CharT,
typename _Traits>
53 __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*,
54 basic_streambuf<_CharT, _Traits>*,
bool&);
121 template<
typename _CharT,
typename _Traits>
122 class basic_streambuf
132 typedef _Traits traits_type;
133 typedef typename traits_type::int_type int_type;
134 typedef typename traits_type::pos_type pos_type;
135 typedef typename traits_type::off_type off_type;
152 template<
bool _IsMove,
typename _CharT2>
153 friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
158 template<
typename _CharT2>
159 friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
164 template<
typename _CharT2,
typename _Distance>
165 friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
169 template<
typename _CharT2,
typename _Traits2>
173 template<
typename _CharT2,
typename _Traits2,
typename _Alloc>
178 template<
typename _CharT2,
typename _Traits2,
typename _Alloc>
247 {
return this->
setbuf(__s, __n); }
260 {
return this->
seekoff(__off, __way, __mode); }
272 {
return this->
seekpos(__sp, __mode); }
293 const streamsize __ret = this->egptr() - this->gptr();
294 return __ret ? __ret : this->
showmanyc();
307 int_type __ret = traits_type::eof();
308 if (__builtin_expect(!traits_type::eq_int_type(this->
sbumpc(),
310 __ret = this->
sgetc();
326 if (__builtin_expect(this->gptr() < this->egptr(),
true))
328 __ret = traits_type::to_int_type(*this->gptr());
332 __ret = this->
uflow();
348 if (__builtin_expect(this->gptr() < this->egptr(),
true))
349 __ret = traits_type::to_int_type(*this->gptr());
365 {
return this->
xsgetn(__s, __n); }
382 const bool __testpos = this->
eback() < this->gptr();
383 if (__builtin_expect(!__testpos ||
384 !traits_type::eq(__c, this->gptr()[-1]),
false))
385 __ret = this->
pbackfail(traits_type::to_int_type(__c));
389 __ret = traits_type::to_int_type(*this->gptr());
407 if (__builtin_expect(this->
eback() < this->gptr(),
true))
410 __ret = traits_type::to_int_type(*this->gptr());
434 if (__builtin_expect(this->pptr() < this->epptr(),
true))
438 __ret = traits_type::to_int_type(__c);
441 __ret = this->
overflow(traits_type::to_int_type(__c));
458 {
return this->
xsputn(__s, __n); }
611 {
return pos_type(off_type(-1)); }
623 {
return pos_type(off_type(-1)); }
695 {
return traits_type::eof(); }
709 int_type __ret = traits_type::eof();
710 const bool __testeof = traits_type::eq_int_type(this->
underflow(),
714 __ret = traits_type::to_int_type(*this->gptr());
732 {
return traits_type::eof(); }
775 overflow(int_type __c _IsUnused = traits_type::eof())
776 {
return traits_type::eof(); }
778 #if _GLIBCXX_USE_DEPRECATED && __cplusplus <= 201402L
789 #if __cplusplus >= 201103L
790 [[__deprecated__(
"stossc is deprecated, use sbumpc instead")]]
795 if (this->gptr() < this->egptr())
809 #if __cplusplus < 201103L
819 #if __cplusplus >= 201103L
834 #if __cplusplus >= 201103L
835 template<
typename _CharT,
typename _Traits>
839 template<
typename _CharT,
typename _Traits>
842 operator=(
const basic_streambuf&) =
default;
848 __copy_streambufs_eof(basic_streambuf<char>* __sbin,
849 basic_streambuf<char>* __sbout,
bool& __ineof);
850 #ifdef _GLIBCXX_USE_WCHAR_T
853 __copy_streambufs_eof(basic_streambuf<wchar_t>* __sbin,
854 basic_streambuf<wchar_t>* __sbout,
bool& __ineof);
859 _GLIBCXX_END_NAMESPACE_VERSION
void setg(char_type *__gbeg, char_type *__gnext, char_type *__gend)
Setting the three read area pointers.
char_type * _M_out_beg
Start of put area.
locale getloc() const
Locale access.
static const openmode in
Open for input. Default for ifstream and fstream.
basic_streambuf * pubsetbuf(char_type *__s, streamsize __n)
Entry points for derived buffer functions.
int_type snextc()
Getting the next character.
locale _M_buf_locale
Current locale setting.
char_type * _M_in_end
End of get area.
int pubsync()
Calls virtual sync function.
pos_type pubseekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode=ios_base::in|ios_base::out)
Alters the stream position.
char_type * _M_in_cur
Current read area.
int_type sputbackc(char_type __c)
Pushing characters back into the input stream.
basic_istream< _CharT, _Traits > & getline(basic_istream< _CharT, _Traits > &__is, basic_string< _CharT, _Traits, _Alloc > &__str, _CharT __delim)
Read a line from stream into a string.
ISO C++ entities toplevel namespace is std.
int_type sungetc()
Moving backwards in the input stream.
Template class basic_ostream.
Container class for localization functionality.
virtual int_type pbackfail(int_type __c=traits_type::eof())
Tries to back up the input sequence.
char_type * pbase() const
Access to the put area.
Template class basic_ios, virtual base class for all stream classes.
virtual streamsize xsgetn(char_type *__s, streamsize __n)
Multiple character extraction.
int_type sgetc()
Getting the next character.
streamsize sputn(const char_type *__s, streamsize __n)
Entry point for all single-character output functions.
virtual int sync()
Synchronizes the buffer arrays with the controlled sequences.
virtual int_type underflow()
Fetches more data from the controlled sequence.
virtual pos_type seekoff(off_type, ios_base::seekdir, ios_base::openmode=ios_base::in|ios_base::out)
Alters the stream positions.
virtual void imbue(const locale &__loc)
Changes translations.
constexpr void advance(_InputIterator &__i, _Distance __n)
A generalization of pointer arithmetic.
ptrdiff_t streamsize
Integral type for I/O operation counts and buffer sizes.
virtual int_type overflow(int_type __c=traits_type::eof())
Consumes data from the buffer; writes to the controlled sequence.
char_type * _M_out_end
End of put area.
pos_type pubseekpos(pos_type __sp, ios_base::openmode __mode=ios_base::in|ios_base::out)
Alters the stream position.
void pbump(int __n)
Moving the write position.
streamsize sgetn(char_type *__s, streamsize __n)
Entry point for xsgetn.
int_type sputc(char_type __c)
Entry point for all single-character output functions.
virtual pos_type seekpos(pos_type, ios_base::openmode=ios_base::in|ios_base::out)
Alters the stream positions.
Template class basic_istream.
std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, bitset< _Nb > &__x)
Global I/O operators for bitsets.
Provides input iterator semantics for streambufs.
basic_streambuf< char_type, traits_type > __streambuf_type
This is a non-standard type.
char_type * _M_out_cur
Current put area.
The actual work of input and output (interface).
Managing sequences of characters and character-like objects.
char_type * eback() const
Access to the get area.
void setp(char_type *__pbeg, char_type *__pend)
Setting the three write area pointers.
locale pubimbue(const locale &__loc)
Entry point for imbue().
basic_streambuf()
Base constructor.
int_type sbumpc()
Getting the next character.
void gbump(int __n)
Moving the read position.
virtual streamsize xsputn(const char_type *__s, streamsize __n)
Multiple character insertion.
virtual int_type uflow()
Fetches more data from the controlled sequence.
virtual streamsize showmanyc()
Investigating the data available.
static const openmode out
Open for output. Default for ofstream and fstream.
Provides output iterator semantics for streambufs.
char_type * _M_in_beg
Start of get area.
virtual basic_streambuf< char_type, _Traits > * setbuf(char_type *, streamsize)
Manipulates the buffer.
streamsize in_avail()
Looking ahead into the stream.
virtual ~basic_streambuf()
Destructor deallocates no buffer space.