Squashed 'third_party/boostorg/iterator/' content from commit b2adecb
Change-Id: I284a73816f9cc846742923879275b84c6e0c915c
git-subtree-dir: third_party/boostorg/iterator
git-subtree-split: b2adecb951af025698618f19a3c838bd314966dc
diff --git a/example/node_iterator1.hpp b/example/node_iterator1.hpp
new file mode 100644
index 0000000..5e068b4
--- /dev/null
+++ b/example/node_iterator1.hpp
@@ -0,0 +1,42 @@
+// Copyright David Abrahams 2004. Use, modification and distribution is
+// subject to the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+#ifndef NODE_ITERATOR1_DWA2004110_HPP
+# define NODE_ITERATOR1_DWA2004110_HPP
+
+# include "node.hpp"
+# include <boost/iterator/iterator_facade.hpp>
+
+class node_iterator
+ : public boost::iterator_facade<
+ node_iterator
+ , node_base
+ , boost::forward_traversal_tag
+ >
+{
+ public:
+ node_iterator()
+ : m_node(0)
+ {}
+
+ explicit node_iterator(node_base* p)
+ : m_node(p)
+ {}
+
+ private:
+ friend class boost::iterator_core_access;
+
+ void increment()
+ { m_node = m_node->next(); }
+
+ bool equal(node_iterator const& other) const
+ { return this->m_node == other.m_node; }
+
+ node_base& dereference() const
+ { return *m_node; }
+
+ node_base* m_node;
+};
+
+
+#endif // NODE_ITERATOR1_DWA2004110_HPP