summaryrefslogtreecommitdiffstats
path: root/libstdc++-v3/include/bits/istream.tcc
diff options
context:
space:
mode:
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2001-05-31 12:14:56 +0000
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2001-05-31 12:14:56 +0000
commit8878d5e46d4edcc706701f66d12dff79a5f51c0d (patch)
treeceaaac0bdc60dd79d70b07301e7aa375cd843bb4 /libstdc++-v3/include/bits/istream.tcc
parent9e8f09c322891cc1b2e3c187d3fcb24fe9e432e0 (diff)
downloadppe42-gcc-8878d5e46d4edcc706701f66d12dff79a5f51c0d.tar.gz
ppe42-gcc-8878d5e46d4edcc706701f66d12dff79a5f51c0d.zip
2001-05-30 Benjamin Kosnik <bkoz@redat.com>
* acconfig.h (_GLIBCPP_BUGGY_FLOAT_COMPLEX): Remove. (_GLIBCPP_BUGGY_COMPLEX): Remove. * config.h.in: Regenerate. * acinclude.m4 (GLIBCPP_CHECK_COMPLEX_MATH_COMPILER_SUPPORT): Remove. * aclocal.m4: Regenerate. * configure.in: Don't call it. * configure: Regenerate. libstdc++/2970 * src/complex_io.cc (operator<<(ostream&, const complex&): Fix. * testsuite/26_numerics/complex_inserters_extractors.cc (test01): New test. libstdc++/2985 * include/bits/std_complex.h: Include sstream. Put definitions for complex inserters and extractors here, and remove them from... * src/complex_io.cc: ...here. * include/bits/basic_ios.h (basic_ios::__numput_type): Add _Traits parameter. (basic_ios::__numget_type): Same. * include/bits/std_istream.h: Same. * include/bits/std_ostream.h: Same. * include/bits/sbuf_iter.h (ostreambuf_iterator): Fix typo in base class iterator template arguments. * src/locale-inst.cc: Add explicit has_facet instantiations. * include/bits/basic_ios.h (basic_ios::_M_get_fctype_ios): Remove. (_M_get_fnumput): Remove. (_M_get_fnumget): Remove. (basic_ios::_M_check_facet): New function. (basic_ios::_M_cache_facets): New function. * include/bits/basic_ios.tcc: Definition for _M_cache_facets. (basic_ios::imbue): Call _M_cache_facets. (basic_ios::init): Same. * include/bits/istream.tcc: Format, use _M_check_facet. * include/bits/ostream.tcc: Same. * include/bits/locale_facets.tcc (__output_float): Change signature, add _Traits. * testsuite/26_numerics/complex_inserters_extractors.cc (test02): New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42743 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/include/bits/istream.tcc')
-rw-r--r--libstdc++-v3/include/bits/istream.tcc1029
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:
OpenPOWER on IntegriCloud