localefwd.h (locale:🆔:_M_id): Do this correctly, as type safety is important, especially on solaris.
2002-04-18 Benjamin Kosnik <bkoz@redhat.com>
* include/bits/localefwd.h (locale:🆔:_M_id): Do this correctly,
as type safety is important, especially on solaris.
* include/bits/istream.tcc (istream::read): Clean.
(istream::readsome): Same.
* locale.cc: Wrap lines.
* testsuite/21_strings/inserters_extractors.cc: Tweaks.
* testsuite/27_io/instantiations.cc (test): Add bool variable...
* testsuite/21_strings/capacity.cc: Clean.
From-SVN: r52501
This commit is contained in:
parent
2f82dbf865
commit
36ce7daa04
7 changed files with 147 additions and 149 deletions
|
@ -1,3 +1,15 @@
|
|||
2002-04-18 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
* include/bits/localefwd.h (locale::id::_M_id): Do this correctly,
|
||||
as type safety is important, especially on solaris.
|
||||
* include/bits/istream.tcc (istream::read): Clean.
|
||||
(istream::readsome): Same.
|
||||
* locale.cc: Wrap lines.
|
||||
|
||||
* testsuite/21_strings/inserters_extractors.cc: Tweaks.
|
||||
* testsuite/27_io/instantiations.cc (test): Add bool variable...
|
||||
* testsuite/21_strings/capacity.cc: Clean.
|
||||
|
||||
2002-04-17 Phil Edwards <pme@gcc.gnu.org>
|
||||
|
||||
* docs/doxygen/doxygroups.cc: New group on binary searching.
|
||||
|
|
|
@ -777,39 +777,28 @@ namespace std
|
|||
sentry __cerb(*this, true);
|
||||
if (__cerb)
|
||||
{
|
||||
if (__n > 0)
|
||||
try
|
||||
{
|
||||
try
|
||||
const int_type __eof = traits_type::eof();
|
||||
__streambuf_type* __sb = this->rdbuf();
|
||||
int_type __c = __sb->sgetc();
|
||||
|
||||
while (_M_gcount < __n && __c != __eof)
|
||||
{
|
||||
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;
|
||||
*__s++ = traits_type::to_char_type(__c);
|
||||
++_M_gcount;
|
||||
__c = __sb->snextc();
|
||||
}
|
||||
if (__c == __eof)
|
||||
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;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -822,32 +811,30 @@ namespace std
|
|||
basic_istream<_CharT, _Traits>::
|
||||
readsome(char_type* __s, streamsize __n)
|
||||
{
|
||||
const int_type __eof = traits_type::eof();
|
||||
_M_gcount = 0;
|
||||
sentry __cerb(*this, true);
|
||||
if (__cerb)
|
||||
{
|
||||
if (__n > 0)
|
||||
try
|
||||
{
|
||||
try
|
||||
const int_type __eof = traits_type::eof();
|
||||
streamsize __num = this->rdbuf()->in_avail();
|
||||
if (__num != static_cast<streamsize>(__eof))
|
||||
{
|
||||
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;
|
||||
__num = min(__num, __n);
|
||||
if (__num)
|
||||
_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
|
||||
|
|
|
@ -455,14 +455,11 @@ namespace std
|
|||
// counted on to be zero-initialized.
|
||||
id();
|
||||
|
||||
size_t
|
||||
inline size_t
|
||||
_M_id() const
|
||||
{
|
||||
if (!_M_index)
|
||||
{
|
||||
__exchange_and_add(&_S_highwater, 1);
|
||||
_M_index = _S_highwater;
|
||||
}
|
||||
_M_index = 1 + __exchange_and_add(&_S_highwater, 1);
|
||||
return _M_index - 1;
|
||||
}
|
||||
};
|
||||
|
|
|
@ -226,7 +226,8 @@ namespace std
|
|||
locale::operator==(const locale& __rhs) const throw()
|
||||
{
|
||||
string __name = this->name();
|
||||
return (_M_impl == __rhs._M_impl || (__name != "*" && __name == __rhs.name()));
|
||||
return (_M_impl == __rhs._M_impl
|
||||
|| (__name != "*" && __name == __rhs.name()));
|
||||
}
|
||||
|
||||
const locale&
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// 1999-05-11 bkoz
|
||||
|
||||
// Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
// Copyright (C) 1999, 2002 Free Software Foundation, Inc.
|
||||
//
|
||||
// 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
|
||||
|
@ -21,7 +21,6 @@
|
|||
// 21.3.3 string capacity
|
||||
|
||||
#include <string>
|
||||
#include <cstdio>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
template<typename T>
|
||||
|
@ -37,7 +36,7 @@ template<typename T>
|
|||
|
||||
struct B { };
|
||||
|
||||
bool test01()
|
||||
void test01()
|
||||
{
|
||||
// 1 POD types : resize, capacity, reserve
|
||||
bool test = true;
|
||||
|
@ -161,17 +160,11 @@ bool test01()
|
|||
VERIFY( b01 == true );
|
||||
sz04 = str02.size();
|
||||
VERIFY( sz03 >= sz04 );
|
||||
|
||||
#ifdef DEBUG_ASSERT
|
||||
assert(test);
|
||||
#endif
|
||||
|
||||
return test;
|
||||
}
|
||||
|
||||
// libstdc++/4548
|
||||
// http://gcc.gnu.org/ml/libstdc++/2001-11/msg00150.html
|
||||
bool test02()
|
||||
void test02()
|
||||
{
|
||||
bool test = true;
|
||||
|
||||
|
@ -180,12 +173,6 @@ bool test02()
|
|||
std::string str02 = str01;
|
||||
str01.reserve(1);
|
||||
VERIFY( str01.capacity() == 12 );
|
||||
|
||||
#ifdef DEBUG_ASSERT
|
||||
assert(test);
|
||||
#endif
|
||||
|
||||
return test;
|
||||
}
|
||||
|
||||
#if !__GXX_WEAK__
|
||||
|
@ -206,7 +193,3 @@ int main()
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// 1999-07-01 bkoz
|
||||
|
||||
// Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
// Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
//
|
||||
// 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
|
||||
|
@ -53,16 +53,20 @@ bool test01(void)
|
|||
std::istringstream istrs01(str01);
|
||||
istrs01 >> str10;
|
||||
VERIFY( str10 == str02 );
|
||||
try {
|
||||
std::istringstream::int_type i01 = istrs01.peek(); //a-boo
|
||||
VERIFY( std::istringstream::traits_type::to_char_type(i01) == ' ' );
|
||||
}
|
||||
catch(std::exception& fail) {
|
||||
VERIFY( false ); // shouldn't throw
|
||||
}
|
||||
try
|
||||
{
|
||||
std::istringstream::int_type i01 = istrs01.peek(); //a-boo
|
||||
VERIFY( std::istringstream::traits_type::to_char_type(i01) == ' ' );
|
||||
}
|
||||
catch(std::exception& fail)
|
||||
{
|
||||
VERIFY( false ); // shouldn't throw
|
||||
}
|
||||
|
||||
istrs01.clear();
|
||||
istrs01 >> str10;
|
||||
VERIFY( str10 == str03 );
|
||||
istrs01.clear();
|
||||
istrs01 >> str10;
|
||||
VERIFY( str10 == str04 ); // sentry picks out the white spaces. .
|
||||
|
||||
|
@ -72,73 +76,86 @@ bool test01(void)
|
|||
|
||||
// istream& getline(istream&, string&, char)
|
||||
// istream& getline(istream&, string&)
|
||||
try {
|
||||
getline(istrs01, str10);
|
||||
VERIFY( !istrs01.fail() );
|
||||
VERIFY( !istrs01.eof() );
|
||||
VERIFY( istrs01.good() );
|
||||
VERIFY( str10 == " bay" );
|
||||
}
|
||||
catch(std::exception& fail) {
|
||||
VERIFY( false ); // shouldn't throw
|
||||
}
|
||||
try
|
||||
{
|
||||
istrs01.clear();
|
||||
getline(istrs01, str10);
|
||||
VERIFY( !istrs01.fail() );
|
||||
VERIFY( !istrs01.eof() );
|
||||
VERIFY( istrs01.good() );
|
||||
VERIFY( str10 == " bay" );
|
||||
}
|
||||
catch(std::exception& fail)
|
||||
{
|
||||
VERIFY( false ); // shouldn't throw
|
||||
}
|
||||
|
||||
try {
|
||||
istrs01.clear();
|
||||
getline(istrs01, str10,'\t');
|
||||
VERIFY( !istrs01.fail() );
|
||||
VERIFY( !istrs01.eof() );
|
||||
VERIFY( istrs01.good() );
|
||||
VERIFY( str10 == str05 );
|
||||
}
|
||||
catch(std::exception& fail) {
|
||||
VERIFY( false ); // shouldn't throw
|
||||
}
|
||||
|
||||
try {
|
||||
istrs01.clear();
|
||||
getline(istrs01, str10,'\t');
|
||||
VERIFY( !istrs01.fail() );
|
||||
VERIFY( !istrs01.eof() );
|
||||
VERIFY( istrs01.good() );
|
||||
VERIFY( str10 == str05 );
|
||||
}
|
||||
catch(std::exception& fail) {
|
||||
VERIFY( false ); // shouldn't throw
|
||||
}
|
||||
|
||||
try {
|
||||
istrs01.clear();
|
||||
getline(istrs01, str10, '.');
|
||||
VERIFY( !istrs01.fail() );
|
||||
VERIFY( istrs01.eof() );
|
||||
VERIFY( !istrs01.good() );
|
||||
VERIFY( str10 == "\t from Elk Rapids to the point reminds me of miles" );
|
||||
}
|
||||
catch(std::exception& fail) {
|
||||
VERIFY( false ); // shouldn't throw
|
||||
}
|
||||
|
||||
try {
|
||||
getline(istrs02, str10);
|
||||
VERIFY( istrs02.fail() );
|
||||
VERIFY( istrs02.eof() );
|
||||
VERIFY( str10 =="\t from Elk Rapids to the point reminds me of miles" );
|
||||
}
|
||||
catch(std::exception& fail) {
|
||||
VERIFY( false ); // shouldn't throw
|
||||
}
|
||||
try
|
||||
{
|
||||
istrs01.clear();
|
||||
getline(istrs01, str10,'\t');
|
||||
VERIFY( !istrs01.fail() );
|
||||
VERIFY( !istrs01.eof() );
|
||||
VERIFY( istrs01.good() );
|
||||
VERIFY( str10 == str05 );
|
||||
}
|
||||
catch(std::exception& fail)
|
||||
{
|
||||
VERIFY( false ); // shouldn't throw
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
istrs01.clear();
|
||||
getline(istrs01, str10,'\t');
|
||||
VERIFY( !istrs01.fail() );
|
||||
VERIFY( !istrs01.eof() );
|
||||
VERIFY( istrs01.good() );
|
||||
VERIFY( str10 == str05 );
|
||||
}
|
||||
catch(std::exception& fail)
|
||||
{
|
||||
VERIFY( false ); // shouldn't throw
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
istrs01.clear();
|
||||
getline(istrs01, str10, '.');
|
||||
VERIFY( !istrs01.fail() );
|
||||
VERIFY( istrs01.eof() );
|
||||
VERIFY( !istrs01.good() );
|
||||
VERIFY( str10 == "\t from Elk Rapids to the point reminds me of miles" );
|
||||
}
|
||||
catch(std::exception& fail)
|
||||
{
|
||||
VERIFY( false ); // shouldn't throw
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
getline(istrs02, str10);
|
||||
VERIFY( istrs02.fail() );
|
||||
VERIFY( istrs02.eof() );
|
||||
VERIFY( str10 =="\t from Elk Rapids to the point reminds me of miles" );
|
||||
}
|
||||
catch(std::exception& fail)
|
||||
{
|
||||
VERIFY( false ); // shouldn't throw
|
||||
}
|
||||
|
||||
// ostream& operator<<(ostream&, const basic_string&)
|
||||
std::ostringstream ostrs01;
|
||||
try {
|
||||
ostrs01 << str01;
|
||||
VERIFY( ostrs01.str() == str01 );
|
||||
}
|
||||
catch(std::exception& fail) {
|
||||
VERIFY( false );
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
ostrs01 << str01;
|
||||
VERIFY( ostrs01.str() == str01 );
|
||||
}
|
||||
catch(std::exception& fail)
|
||||
{
|
||||
VERIFY( false );
|
||||
}
|
||||
|
||||
std::string hello_world;
|
||||
std::cout << hello_world;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
|
||||
//
|
||||
// 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
|
||||
|
@ -35,6 +35,7 @@ void
|
|||
test01()
|
||||
{
|
||||
using namespace std;
|
||||
bool test = true;
|
||||
string x (" this is text");
|
||||
istringstream sin (x);
|
||||
ostringstream sout;
|
||||
|
@ -47,7 +48,7 @@ test01()
|
|||
>> setprecision(5)
|
||||
>> setw(20)
|
||||
>> ws;
|
||||
VERIFY(sin);
|
||||
VERIFY(sin.good());
|
||||
|
||||
sout << resetiosflags(ios_base::dec)
|
||||
<< setiosflags(ios_base::dec)
|
||||
|
@ -56,7 +57,7 @@ test01()
|
|||
<< setprecision(5)
|
||||
<< setw(20)
|
||||
<< ends << flush << endl;
|
||||
VERIFY(sout);
|
||||
VERIFY(sout.good());
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue