35 #define _ISTREAM_TCC 1 
   37 #pragma GCC system_header 
   41 namespace std _GLIBCXX_VISIBILITY(default)
 
   43 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   45   template<
typename _CharT, 
typename _Traits>
 
   56           const __int_type __eof = traits_type::eof();
 
   58           __int_type __c = __sb->
sgetc();
 
   61           while (!traits_type::eq_int_type(__c, __eof)
 
   62              && __ct.
is(ctype_base::space, 
 
   63                 traits_type::to_char_type(__c)))
 
   69           if (traits_type::eq_int_type(__c, __eof))
 
   83   template<
typename _CharT, 
typename _Traits>
 
   84     template<
typename _ValueT>
 
   89     sentry __cerb(*
this, 
false);
 
   96         __ng.
get(*
this, 0, *
this, __err, __v);
 
  101         __throw_exception_again;
 
  111   template<
typename _CharT, 
typename _Traits>
 
  112     basic_istream<_CharT, _Traits>&
 
  118       sentry __cerb(*
this, 
false);
 
  126           __ng.
get(*
this, 0, *
this, __err, __l);
 
  130           if (__l < __gnu_cxx::__numeric_traits<short>::__min)
 
  133           __n = __gnu_cxx::__numeric_traits<short>::__min;
 
  135           else if (__l > __gnu_cxx::__numeric_traits<short>::__max)
 
  138           __n = __gnu_cxx::__numeric_traits<short>::__max;
 
  146           __throw_exception_again;
 
  156   template<
typename _CharT, 
typename _Traits>
 
  163       sentry __cerb(*
this, 
false);
 
  171           __ng.
get(*
this, 0, *
this, __err, __l);
 
  175           if (__l < __gnu_cxx::__numeric_traits<int>::__min)
 
  178           __n = __gnu_cxx::__numeric_traits<int>::__min;
 
  180           else if (__l > __gnu_cxx::__numeric_traits<int>::__max)
 
  183           __n = __gnu_cxx::__numeric_traits<int>::__max;
 
  191           __throw_exception_again;
 
  201   template<
typename _CharT, 
typename _Traits>
 
  207       sentry __cerb(*
this, 
false);
 
  208       if (__cerb && __sbout)
 
  213           if (!__copy_streambufs_eof(this->
rdbuf(), __sbout, __ineof))
 
  221           __throw_exception_again;
 
  233   template<
typename _CharT, 
typename _Traits>
 
  234     typename basic_istream<_CharT, _Traits>::int_type
 
  238       const int_type __eof = traits_type::eof();
 
  239       int_type __c = __eof;
 
  242       sentry __cerb(*
this, 
true);
 
  247           __c = this->
rdbuf()->sbumpc();
 
  249           if (!traits_type::eq_int_type(__c, __eof))
 
  257           __throw_exception_again;
 
  269   template<
typename _CharT, 
typename _Traits>
 
  276       sentry __cerb(*
this, 
true);
 
  281           const int_type __cb = this->
rdbuf()->sbumpc();
 
  283           if (!traits_type::eq_int_type(__cb, traits_type::eof()))
 
  286           __c = traits_type::to_char_type(__cb);
 
  294           __throw_exception_again;
 
  306   template<
typename _CharT, 
typename _Traits>
 
  313       sentry __cerb(*
this, 
true);
 
  318           const int_type __idelim = traits_type::to_int_type(__delim);
 
  319           const int_type __eof = traits_type::eof();
 
  321           int_type __c = __sb->
sgetc();
 
  324              && !traits_type::eq_int_type(__c, __eof)
 
  325              && !traits_type::eq_int_type(__c, __idelim))
 
  327           *__s++ = traits_type::to_char_type(__c);
 
  331           if (traits_type::eq_int_type(__c, __eof))
 
  337           __throw_exception_again;
 
  353   template<
typename _CharT, 
typename _Traits>
 
  360       sentry __cerb(*
this, 
true);
 
  365           const int_type __idelim = traits_type::to_int_type(__delim);
 
  366           const int_type __eof = traits_type::eof();
 
  368           int_type __c = __this_sb->
sgetc();
 
  369           char_type __c2 = traits_type::to_char_type(__c);
 
  371           while (!traits_type::eq_int_type(__c, __eof)
 
  372              && !traits_type::eq_int_type(__c, __idelim)
 
  373              && !traits_type::eq_int_type(__sb.
sputc(__c2), __eof))
 
  376           __c = __this_sb->
