biter.hpp
Go to the documentation of this file.
1
3
9class iter: public iterable, public clonable, public typeProvidable {
10 BY(CLASS(iter))
11 friend class iteration;
12 template <typename K1, typename V1, typename defaultContainer1> friend class tnchain;
13 template <typename K1, typename V1, typename TACTIC> friend class tnmap;
14
15public:
16 explicit iter();
17 explicit iter(iteration* newStep);
18
19 iter(const me& rhs);
20
21public:
22 me operator+(ncnt step);
23 me& operator++();
24 me operator++(int);
25 me& operator+=(ncnt step);
26 V& operator*();
27 V* operator->();
28 const V& operator*() const BY_CONST_FUNC(operator*())
29 const V* operator->() const BY_CONST_FUNC(operator->())
30 me& operator=(const me& rhs);
31 explicit operator nbool() const;
32
33public:
34 nbool isReversed() const override;
35
37 void rel() override;
38
39 using iterable::isFrom;
40 nbool isFrom(const tbicontainable& it) const override;
41
42 nbool isEnd() const override;
43
44 ncnt next(ncnt step) override;
45 ncnt prev(ncnt step) override;
46 ncnt stepForward(ncnt step) override;
47 ncnt stepBackward(ncnt step) override;
48
49 const K* getKey() const override;
50
51 template <typename E> const E* getKey() const { return getKey().template cast<E>(); }
52
53 using iterable::getVal;
54 V* getVal() override;
55
56 template <typename E> E* getVal() { return getVal() TO(template cast<E>()); }
57
58 using iterable::setVal;
59 void setVal(const V& new1) override;
60
61 using iterable::getContainer;
62 tbicontainable<K, V>* getContainer() override;
63
64private:
65 me& _assign(const me& rhs);
66 nbool _onSame(const typeProvidable& rhs) const override;
67
70 void _nextToMatchParamType(typename iterable::iterationType type);
71 ncnt _step(typename iterable::iterationType type, ncnt step);
72 ncnt _iterate(typename iterable::iterationType type);
73
74protected:
75 tstr<iteration> _iteration;
76};
Bidirectional iterator for key-value containers.
Definition: biter.hpp:9
ncnt next(ncnt step) override
void rel() override
once rel(), an iterator enters a state where it can never be reused again.
Definition: biterable.hpp:3
Definition: biteration.hpp:5
#define TO(fn)
Definition: to.hpp:171