Viewing file: pr50464.C (4.28 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// { dg-do compile { target i?86-*-* x86_64-*-* } } // { dg-options "-O3 -mxop" }
typedef long unsigned int size_t; typedef unsigned long ulong_t; typedef signed long slong_t;
template<typename _Iterator> struct iterator_traits { typedef typename _Iterator::reference reference; };
template<typename _Tp> struct iterator_traits<_Tp*> { typedef _Tp& reference; };
template<typename _Iterator, typename _Container> class __normal_iterator { protected: _Iterator _M_current; typedef iterator_traits<_Iterator> __traits_type;
public: typedef typename __traits_type::reference reference;
explicit __normal_iterator(const _Iterator& __i) : _M_current(__i) { }
reference operator*() const { return *_M_current; }
__normal_iterator& operator++() { ++_M_current; return *this; }
const _Iterator& base() const { return _M_current; } };
template<typename _Iterator, typename _Container> inline bool operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, const __normal_iterator<_Iterator, _Container>& __rhs) { return __lhs.base() != __rhs.base(); }
template<typename _Tp> class allocator { public: typedef _Tp* pointer; typedef _Tp value_type;
template<typename _Tp1> struct rebind { typedef allocator<_Tp1> other; };
pointer allocate(size_t __n, const void* = 0) { return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); } };
template<typename _Tp, typename _Alloc> struct _Vector_base { typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
struct _Vector_impl : public _Tp_alloc_type { typename _Tp_alloc_type::pointer _M_start; typename _Tp_alloc_type::pointer _M_finish; typename _Tp_alloc_type::pointer _M_end_of_storage;
_Vector_impl(_Tp_alloc_type const& __a) { } };
public: typedef _Alloc allocator_type;
_Vector_base(size_t __n, const allocator_type& __a) : _M_impl(__a) { this->_M_impl._M_start = this->_M_allocate(__n); this->_M_impl._M_finish = this->_M_impl._M_start; this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; }
public: _Vector_impl _M_impl;
typename _Tp_alloc_type::pointer _M_allocate(size_t __n) { return __n != 0 ? _M_impl.allocate(__n) : 0; }
};
template<typename _Tp, typename _Alloc = allocator<_Tp> > class vector : protected _Vector_base<_Tp, _Alloc> { typedef _Vector_base<_Tp, _Alloc> _Base; typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
public: typedef _Tp value_type; typedef typename _Tp_alloc_type::pointer pointer; typedef __normal_iterator<pointer, vector> iterator; typedef _Alloc allocator_type;
protected: using _Base::_M_allocate; using _Base::_M_impl;
public:
explicit vector(size_t __n, const value_type& __value = value_type(), const allocator_type& __a = allocator_type()) : _Base(__n, __a) { _M_fill_initialize(__n, __value); }
iterator begin() { return iterator(this->_M_impl._M_start); }
iterator end() { return iterator(this->_M_impl._M_finish); }
protected: void _M_fill_initialize(size_t __n, const value_type& __value) { this->_M_impl._M_finish = this->_M_impl._M_end_of_storage; } };
template<typename _InputIterator, typename _OutputIterator, typename _Tp> _OutputIterator replace_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, const _Tp& __old_value, const _Tp& __new_value) { ; for (; __first != __last; ++__first, ++__result) if (*__first == __old_value) *__result = __new_value; else *__result = *__first; return __result; }
extern size_t shape_rank;
void createDataspaceIdentifier() { vector< ulong_t > dataspaceDims( shape_rank ); vector< ulong_t > maxDataspaceDims( shape_rank );
replace_copy( dataspaceDims.begin(), dataspaceDims.end(), maxDataspaceDims.begin(), ulong_t( 0 ), ((ulong_t)(slong_t)(-1)) ); }
|