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

Class flat_iterator

cpp/icm/flat_iterator.hpp:20–193  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

18 */
19template <typename C>
20class flat_iterator
21{
22public:
23 using value_type = typename C::const_iterator::value_type;
24 using reference = typename C::const_iterator::reference;
25 using pointer = value_type*;
26 using difference_type = int64_t;
27 using iterator_category = std::random_access_iterator_tag;
28
29 static flat_iterator begin(const std::vector<C>& containers, const std::vector<value_type>& offsets)
30 {
31 if (containers.empty()) {
32 return flat_iterator();
33 }
34 return flat_iterator(containers, offsets, containers.begin(), containers.begin()->begin());
35 }
36
37 static flat_iterator end(const std::vector<C>& containers, const std::vector<value_type>& offsets)
38 {
39 if (containers.empty()) {
40 return flat_iterator();
41 }
42 return flat_iterator(containers, offsets, containers.end() - 1, containers.back().end());
43 }
44
45 reference operator*() const
46 {
47 return *child_iterator_;
48 }
49
50 flat_iterator& operator++()
51 {
52 ++child_iterator_;
53 skip_empty_containers();
54 return *this;
55 }
56
57 flat_iterator operator++(int)
58 {
59 flat_iterator tmp = *this;
60 ++*this;
61 return tmp;
62 }
63
64 flat_iterator& operator--()
65 {
66 while (child_iterator_ == parent_iterator_->begin() && parent_iterator_ != containers_->begin()) {
67 --parent_iterator_;
68 child_iterator_ = parent_iterator_->end();
69 }
70 --child_iterator_;
71 return *this;
72 }
73
74 flat_iterator operator--(int)
75 {
76 flat_iterator tmp = *this;
77 --*this;

Callers 2

beginMethod · 0.85
endMethod · 0.85

Calls 2

beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected