Commit 8164237c by Gabriel Dos Reis Committed by Gabriel Dos Reis

indirect_array.h (indirect_array<>::operator=): Make copy and assignment operator public.

	* include/bits/indirect_array.h (indirect_array<>::operator=):
	Make copy and assignment operator public.  Implement.  Format.

	* include/bits/valarray_array.h (__valarray_copy): Add overloads
	for copy between index arrays.  Format.

From-SVN: r43483
parent c0eadc6b
2001-06-21 Gabriel Dos Reis <gdr@merlin.codesourcery.com>
* include/bits/indirect_array.h (indirect_array<>::operator=):
Make copy and assignment operator public. Implement. Format.
* include/bits/valarray_array.h (__valarray_copy): Add overloads
for copy between index arrays. Format.
2001-06-19 Benjamin Kosnik <bkoz@redhat.com> 2001-06-19 Benjamin Kosnik <bkoz@redhat.com>
* mknumeric_limits: Add static definitions, format. * mknumeric_limits: Add static definitions, format.
......
...@@ -34,95 +34,104 @@ ...@@ -34,95 +34,104 @@
#pragma GCC system_header #pragma GCC system_header
namespace std { namespace std
{
template <class _Tp> class indirect_array template <class _Tp>
{ class indirect_array
public: {
typedef _Tp value_type; public:
typedef _Tp value_type;
void operator= (const valarray<_Tp>&) const;
void operator*= (const valarray<_Tp>&) const; // XXX: This is a proposed resolution for DR-253.
void operator/= (const valarray<_Tp>&) const; indirect_array& operator= (const indirect_array&);
void operator%= (const valarray<_Tp>&) const;
void operator+= (const valarray<_Tp>&) const; void operator= (const valarray<_Tp>&) const;
void operator-= (const valarray<_Tp>&) const; void operator*= (const valarray<_Tp>&) const;
void operator^= (const valarray<_Tp>&) const; void operator/= (const valarray<_Tp>&) const;
void operator&= (const valarray<_Tp>&) const; void operator%= (const valarray<_Tp>&) const;
void operator|= (const valarray<_Tp>&) const; void operator+= (const valarray<_Tp>&) const;
void operator<<= (const valarray<_Tp>&) const; void operator-= (const valarray<_Tp>&) const;
void operator>>= (const valarray<_Tp>&) const; void operator^= (const valarray<_Tp>&) const;
void operator= (const _Tp&); void operator&= (const valarray<_Tp>&) const;
// ~indirect_array(); void operator|= (const valarray<_Tp>&) const;
void operator<<= (const valarray<_Tp>&) const;
template<class _Dom> void operator>>= (const valarray<_Tp>&) const;
void operator= (const _Expr<_Dom, _Tp>&) const; void operator= (const _Tp&);
template<class _Dom> // ~indirect_array();
void operator*= (const _Expr<_Dom, _Tp>&) const;
template<class _Dom> template<class _Dom>
void operator/= (const _Expr<_Dom, _Tp>&) const; void operator= (const _Expr<_Dom, _Tp>&) const;
template<class _Dom> template<class _Dom>
void operator%= (const _Expr<_Dom, _Tp>&) const; void operator*= (const _Expr<_Dom, _Tp>&) const;
template<class _Dom> template<class _Dom>
void operator+= (const _Expr<_Dom, _Tp>&) const; void operator/= (const _Expr<_Dom, _Tp>&) const;
template<class _Dom> template<class _Dom>
void operator-= (const _Expr<_Dom, _Tp>&) const; void operator%= (const _Expr<_Dom, _Tp>&) const;
template<class _Dom> template<class _Dom>
void operator^= (const _Expr<_Dom, _Tp>&) const; void operator+= (const _Expr<_Dom, _Tp>&) const;
template<class _Dom> template<class _Dom>
void operator&= (const _Expr<_Dom, _Tp>&) const; void operator-= (const _Expr<_Dom, _Tp>&) const;
template<class _Dom> template<class _Dom>
void operator|= (const _Expr<_Dom, _Tp>&) const; void operator^= (const _Expr<_Dom, _Tp>&) const;
template<class _Dom> template<class _Dom>
void operator<<= (const _Expr<_Dom, _Tp>&) const; void operator&= (const _Expr<_Dom, _Tp>&) const;
template<class _Dom> template<class _Dom>
void operator>>= (const _Expr<_Dom, _Tp>&) const; void operator|= (const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
private: void operator<<= (const _Expr<_Dom, _Tp>&) const;
indirect_array (const indirect_array&); template<class _Dom>
indirect_array (_Array<_Tp>, size_t, _Array<size_t>); void operator>>= (const _Expr<_Dom, _Tp>&) const;
friend class valarray<_Tp>; private:
friend class gslice_array<_Tp>; indirect_array (const indirect_array&);
indirect_array (_Array<_Tp>, size_t, _Array<size_t>);
const size_t _M_sz;
const _Array<size_t> _M_index; friend class valarray<_Tp>;
const _Array<_Tp> _M_array; friend class gslice_array<_Tp>;
// not implemented const size_t _M_sz;
indirect_array (); const _Array<size_t> _M_index;
indirect_array& operator= (const indirect_array&); const _Array<_Tp> _M_array;
};
// not implemented
template<typename _Tp> indirect_array ();
inline indirect_array<_Tp>::indirect_array(const indirect_array<_Tp>& __a) };
: _M_sz (__a._M_sz), _M_index (__a._M_index),
_M_array (__a._M_array) {} template<typename _Tp>
inline indirect_array<_Tp>::indirect_array(const indirect_array<_Tp>& __a)
template<typename _Tp> : _M_sz (__a._M_sz), _M_index (__a._M_index),
inline _M_array (__a._M_array) {}
indirect_array<_Tp>::indirect_array (_Array<_Tp> __a, size_t __s,
_Array<size_t> __i) template<typename _Tp>
: _M_sz (__s), _M_index (__i), _M_array (__a) {} inline
indirect_array<_Tp>::indirect_array (_Array<_Tp> __a, size_t __s,
// template<typename _Tp> _Array<size_t> __i)
// inline indirect_array<_Tp>::~indirect_array() {} : _M_sz (__s), _M_index (__i), _M_array (__a) {}
template<typename _Tp> template<typename _Tp>
inline void inline indirect_array<_Tp>&
indirect_array<_Tp>::operator= (const _Tp& __t) indirect_array<_Tp>::operator=(const indirect_array<_Tp>& __a)
{ __valarray_fill(_M_array, _M_index, _M_sz, __t); } {
__valarray_copy(__a._M_array, _M_sz, __a._M_index, _M_array, _M_index);
template<typename _Tp> return *this;
inline void }
indirect_array<_Tp>::operator= (const valarray<_Tp>& __v) const
{ __valarray_copy (_Array<_Tp> (__v), _M_sz, _M_array, _M_index); }
template<typename _Tp>
template<typename _Tp> inline void
template<class _Dom> indirect_array<_Tp>::operator= (const _Tp& __t)
inline void { __valarray_fill(_M_array, _M_index, _M_sz, __t); }
indirect_array<_Tp>::operator= (const _Expr<_Dom,_Tp>& __e) const
{ __valarray_copy (__e, _M_sz, _M_array, _M_index); } template<typename _Tp>
inline void
indirect_array<_Tp>::operator= (const valarray<_Tp>& __v) const
{ __valarray_copy (_Array<_Tp> (__v), _M_sz, _M_array, _M_index); }
template<typename _Tp>
template<class _Dom>
inline void
indirect_array<_Tp>::operator= (const _Expr<_Dom,_Tp>& __e) const
{ __valarray_copy (__e, _M_sz, _M_array, _M_index); }
#undef _DEFINE_VALARRAY_OPERATOR #undef _DEFINE_VALARRAY_OPERATOR
#define _DEFINE_VALARRAY_OPERATOR(op, name) \ #define _DEFINE_VALARRAY_OPERATOR(op, name) \
......
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