35 #pragma GCC system_header
39 _GLIBCXX_BEGIN_NAMESPACE_VERSION
80 gslice(
size_t __o,
const valarray<size_t>& __l,
81 const valarray<size_t>& __s);
87 gslice(
const gslice&);
94 gslice& operator=(
const gslice&);
100 valarray<size_t> size()
const;
103 valarray<size_t> stride()
const;
110 valarray<size_t> _M_size;
111 valarray<size_t> _M_stride;
112 valarray<size_t> _M_index;
115 : _M_count(1), _M_start(0), _M_size(), _M_stride(), _M_index() {}
117 _Indexer(
size_t,
const valarray<size_t>&,
118 const valarray<size_t>&);
126 {
return --_M_count; }
131 template<
typename _Tp>
friend class valarray;
135 gslice::start()
const
136 {
return _M_index ? _M_index->_M_start : 0; }
138 inline valarray<size_t>
140 {
return _M_index ? _M_index->_M_size : valarray<size_t>(); }
142 inline valarray<size_t>
143 gslice::stride()
const
144 {
return _M_index ? _M_index->_M_stride : valarray<size_t>(); }
150 : _M_index(new gslice::_Indexer()) {}
153 gslice::gslice(
size_t __o,
const valarray<size_t>& __l,
154 const valarray<size_t>& __s)
155 : _M_index(new gslice::_Indexer(__o, __l, __s)) {}
158 gslice::gslice(
const gslice& __g)
159 : _M_index(__g._M_index)
160 {
if (_M_index) _M_index->_M_increment_use(); }
165 if (_M_index && _M_index->_M_decrement_use() == 0)
170 gslice::operator=(
const gslice& __g)
173 __g._M_index->_M_increment_use();
174 if (_M_index && _M_index->_M_decrement_use() == 0)
176 _M_index = __g._M_index;
182 _GLIBCXX_END_NAMESPACE_VERSION
namespace std _GLIBCXX_VISIBILITY(default)
Definition: auto_ptr.h:36