Commit 42d18a47 by Benjamin Kosnik

[multiple changes]



2000-07-05  brent verner  <brent@rcfile.org>

	* testsuite/27_io/ifstream_members.cc (test01): Add tests.
	* testsuite/27_io/ofstream_members.cc (test01): Add tests.
	* config/c_io_libio.cc (__basic_file::open): Unset
	~_IO_DELETE_DONT_CLOSE.

2000-07-05  Zack Weinberg  <zack@wolery.cumb.org>

        * bits/gslice_array.h, bits/indirect_array.h, bits/mask_array.h,
        bits/slice_array.h, bits/std_valarray.h, bits/valarray_meta.h:
        Do not paste anything after 'operator' keyword.

From-SVN: r34877
parent 0267da64
2000-07-05 brent verner <brent@rcfile.org>
* testsuite/27_io/ifstream_members.cc (test01): Add tests.
* testsuite/27_io/ofstream_members.cc (test01): Add tests.
* config/c_io_libio.cc (__basic_file::open): Unset
~_IO_DELETE_DONT_CLOSE.
2000-07-05 Zack Weinberg <zack@wolery.cumb.org>
* bits/gslice_array.h, bits/indirect_array.h, bits/mask_array.h,
bits/slice_array.h, bits/std_valarray.h, bits/valarray_meta.h:
Do not paste anything after 'operator' keyword.
2000-07-03 Benjamin Kosnik <bkoz@purist.soma.redhat.com> 2000-07-03 Benjamin Kosnik <bkoz@purist.soma.redhat.com>
* bits/std_memory.h: Revert. * bits/std_memory.h: Revert.
......
// The template and inlines for the -*- C++ -*- gslice_array class. // The template and inlines for the -*- C++ -*- gslice_array class.
// Copyright (C) 1997-1999 Free Software Foundation, Inc. // Copyright (C) 1997-1999, 2000 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
...@@ -133,7 +133,7 @@ namespace std { ...@@ -133,7 +133,7 @@ namespace std {
#define _DEFINE_VALARRAY_OPERATOR(op, name) \ #define _DEFINE_VALARRAY_OPERATOR(op, name) \
template<typename _Tp> \ template<typename _Tp> \
inline void \ inline void \
gslice_array<_Tp>::operator##op##= (const valarray<_Tp>& __v) const \ gslice_array<_Tp>::operator op##= (const valarray<_Tp>& __v) const \
{ \ { \
_Array_augmented_##name (_M_array, _Array<size_t>(_M_index), \ _Array_augmented_##name (_M_array, _Array<size_t>(_M_index), \
_Array<_Tp> (__v), __v.size ()); \ _Array<_Tp> (__v), __v.size ()); \
...@@ -141,7 +141,7 @@ gslice_array<_Tp>::operator##op##= (const valarray<_Tp>& __v) const \ ...@@ -141,7 +141,7 @@ gslice_array<_Tp>::operator##op##= (const valarray<_Tp>& __v) const \
\ \
template<typename _Tp> template<class E> \ template<typename _Tp> template<class E> \
inline void \ inline void \
gslice_array<_Tp>::operator##op##= (const _Expr<E, _Tp>& __e) const \ gslice_array<_Tp>::operator op##= (const _Expr<E, _Tp>& __e) const \
{ \ { \
_Array_augmented_##name (_M_array, _Array<size_t>(_M_index), __e, \ _Array_augmented_##name (_M_array, _Array<size_t>(_M_index), __e, \
_M_index.size()); \ _M_index.size()); \
......
// The template and inlines for the -*- C++ -*- indirect_array class. // The template and inlines for the -*- C++ -*- indirect_array class.
// Copyright (C) 1997-1999 Free Software Foundation, Inc. // Copyright (C) 1997-1999, 2000 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
...@@ -126,14 +126,14 @@ namespace std { ...@@ -126,14 +126,14 @@ namespace std {
#define _DEFINE_VALARRAY_OPERATOR(op, name) \ #define _DEFINE_VALARRAY_OPERATOR(op, name) \
template<typename _Tp> \ template<typename _Tp> \
inline void \ inline void \
indirect_array<_Tp>::operator##op##= (const valarray<_Tp>& __v) const \ indirect_array<_Tp>::operator op##= (const valarray<_Tp>& __v) const \
{ \ { \
_Array_augmented_##name (_M_array, _M_index, _Array<_Tp> (__v), _M_sz); \ _Array_augmented_##name (_M_array, _M_index, _Array<_Tp> (__v), _M_sz); \
} \ } \
\ \
template<typename _Tp> template<class _Dom> \ template<typename _Tp> template<class _Dom> \
inline void \ inline void \
indirect_array<_Tp>::operator##op##= (const _Expr<_Dom,_Tp>& __e) const \ indirect_array<_Tp>::operator op##= (const _Expr<_Dom,_Tp>& __e) const \
{ \ { \
_Array_augmented_##name (_M_array, _M_index, __e, _M_sz); \ _Array_augmented_##name (_M_array, _M_index, __e, _M_sz); \
} }
......
// The template and inlines for the -*- C++ -*- mask_array class. // The template and inlines for the -*- C++ -*- mask_array class.
// Copyright (C) 1997-1999 Free Software Foundation, Inc. // Copyright (C) 1997-1999, 2000 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
...@@ -125,7 +125,7 @@ namespace std { ...@@ -125,7 +125,7 @@ namespace std {
#define _DEFINE_VALARRAY_OPERATOR(op, name) \ #define _DEFINE_VALARRAY_OPERATOR(op, name) \
template<typename _Tp> \ template<typename _Tp> \
inline void \ inline void \
mask_array<_Tp>::operator##op##= (const valarray<_Tp>& __v) const \ mask_array<_Tp>::operator op##= (const valarray<_Tp>& __v) const \
{ \ { \
_Array_augmented_##name (_M_array, _M_mask, \ _Array_augmented_##name (_M_array, _M_mask, \
_Array<_Tp> (__v), __v.size ()); \ _Array<_Tp> (__v), __v.size ()); \
...@@ -133,7 +133,7 @@ mask_array<_Tp>::operator##op##= (const valarray<_Tp>& __v) const \ ...@@ -133,7 +133,7 @@ mask_array<_Tp>::operator##op##= (const valarray<_Tp>& __v) const \
\ \
template<typename _Tp> template<class E> \ template<typename _Tp> template<class E> \
inline void \ inline void \
mask_array<_Tp>::operator##op##= (const _Expr<E, _Tp>& __e) const \ mask_array<_Tp>::operator op##= (const _Expr<E, _Tp>& __e) const \
{ \ { \
_Array_augmented_##name (_M_array, _M_mask, __e, __e.size ()); \ _Array_augmented_##name (_M_array, _M_mask, __e, __e.size ()); \
} }
......
// The template and inlines for the -*- C++ -*- slice_array class. // The template and inlines for the -*- C++ -*- slice_array class.
// Copyright (C) 1997-1999 Free Software Foundation, Inc. // Copyright (C) 1997-1999, 2000 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
...@@ -126,14 +126,14 @@ namespace std { ...@@ -126,14 +126,14 @@ namespace std {
#define _DEFINE_VALARRAY_OPERATOR(op, name) \ #define _DEFINE_VALARRAY_OPERATOR(op, name) \
template<typename _Tp> \ template<typename _Tp> \
inline void \ inline void \
slice_array<_Tp>::operator##op##= (const valarray<_Tp>& __v) const \ slice_array<_Tp>::operator op##= (const valarray<_Tp>& __v) const \
{ \ { \
_Array_augmented_##name (_M_array, _M_sz, _M_stride, _Array<_Tp> (__v));\ _Array_augmented_##name (_M_array, _M_sz, _M_stride, _Array<_Tp> (__v));\
} \ } \
\ \
template<typename _Tp> template<class _Dom> \ template<typename _Tp> template<class _Dom> \
inline void \ inline void \
slice_array<_Tp>::operator##op##= (const _Expr<_Dom,_Tp>& __e) const \ slice_array<_Tp>::operator op##= (const _Expr<_Dom,_Tp>& __e) const \
{ \ { \
_Array_augmented_##name (_M_array, _M_stride, __e, _M_sz); \ _Array_augmented_##name (_M_array, _M_stride, __e, _M_sz); \
} }
......
// The template and inlines for the -*- C++ -*- valarray class. // The template and inlines for the -*- C++ -*- valarray class.
// Copyright (C) 1997-1999 Free Software Foundation, Inc. // Copyright (C) 1997-1999, 2000 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
...@@ -585,7 +585,7 @@ namespace std { ...@@ -585,7 +585,7 @@ namespace std {
#define _DEFINE_VALARRAY_UNARY_OPERATOR(_Op, _Name) \ #define _DEFINE_VALARRAY_UNARY_OPERATOR(_Op, _Name) \
template<typename _Tp> \ template<typename _Tp> \
inline _Expr<_UnClos<_Name,_ValArray,_Tp>, _Tp> \ inline _Expr<_UnClos<_Name,_ValArray,_Tp>, _Tp> \
valarray<_Tp>::operator##_Op() const \ valarray<_Tp>::operator _Op() const \
{ \ { \
typedef _UnClos<_Name,_ValArray,_Tp> _Closure; \ typedef _UnClos<_Name,_ValArray,_Tp> _Closure; \
return _Expr<_Closure, _Tp> (_Closure (*this)); \ return _Expr<_Closure, _Tp> (_Closure (*this)); \
...@@ -608,7 +608,7 @@ namespace std { ...@@ -608,7 +608,7 @@ namespace std {
#define _DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(_Op, _Name) \ #define _DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(_Op, _Name) \
template<class _Tp> \ template<class _Tp> \
inline valarray<_Tp> & \ inline valarray<_Tp> & \
valarray<_Tp>::operator##_Op##= (const _Tp &__t) \ valarray<_Tp>::operator _Op##= (const _Tp &__t) \
{ \ { \
_Array_augmented_##_Name (_Array<_Tp>(_M_data), _M_size, __t); \ _Array_augmented_##_Name (_Array<_Tp>(_M_data), _M_size, __t); \
return *this; \ return *this; \
...@@ -616,7 +616,7 @@ namespace std { ...@@ -616,7 +616,7 @@ namespace std {
\ \
template<class _Tp> \ template<class _Tp> \
inline valarray<_Tp> & \ inline valarray<_Tp> & \
valarray<_Tp>::operator##_Op##= (const valarray<_Tp> &__v) \ valarray<_Tp>::operator _Op##= (const valarray<_Tp> &__v) \
{ \ { \
_Array_augmented_##_Name (_Array<_Tp>(_M_data), _M_size, \ _Array_augmented_##_Name (_Array<_Tp>(_M_data), _M_size, \
_Array<_Tp>(__v._M_data)); \ _Array<_Tp>(__v._M_data)); \
...@@ -645,7 +645,7 @@ namespace std { ...@@ -645,7 +645,7 @@ namespace std {
#define _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(_Op, _Name) \ #define _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(_Op, _Name) \
template<class _Tp> template<class _Dom> \ template<class _Tp> template<class _Dom> \
inline valarray<_Tp> & \ inline valarray<_Tp> & \
valarray<_Tp>::operator##_Op##= (const _Expr<_Dom,_Tp> &__e) \ valarray<_Tp>::operator _Op##= (const _Expr<_Dom,_Tp> &__e) \
{ \ { \
_Array_augmented_##_Name (_Array<_Tp>(_M_data), __e, _M_size); \ _Array_augmented_##_Name (_Array<_Tp>(_M_data), __e, _M_size); \
return *this; \ return *this; \
...@@ -668,7 +668,7 @@ _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(>>, shift_right) ...@@ -668,7 +668,7 @@ _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(>>, shift_right)
#define _DEFINE_BINARY_OPERATOR(_Op, _Name) \ #define _DEFINE_BINARY_OPERATOR(_Op, _Name) \
template<typename _Tp> \ template<typename _Tp> \
inline _Expr<_BinClos<_Name,_ValArray,_ValArray,_Tp,_Tp>, _Tp> \ inline _Expr<_BinClos<_Name,_ValArray,_ValArray,_Tp,_Tp>, _Tp> \
operator##_Op (const valarray<_Tp> &__v, const valarray<_Tp> &__w) \ operator _Op (const valarray<_Tp> &__v, const valarray<_Tp> &__w) \
{ \ { \
typedef _BinClos<_Name,_ValArray,_ValArray,_Tp,_Tp> _Closure; \ typedef _BinClos<_Name,_ValArray,_ValArray,_Tp,_Tp> _Closure; \
return _Expr<_Closure, _Tp> (_Closure (__v, __w)); \ return _Expr<_Closure, _Tp> (_Closure (__v, __w)); \
...@@ -676,7 +676,7 @@ _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(>>, shift_right) ...@@ -676,7 +676,7 @@ _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(>>, shift_right)
\ \
template<typename _Tp> \ template<typename _Tp> \
inline _Expr<_BinClos<_Name,_ValArray,_Constant,_Tp,_Tp>,_Tp> \ inline _Expr<_BinClos<_Name,_ValArray,_Constant,_Tp,_Tp>,_Tp> \
operator##_Op (const valarray<_Tp> &__v, const _Tp &__t) \ operator _Op (const valarray<_Tp> &__v, const _Tp &__t) \
{ \ { \
typedef _BinClos<_Name,_ValArray,_Constant,_Tp,_Tp> _Closure; \ typedef _BinClos<_Name,_ValArray,_Constant,_Tp,_Tp> _Closure; \
return _Expr<_Closure, _Tp> (_Closure (__v, __t)); \ return _Expr<_Closure, _Tp> (_Closure (__v, __t)); \
...@@ -684,7 +684,7 @@ _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(>>, shift_right) ...@@ -684,7 +684,7 @@ _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(>>, shift_right)
\ \
template<typename _Tp> \ template<typename _Tp> \
inline _Expr<_BinClos<_Name,_Constant,_ValArray,_Tp,_Tp>,_Tp> \ inline _Expr<_BinClos<_Name,_Constant,_ValArray,_Tp,_Tp>,_Tp> \
operator##_Op (const _Tp &__t, const valarray<_Tp> &__v) \ operator _Op (const _Tp &__t, const valarray<_Tp> &__v) \
{ \ { \
typedef _BinClos<_Name,_Constant,_ValArray,_Tp,_Tp> _Closure; \ typedef _BinClos<_Name,_Constant,_ValArray,_Tp,_Tp> _Closure; \
return _Expr<_Closure, _Tp> (_Closure (__t, __v)); \ return _Expr<_Closure, _Tp> (_Closure (__t, __v)); \
...@@ -706,7 +706,7 @@ _DEFINE_BINARY_OPERATOR(>>, _Shift_right) ...@@ -706,7 +706,7 @@ _DEFINE_BINARY_OPERATOR(>>, _Shift_right)
#define _DEFINE_LOGICAL_OPERATOR(_Op, _Name) \ #define _DEFINE_LOGICAL_OPERATOR(_Op, _Name) \
template<typename _Tp> \ template<typename _Tp> \
inline _Expr<_BinClos<_Name,_ValArray,_ValArray,_Tp,_Tp>,bool> \ inline _Expr<_BinClos<_Name,_ValArray,_ValArray,_Tp,_Tp>,bool> \
operator##_Op (const valarray<_Tp> &__v, const valarray<_Tp> &__w) \ operator _Op (const valarray<_Tp> &__v, const valarray<_Tp> &__w) \
{ \ { \
typedef _BinClos<_Name,_ValArray,_ValArray,_Tp,_Tp> _Closure; \ typedef _BinClos<_Name,_ValArray,_ValArray,_Tp,_Tp> _Closure; \
return _Expr<_Closure, bool> (_Closure (__v, __w)); \ return _Expr<_Closure, bool> (_Closure (__v, __w)); \
...@@ -714,7 +714,7 @@ _DEFINE_BINARY_OPERATOR(>>, _Shift_right) ...@@ -714,7 +714,7 @@ _DEFINE_BINARY_OPERATOR(>>, _Shift_right)
\ \
template<class _Tp> \ template<class _Tp> \
inline _Expr<_BinClos<_Name,_ValArray,_Constant,_Tp,_Tp>,bool> \ inline _Expr<_BinClos<_Name,_ValArray,_Constant,_Tp,_Tp>,bool> \
operator##_Op (const valarray<_Tp> &__v, const _Tp &__t) \ operator _Op (const valarray<_Tp> &__v, const _Tp &__t) \
{ \ { \
typedef _BinClos<_Name,_ValArray,_Constant,_Tp,_Tp> _Closure; \ typedef _BinClos<_Name,_ValArray,_Constant,_Tp,_Tp> _Closure; \
return _Expr<_Closure, bool> (_Closure (__v, __t)); \ return _Expr<_Closure, bool> (_Closure (__v, __t)); \
...@@ -722,7 +722,7 @@ _DEFINE_BINARY_OPERATOR(>>, _Shift_right) ...@@ -722,7 +722,7 @@ _DEFINE_BINARY_OPERATOR(>>, _Shift_right)
\ \
template<class _Tp> \ template<class _Tp> \
inline _Expr<_BinClos<_Name,_Constant,_ValArray,_Tp,_Tp>,bool> \ inline _Expr<_BinClos<_Name,_Constant,_ValArray,_Tp,_Tp>,bool> \
operator##_Op (const _Tp &__t, const valarray<_Tp> &__v) \ operator _Op (const _Tp &__t, const valarray<_Tp> &__v) \
{ \ { \
typedef _BinClos<_Name,_Constant,_ValArray,_Tp,_Tp> _Closure; \ typedef _BinClos<_Name,_Constant,_ValArray,_Tp,_Tp> _Closure; \
return _Expr<_Closure, bool> (_Closure (__t, __v)); \ return _Expr<_Closure, bool> (_Closure (__t, __v)); \
......
// The template and inlines for the -*- C++ -*- internal _Meta class. // The template and inlines for the -*- C++ -*- internal _Meta class.
// Copyright (C) 1997-1999 Free Software Foundation, Inc. // Copyright (C) 1997-1999, 2000 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
...@@ -763,7 +763,7 @@ namespace std { ...@@ -763,7 +763,7 @@ namespace std {
#define _DEFINE_EXPR_UNARY_OPERATOR(_Op, _Name) \ #define _DEFINE_EXPR_UNARY_OPERATOR(_Op, _Name) \
template<class _Dom, typename _Tp> \ template<class _Dom, typename _Tp> \
inline _Expr<_UnClos<_Name,_Expr,_Dom>,_Tp> \ inline _Expr<_UnClos<_Name,_Expr,_Dom>,_Tp> \
_Expr<_Dom,_Tp>::operator##_Op () const \ _Expr<_Dom,_Tp>::operator _Op () const \
{ \ { \
typedef _UnClos<_Name,_Expr,_Dom> _Closure; \ typedef _UnClos<_Name,_Expr,_Dom> _Closure; \
return _Expr<_Closure,_Tp> (_Closure (this->_M_closure)); \ return _Expr<_Closure,_Tp> (_Closure (this->_M_closure)); \
...@@ -780,7 +780,7 @@ _Expr<_Dom,_Tp>::operator##_Op () const \ ...@@ -780,7 +780,7 @@ _Expr<_Dom,_Tp>::operator##_Op () const \
template<class _Dom1, class _Dom2> \ template<class _Dom1, class _Dom2> \
inline _Expr<_BinClos<_Name,_Expr,_Expr,_Dom1,_Dom2>, \ inline _Expr<_BinClos<_Name,_Expr,_Expr,_Dom1,_Dom2>, \
typename _Name<typename _Dom1::value_type>::result_type> \ typename _Name<typename _Dom1::value_type>::result_type> \
operator##_Op (const _Expr<_Dom1,typename _Dom1::value_type>& __v, \ operator _Op (const _Expr<_Dom1,typename _Dom1::value_type>& __v, \
const _Expr<_Dom2,typename _Dom2::value_type>& __w) \ const _Expr<_Dom2,typename _Dom2::value_type>& __w) \
{ \ { \
typedef typename _Dom1::value_type _Arg; \ typedef typename _Dom1::value_type _Arg; \
...@@ -792,7 +792,7 @@ operator##_Op (const _Expr<_Dom1,typename _Dom1::value_type>& __v, \ ...@@ -792,7 +792,7 @@ operator##_Op (const _Expr<_Dom1,typename _Dom1::value_type>& __v, \
template<class _Dom> \ template<class _Dom> \
inline _Expr<_BinClos<_Name,_Expr,_Constant,_Dom,typename _Dom::value_type>, \ inline _Expr<_BinClos<_Name,_Expr,_Constant,_Dom,typename _Dom::value_type>, \
typename _Name<typename _Dom::value_type>::result_type> \ typename _Name<typename _Dom::value_type>::result_type> \
operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __v, \ operator _Op (const _Expr<_Dom,typename _Dom::value_type>& __v, \
const typename _Dom::value_type& __t) \ const typename _Dom::value_type& __t) \
{ \ { \
typedef typename _Dom::value_type _Arg; \ typedef typename _Dom::value_type _Arg; \
...@@ -804,7 +804,7 @@ operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __v, \ ...@@ -804,7 +804,7 @@ operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __v, \
template<class _Dom> \ template<class _Dom> \
inline _Expr<_BinClos<_Name,_Constant,_Expr,typename _Dom::value_type,_Dom>, \ inline _Expr<_BinClos<_Name,_Constant,_Expr,typename _Dom::value_type,_Dom>, \
typename _Name<typename _Dom::value_type>::result_type> \ typename _Name<typename _Dom::value_type>::result_type> \
operator##_Op (const typename _Dom::value_type& __t, \ operator _Op (const typename _Dom::value_type& __t, \
const _Expr<_Dom,typename _Dom::value_type>& __v) \ const _Expr<_Dom,typename _Dom::value_type>& __v) \
{ \ { \
typedef typename _Dom::value_type _Arg; \ typedef typename _Dom::value_type _Arg; \
...@@ -816,7 +816,7 @@ operator##_Op (const typename _Dom::value_type& __t, \ ...@@ -816,7 +816,7 @@ operator##_Op (const typename _Dom::value_type& __t, \
template<class _Dom> \ template<class _Dom> \
inline _Expr<_BinClos<_Name,_Expr,_ValArray,_Dom,typename _Dom::value_type>, \ inline _Expr<_BinClos<_Name,_Expr,_ValArray,_Dom,typename _Dom::value_type>, \
typename _Name<typename _Dom::value_type>::result_type> \ typename _Name<typename _Dom::value_type>::result_type> \
operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __e, \ operator _Op (const _Expr<_Dom,typename _Dom::value_type>& __e, \
const valarray<typename _Dom::value_type>& __v) \ const valarray<typename _Dom::value_type>& __v) \
{ \ { \
typedef typename _Dom::value_type _Arg; \ typedef typename _Dom::value_type _Arg; \
...@@ -828,7 +828,7 @@ operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __e, \ ...@@ -828,7 +828,7 @@ operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __e, \
template<class _Dom> \ template<class _Dom> \
inline _Expr<_BinClos<_Name,_ValArray,_Expr,typename _Dom::value_type,_Dom>, \ inline _Expr<_BinClos<_Name,_ValArray,_Expr,typename _Dom::value_type,_Dom>, \
typename _Name<typename _Dom::value_type>::result_type> \ typename _Name<typename _Dom::value_type>::result_type> \
operator##_Op (const valarray<typename _Dom::value_type>& __v, \ operator _Op (const valarray<typename _Dom::value_type>& __v, \
const _Expr<_Dom,typename _Dom::value_type>& __e) \ const _Expr<_Dom,typename _Dom::value_type>& __e) \
{ \ { \
typedef typename _Dom::value_type _Tp; \ typedef typename _Dom::value_type _Tp; \
...@@ -853,7 +853,7 @@ operator##_Op (const valarray<typename _Dom::value_type>& __v, \ ...@@ -853,7 +853,7 @@ operator##_Op (const valarray<typename _Dom::value_type>& __v, \
#define _DEFINE_EXPR_RELATIONAL_OPERATOR(_Op, _Name) \ #define _DEFINE_EXPR_RELATIONAL_OPERATOR(_Op, _Name) \
template<class _Dom1, class _Dom2> \ template<class _Dom1, class _Dom2> \
inline _Expr<_BinClos<_Name,_Expr,_Expr,_Dom1,_Dom2>, bool> \ inline _Expr<_BinClos<_Name,_Expr,_Expr,_Dom1,_Dom2>, bool> \
operator##_Op (const _Expr<_Dom1,typename _Dom1::value_type>& __v, \ operator _Op (const _Expr<_Dom1,typename _Dom1::value_type>& __v, \
const _Expr<_Dom2,typename _Dom2::value_type>& __w) \ const _Expr<_Dom2,typename _Dom2::value_type>& __w) \
{ \ { \
typedef typename _Dom1::value_type _Arg; \ typedef typename _Dom1::value_type _Arg; \
...@@ -864,7 +864,7 @@ operator##_Op (const _Expr<_Dom1,typename _Dom1::value_type>& __v, \ ...@@ -864,7 +864,7 @@ operator##_Op (const _Expr<_Dom1,typename _Dom1::value_type>& __v, \
template<class _Dom> \ template<class _Dom> \
inline _Expr<_BinClos<_Name,_Expr,_Constant,_Dom,typename _Dom::value_type>, \ inline _Expr<_BinClos<_Name,_Expr,_Constant,_Dom,typename _Dom::value_type>, \
bool> \ bool> \
operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __v, \ operator _Op (const _Expr<_Dom,typename _Dom::value_type>& __v, \
const typename _Dom::value_type& __t) \ const typename _Dom::value_type& __t) \
{ \ { \
typedef typename _Dom::value_type _Arg; \ typedef typename _Dom::value_type _Arg; \
...@@ -875,7 +875,7 @@ operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __v, \ ...@@ -875,7 +875,7 @@ operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __v, \
template<class _Dom> \ template<class _Dom> \
inline _Expr<_BinClos<_Name,_Constant,_Expr,typename _Dom::value_type,_Dom>, \ inline _Expr<_BinClos<_Name,_Constant,_Expr,typename _Dom::value_type,_Dom>, \
bool> \ bool> \
operator##_Op (const typename _Dom::value_type& __t, \ operator _Op (const typename _Dom::value_type& __t, \
const _Expr<_Dom,typename _Dom::value_type>& __v) \ const _Expr<_Dom,typename _Dom::value_type>& __v) \
{ \ { \
typedef typename _Dom::value_type _Arg; \ typedef typename _Dom::value_type _Arg; \
...@@ -886,7 +886,7 @@ operator##_Op (const typename _Dom::value_type& __t, \ ...@@ -886,7 +886,7 @@ operator##_Op (const typename _Dom::value_type& __t, \
template<class _Dom> \ template<class _Dom> \
inline _Expr<_BinClos<_Name,_Expr,_ValArray,_Dom,typename _Dom::value_type>, \ inline _Expr<_BinClos<_Name,_Expr,_ValArray,_Dom,typename _Dom::value_type>, \
bool> \ bool> \
operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __e, \ operator _Op (const _Expr<_Dom,typename _Dom::value_type>& __e, \
const valarray<typename _Dom::value_type>& __v) \ const valarray<typename _Dom::value_type>& __v) \
{ \ { \
typedef typename _Dom::value_type _Tp; \ typedef typename _Dom::value_type _Tp; \
...@@ -897,7 +897,7 @@ operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __e, \ ...@@ -897,7 +897,7 @@ operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __e, \
template<class _Dom> \ template<class _Dom> \
inline _Expr<_BinClos<_Name,_ValArray,_Expr,typename _Dom::value_type,_Dom>, \ inline _Expr<_BinClos<_Name,_ValArray,_Expr,typename _Dom::value_type,_Dom>, \
bool> \ bool> \
operator##_Op (const valarray<typename _Dom::value_type>& __v, \ operator _Op (const valarray<typename _Dom::value_type>& __v, \
const _Expr<_Dom,typename _Dom::value_type>& __e) \ const _Expr<_Dom,typename _Dom::value_type>& __e) \
{ \ { \
typedef typename _Dom::value_type _Tp; \ typedef typename _Dom::value_type _Tp; \
......
...@@ -152,6 +152,7 @@ namespace std { ...@@ -152,6 +152,7 @@ namespace std {
#if _G_HAVE_IO_FILE_OPEN #if _G_HAVE_IO_FILE_OPEN
__c_file_type* __f; __c_file_type* __f;
__f = _IO_file_open(this, __name, __p_mode, __prot, __rw_mode, 0); __f = _IO_file_open(this, __name, __p_mode, __prot, __rw_mode, 0);
_flags &= ~_IO_DELETE_DONT_CLOSE;
__retval = __f ? this: NULL; __retval = __f ? this: NULL;
#else #else
int __fd = ::open(__name, __p_mode, __prot); int __fd = ::open(__name, __p_mode, __prot);
......
...@@ -54,7 +54,28 @@ bool test00() ...@@ -54,7 +54,28 @@ bool test00()
return test; return test;
} }
// http://sourceware.cygnus.com/ml/libstdc++/2000-07/msg00004.html
bool test01()
{
bool test = true;
const int more_than_max_open_files = 8200;
for(int i = 0; ++i < more_than_max_open_files;)
{
std::ifstream ifs(name_01);
test &= static_cast<bool>(ifs);
}
#ifdef DEBUG_ASSERT
assert(test);
#endif
return test;
}
int main() int main()
{ {
test00(); test00();
test01();
} }
...@@ -54,7 +54,28 @@ bool test00() ...@@ -54,7 +54,28 @@ bool test00()
return test; return test;
} }
// http://sourceware.cygnus.com/ml/libstdc++/2000-07/msg00004.html
bool test01()
{
bool test = true;
const int more_than_max_open_files = 8200;
for(int i = 0; ++i < more_than_max_open_files;)
{
std::ofstream ifs(name_02);
test &= static_cast<bool>(ifs);
}
#ifdef DEBUG_ASSERT
assert(test);
#endif
return test;
}
int main() int main()
{ {
test00(); test00();
test01();
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment