summaryrefslogtreecommitdiffstats
path: root/chrome/views/tree_node_iterator.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/views/tree_node_iterator.h')
-rw-r--r--chrome/views/tree_node_iterator.h74
1 files changed, 0 insertions, 74 deletions
diff --git a/chrome/views/tree_node_iterator.h b/chrome/views/tree_node_iterator.h
deleted file mode 100644
index 2b73954..0000000
--- a/chrome/views/tree_node_iterator.h
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_VIEWS_TREE_NODE_ITERATOR_H_
-#define CHROME_VIEWS_TREE_NODE_ITERATOR_H_
-
-#include <stack>
-
-#include "base/basictypes.h"
-#include "base/logging.h"
-
-namespace views {
-
-// Iterator that iterates over the descendants of a node. The iteration does
-// not include the node itself, only the descendants. The following illustrates
-// typical usage:
-// while (iterator.has_next()) {
-// Node* node = iterator.Next();
-// // do something with node.
-// }
-template <class NodeType>
-class TreeNodeIterator {
- public:
- explicit TreeNodeIterator(NodeType* node) {
- if (node->GetChildCount() > 0)
- positions_.push(Position<NodeType>(node, 0));
- }
-
- // Returns true if there are more descendants.
- bool has_next() const { return !positions_.empty(); }
-
- // Returns the next descendant.
- NodeType* Next() {
- if (!has_next()) {
- NOTREACHED();
- return NULL;
- }
-
- NodeType* result = positions_.top().node->GetChild(positions_.top().index);
-
- // Make sure we don't attempt to visit result again.
- positions_.top().index++;
-
- // Iterate over result's children.
- positions_.push(Position<NodeType>(result, 0));
-
- // Advance to next position.
- while (!positions_.empty() && positions_.top().index >=
- positions_.top().node->GetChildCount()) {
- positions_.pop();
- }
-
- return result;
- }
-
- private:
- template <class NodeType>
- struct Position {
- Position(NodeType* node, int index) : node(node), index(index) {}
- Position() : node(NULL), index(-1) {}
-
- NodeType* node;
- int index;
- };
-
- std::stack<Position<NodeType> > positions_;
-
- DISALLOW_COPY_AND_ASSIGN(TreeNodeIterator);
-};
-
-} // namespace views
-
-#endif // CHROME_VIEWS_TREE_NODE_ITERATOR_H_