MCPcopy Create free account
hub / github.com/activeloopai/deeplake / data_iterator

Class data_iterator

cpp/nd/iterator.hpp:17–72  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15class array;
16
17class data_iterator
18{
19public:
20 data_iterator(std::shared_ptr<void> owner, std::span<const uint8_t> data, icm::shape shape, dtype dt)
21 : owner_(std::move(owner))
22 , data_(data)
23 , shape_(std::move(shape))
24 , dtype_(dt)
25 {
26 ASSERT(std::accumulate(shape_.begin(), shape_.end(), 1, std::multiplies{}) * dtype_bytes(dtype_) ==
27 data.size());
28 }
29
30 array operator*() const;
31
32 void operator++()
33 {
34 data_ = std::span<const uint8_t>(data_.data() + data_.size(), data_.size());
35 }
36
37 void operator--()
38 {
39 data_ = std::span<const uint8_t>(data_.data() - data_.size(), data_.size());
40 }
41
42 void operator+=(std::ptrdiff_t n)
43 {
44 data_ = std::span<const uint8_t>(data_.data() + n * data_.size(), data_.size());
45 }
46
47 void operator-=(std::ptrdiff_t n)
48 {
49 data_ = std::span<const uint8_t>(data_.data() - n * data_.size(), data_.size());
50 }
51
52 std::ptrdiff_t operator-(const data_iterator& other) const
53 {
54 return (data_.data() - other.data_.data()) / data_.size();
55 }
56
57 bool operator==(const data_iterator& other) const
58 {
59 return data_.data() == other.data_.data();
60 }
61
62 bool operator!=(const data_iterator& other) const
63 {
64 return data_.data() != other.data_.data();
65 }
66
67private:
68 std::shared_ptr<void> owner_;
69 std::span<const uint8_t> data_;
70 icm::shape shape_;
71 dtype dtype_;
72};
73
74using dynamic_vector_iterator = std::vector<array>::const_iterator;

Callers 2

beginMethod · 0.85
endMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected