로딩중...
검색중...
일치하는것 없음
nmapIteration.hpp
이 파일의 문서화 페이지로 가기
1
6class nmapIteration: public iteration {
7 BY(CLASS(nmapIteration, iteration))
8 friend class tnmap;
9
10public:
11 nmapIteration(tnmap& own, const K* key, nbool isReversed):
12 super(isReversed),
13 _own(own),
14 _citer(isReversed ? own._map.rbegin(key) : own._map.begin(key)),
15 _end(isReversed ? own._map.rend() : own._map.end()) {}
16
17 nbool isEnd() const override { return _citer == _end; }
18
19 void rel() override { _citer = _end; }
20
26 ncnt stepForward(ncnt step) override { return _step(false, step); }
27
28 ncnt stepBackward(ncnt step) override { return _step(true, step); }
29
30 const K* getKey() const override {
31 WHEN(isEnd()) .ret(nullptr);
32 return _citer.getKey();
33 }
34
35 using super::getVal;
36
37 V* getVal() override {
38 WHEN(isEnd()) .ret(nullptr);
39 return _citer.getVal() TO(get());
40 }
41
42 using super::setVal;
43
44 void setVal(const V& new1) override {
45 WHEN(isEnd()) .ret();
46 _citer->bind(new1);
47 }
48
49 using super::getContainer;
50
51 tbicontainable<K, V>* getContainer() override { return &_own; }
52
53protected:
54 nbool _onSame(const typeProvidable& rhs) const override {
55 const me& cast = (const me&) rhs;
56 return this->isFrom(cast.getContainer()) && _citer == cast._citer;
57 }
58
59private:
60 ncnt _step(nbool isReversed, ncnt step) {
61 WHEN(isEnd()) .ret(0);
62 for(int n = 0; n < step; n++) {
63 isReversed ? (this->isReversed() ? ++_citer : --_citer) : (this->isReversed() ? --_citer : ++_citer);
64 WHEN(isEnd()) .ret(n);
65 }
66 return step;
67 }
68
69private:
70 tnmap& _own;
71 citer _citer; // cpp map's iterator.
72 citer _end;
73};
Definition biteration.hpp:5
Definition nmapIteration.hpp:6
ncnt stepForward(ncnt step) override
Definition nmapIteration.hpp:26
to Top