Skip to content

Commit 93cac3b

Browse files
author
tiberius
committed
refactored m_end variable from previos commit to a variable called m_mode of type iteration_mode
1 parent 880149f commit 93cac3b

File tree

2 files changed

+15
-11
lines changed

2 files changed

+15
-11
lines changed

cpp4j/tree.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ template <class T, template<class> class Order = Less > class Tree {
3939
break;
4040
}
4141

42-
return iterator (node, this, node == NULL);
42+
return iterator (node, this, node != NULL ? iterator::begin : iterator::end);
4343
}
4444

4545
// highest key
@@ -52,7 +52,7 @@ template <class T, template<class> class Order = Less > class Tree {
5252
break;
5353
}
5454

55-
return iterator (node, this, true);
55+
return iterator (node, this, iterator::end);
5656
}
5757

5858
/*iterator first();

cpp4j/treeiterator.h

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,11 @@ template <class T, template<typename> class Order > class TreeIterator {
2121

2222
// zum nächsten Element
2323
TreeIterator<T, Order>& operator++() {
24-
if (m_node == NULL || m_end)
24+
if (m_node == NULL || m_mode == end)
2525
return *this;
2626

27+
m_mode = middle;
28+
2729
if (m_node->m_right != NULL) {
2830
m_node = m_node->m_right;
2931
while (m_node->m_left != NULL)
@@ -47,7 +49,7 @@ template <class T, template<typename> class Order > class TreeIterator {
4749
node = node->m_up;
4850

4951
if (node->m_up == NULL) { // reached root, nothing else to do
50-
m_end = true;
52+
m_mode = end;
5153
return *this;
5254
}
5355

@@ -59,18 +61,19 @@ template <class T, template<typename> class Order > class TreeIterator {
5961

6062
}
6163

62-
m_end = true;
64+
m_mode = end;
6365
return *this;
6466

6567
}
6668

6769
// zum vorherigen Element
6870
TreeIterator<T, Order>& operator--() {
71+
//if (m_node == NULL || !m_end)
6972
return *this;
7073
}
7174

7275
bool operator==(const TreeIterator<T, Order> &rhs) const {
73-
return this->m_node == rhs.m_node && this->m_tree == rhs.m_tree && this->m_end == rhs.m_end;
76+
return this->m_node == rhs.m_node && this->m_tree == rhs.m_tree && this->m_mode == rhs.m_mode;
7477
}
7578

7679
bool operator!=(const TreeIterator<T, Order> &rhs) const {
@@ -79,18 +82,19 @@ template <class T, template<typename> class Order > class TreeIterator {
7982

8083
protected:
8184

85+
enum iteration_mode { begin, middle, end };
86+
iteration_mode m_mode;
87+
8288
TreeIterator(TreeNode<T, Order> * node, const Tree<T, Order> * tree)
83-
: m_node(node), m_tree(tree), m_end(false) {}
89+
: m_node(node), m_tree(tree), m_mode(middle) {}
8490

85-
TreeIterator(TreeNode<T, Order> * node, const Tree<T, Order> * tree, const bool end)
86-
: m_node(node), m_tree(tree), m_end(end) {}
91+
TreeIterator(TreeNode<T, Order> * node, const Tree<T, Order> * tree, const iteration_mode mode)
92+
: m_node(node), m_tree(tree), m_mode(mode) {}
8793

8894
private:
8995

9096
TreeNode<T, Order> * m_node;
9197
const Tree<T, Order> * m_tree;
92-
bool m_end;
93-
9498
};
9599

96100
#endif // TREEITERATOR_H

0 commit comments

Comments
 (0)