istream.tcc (basic_istream<_CharT, [...]): Don't use sentry.
2001-03-06 Benjamin Kosnik <bkoz@redhat.com> libstdc++/2181 * include/bits/istream.tcc (basic_istream<_CharT, _Traits>:: operator>>(__istream_type& (*__pf)(__istream_type&)): Don't use sentry. (basic_istream<_CharT, _Traits>:: operator>>(__ios_type& (*__pf)(__ios_type&)): Same. (basic_istream<_CharT, _Traits>:: operator>>(ios_base& (*__pf)(ios_base&))): Same. * testsuite/27_io/istream_extractor_other.cc: Add tests. * testsuite/27_io/istream_manip.cc (test01): Fix. From-SVN: r40281
This commit is contained in:
parent
cc93758139
commit
2077a6c51e
@ -1,3 +1,16 @@
|
||||
2001-03-06 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
libstdc++/2181
|
||||
* include/bits/istream.tcc (basic_istream<_CharT, _Traits>::
|
||||
operator>>(__istream_type& (*__pf)(__istream_type&)): Don't use
|
||||
sentry.
|
||||
(basic_istream<_CharT, _Traits>:: operator>>(__ios_type&
|
||||
(*__pf)(__ios_type&)): Same.
|
||||
(basic_istream<_CharT, _Traits>:: operator>>(ios_base&
|
||||
(*__pf)(ios_base&))): Same.
|
||||
* testsuite/27_io/istream_extractor_other.cc: Add tests.
|
||||
* testsuite/27_io/istream_manip.cc (test01): Fix.
|
||||
|
||||
2001-03-06 Nathan Myers <ncm@cantrip.org>
|
||||
Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
|
@ -81,20 +81,7 @@ namespace std {
|
||||
basic_istream<_CharT, _Traits>::
|
||||
operator>>(__istream_type& (*__pf)(__istream_type&))
|
||||
{
|
||||
sentry __cerb(*this, false);
|
||||
if (__cerb)
|
||||
{
|
||||
try {
|
||||
__pf(*this);
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
__pf(*this);
|
||||
return *this;
|
||||
}
|
||||
|
||||
@ -103,20 +90,7 @@ namespace std {
|
||||
basic_istream<_CharT, _Traits>::
|
||||
operator>>(__ios_type& (*__pf)(__ios_type&))
|
||||
{
|
||||
sentry __cerb(*this, false);
|
||||
if (__cerb)
|
||||
{
|
||||
try {
|
||||
__pf(*this);
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
__pf(*this);
|
||||
return *this;
|
||||
}
|
||||
|
||||
@ -125,20 +99,7 @@ namespace std {
|
||||
basic_istream<_CharT, _Traits>::
|
||||
operator>>(ios_base& (*__pf)(ios_base&))
|
||||
{
|
||||
sentry __cerb(*this, false);
|
||||
if (__cerb)
|
||||
{
|
||||
try {
|
||||
__pf(*this);
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
__pf(*this);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
// 1999-07-28 bkoz
|
||||
|
||||
// Copyright (C) 1999 Free Software Foundation
|
||||
// Copyright (C) 1999, 2001 Free Software Foundation
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
@ -55,14 +55,6 @@ bool test01() {
|
||||
statefail = std::ios_base::failbit;
|
||||
stateeof = std::ios_base::eofbit;
|
||||
|
||||
// template<_CharT, _Traits>
|
||||
// basic_istream& operator>>(basic_istream& (*pf) (basic_istream&))
|
||||
|
||||
// template<_CharT, _Traits>
|
||||
// basic_istream& operator>>(basic_ios& (*pf) (basic_ios&))
|
||||
|
||||
// template<_CharT, _Traits>
|
||||
// basic_istream& operator>>(ios_base& (*pf) (ios_base&))
|
||||
|
||||
// template<_CharT, _Traits>
|
||||
// basic_istream& operator>>(basic_streambuf*)
|
||||
@ -184,10 +176,34 @@ bool test02() {
|
||||
return test;
|
||||
}
|
||||
|
||||
void test03()
|
||||
{
|
||||
using namespace std;
|
||||
bool test = true;
|
||||
|
||||
// template<_CharT, _Traits>
|
||||
// basic_istream& operator>>(ios_base& (*pf) (ios_base&))
|
||||
{
|
||||
int i = 0;
|
||||
std::istringstream iss(" 43");
|
||||
iss >> std::noskipws >> i;
|
||||
std::ios::iostate i3 = iss.rdstate();
|
||||
VERIFY ( !iss ); //should set failbit
|
||||
}
|
||||
|
||||
// template<_CharT, _Traits>
|
||||
// basic_istream& operator>>(basic_ios& (*pf) (basic_ios&))
|
||||
|
||||
// template<_CharT, _Traits>
|
||||
// basic_istream& operator>>(basic_istream& (*pf) (basic_istream&))
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
test01();
|
||||
test02();
|
||||
test03();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -70,7 +70,7 @@ bool test01(void)
|
||||
VERIFY( !iss02.eof() );
|
||||
|
||||
iss01 >> std::ws;
|
||||
VERIFY( iss01.fail() );
|
||||
VERIFY( !iss01.fail() );
|
||||
VERIFY( iss01.eof() );
|
||||
|
||||
#ifdef DEBUG_ASSERT
|
||||
|
Loading…
x
Reference in New Issue
Block a user