snextc();
 
  377           __c2 = traits_type::to_char_type(__c);
 
  379           if (traits_type::eq_int_type(__c, __eof))
 
  385           __throw_exception_again;
 
  397   template<
typename _CharT, 
typename _Traits>
 
  404       sentry __cerb(*
this, 
true);
 
  409               const int_type __idelim = traits_type::to_int_type(__delim);
 
  410               const int_type __eof = traits_type::eof();
 
  412               int_type __c = __sb->
sgetc();
 
  415                      && !traits_type::eq_int_type(__c, __eof)
 
  416                      && !traits_type::eq_int_type(__c, __idelim))
 
  418                   *__s++ = traits_type::to_char_type(__c);
 
  422               if (traits_type::eq_int_type(__c, __eof))
 
  426                   if (traits_type::eq_int_type(__c, __idelim))
 
  438           __throw_exception_again;
 
  457   template<
typename _CharT, 
typename _Traits>
 
  463       sentry __cerb(*
this, 
true);
 
  469           const int_type __eof = traits_type::eof();
 
  472           if (traits_type::eq_int_type(__sb->
sbumpc(), __eof))
 
  480           __throw_exception_again;
 
  490   template<
typename _CharT, 
typename _Traits>
 
  496       sentry __cerb(*
this, 
true);
 
  497       if (__cerb && __n > 0)
 
  502               const int_type __eof = traits_type::eof();
 
  504               int_type __c = __sb->
sgetc();
 
  513           bool __large_ignore = 
false;
 
  517              && !traits_type::eq_int_type(__c, __eof))
 
  522           if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
 
  523               && !traits_type::eq_int_type(__c, __eof))
 
  526             __gnu_cxx::__numeric_traits<streamsize>::__min;
 
  527               __large_ignore = 
true;
 
  534         _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
 
  536           if (traits_type::eq_int_type(__c, __eof))
 
  542           __throw_exception_again;
 
  552   template<
typename _CharT, 
typename _Traits>
 
  558       sentry __cerb(*
this, 
true);
 
  559       if (__cerb && __n > 0)
 
  564               const int_type __eof = traits_type::eof();
 
  566               int_type __c = __sb->
sgetc();
 
  569           bool __large_ignore = 
false;
 
  573              && !traits_type::eq_int_type(__c, __eof)
 
  574              && !traits_type::eq_int_type(__c, __delim))
 
  579           if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
 
  580               && !traits_type::eq_int_type(__c, __eof)
 
  581               && !traits_type::eq_int_type(__c, __delim))
 
  584             __gnu_cxx::__numeric_traits<streamsize>::__min;
 
  585               __large_ignore = 
true;
 
  592         _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
 
  594               if (traits_type::eq_int_type(__c, __eof))
 
  596           else if (traits_type::eq_int_type(__c, __delim))
 
  599               < __gnu_cxx::__numeric_traits<streamsize>::__max)
 
  607           __throw_exception_again;
 
  617   template<
typename _CharT, 
typename _Traits>
 
  618     typename basic_istream<_CharT, _Traits>::int_type
 
  622       int_type __c = traits_type::eof();
 
  624       sentry __cerb(*
this, 
true);
 
  630           __c = this->
rdbuf()->sgetc();
 
  631           if (traits_type::eq_int_type(__c, traits_type::eof()))
 
  637           __throw_exception_again;
 
  647   template<
typename _CharT, 
typename _Traits>
 
  653       sentry __cerb(*
this, 
true);
 
  666           __throw_exception_again;
 
  676   template<
typename _CharT, 
typename _Traits>
 
  682       sentry __cerb(*
this, 
true);
 
  692           else if (__num == -1)
 
  698           __throw_exception_again;
 
  708   template<
typename _CharT, 
typename _Traits>
 
  718       sentry __cerb(*
this, 
true);
 
  724           const int_type __eof = traits_type::eof();
 
  727           || traits_type::eq_int_type(__sb->
sputbackc(__c), __eof))
 
  733           __throw_exception_again;
 
  743   template<
typename _CharT, 
typename _Traits>
 
  753       sentry __cerb(*
this, 
true);
 
  759           const int_type __eof = traits_type::eof();
 
  762           || traits_type::eq_int_type(__sb->
sungetc(), __eof))
 
  768           __throw_exception_again;
 
  778   template<
typename _CharT, 
typename _Traits>
 
  786       sentry __cerb(*
this, 
true);
 
  804           __throw_exception_again;
 
  814   template<
typename _CharT, 
typename _Traits>
 
  815     typename basic_istream<_CharT, _Traits>::pos_type
 
  821       pos_type __ret = pos_type(-1);
 
  822       sentry __cerb(*
this, 
true);
 
  834           __throw_exception_again;
 
  842   template<
