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>
|
2001-03-06 Nathan Myers <ncm@cantrip.org>
|
||||||
Benjamin Kosnik <bkoz@redhat.com>
|
Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
|
||||||
|
@ -81,20 +81,7 @@ namespace std {
|
|||||||
basic_istream<_CharT, _Traits>::
|
basic_istream<_CharT, _Traits>::
|
||||||
operator>>(__istream_type& (*__pf)(__istream_type&))
|
operator>>(__istream_type& (*__pf)(__istream_type&))
|
||||||
{
|
{
|
||||||
sentry __cerb(*this, false);
|
__pf(*this);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,20 +90,7 @@ namespace std {
|
|||||||
basic_istream<_CharT, _Traits>::
|
basic_istream<_CharT, _Traits>::
|
||||||
operator>>(__ios_type& (*__pf)(__ios_type&))
|
operator>>(__ios_type& (*__pf)(__ios_type&))
|
||||||
{
|
{
|
||||||
sentry __cerb(*this, false);
|
__pf(*this);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,20 +99,7 @@ namespace std {
|
|||||||
basic_istream<_CharT, _Traits>::
|
basic_istream<_CharT, _Traits>::
|
||||||
operator>>(ios_base& (*__pf)(ios_base&))
|
operator>>(ios_base& (*__pf)(ios_base&))
|
||||||
{
|
{
|
||||||
sentry __cerb(*this, false);
|
__pf(*this);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// 1999-07-28 bkoz
|
// 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
|
// 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
|
// software; you can redistribute it and/or modify it under the
|
||||||
@ -55,14 +55,6 @@ bool test01() {
|
|||||||
statefail = std::ios_base::failbit;
|
statefail = std::ios_base::failbit;
|
||||||
stateeof = std::ios_base::eofbit;
|
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>
|
// template<_CharT, _Traits>
|
||||||
// basic_istream& operator>>(basic_streambuf*)
|
// basic_istream& operator>>(basic_streambuf*)
|
||||||
@ -184,10 +176,34 @@ bool test02() {
|
|||||||
return test;
|
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()
|
int main()
|
||||||
{
|
{
|
||||||
test01();
|
test01();
|
||||||
test02();
|
test02();
|
||||||
|
test03();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ bool test01(void)
|
|||||||
VERIFY( !iss02.eof() );
|
VERIFY( !iss02.eof() );
|
||||||
|
|
||||||
iss01 >> std::ws;
|
iss01 >> std::ws;
|
||||||
VERIFY( iss01.fail() );
|
VERIFY( !iss01.fail() );
|
||||||
VERIFY( iss01.eof() );
|
VERIFY( iss01.eof() );
|
||||||
|
|
||||||
#ifdef DEBUG_ASSERT
|
#ifdef DEBUG_ASSERT
|
||||||
|
Loading…
x
Reference in New Issue
Block a user