9#define TEMPL template <typename K, typename V>
10#define ME tbicontainable<K, V>::iter
13 ME::iter(): me(nullptr) {}
16 ME::iter(
iteration* newStep): _iteration(newStep) {}
19 ME::iter(
const me& rhs) { _assign(rhs); }
22 typename ME ME::operator+(ncnt step) {
29 typename ME& ME::operator++() {
35 typename ME ME::operator++(
int) {
42 typename ME& ME::operator+=(ncnt step) {
48 V& ME::operator*() {
return *getVal(); }
51 V* ME::operator->() {
return getVal(); }
54 typename ME& ME::operator=(
const me& rhs) {
60 ME::operator nbool()
const {
return !isEnd(); }
63 nbool ME::isReversed()
const {
return _iteration ? _iteration->isReversed() :
false; }
66 void ME::rel() { _iteration TO(rel()); }
69 nbool ME::isFrom(
const tbicontainable& it)
const {
70 WHEN(!_iteration) .ret(
false);
71 return _iteration->isFrom(it);
75 nbool ME::isEnd()
const {
return _iteration ? _iteration->isEnd() :
true; }
78 ncnt ME::_step(
typename iterable::iterationType type, ncnt step) {
79 WHEN_NUL(_iteration).ret(0);
81 for(
int n = 0; n < step; n++) {
82 if(_iterate(type) <= 0)
return n;
83 _nextToMatchParamType(type);
90 ncnt ME::next(ncnt step) {
return _step(iterable::NEXT, step); }
93 ncnt ME::prev(ncnt step) {
return _step(iterable::PREV, step); }
96 ncnt ME::stepForward(ncnt step) {
return _step(iterable::FORWARD, step); }
99 ncnt ME::stepBackward(ncnt step) {
return _step(iterable::BACKWARD, step); }
102 const K* ME::getKey()
const {
return _iteration ? _iteration->getKey() :
nullptr; }
105 V* ME::getVal() {
return _iteration ? _iteration->getVal() :
nullptr; }
108 void ME::setVal(
const V& new1) {
109 if(_iteration) _iteration->setVal(new1);
113 tbicontainable<K, V>* ME::getContainer() {
return _iteration ? _iteration->getContainer() :
nullptr; }
116 typename ME& ME::_assign(
const me& rhs) {
117 _iteration.bind(rhs._iteration ? (
iteration*) rhs._iteration->clone() : nullptr);
122 nbool ME::_onSame(
const typeProvidable& rhs)
const {
123 const me& cast = (
const me&) rhs;
124 return _iteration == cast._iteration;
128 void ME::_nextToMatchParamType(
typename iterable::iterationType type) {
130 WHEN(getVal()) .ret();
136 ncnt ME::_iterate(
typename iterable::iterationType type) {
137 WHEN_NUL(_iteration).ret(BY_INDEX_ERROR);
139 case iterable::FORWARD:
return _iteration->stepForward(1);
140 case iterable::BACKWARD:
return _iteration->stepBackward(1);
141 case iterable::PREV:
return _iteration->prev(1);
143 case iterable::NEXT:
return _iteration->next(1);
Definition biteration.hpp:5