basic_string.h (string::compare): Adjust signatures as per DR 5.
2001-06-11 Benjamin Kosnik <bkoz@redhat.com> libstdc++/3126 * include/bits/basic_string.h (string::compare): Adjust signatures as per DR 5. * include/bits/basic_string.tcc: And here. libstdc++/2346 * config/c_io_stdio.h: Remove whitespace. * testsuite/27_io/istream_seeks.cc (test03): Add regression. (test02): Add regression. * testsuite/27_io/istream_seeks-3.tst: New file. From-SVN: r43240
This commit is contained in:
parent
9dffe3b49e
commit
3b0fd4bcdb
6 changed files with 122 additions and 16 deletions
|
@ -1,3 +1,16 @@
|
||||||
|
2001-06-11 Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
|
||||||
|
libstdc++/3126
|
||||||
|
* include/bits/basic_string.h (string::compare): Adjust signatures
|
||||||
|
as per DR 5.
|
||||||
|
* include/bits/basic_string.tcc: And here.
|
||||||
|
|
||||||
|
libstdc++/2346
|
||||||
|
* config/c_io_stdio.h: Remove whitespace.
|
||||||
|
* testsuite/27_io/istream_seeks.cc (test03): Add regression.
|
||||||
|
(test02): Add regression.
|
||||||
|
* testsuite/27_io/istream_seeks-3.tst: New file.
|
||||||
|
|
||||||
2001-06-11 Phil Edwards <pme@sources.redhat.com>
|
2001-06-11 Phil Edwards <pme@sources.redhat.com>
|
||||||
|
|
||||||
* README: Update to reflect reality.
|
* README: Update to reflect reality.
|
||||||
|
|
|
@ -92,13 +92,3 @@ namespace std
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // _CPP_IO_STDIO_H
|
#endif // _CPP_IO_STDIO_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -842,9 +842,15 @@ namespace std
|
||||||
int
|
int
|
||||||
compare(const _CharT* __s) const;
|
compare(const _CharT* __s) const;
|
||||||
|
|
||||||
|
#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS
|
||||||
|
// 5. String::compare specification questionable
|
||||||
|
int
|
||||||
|
compare(size_type __pos, size_type __n1, const _CharT* __s) const;
|
||||||
|
|
||||||
int
|
int
|
||||||
compare(size_type __pos, size_type __n1, const _CharT* __s,
|
compare(size_type __pos, size_type __n1, const _CharT* __s,
|
||||||
size_type __n2 = npos) const;
|
size_type __n2) const;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -809,6 +809,24 @@ namespace std
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
||||||
|
int
|
||||||
|
basic_string <_CharT,_Traits,_Alloc>::
|
||||||
|
compare(size_type __pos, size_type __n1, const _CharT* __s) const
|
||||||
|
{
|
||||||
|
size_type __size = this->size();
|
||||||
|
if (__pos > __size)
|
||||||
|
__throw_out_of_range("basic_string::compare");
|
||||||
|
|
||||||
|
size_type __osize = traits_type::length(__s);
|
||||||
|
size_type __rsize = min(__size - __pos, __n1);
|
||||||
|
size_type __len = min(__rsize, __osize);
|
||||||
|
int __r = traits_type::compare(_M_data() + __pos, __s, __len);
|
||||||
|
if (!__r)
|
||||||
|
__r = __rsize - __osize;
|
||||||
|
return __r;
|
||||||
|
}
|
||||||
|
|
||||||
template<typename _CharT, typename _Traits, typename _Alloc>
|
template<typename _CharT, typename _Traits, typename _Alloc>
|
||||||
int
|
int
|
||||||
basic_string <_CharT,_Traits,_Alloc>::
|
basic_string <_CharT,_Traits,_Alloc>::
|
||||||
|
@ -839,7 +857,6 @@ namespace std
|
||||||
_Traits::copy(__buf, __str.data(), __bytes);
|
_Traits::copy(__buf, __str.data(), __bytes);
|
||||||
__buf[__bytes] = _CharT();
|
__buf[__bytes] = _CharT();
|
||||||
}
|
}
|
||||||
|
} // namespace std
|
||||||
|
|
||||||
} // std::
|
#endif
|
||||||
|
|
||||||
#endif /* _CPP_BITS_STRING_TCC */
|
|
||||||
|
|
10
libstdc++-v3/testsuite/27_io/istream_seeks-3.tst
Normal file
10
libstdc++-v3/testsuite/27_io/istream_seeks-3.tst
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
0-0 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
||||||
|
0-1 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
||||||
|
0-2 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
||||||
|
0-3 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
||||||
|
0-4 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
||||||
|
0-5 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
||||||
|
0-6 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
||||||
|
0-7 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
||||||
|
0-8 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
||||||
|
0-9 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
|
|
@ -1,6 +1,6 @@
|
||||||
// 2000-06-29 bkoz
|
// 2000-06-29 bkoz
|
||||||
|
|
||||||
// Copyright (C) 2000 Free Software Foundation
|
// Copyright (C) 2000, 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
|
||||||
|
@ -28,7 +28,6 @@
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <debug_assert.h>
|
#include <debug_assert.h>
|
||||||
|
|
||||||
|
|
||||||
bool test01()
|
bool test01()
|
||||||
{
|
{
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
@ -64,6 +63,71 @@ bool test01()
|
||||||
return test;
|
return test;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* s = " lootpack, peanut butter wolf, rob swift, madlib, quasimoto";
|
||||||
|
const int times = 10;
|
||||||
|
|
||||||
|
void write_rewind(std::iostream& stream)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < times; j++)
|
||||||
|
{
|
||||||
|
bool test = true;
|
||||||
|
std::streampos begin = stream.tellg();
|
||||||
|
|
||||||
|
for (int i = 0; i < times; ++i)
|
||||||
|
stream << j << '-' << i << s << '\n';
|
||||||
|
|
||||||
|
stream.seekg(begin);
|
||||||
|
std::streampos end = stream.tellg();
|
||||||
|
std::streampos badpos = std::streampos(std::streambuf::off_type(-1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void check_contents(std::iostream& stream)
|
||||||
|
{
|
||||||
|
bool test = true;
|
||||||
|
|
||||||
|
stream.clear();
|
||||||
|
stream.seekg(0, std::ios::beg);
|
||||||
|
int i = 0;
|
||||||
|
int loop = times * times + 2;
|
||||||
|
while (i < loop)
|
||||||
|
{
|
||||||
|
stream.ignore(80, '\n');
|
||||||
|
if (stream.good())
|
||||||
|
++i;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
VERIFY( i == times );
|
||||||
|
}
|
||||||
|
|
||||||
|
// fstream
|
||||||
|
// libstdc++/2346
|
||||||
|
void test02()
|
||||||
|
{
|
||||||
|
std::fstream ofstrm;
|
||||||
|
ofstrm.open("istream_seeks-3.txt", std::ios::out);
|
||||||
|
if (!ofstrm)
|
||||||
|
abort();
|
||||||
|
write_rewind(ofstrm);
|
||||||
|
ofstrm.close();
|
||||||
|
|
||||||
|
std::fstream ifstrm;
|
||||||
|
ifstrm.open("istream_seeks-3.txt", std::ios::in);
|
||||||
|
check_contents(ifstrm);
|
||||||
|
ifstrm.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
// stringstream
|
||||||
|
// libstdc++/2346
|
||||||
|
void test03()
|
||||||
|
{
|
||||||
|
std::stringstream sstrm;
|
||||||
|
|
||||||
|
write_rewind(sstrm);
|
||||||
|
check_contents(sstrm);
|
||||||
|
}
|
||||||
|
|
||||||
// fstreams
|
// fstreams
|
||||||
void test04(void)
|
void test04(void)
|
||||||
{
|
{
|
||||||
|
@ -289,7 +353,13 @@ void test05(void)
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
test01();
|
test01();
|
||||||
|
|
||||||
|
test02();
|
||||||
|
test03();
|
||||||
|
|
||||||
test04();
|
test04();
|
||||||
test05();
|
test05();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue