diff options
Diffstat (limited to 'libstdc++-v3/include/bits/istream.tcc')
-rw-r--r-- | libstdc++-v3/include/bits/istream.tcc | 1029 |
1 files changed, 548 insertions, 481 deletions
diff --git a/libstdc++-v3/include/bits/istream.tcc b/libstdc++-v3/include/bits/istream.tcc index 4f3ff9688d0..45f8ed2267c 100644 --- a/libstdc++-v3/include/bits/istream.tcc +++ b/libstdc++-v3/include/bits/istream.tcc @@ -31,8 +31,8 @@ #include <bits/std_locale.h> -namespace std { - +namespace std +{ template<typename _CharT, typename _Traits> basic_istream<_CharT, _Traits>::sentry:: sentry(basic_istream<_CharT, _Traits>& __in, bool __noskipws) @@ -103,18 +103,21 @@ namespace std { sentry __cerb(*this, false); if (__cerb) { - try { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - _M_fnumget->get(*this, 0, *this, __err, __n); - this->setstate(__err); - } - catch(exception& __fail){ - // 27.6.1.2.1 Common requirements. - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); + if (_M_check_facet(_M_fnumget)) + _M_fnumget->get(*this, 0, *this, __err, __n); + this->setstate(__err); + } + catch(exception& __fail) + { + // 27.6.1.2.1 Common requirements. + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return *this; } @@ -127,18 +130,21 @@ namespace std { sentry __cerb(*this, false); if (__cerb) { - try { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - _M_fnumget->get(*this, 0, *this, __err, __n); - this->setstate(__err); - } - catch(exception& __fail){ - // 27.6.1.2.1 Common requirements. - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); + if (_M_check_facet(_M_fnumget)) + _M_fnumget->get(*this, 0, *this, __err, __n); + this->setstate(__err); + } + catch(exception& __fail) + { + // 27.6.1.2.1 Common requirements. + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return *this; } @@ -151,18 +157,21 @@ namespace std { sentry __cerb(*this, false); if (__cerb) { - try { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - _M_fnumget->get(*this, 0, *this, __err, __n); - this->setstate(__err); - } - catch(exception& __fail){ - // 27.6.1.2.1 Common requirements. - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); + if (_M_check_facet(_M_fnumget)) + _M_fnumget->get(*this, 0, *this, __err, __n); + this->setstate(__err); + } + catch(exception& __fail) + { + // 27.6.1.2.1 Common requirements. + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return *this; } @@ -175,18 +184,21 @@ namespace std { sentry __cerb(*this, false); if (__cerb) { - try { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - _M_fnumget->get(*this, 0, *this, __err, __n); - this->setstate(__err); - } - catch(exception& __fail){ - // 27.6.1.2.1 Common requirements. - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); + if (_M_check_facet(_M_fnumget)) + _M_fnumget->get(*this, 0, *this, __err, __n); + this->setstate(__err); + } + catch(exception& __fail) + { + // 27.6.1.2.1 Common requirements. + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return *this; } @@ -199,18 +211,21 @@ namespace std { sentry __cerb(*this, false); if (__cerb) { - try { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - _M_fnumget->get(*this, 0, *this, __err, __n); - this->setstate(__err); - } - catch(exception& __fail){ - // 27.6.1.2.1 Common requirements. - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); + if (_M_check_facet(_M_fnumget)) + _M_fnumget->get(*this, 0, *this, __err, __n); + this->setstate(__err); + } + catch(exception& __fail) + { + // 27.6.1.2.1 Common requirements. + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return *this; } @@ -223,18 +238,21 @@ namespace std { sentry __cerb(*this, false); if (__cerb) { - try { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - _M_fnumget->get(*this, 0, *this, __err, __n); - this->setstate(__err); - } - catch(exception& __fail){ - // 27.6.1.2.1 Common requirements. - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); + if (_M_check_facet(_M_fnumget)) + _M_fnumget->get(*this, 0, *this, __err, __n); + this->setstate(__err); + } + catch(exception& __fail) + { + // 27.6.1.2.1 Common requirements. + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return *this; } @@ -247,18 +265,21 @@ namespace std { sentry __cerb(*this, false); if (__cerb) { - try { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - _M_fnumget->get(*this, 0, *this, __err, __n); - this->setstate(__err); - } - catch(exception& __fail){ - // 27.6.1.2.1 Common requirements. - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); + if (_M_check_facet(_M_fnumget)) + _M_fnumget->get(*this, 0, *this, __err, __n); + this->setstate(__err); + } + catch(exception& __fail) + { + // 27.6.1.2.1 Common requirements. + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return *this; } @@ -272,18 +293,21 @@ namespace std { sentry __cerb(*this, false); if (__cerb) { - try { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - _M_fnumget->get(*this, 0, *this, __err, __n); - this->setstate(__err); - } - catch(exception& __fail){ - // 27.6.1.2.1 Common requirements. - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) + try + { + ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); + if (_M_check_facet(_M_fnumget)) + _M_fnumget->get(*this, 0, *this, __err, __n); + this->setstate(__err); + } + catch(exception& __fail) + { + // 27.6.1.2.1 Common requirements. + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) __throw_exception_again; - } + } } return *this; } @@ -296,18 +320,21 @@ namespace std { sentry __cerb(*this, false); if (__cerb) { - try { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - _M_fnumget->get(*this, 0, *this, __err, __n); - this->setstate(__err); - } - catch(exception& __fail){ - // 27.6.1.2.1 Common requirements. - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); + if (_M_check_facet(_M_fnumget)) + _M_fnumget->get(*this, 0, *this, __err, __n); + this->setstate(__err); + } + catch(exception& __fail) + { + // 27.6.1.2.1 Common requirements. + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return *this; } @@ -321,18 +348,21 @@ namespace std { sentry __cerb(*this, false); if (__cerb) { - try { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - _M_fnumget->get(*this, 0, *this, __err, __n); - this->setstate(__err); - } - catch(exception& __fail){ - // 27.6.1.2.1 Common requirements. - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); + if (_M_check_facet(_M_fnumget)) + _M_fnumget->get(*this, 0, *this, __err, __n); + this->setstate(__err); + } + catch(exception& __fail) + { + // 27.6.1.2.1 Common requirements. + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return *this; } @@ -345,18 +375,21 @@ namespace std { sentry __cerb(*this, false); if (__cerb) { - try { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - _M_fnumget->get(*this, 0, *this, __err, __n); - this->setstate(__err); - } - catch(exception& __fail){ - // 27.6.1.2.1 Common requirements. - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); + if (_M_check_facet(_M_fnumget)) + _M_fnumget->get(*this, 0, *this, __err, __n); + this->setstate(__err); + } + catch(exception& __fail) + { + // 27.6.1.2.1 Common requirements. + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return *this; } @@ -369,18 +402,21 @@ namespace std { sentry __cerb(*this, false); if (__cerb) { - try { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - _M_fnumget->get(*this, 0, *this, __err, __n); - this->setstate(__err); - } - catch(exception& __fail){ - // 27.6.1.2.1 Common requirements. - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); + if (_M_check_facet(_M_fnumget)) + _M_fnumget->get(*this, 0, *this, __err, __n); + this->setstate(__err); + } + catch(exception& __fail) + { + // 27.6.1.2.1 Common requirements. + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return *this; } @@ -393,18 +429,21 @@ namespace std { sentry __cerb(*this, false); if (__cerb) { - try { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - _M_fnumget->get(*this, 0, *this, __err, __n); - this->setstate(__err); - } - catch(exception& __fail){ - // 27.6.1.2.1 Common requirements. - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); + if (_M_check_facet(_M_fnumget)) + _M_fnumget->get(*this, 0, *this, __err, __n); + this->setstate(__err); + } + catch(exception& __fail) + { + // 27.6.1.2.1 Common requirements. + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return *this; } @@ -435,21 +474,23 @@ namespace std { sentry __cerb(*this, true); if (__cerb) { - try { - __c = this->rdbuf()->sbumpc(); - // 27.6.1.1 paragraph 3 - if (__c != __eof) - _M_gcount = 1; - else - this->setstate(ios_base::eofbit | ios_base::failbit); - } - catch(exception& __fail){ - // 27.6.1.3 paragraph 1 - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + __c = this->rdbuf()->sbumpc(); + // 27.6.1.1 paragraph 3 + if (__c != __eof) + _M_gcount = 1; + else + this->setstate(ios_base::eofbit | ios_base::failbit); + } + catch(exception& __fail) + { + // 27.6.1.3 paragraph 1 + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return __c; } @@ -463,25 +504,27 @@ namespace std { sentry __cerb(*this, true); if (__cerb) { - try { - const int_type __eof = traits_type::eof(); - int_type __bufval = this->rdbuf()->sbumpc(); - // 27.6.1.1 paragraph 3 - if (__bufval != __eof) - { - _M_gcount = 1; - __c = traits_type::to_char_type(__bufval); - } - else - this->setstate(ios_base::eofbit | ios_base::failbit); - } - catch(exception& __fail){ - // 27.6.1.3 paragraph 1 - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + const int_type __eof = traits_type::eof(); + int_type __bufval = this->rdbuf()->sbumpc(); + // 27.6.1.1 paragraph 3 + if (__bufval != __eof) + { + _M_gcount = 1; + __c = traits_type::to_char_type(__bufval); + } + else + this->setstate(ios_base::eofbit | ios_base::failbit); + } + catch(exception& __fail) + { + // 27.6.1.3 paragraph 1 + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return *this; } @@ -495,34 +538,36 @@ namespace std { sentry __cerb(*this, true); if (__cerb && __n > 1) { - try { - const int_type __idelim = traits_type::to_int_type(__delim); - const int_type __eof = traits_type::eof(); - __streambuf_type* __sb = this->rdbuf(); - int_type __c = __sb->sbumpc(); - bool __testdelim = __c == __idelim; - bool __testeof = __c == __eof; - - while (_M_gcount < __n - 1 && !__testeof && !__testdelim) - { - *__s++ = traits_type::to_char_type(__c); - ++_M_gcount; - __c = __sb->sbumpc(); - __testeof = __c == __eof; - __testdelim = __c == __idelim; - } - if (__testdelim || _M_gcount == __n - 1) - __sb->sputbackc(__c); - if (__testeof) - this->setstate(ios_base::eofbit); - } - catch(exception& __fail){ - // 27.6.1.3 paragraph 1 - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + const int_type __idelim = traits_type::to_int_type(__delim); + const int_type __eof = traits_type::eof(); + __streambuf_type* __sb = this->rdbuf(); + int_type __c = __sb->sbumpc(); + bool __testdelim = __c == __idelim; + bool __testeof = __c == __eof; + + while (_M_gcount < __n - 1 && !__testeof && !__testdelim) + { + *__s++ = traits_type::to_char_type(__c); + ++_M_gcount; + __c = __sb->sbumpc(); + __testeof = __c == __eof; + __testdelim = __c == __idelim; + } + if (__testdelim || _M_gcount == __n - 1) + __sb->sputbackc(__c); + if (__testeof) + this->setstate(ios_base::eofbit); + } + catch(exception& __fail) + { + // 27.6.1.3 paragraph 1 + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } *__s = char_type(NULL); if (!_M_gcount) @@ -541,32 +586,34 @@ namespace std { { int_type __c; __streambuf_type* __this_sb = this->rdbuf(); - try { - const int_type __idelim = traits_type::to_int_type(__delim); - const int_type __eof = traits_type::eof(); - __c = __this_sb->sbumpc(); - bool __testdelim = __c == __idelim; - bool __testeof = __c == __eof; - bool __testput = true; - - while (!__testeof && !__testdelim - && (__testput = __sb.sputc(traits_type::to_char_type(__c)) - != __eof)) - { - ++_M_gcount; - __c = __this_sb->sbumpc(); - __testeof = __c == __eof; - __testdelim = __c == __idelim; - } - if (__testdelim || !__testput) + try + { + const int_type __idelim = traits_type::to_int_type(__delim); + const int_type __eof = traits_type::eof(); + __c = __this_sb->sbumpc(); + bool __testdelim = __c == __idelim; + bool __testeof = __c == __eof; + bool __testput = true; + + while (!__testeof && !__testdelim + && (__testput = __sb.sputc(traits_type::to_char_type(__c)) + != __eof)) + { + ++_M_gcount; + __c = __this_sb->sbumpc(); + __testeof = __c == __eof; + __testdelim = __c == __idelim; + } + if (__testdelim || !__testput) + __this_sb->sputbackc(traits_type::to_char_type(__c)); + if (__testeof) + this->setstate(ios_base::eofbit); + } + catch(exception& __fail) + { + // Exception may result from sputc->overflow. __this_sb->sputbackc(traits_type::to_char_type(__c)); - if (__testeof) - this->setstate(ios_base::eofbit); - } - catch(exception& __fail){ - // Exception may result from sputc->overflow. - __this_sb->sputbackc(traits_type::to_char_type(__c)); - } + } } if (!_M_gcount) this->setstate(ios_base::failbit); @@ -582,43 +629,45 @@ namespace std { sentry __cerb(*this, true); if (__cerb) { - try { - __streambuf_type* __sb = this->rdbuf(); - int_type __c = __sb->sbumpc(); - ++_M_gcount; - const int_type __idelim = traits_type::to_int_type(__delim); - const int_type __eof = traits_type::eof(); - bool __testdelim = __c == __idelim; - bool __testeof = __c == __eof; - - while (_M_gcount < __n && !__testeof && !__testdelim) - { - *__s++ = traits_type::to_char_type(__c); - __c = __sb->sbumpc(); - ++_M_gcount; - __testeof = __c == __eof; - __testdelim = __c == __idelim; - } + try + { + __streambuf_type* __sb = this->rdbuf(); + int_type __c = __sb->sbumpc(); + ++_M_gcount; + const int_type __idelim = traits_type::to_int_type(__delim); + const int_type __eof = traits_type::eof(); + bool __testdelim = __c == __idelim; + bool __testeof = __c == __eof; - if (__testeof) - { - --_M_gcount; - this->setstate(ios_base::eofbit); - } - else if (!__testdelim) - { - --_M_gcount; - __sb->sputbackc(traits_type::to_char_type(__c)); - this->setstate(ios_base::failbit); - } - } - catch(exception& __fail){ - // 27.6.1.3 paragraph 1 - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + while (_M_gcount < __n && !__testeof && !__testdelim) + { + *__s++ = traits_type::to_char_type(__c); + __c = __sb->sbumpc(); + ++_M_gcount; + __testeof = __c == __eof; + __testdelim = __c == __idelim; + } + + if (__testeof) + { + --_M_gcount; + this->setstate(ios_base::eofbit); + } + else if (!__testdelim) + { + --_M_gcount; + __sb->sputbackc(traits_type::to_char_type(__c)); + this->setstate(ios_base::failbit); + } + } + catch(exception& __fail) + { + // 27.6.1.3 paragraph 1 + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } *__s = char_type(NULL); if (!_M_gcount) @@ -635,34 +684,36 @@ namespace std { sentry __cerb(*this, true); if (__cerb && __n > 0) { - try { - const int_type __idelim = traits_type::to_int_type(__delim); - const int_type __eof = traits_type::eof(); - __streambuf_type* __sb = this->rdbuf(); - int_type __c = __sb->sbumpc(); - bool __testdelim = __c == __idelim; - bool __testeof = __c == __eof; - - __n = min(__n, numeric_limits<streamsize>::max()); - while (_M_gcount < __n - 1 && !__testeof && !__testdelim) - { + try + { + const int_type __idelim = traits_type::to_int_type(__delim); + const int_type __eof = traits_type::eof(); + __streambuf_type* __sb = this->rdbuf(); + int_type __c = __sb->sbumpc(); + bool __testdelim = __c == __idelim; + bool __testeof = __c == __eof; + + __n = min(__n, numeric_limits<streamsize>::max()); + while (_M_gcount < __n - 1 && !__testeof && !__testdelim) + { + ++_M_gcount; + __c = __sb->sbumpc(); + __testeof = __c == __eof; + __testdelim = __c == __idelim; + } + if ((_M_gcount == __n - 1 && !__testeof) || __testdelim) ++_M_gcount; - __c = __sb->sbumpc(); - __testeof = __c == __eof; - __testdelim = __c == __idelim; - } - if ((_M_gcount == __n - 1 && !__testeof) || __testdelim) - ++_M_gcount; - if (__testeof) - this->setstate(ios_base::eofbit); - } - catch(exception& __fail){ - // 27.6.1.3 paragraph 1 - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + if (__testeof) + this->setstate(ios_base::eofbit); + } + catch(exception& __fail) + { + // 27.6.1.3 paragraph 1 + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return *this; } @@ -677,16 +728,16 @@ namespace std { sentry __cerb(*this, true); if (__cerb) { - try { - __c = this->rdbuf()->sgetc(); - } - catch(exception& __fail){ - // 27.6.1.3 paragraph 1 - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { __c = this->rdbuf()->sgetc(); } + catch(exception& __fail) + { + // 27.6.1.3 paragraph 1 + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return __c; } @@ -702,35 +753,37 @@ namespace std { { if (__n > 0) { - try { - const int_type __eof = traits_type::eof(); - __streambuf_type* __sb = this->rdbuf(); - int_type __c = __sb->sbumpc(); - bool __testeof = __c == __eof; - - while (_M_gcount < __n - 1 && !__testeof) - { - *__s++ = traits_type::to_char_type(__c); - ++_M_gcount; - __c = __sb->sbumpc(); - __testeof = __c == __eof; - } - if (__testeof) - this->setstate(ios_base::eofbit | ios_base::failbit); - else - { - // _M_gcount == __n - 1 - *__s++ = traits_type::to_char_type(__c); - ++_M_gcount; - } - } - catch(exception& __fail){ - // 27.6.1.3 paragraph 1 - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + const int_type __eof = traits_type::eof(); + __streambuf_type* __sb = this->rdbuf(); + int_type __c = __sb->sbumpc(); + bool __testeof = __c == __eof; + + while (_M_gcount < __n - 1 && !__testeof) + { + *__s++ = traits_type::to_char_type(__c); + ++_M_gcount; + __c = __sb->sbumpc(); + __testeof = __c == __eof; + } + if (__testeof) + this->setstate(ios_base::eofbit | ios_base::failbit); + else + { + // _M_gcount == __n - 1 + *__s++ = traits_type::to_char_type(__c); + ++_M_gcount; + } + } + catch(exception& __fail) + { + // 27.6.1.3 paragraph 1 + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } } else @@ -750,24 +803,25 @@ namespace std { { if (__n > 0) { - try { - streamsize __num = this->rdbuf()->in_avail(); - if (__num != static_cast<streamsize>(__eof)) - { - __num = min(__num, __n); - _M_gcount = this->rdbuf()->sgetn(__s, __num); - } - else - this->setstate(ios_base::eofbit); - } - - catch(exception& __fail){ - // 27.6.1.3 paragraph 1 - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + streamsize __num = this->rdbuf()->in_avail(); + if (__num != static_cast<streamsize>(__eof)) + { + __num = min(__num, __n); + _M_gcount = this->rdbuf()->sgetn(__s, __num); + } + else + this->setstate(ios_base::eofbit); + } + catch(exception& __fail) + { + // 27.6.1.3 paragraph 1 + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } } else @@ -783,19 +837,21 @@ namespace std { sentry __cerb(*this, true); if (__cerb) { - try { - const int_type __eof = traits_type::eof(); - __streambuf_type* __sb = this->rdbuf(); - if (!__sb || __sb->sputbackc(__c) == __eof) - this->setstate(ios_base::badbit); - } - catch(exception& __fail){ - // 27.6.1.3 paragraph 1 - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + const int_type __eof = traits_type::eof(); + __streambuf_type* __sb = this->rdbuf(); + if (!__sb || __sb->sputbackc(__c) == __eof) + this->setstate(ios_base::badbit); + } + catch(exception& __fail) + { + // 27.6.1.3 paragraph 1 + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } else this->setstate(ios_base::failbit); @@ -811,19 +867,21 @@ namespace std { sentry __cerb(*this, true); if (__cerb) { - try { - const int_type __eof = traits_type::eof(); - __streambuf_type* __sb = this->rdbuf(); - if (!__sb || __eof == __sb->sungetc()) - this->setstate(ios_base::badbit); - } - catch(exception& __fail){ - // 27.6.1.3 paragraph 1 - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + const int_type __eof = traits_type::eof(); + __streambuf_type* __sb = this->rdbuf(); + if (!__sb || __eof == __sb->sungetc()) + this->setstate(ios_base::badbit); + } + catch(exception& __fail) + { + // 27.6.1.3 paragraph 1 + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } else this->setstate(ios_base::failbit); @@ -840,20 +898,22 @@ namespace std { sentry __cerb(*this, true); if (__cerb) { - try { - __streambuf_type* __sb = this->rdbuf(); - if (!__sb || __ret == __sb->pubsync()) - this->setstate(ios_base::badbit); - else - __ret = 0; - } - catch(exception& __fail){ - // 27.6.1.3 paragraph 1 - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + __streambuf_type* __sb = this->rdbuf(); + if (!__sb || __ret == __sb->pubsync()) + this->setstate(ios_base::badbit); + else + __ret = 0; + } + catch(exception& __fail) + { + // 27.6.1.3 paragraph 1 + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return __ret; } @@ -868,16 +928,18 @@ namespace std { sentry __cerb(*this, true); if (__cerb) { - try { - __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::in); - } - catch(exception& __fail){ - // 27.6.1.3 paragraph 1 - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { + __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::in); + } + catch(exception& __fail) + { + // 27.6.1.3 paragraph 1 + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return __ret; } @@ -892,19 +954,21 @@ namespace std { sentry __cerb(*this, true); if (__cerb) { - try { + try + { #ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS // 136. seekp, seekg setting wrong streams? - this->rdbuf()->pubseekpos(__pos, ios_base::in); + this->rdbuf()->pubseekpos(__pos, ios_base::in); #endif - } - catch(exception& __fail){ - // 27.6.1.3 paragraph 1 - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + } + catch(exception& __fail) + { + // 27.6.1.3 paragraph 1 + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return *this; } @@ -918,19 +982,21 @@ namespace std { sentry __cerb(*this, true); if (__cerb) { - try { + try + { #ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS // 136. seekp, seekg setting wrong streams? - this->rdbuf()->pubseekoff(__off, __dir, ios_base::in); + this->rdbuf()->pubseekoff(__off, __dir, ios_base::in); #endif - } - catch(exception& __fail){ - // 27.6.1.3 paragraph 1 - // Turn this on without causing an ios::failure to be thrown. - this->setstate(ios_base::badbit); - if ((this->exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + } + catch(exception& __fail) + { + // 27.6.1.3 paragraph 1 + // Turn this on without causing an ios::failure to be thrown. + this->setstate(ios_base::badbit); + if ((this->exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } return *this; } @@ -944,16 +1010,16 @@ namespace std { typename __istream_type::sentry __cerb(__in, false); if (__cerb) { - try { - __in.get(__c); - } - catch(exception& __fail){ - // 27.6.1.2.1 Common requirements. - // Turn this on without causing an ios::failure to be thrown. - __in.setstate(ios_base::badbit); - if ((__in.exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + try + { __in.get(__c); } + catch(exception& __fail) + { + // 27.6.1.2.1 Common requirements. + // Turn this on without causing an ios::failure to be thrown. + __in.setstate(ios_base::badbit); + if ((__in.exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } else __in.setstate(ios_base::failbit); @@ -974,46 +1040,48 @@ namespace std { typename __istream_type::sentry __cerb(__in, false); if (__cerb) { - try { - // Figure out how many characters to extract. - streamsize __num = __in.width(); - if (__num == 0) - __num = numeric_limits<streamsize>::max(); - - __streambuf_type* __sb = __in.rdbuf(); - const __ctype_type* __ctype = __in._M_get_fctype_ios(); - int_type __c = __sb->sbumpc(); - const int_type __eof = _Traits::eof(); - bool __testsp = __ctype->is(ctype_base::space, __c); - bool __testeof = __c == __eof; - - while (__extracted < __num - 1 && !__testeof && !__testsp) - { - *__s++ = __c; - ++__extracted; - __c = __sb->sbumpc(); - __testeof = __c == __eof; - __testsp = __ctype->is(ctype_base::space, __c); - } - - if (!__testeof) - __sb->sputbackc(__c); - else - __in.setstate(ios_base::eofbit); + try + { + // Figure out how many characters to extract. + streamsize __num = __in.width(); + if (__num == 0) + __num = numeric_limits<streamsize>::max(); + + __streambuf_type* __sb = __in.rdbuf(); + const __ctype_type* __ctype = __in._M_get_fctype_ios(); + int_type __c = __sb->sbumpc(); + const int_type __eof = _Traits::eof(); + bool __testsp = __ctype->is(ctype_base::space, __c); + bool __testeof = __c == __eof; + + while (__extracted < __num - 1 && !__testeof && !__testsp) + { + *__s++ = __c; + ++__extracted; + __c = __sb->sbumpc(); + __testeof = __c == __eof; + __testsp = __ctype->is(ctype_base::space, __c); + } + + if (!__testeof) + __sb->sputbackc(__c); + else + __in.setstate(ios_base::eofbit); #ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS //68. Extractors for char* should store null at end - *__s = char_type(); + *__s = char_type(); #endif - __in.width(0); - } - catch(exception& __fail){ - // 27.6.1.2.1 Common requirements. - // Turn this on without causing an ios::failure to be thrown. - __in.setstate(ios_base::badbit); - if ((__in.exceptions() & ios_base::badbit) != 0) - __throw_exception_again; - } + __in.width(0); + } + catch(exception& __fail) + { + // 27.6.1.2.1 Common requirements. + // Turn this on without causing an ios::failure to be thrown. + __in.setstate(ios_base::badbit); + if ((__in.exceptions() & ios_base::badbit) != 0) + __throw_exception_again; + } } if (!__extracted) __in.setstate(ios_base::failbit); @@ -1153,7 +1221,6 @@ namespace std { getline(basic_istream<_CharT, _Traits>& __in, basic_string<_CharT,_Traits,_Alloc>& __str) { return getline(__in, __str, __in.widen('\n')); } - } // namespace std // Local Variables: |