typename _CharT, 
typename _Traits>
 
  851       sentry __cerb(*
this, 
true);
 
  860           const pos_type __p = this->
rdbuf()->pubseekpos(__pos,
 
  864           if (__p == pos_type(off_type(-1)))
 
  871           __throw_exception_again;
 
  881   template<
typename _CharT, 
typename _Traits>
 
  884     seekg(off_type __off, ios_base::seekdir __dir)
 
  890       sentry __cerb(*
this, 
true);
 
  899           const pos_type __p = this->
rdbuf()->pubseekoff(__off, __dir,
 
  903           if (__p == pos_type(off_type(-1)))
 
  910           __throw_exception_again;
 
  921   template<
typename _CharT, 
typename _Traits>
 
  926       typedef typename __istream_type::int_type         __int_type;
 
  928       typename __istream_type::sentry __cerb(__in, 
false);
 
  934           const __int_type __cb = __in.
rdbuf()->sbumpc();
 
  935           if (!_Traits::eq_int_type(__cb, _Traits::eof()))
 
  936         __c = _Traits::to_char_type(__cb);
 
  943           __throw_exception_again;
 
  953   template<
typename _CharT, 
typename _Traits>
 
  954     basic_istream<_CharT, _Traits>&
 
  959       typedef typename _Traits::int_type        int_type;
 
  960       typedef _CharT                    char_type;
 
  965       typename __istream_type::sentry __cerb(__in, 
false);
 
  973         __num = __gnu_cxx::__numeric_traits<streamsize>::__max;
 
  975           const __ctype_type& __ct = use_facet<__ctype_type>(__in.
getloc());
 
  977           const int_type __eof = _Traits::eof();
 
  978           __streambuf_type* __sb = __in.
rdbuf();
 
  979           int_type __c = __sb->sgetc();
 
  981           while (__extracted < __num - 1
 
  982              && !_Traits::eq_int_type(__c, __eof)
 
  983              && !__ct.is(ctype_base::space,
 
  984                  _Traits::to_char_type(__c)))
 
  986           *__s++ = _Traits::to_char_type(__c);
 
  988           __c = __sb->snextc();
 
  990           if (_Traits::eq_int_type(__c, __eof))
 
 1001           __throw_exception_again;
 
 1014   template<
typename _CharT, 
typename _Traits>
 
 1015     basic_istream<_CharT, _Traits>&
 
 1020       typedef typename __istream_type::int_type     __int_type;
 
 1023       const __ctype_type& __ct = use_facet<__ctype_type>(__in.
getloc());
 
 1024       const __int_type __eof = _Traits::eof();
 
 1025       __streambuf_type* __sb = __in.
rdbuf();
 
 1026       __int_type __c = __sb->sgetc();
 
 1028       while (!_Traits::eq_int_type(__c, __eof)
 
 1029          && __ct.is(ctype_base::space, _Traits::to_char_type(__c)))
 
 1030     __c = __sb->snextc();
 
 1032        if (_Traits::eq_int_type(__c, __eof))
 
 1039 #if _GLIBCXX_EXTERN_TEMPLATE 
 1040   extern template class basic_istream<char>;
 
 1049   extern template istream& istream::_M_extract(
unsigned short&);
 
 1050   extern template istream& istream::_M_extract(
unsigned int&);  
 
 1051   extern template istream& istream::_M_extract(
long&);
 
 1052   extern template istream& istream::_M_extract(
unsigned long&);
 
 1053   extern template istream& istream::_M_extract(
bool&);
 
 1054 #ifdef _GLIBCXX_USE_LONG_LONG 
 1055   extern template istream& istream::_M_extract(
long long&);
 
 1056   extern template istream& istream::_M_extract(
unsigned long long&);
 
 1058   extern template istream& istream::_M_extract(
float&);
 
 1059   extern template istream& istream::_M_extract(
double&);
 
 1060   extern template istream& istream::_M_extract(
long double&);
 
 1061   extern template istream& istream::_M_extract(
void*&);
 
 1063   extern template class basic_iostream<char>;
 
 1065 #ifdef _GLIBCXX_USE_WCHAR_T 
 1066   extern template class basic_istream<wchar_t>;
 
 1071   extern template wistream& wistream::_M_extract(
unsigned short&);
 
 1072   extern template wistream& wistream::_M_extract(
unsigned int&);  
 
 1073   extern template wistream& wistream::_M_extract(
long&);
 
 1074   extern template wistream& wistream::_M_extract(
unsigned long&);
 
 1075   extern template wistream& wistream::_M_extract(
bool&);
 
 1076 #ifdef _GLIBCXX_USE_LONG_LONG 
 1077   extern template wistream& wistream::_M_extract(
long long&);
 
 1078   extern template wistream& wistream::_M_extract(
unsigned long long&);
 
 1080   extern template wistream& wistream::_M_extract(
float&);
 
 1081   extern template wistream& wistream::_M_extract(
double&);
 
 1082   extern template wistream& wistream::_M_extract(
long double&);
 
 1083   extern template wistream& wistream::_M_extract(
void*&);
 
 1085   extern template class basic_iostream<wchar_t>;
 
 1089 _GLIBCXX_END_NAMESPACE_VERSION
 
__istream_type & unget()
Unextracting the previous character. 
 
bool good() const 
Fast error checking. 
 
bool is(mask __m, char_type __c) const 
Test char_type classification. 
 
Primary class template ctype facet.This template class defines classification and conversion function...
 
static const iostate failbit
Indicates that an input operation failed to read the expected characters, or that an output operation...
 
Performs setup work for input streams. 
 
int_type snextc()
Getting the next character. 
 
bool fail() const 
Fast error checking. 
 
basic_istream< wchar_t > wistream
Base class for wchar_t input streams. 
 
int_type sgetc()
Getting the next character. 
 
basic_istream< _CharT, _Traits > & ws(basic_istream< _CharT, _Traits > &__is)
Quick and easy way to eat whitespace. 
 
__istream_type & seekg(pos_type)
Changing the current read position. 
 
Template class basic_istream. 
 
static const openmode in
Open for input. Default for ifstream and fstream. 
 
static const iostate goodbit
Indicates all is well. 
 
locale getloc() const 
Locale access. 
 
static const iostate badbit
Indicates a loss of integrity in an input or output sequence (such as an irrecoverable read error fro...
 
static const seekdir cur
Request a seek relative to the current position within the sequence. 
 
basic_istream< char > istream
Base class for char input streams. 
 
basic_streambuf< _CharT, _Traits > * rdbuf() const 
Accessing the underlying buffer. 
 
__istream_type & getline(char_type *__s, streamsize __n, char_type __delim)
String extraction. 
 
void clear(iostate __state=goodbit)
[Re]sets the error state. 
 
int_type get()
Simple extraction. 
 
static const fmtflags skipws
Skips leading white space before certain input operations. 
 
__istream_type & read(char_type *__s, streamsize __n)
Extraction without delimiters. 
 
Thrown as part of forced unwinding.A magic placeholder class that can be caught by reference to recog...
 
const _Tp & min(const _Tp &, const _Tp &)
This does what you think it does. 
 
pos_type tellg()
Getting the current read position. 
 
__istream_type & ignore()
Simple extraction. 
 
The actual work of input and output (interface). 
 
int_type sbumpc()
Getting the next character. 
 
void setstate(iostate __state)
Sets additional flags in the error state. 
 
__istream_type & putback(char_type __c)
Unextracting a single character. 
 
int pubsync()
Calls virtual sync function. 
 
int_type sputbackc(char_type __c)
Pushing characters back into the input stream. 
 
basic_ostream< _CharT, _Traits > * tie() const 
Fetches the current tied stream. 
 
int_type peek()
Looking ahead in the stream. 
 
__istream_type & operator>>(__istream_type &(*__pf)(__istream_type &))
Interface for manipulators. 
 
static const iostate eofbit
Indicates that an input operation reached the end of an input sequence. 
 
fmtflags flags() const 
Access to format flags. 
 
streamsize width() const 
Flags access. 
 
Primary class template num_get.This facet encapsulates the code to parse and return a number from a s...
 
iostate rdstate() const 
Returns the error state of the stream buffer. 
 
int_type sputc(char_type __c)
Entry point for all single-character output functions. 
 
ptrdiff_t streamsize
Integral type for I/O operation counts and buffer sizes. 
 
int sync()
Synchronizing the stream buffer. 
 
int_type sungetc()
Moving backwards in the input stream. 
 
sentry(basic_istream< _CharT, _Traits > &__is, bool __noskipws=false)
The constructor performs all the work. 
 
streamsize readsome(char_type *__s, streamsize __n)
Extraction until the buffer is exhausted, but no more. 
 
iter_type get(iter_type __in, iter_type __end, ios_base &__io, ios_base::iostate &__err, bool &__v) const 
Numeric parsing.