re PR libstdc++/28080 (header dependencies)

2007-03-02  Paolo Carlini  <pcarlini@suse.de>

	* testsuite/thread/pthread1.cc: Include <pthread.h>.
	* testsuite/thread/pthread2.cc: Likewise.
	* testsuite/thread/pthread3.cc: Likewise.
	* testsuite/thread/pthread4.cc: Likewise.
	* testsuite/thread/pthread5.cc: Likewise.
	* testsuite/thread/pthread6.cc: Likewise.
	* testsuite/thread/pthread7-rope.cc: Likewise.

2007-03-02  Paolo Carlini  <pcarlini@suse.de>

	PR libstdc++/28080 (partial)
	* include/tr1/random (class random_device): Rework to use simple
	<cstdio> input, do not include <fstream>.
	* include/tr1/random.tcc (all inserters and extractors): Refer
	to ios_base as base class of basic_istream or basic_ostream.

From-SVN: r122478
This commit is contained in:
Paolo Carlini 2007-03-02 16:21:30 +00:00 committed by Paolo Carlini
parent 7393f7f8d0
commit 1769232d26
10 changed files with 179 additions and 97 deletions

View File

@ -1,3 +1,21 @@
2007-03-02 Paolo Carlini <pcarlini@suse.de>
* testsuite/thread/pthread1.cc: Include <pthread.h>.
* testsuite/thread/pthread2.cc: Likewise.
* testsuite/thread/pthread3.cc: Likewise.
* testsuite/thread/pthread4.cc: Likewise.
* testsuite/thread/pthread5.cc: Likewise.
* testsuite/thread/pthread6.cc: Likewise.
* testsuite/thread/pthread7-rope.cc: Likewise.
2007-03-02 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/28080 (partial)
* include/tr1/random (class random_device): Rework to use simple
<cstdio> input, do not include <fstream>.
* include/tr1/random.tcc (all inserters and extractors): Refer
to ios_base as base class of basic_istream or basic_ostream.
2007-03-01 Brooks Moses <brooks.moses@codesourcery.com> 2007-03-01 Brooks Moses <brooks.moses@codesourcery.com>
* Makefile.am: Add dummy install-pdf target. * Makefile.am: Add dummy install-pdf target.

View File

