MCPcopy Create free account
hub / github.com/AcademySoftwareFoundation/OpenImageIO / array_view_strided

Class array_view_strided

src/include/array_view.h:198–327  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

196/// be modified), whereas an array_view_strided<const T> is not mutable.
197template <typename T>
198class array_view_strided {
199public:
200 typedef T value_type;
201 typedef strided_ptr<T> pointer;
202 typedef strided_ptr<const T> const_pointer;
203 typedef T& reference;
204 typedef const T& const_reference;
205 typedef const_pointer const_iterator;
206 typedef pointer iterator;
207 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
208 typedef std::reverse_iterator<iterator> reverse_iterator;
209 typedef size_t size_type;
210 typedef ptrdiff_t difference_type;
211 typedef ptrdiff_t stride_t;
212 static const size_type npos = ~size_type(0);
213 static const stride_t AutoStride = ~stride_t(0);
214
215 /// Default ctr -- points to nothing
216 array_view_strided () : m_data(NULL), m_len(0), m_stride(0) {}
217
218 /// Copy constructor
219 array_view_strided (const array_view_strided &copy)
220 : m_data(copy.data()), m_len(copy.size()), m_stride(copy.stride()) {}
221
222 /// Construct from T* and length.
223 array_view_strided (T *data, size_t len) { init(data,len); }
224
225 /// Construct from T*, length, and stride (in bytes).
226 array_view_strided (T *data, size_t len, ptrdiff_t stride) {
227 init(data,len,stride);
228 }
229
230 /// Construct from a single T&.
231 array_view_strided (T &data) { init (&data, 1); }
232
233 /// Construct from a range (begin and end pointers).
234 array_view_strided (T *begin, T *end) { init (begin, end-begin); }
235
236 /// Construct from a fixed-length C array. Template magic automatically
237 /// finds the length from the declared type of the array.
238 template<size_t N>
239 array_view_strided (T (&data)[N]) { init(data,N); }
240
241 /// Construct from std::vector<T>.
242 array_view_strided (std::vector<T> &v)
243 : m_data(v.size() ? &v[0] : NULL), m_len(v.size()), m_stride(sizeof(T)) {}
244
245 // assignments
246 array_view_strided& operator= (const array_view_strided &copy) {
247 m_data = copy.data();
248 m_len = copy.size();
249 m_stride = copy.stride();
250 return *this;
251 }
252
253 // iterators
254 iterator begin() const { return pointer(m_data,m_stride); }
255 iterator end() const { return pointer(getptr(m_len),m_stride); }

Callers 1

sliceMethod · 0.85

Calls 4

strideMethod · 0.80
getptrFunction · 0.70
dataMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected