36 #pragma GCC system_header
38 _GLIBCXX_BEGIN_NAMESPACE(
std)
79 gslice(
size_t,
const valarray<size_t>&,
const valarray<size_t>&);
85 gslice(
const gslice&);
92 gslice& operator=(
const gslice&);
98 valarray<size_t> size()
const;
101 valarray<size_t> stride()
const;
108 valarray<size_t> _M_size;
109 valarray<size_t> _M_stride;
110 valarray<size_t> _M_index;
113 : _M_count(1), _M_start(0), _M_size(), _M_stride(), _M_index() {}
115 _Indexer(
size_t,
const valarray<size_t>&,
116 const valarray<size_t>&);
124 {
return --_M_count; }
129 template<
typename _Tp>
friend class valarray;
133 gslice::start()
const
134 {
return _M_index ? _M_index->_M_start : 0; }
136 inline valarray<size_t>
138 {
return _M_index ? _M_index->_M_size : valarray<size_t>(); }
140 inline valarray<size_t>
141 gslice::stride()
const
142 {
return _M_index ? _M_index->_M_stride : valarray<size_t>(); }
148 : _M_index(new
gslice::_Indexer()) {}
152 const valarray<size_t>& __s)
153 : _M_index(new
gslice::_Indexer(__o, __l, __s)) {}
157 : _M_index(__g._M_index)
158 {
if (_M_index) _M_index->_M_increment_use(); }
163 if (_M_index && _M_index->_M_decrement_use() == 0)
171 __g._M_index->_M_increment_use();
172 if (_M_index && _M_index->_M_decrement_use() == 0)
174 _M_index = __g._M_index;
180 _GLIBCXX_END_NAMESPACE
Class defining multi-dimensional subset of an array.
ISO C++ entities toplevel namespace is std.
gslice & operator=(const gslice &)
Assignment operator.
gslice()
Construct an empty slice.