@ -35,17 +35,16 @@
#ifndef _TR1_RANDOM #ifndef _TR1_RANDOM
#define _TR1_RANDOM 1 #define _TR1_RANDOM 1
#include <bits/stl_algobase.h>
#include <bits/concept_check.h>
#include <cmath> #include <cmath>
#include <debug/debug.h> #include <cstdio>
#include <iterator> #include <string>
#include <iosfwd> #include <iosfwd>
#include <limits> #include <limits>
#include <tr1/type_traits> #include <tr1/type_traits>
#include <tr1/cmath> #include <tr1/cmath>
#include <fstream>
#include <ext/type_traits.h> #include <ext/type_traits.h>
#include <bits/concept_check.h>
#include <debug/debug.h>
namespace std namespace std
{ {
@ -1421,14 +1420,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
random_device(const std::string& __token = "/dev/urandom") random_device(const std::string& __token = "/dev/urandom")
{ {
if ((__token != "/dev/urandom" && __token != "/dev/random") if ((__token != "/dev/urandom" && __token != "/dev/random")
|| !_M_filebuf.open(__token.c_str(), || !(_M_file = std::fopen(__token.c_str(), "rb")))
std::ios_base::in | std::ios_base::binary))
std::__throw_runtime_error(__N("random_device::" std::__throw_runtime_error(__N("random_device::"
"random_device(const std::string&)")); "random_device(const std::string&)"));
} }
~random_device() ~random_device()
{ _M_filebuf.close(); } { std::fclose(_M_file); }
#else #else
@ -1474,7 +1472,8 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
{ {
#ifdef _GLIBCXX_USE_RANDOM_TR1 #ifdef _GLIBCXX_USE_RANDOM_TR1
result_type __ret; result_type __ret;
_M_filebuf.sgetn(reinterpret_cast<char*>(&__ret), sizeof(result_type)); std::fread(reinterpret_cast<void*>(&__ret), sizeof(result_type),
1, _M_file);
return __ret; return __ret;
#else #else
return _M_mt(); return _M_mt();
@ -1486,7 +1485,7 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
void operator=(const random_device&); void operator=(const random_device&);
#ifdef _GLIBCXX_USE_RANDOM_TR1 #ifdef _GLIBCXX_USE_RANDOM_TR1
std::filebuf _M_filebuf; FILE* _M_file;
#else #else
mt19937 _M_mt; mt19937 _M_mt;
#endif #endif

View File

@ -1,6 +1,6 @@
// random number generation (out of line) -*- C++ -*- // random number generation (out of line) -*- C++ -*-
// Copyright (C) 2006 Free Software Foundation, Inc. // Copyright (C) 2006, 2007 Free Software Foundation, Inc.
// //
// 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
@ -143,10 +143,12 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os, operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const linear_congruential<_UIntType, __a, __c, __m>& __lcr) const linear_congruential<_UIntType, __a, __c, __m>& __lcr)
{ {
const std::ios_base::fmtflags __flags = __os.flags(); typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
typedef typename __ostream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill(); const _CharT __fill = __os.fill();
__os.flags(std::ios_base::dec | std::ios_base::fixed __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
| std::ios_base::left);
__os.fill(__os.widen(' ')); __os.fill(__os.widen(' '));
__os << __lcr._M_x; __os << __lcr._M_x;
@ -162,8 +164,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator>>(std::basic_istream<_CharT, _Traits>& __is, operator>>(std::basic_istream<_CharT, _Traits>& __is,
linear_congruential<_UIntType, __a, __c, __m>& __lcr) linear_congruential<_UIntType, __a, __c, __m>& __lcr)
{ {
const std::ios_base::fmtflags __flags = __is.flags(); typedef std::basic_istream<_CharT, _Traits> __istream_type;
__is.flags(std::ios_base::dec); typedef typename __istream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __is.flags();
__is.flags(__ios_base::dec);
__is >> __lcr._M_x; __is >> __lcr._M_x;
@ -268,11 +273,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
const mersenne_twister<_UIntType, __w, __n, __m, const mersenne_twister<_UIntType, __w, __n, __m,
__r, __a, __u, __s, __b, __t, __c, __l>& __x) __r, __a, __u, __s, __b, __t, __c, __l>& __x)
{ {
const std::ios_base::fmtflags __flags = __os.flags(); typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
typedef typename __ostream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill(); const _CharT __fill = __os.fill();
const _CharT __space = __os.widen(' '); const _CharT __space = __os.widen(' ');
__os.flags(std::ios_base::dec | std::ios_base::fixed __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
| std::ios_base::left);
__os.fill(__space); __os.fill(__space);
for (int __i = 0; __i < __n - 1; ++__i) for (int __i = 0; __i < __n - 1; ++__i)
@ -293,8 +300,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
mersenne_twister<_UIntType, __w, __n, __m, mersenne_twister<_UIntType, __w, __n, __m,
__r, __a, __u, __s, __b, __t, __c, __l>& __x) __r, __a, __u, __s, __b, __t, __c, __l>& __x)
{ {
const std::ios_base::fmtflags __flags = __is.flags(); typedef std::basic_istream<_CharT, _Traits> __istream_type;
__is.flags(std::ios_base::dec | std::ios_base::skipws); typedef typename __istream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __is.flags();
__is.flags(__ios_base::dec | __ios_base::skipws);
for (int __i = 0; __i < __n; ++__i) for (int __i = 0; __i < __n; ++__i)
__is >> __x._M_x[__i]; __is >> __x._M_x[__i];
@ -385,11 +395,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os, operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const subtract_with_carry<_IntType, __m, __s, __r>& __x) const subtract_with_carry<_IntType, __m, __s, __r>& __x)
{ {
const std::ios_base::fmtflags __flags = __os.flags(); typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
typedef typename __ostream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill(); const _CharT __fill = __os.fill();
const _CharT __space = __os.widen(' '); const _CharT __space = __os.widen(' ');
__os.flags(std::ios_base::dec | std::ios_base::fixed __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
| std::ios_base::left);
__os.fill(__space); __os.fill(__space);
for (int __i = 0; __i < __r; ++__i) for (int __i = 0; __i < __r; ++__i)
@ -407,8 +419,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator>>(std::basic_istream<_CharT, _Traits>& __is, operator>>(std::basic_istream<_CharT, _Traits>& __is,
subtract_with_carry<_IntType, __m, __s, __r>& __x) subtract_with_carry<_IntType, __m, __s, __r>& __x)
{ {
const std::ios_base::fmtflags __flags = __is.flags(); typedef std::basic_ostream<_CharT, _Traits> __istream_type;
__is.flags(std::ios_base::dec | std::ios_base::skipws); typedef typename __istream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __is.flags();
__is.flags(__ios_base::dec | __ios_base::skipws);
for (int __i = 0; __i < __r; ++__i) for (int __i = 0; __i < __r; ++__i)
__is >> __x._M_x[__i]; __is >> __x._M_x[__i];
@ -524,11 +539,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os, operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const subtract_with_carry_01<_RealType, __w, __s, __r>& __x) const subtract_with_carry_01<_RealType, __w, __s, __r>& __x)
{ {
const std::ios_base::fmtflags __flags = __os.flags(); typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
typedef typename __ostream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill(); const _CharT __fill = __os.fill();
const _CharT __space = __os.widen(' '); const _CharT __space = __os.widen(' ');
__os.flags(std::ios_base::dec | std::ios_base::fixed __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
| std::ios_base::left);
__os.fill(__space); __os.fill(__space);
for (int __i = 0; __i < __r; ++__i) for (int __i = 0; __i < __r; ++__i)
@ -547,8 +564,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator>>(std::basic_istream<_CharT, _Traits>& __is, operator>>(std::basic_istream<_CharT, _Traits>& __is,
subtract_with_carry_01<_RealType, __w, __s, __r>& __x) subtract_with_carry_01<_RealType, __w, __s, __r>& __x)
{ {
const std::ios_base::fmtflags __flags = __is.flags(); typedef std::basic_istream<_CharT, _Traits> __istream_type;
__is.flags(std::ios_base::dec | std::ios_base::skipws); typedef typename __istream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __is.flags();
__is.flags(__ios_base::dec | __ios_base::skipws);
for (int __i = 0; __i < __r; ++__i) for (int __i = 0; __i < __r; ++__i)
for (int __j = 0; __j < __x.__n; ++__j) for (int __j = 0; __j < __x.__n; ++__j)
@ -586,11 +606,14 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
const discard_block<_UniformRandomNumberGenerator, const discard_block<_UniformRandomNumberGenerator,
__p, __r>& __x) __p, __r>& __x)
{ {
const std::ios_base::fmtflags __flags = __os.flags(); typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
typedef typename __ostream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill(); const _CharT __fill = __os.fill();
const _CharT __space = __os.widen(' '); const _CharT __space = __os.widen(' ');
__os.flags(std::ios_base::dec | std::ios_base::fixed __os.flags(__ios_base::dec | __ios_base::fixed
| std::ios_base::left); | __ios_base::left);
__os.fill(__space); __os.fill(__space);
__os << __x._M_b << __space << __x._M_n; __os << __x._M_b << __space << __x._M_n;
@ -606,8 +629,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator>>(std::basic_istream<_CharT, _Traits>& __is, operator>>(std::basic_istream<_CharT, _Traits>& __is,
discard_block<_UniformRandomNumberGenerator, __p, __r>& __x) discard_block<_UniformRandomNumberGenerator, __p, __r>& __x)
{ {
const std::ios_base::fmtflags __flags = __is.flags(); typedef std::basic_istream<_CharT, _Traits> __istream_type;
__is.flags(std::ios_base::dec | std::ios_base::skipws); typedef typename __istream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __is.flags();
__is.flags(__ios_base::dec | __ios_base::skipws);
__is >> __x._M_b >> __x._M_n; __is >> __x._M_b >> __x._M_n;
@ -686,11 +712,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
const xor_combine<_UniformRandomNumberGenerator1, __s1, const xor_combine<_UniformRandomNumberGenerator1, __s1,
_UniformRandomNumberGenerator2, __s2>& __x) _UniformRandomNumberGenerator2, __s2>& __x)
{ {
const std::ios_base::fmtflags __flags = __os.flags(); typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
typedef typename __ostream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill(); const _CharT __fill = __os.fill();
const _CharT __space = __os.widen(' '); const _CharT __space = __os.widen(' ');
__os.flags(std::ios_base::dec | std::ios_base::fixed __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left);
| std::ios_base::left);
__os.fill(__space); __os.fill(__space);
__os << __x.base1() << __space << __x.base2(); __os << __x.base1() << __space << __x.base2();
@ -708,8 +736,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
xor_combine<_UniformRandomNumberGenerator1, __s1, xor_combine<_UniformRandomNumberGenerator1, __s1,
_UniformRandomNumberGenerator2, __s2>& __x) _UniformRandomNumberGenerator2, __s2>& __x)
{ {
const std::ios_base::fmtflags __flags = __is.flags(); typedef std::basic_istream<_CharT, _Traits> __istream_type;
__is.flags(std::ios_base::skipws); typedef typename __istream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __is.flags();
__is.flags(__ios_base::skipws);
__is >> __x._M_b1 >> __x._M_b2; __is >> __x._M_b1 >> __x._M_b2;
@ -723,10 +754,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os, operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const uniform_int<_IntType>& __x) const uniform_int<_IntType>& __x)
{ {
const std::ios_base::fmtflags __flags = __os.flags(); typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
typedef typename __ostream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill(); const _CharT __fill = __os.fill();
const _CharT __space = __os.widen(' '); const _CharT __space = __os.widen(' ');
__os.flags(std::ios_base::scientific | std::ios_base::left); __os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__space); __os.fill(__space);
__os << __x.min() << __space << __x.max(); __os << __x.min() << __space << __x.max();
@ -741,8 +775,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator>>(std::basic_istream<_CharT, _Traits>& __is, operator>>(std::basic_istream<_CharT, _Traits>& __is,
uniform_int<_IntType>& __x) uniform_int<_IntType>& __x)
{ {
const std::ios_base::fmtflags __flags = __is.flags(); typedef std::basic_istream<_CharT, _Traits> __istream_type;
__is.flags(std::ios_base::dec | std::ios_base::skipws); typedef typename __istream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __is.flags();
__is.flags(__ios_base::dec | __ios_base::skipws);
__is >> __x._M_min >> __x._M_max; __is >> __x._M_min >> __x._M_max;
@ -756,10 +793,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os, operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const bernoulli_distribution& __x) const bernoulli_distribution& __x)
{ {
const std::ios_base::fmtflags __flags = __os.flags(); typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
typedef typename __ostream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill(); const _CharT __fill = __os.fill();
const std::streamsize __precision = __os.precision(); const std::streamsize __precision = __os.precision();
__os.flags(std::ios_base::scientific | std::ios_base::left); __os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__os.widen(' ')); __os.fill(__os.widen(' '));
__os.precision(__gnu_cxx::__numeric_traits<double>::__max_digits10); __os.precision(__gnu_cxx::__numeric_traits<double>::__max_digits10);
@ -800,10 +840,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os, operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const geometric_distribution<_IntType, _RealType>& __x) const geometric_distribution<_IntType, _RealType>& __x)
{ {
const std::ios_base::fmtflags __flags = __os.flags(); typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
typedef typename __ostream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill(); const _CharT __fill = __os.fill();
const std::streamsize __precision = __os.precision(); const std::streamsize __precision = __os.precision();
__os.flags(std::ios_base::scientific | std::ios_base::left); __os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__os.widen(' ')); __os.fill(__os.widen(' '));
__os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);
@ -960,11 +1003,14 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os, operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const poisson_distribution<_IntType, _RealType>& __x) const poisson_distribution<_IntType, _RealType>& __x)
{ {
const std::ios_base::fmtflags __flags = __os.flags(); typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
typedef typename __ostream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill(); const _CharT __fill = __os.fill();
const std::streamsize __precision = __os.precision(); const std::streamsize __precision = __os.precision();
const _CharT __space = __os.widen(' '); const _CharT __space = __os.widen(' ');
__os.flags(std::ios_base::scientific | std::ios_base::left); __os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__space); __os.fill(__space);
__os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);
@ -982,8 +1028,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator>>(std::basic_istream<_CharT, _Traits>& __is, operator>>(std::basic_istream<_CharT, _Traits>& __is,
poisson_distribution<_IntType, _RealType>& __x) poisson_distribution<_IntType, _RealType>& __x)
{ {
const std::ios_base::fmtflags __flags = __is.flags(); typedef std::basic_istream<_CharT, _Traits> __istream_type;
__is.flags(std::ios_base::skipws); typedef typename __istream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __is.flags();
__is.flags(__ios_base::skipws);
__is >> __x._M_mean >> __x._M_nd; __is >> __x._M_mean >> __x._M_nd;
__x._M_initialize(); __x._M_initialize();
@ -1192,11 +1241,14 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os, operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const binomial_distribution<_IntType, _RealType>& __x) const binomial_distribution<_IntType, _RealType>& __x)
{ {
const std::ios_base::fmtflags __flags = __os.flags(); typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
typedef typename __ostream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill(); const _CharT __fill = __os.fill();
const std::streamsize __precision = __os.precision(); const std::streamsize __precision = __os.precision();
const _CharT __space = __os.widen(' '); const _CharT __space = __os.widen(' ');
__os.flags(std::ios_base::scientific | std::ios_base::left); __os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__space); __os.fill(__space);
__os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);
@ -1215,8 +1267,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator>>(std::basic_istream<_CharT, _Traits>& __is, operator>>(std::basic_istream<_CharT, _Traits>& __is,
binomial_distribution<_IntType, _RealType>& __x) binomial_distribution<_IntType, _RealType>& __x)
{ {
const std::ios_base::fmtflags __flags = __is.flags(); typedef std::basic_istream<_CharT, _Traits> __istream_type;
__is.flags(std::ios_base::dec | std::ios_base::skipws); typedef typename __istream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __is.flags();
__is.flags(__ios_base::dec | __ios_base::skipws);
__is >> __x._M_t >> __x._M_p >> __x._M_nd; __is >> __x._M_t >> __x._M_p >> __x._M_nd;
__x._M_initialize(); __x._M_initialize();
@ -1231,11 +1286,14 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os, operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const uniform_real<_RealType>& __x) const uniform_real<_RealType>& __x)
{ {
const std::ios_base::fmtflags __flags = __os.flags(); typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
typedef typename __ostream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill(); const _CharT __fill = __os.fill();
const std::streamsize __precision = __os.precision(); const std::streamsize __precision = __os.precision();
const _CharT __space = __os.widen(' '); const _CharT __space = __os.widen(' ');
__os.flags(std::ios_base::scientific | std::ios_base::left); __os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__space); __os.fill(__space);
__os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);
@ -1252,8 +1310,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator>>(std::basic_istream<_CharT, _Traits>& __is, operator>>(std::basic_istream<_CharT, _Traits>& __is,
uniform_real<_RealType>& __x) uniform_real<_RealType>& __x)
{ {
const std::ios_base::fmtflags __flags = __is.flags(); typedef std::basic_istream<_CharT, _Traits> __istream_type;
__is.flags(std::ios_base::skipws); typedef typename __istream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __is.flags();
__is.flags(__ios_base::skipws);
__is >> __x._M_min >> __x._M_max; __is >> __x._M_min >> __x._M_max;
@ -1267,10 +1328,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os, operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const exponential_distribution<_RealType>& __x) const exponential_distribution<_RealType>& __x)
{ {
const std::ios_base::fmtflags __flags = __os.flags(); typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
typedef typename __ostream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill(); const _CharT __fill = __os.fill();
const std::streamsize __precision = __os.precision(); const std::streamsize __precision = __os.precision();
__os.flags(std::ios_base::scientific | std::ios_base::left); __os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__os.widen(' ')); __os.fill(__os.widen(' '));
__os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);
@ -1328,11 +1392,14 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os, operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const normal_distribution<_RealType>& __x) const normal_distribution<_RealType>& __x)
{ {
const std::ios_base::fmtflags __flags = __os.flags(); typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
typedef typename __ostream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill(); const _CharT __fill = __os.fill();
const std::streamsize __precision = __os.precision(); const std::streamsize __precision = __os.precision();
const _CharT __space = __os.widen(' '); const _CharT __space = __os.widen(' ');
__os.flags(std::ios_base::scientific | std::ios_base::left); __os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__space); __os.fill(__space);
__os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);
@ -1353,8 +1420,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator>>(std::basic_istream<_CharT, _Traits>& __is, operator>>(std::basic_istream<_CharT, _Traits>& __is,
normal_distribution<_RealType>& __x) normal_distribution<_RealType>& __x)
{ {
const std::ios_base::fmtflags __flags = __is.flags(); typedef std::basic_istream<_CharT, _Traits> __istream_type;
__is.flags(std::ios_base::dec | std::ios_base::skipws); typedef typename __istream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __is.flags();
__is.flags(__ios_base::dec | __ios_base::skipws);
__is >> __x._M_saved_available >> __x._M_mean __is >> __x._M_saved_available >> __x._M_mean
>> __x._M_sigma; >> __x._M_sigma;
@ -1455,10 +1525,13 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
operator<<(std::basic_ostream<_CharT, _Traits>& __os, operator<<(std::basic_ostream<_CharT, _Traits>& __os,
const gamma_distribution<_RealType>& __x) const gamma_distribution<_RealType>& __x)
{ {
const std::ios_base::fmtflags __flags = __os.flags(); typedef std::basic_ostream<_CharT, _Traits> __ostream_type;
typedef typename __ostream_type::ios_base __ios_base;
const typename __ios_base::fmtflags __flags = __os.flags();
const _CharT __fill = __os.fill(); const _CharT __fill = __os.fill();
const std::streamsize __precision = __os.precision(); const std::streamsize __precision = __os.precision();
__os.flags(std::ios_base::scientific | std::ios_base::left); __os.flags(__ios_base::scientific | __ios_base::left);
__os.fill(__os.widen(' ')); __os.fill(__os.widen(' '));
__os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10);

View File

@ -1,6 +1,7 @@
// 2002-01-23 Loren J. Rittle <rittle@labs.mot.com> <ljrittle@acm.org> // 2002-01-23 Loren J. Rittle <rittle@labs.mot.com> <ljrittle@acm.org>
// //
// Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. // Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
// Free Software Foundation, Inc.
// //
// 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
@ -30,9 +31,7 @@
// if the STL threading support is fubar'd). // if the STL threading support is fubar'd).
#include <list> #include <list>
#include <pthread.h>
// Do not include <pthread.h> explicitly; if threads are properly
// configured for the port, then it is picked up free from STL headers.
using namespace std; using namespace std;

View File

@ -1,7 +1,8 @@
// 2002-01-23 Loren J. Rittle <rittle@labs.mot.com> <ljrittle@acm.org> // 2002-01-23 Loren J. Rittle <rittle@labs.mot.com> <ljrittle@acm.org>
// Adpated from libstdc++/5347 submitted by markus.breuer@materna.de // Adpated from libstdc++/5347 submitted by markus.breuer@materna.de
// //
// Copyright (C) 2002, 2003 Free Software Foundation, Inc. // Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
// Free Software Foundation, Inc.
// //
// 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
@ -24,9 +25,7 @@
// { dg-options "-pthreads" { target *-*-solaris* } } // { dg-options "-pthreads" { target *-*-solaris* } }
#include <fstream> #include <fstream>
#include <pthread.h>
// Do not include <pthread.h> explicitly; if threads are properly
// configured for the port, then it is picked up free from STL headers.
const int max_thread_count = 2; const int max_thread_count = 2;
const int max_loop_count = 1000000; const int max_loop_count = 1000000;

View File

@ -1,7 +1,8 @@
// 2002-01-23 Loren J. Rittle <rittle@labs.mot.com> <ljrittle@acm.org> // 2002-01-23 Loren J. Rittle <rittle@labs.mot.com> <ljrittle@acm.org>
// Adpated from libstdc++/5347 submitted by markus.breuer@materna.de // Adpated from libstdc++/5347 submitted by markus.breuer@materna.de
// //
// Copyright (C) 2002, 2003 Free Software Foundation, Inc. // Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
// Free Software Foundation, Inc.
// //
// 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
@ -24,9 +25,7 @@
// { dg-options "-pthreads" { target *-*-solaris* } } // { dg-options "-pthreads" { target *-*-solaris* } }
#include <sstream> #include <sstream>
#include <pthread.h>
// Do not include <pthread.h> explicitly; if threads are properly
// configured for the port, then it is picked up free from STL headers.
const int max_thread_count = 2; const int max_thread_count = 2;
const int max_loop_count = 1000000; const int max_loop_count = 1000000;

View File

@ -2,7 +2,8 @@
// Adapted from http://gcc.gnu.org/ml/gcc-bugs/2002-01/msg00679.html // Adapted from http://gcc.gnu.org/ml/gcc-bugs/2002-01/msg00679.html
// which was adapted from pthread1.cc by Mike Lu <MLu@dynamicsoft.com> // which was adapted from pthread1.cc by Mike Lu <MLu@dynamicsoft.com>
// //
// Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. // Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
// Free Software Foundation, Inc.
// //
// 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
@ -26,9 +27,7 @@
#include <string> #include <string>
#include <list> #include <list>
#include <pthread.h>
// Do not include <pthread.h> explicitly; if threads are properly
// configured for the port, then it is picked up free from STL headers.
using namespace std; using namespace std;

View File

@ -2,7 +2,8 @@
// Adpated from libstdc++/5464 submitted by jjessel@amadeus.net // Adpated from libstdc++/5464 submitted by jjessel@amadeus.net
// Jean-Francois JESSEL (Amadeus SAS Development) // Jean-Francois JESSEL (Amadeus SAS Development)
// //
// Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. // Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
// Free Software Foundation, Inc.
// //
// 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
@ -27,9 +28,7 @@
#include <vector> #include <vector>
#include <list> #include <list>
#include <string> #include <string>
#include <pthread.h>
// Do not include <pthread.h> explicitly; if threads are properly
// configured for the port, then it is picked up free from STL headers.
#ifdef _GLIBCXX_HAVE_UNISTD_H #ifdef _GLIBCXX_HAVE_UNISTD_H
#include <unistd.h> // To test for _POSIX_THREAD_PRIORITY_SCHEDULING #include <unistd.h> // To test for _POSIX_THREAD_PRIORITY_SCHEDULING

View File

@ -1,7 +1,8 @@
// 2002-01-23 Loren J. Rittle <rittle@labs.mot.com> <ljrittle@acm.org> // 2002-01-23 Loren J. Rittle <rittle@labs.mot.com> <ljrittle@acm.org>
// Adpated from libstdc++/5444 submitted by markus.breuer@materna.de // Adpated from libstdc++/5444 submitted by markus.breuer@materna.de
// //
// Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. // Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
// Free Software Foundation, Inc.
// //
// 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
@ -26,9 +27,7 @@
#include <string> #include <string>
#include <map> #include <map>
#include <vector> #include <vector>
#include <pthread.h>
// Do not include <pthread.h> explicitly; if threads are properly
// configured for the port, then it is picked up free from STL headers.
const int max_thread_count = 8; const int max_thread_count = 8;
const int loops = 100000; const int loops = 100000;

View File

@ -1,6 +1,6 @@
// 2003-05-03 Loren J. Rittle <rittle@labs.mot.com> <ljrittle@acm.org> // 2003-05-03 Loren J. Rittle <rittle@labs.mot.com> <ljrittle@acm.org>
// //
// Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. // Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
// //
// 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
@ -24,11 +24,9 @@
#include <ext/rope> #include <ext/rope>
#include <cstring> #include <cstring>
#include <pthread.h>
#include <testsuite_hooks.h> #include <testsuite_hooks.h>
// Do not include <pthread.h> explicitly; if threads are properly
// configured for the port, then it is picked up free from STL headers.
const int max_thread_count = 4; const int max_thread_count = 4;
const int max_loop_count = 10000; const int max_loop_count = 10000;