36#pragma GCC system_header
39namespace std _GLIBCXX_VISIBILITY(default)
41_GLIBCXX_BEGIN_NAMESPACE_VERSION
82 gslice(
size_t __o,
const valarray<size_t>& __l,
83 const valarray<size_t>& __s);
102 valarray<size_t>
size()
const;
105 valarray<size_t>
stride()
const;
112 valarray<size_t> _M_size;
113 valarray<size_t> _M_stride;
114 valarray<size_t> _M_index;
117 : _M_count(1), _M_start(0), _M_size(), _M_stride(), _M_index() {}
119 _Indexer(
size_t,
const valarray<size_t>&,
120 const valarray<size_t>&);
128 {
return --_M_count; }
133 template<
typename _Tp>
friend class valarray;
138 {
return _M_index ? _M_index->_M_start : 0; }
142 {
return _M_index ? _M_index->_M_size : valarray<size_t>(); }
146 {
return _M_index ? _M_index->_M_stride : valarray<size_t>(); }
152 : _M_index(new
gslice::_Indexer()) {}
156 const valarray<size_t>& __s)
157 : _M_index(new
gslice::_Indexer(__o, __l, __s)) {}
161 : _M_index(__g._M_index)
162 {
if (_M_index) _M_index->_M_increment_use(); }
167 if (_M_index && _M_index->_M_decrement_use() == 0)
177 __g._M_index->_M_increment_use();
178 if (_M_index && _M_index->_M_decrement_use() == 0)
180 _M_index = __g._M_index;
186_GLIBCXX_END_NAMESPACE_VERSION
gslice()
Construct an empty slice.
gslice & operator=(const gslice &)
Assignment operator.
size_t start() const
Return array offset of first slice element.
valarray< size_t > stride() const
Return array of array strides for each dimension.
valarray< size_t > size() const
Return array of sizes of slice dimensions.
ISO C++ entities toplevel namespace is std.
Smart array designed to support numeric processing.
Class defining multi-dimensional subset of an array.