1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/epoc32/include/stdapis/boost/graph/tree_traits.hpp Tue Mar 16 16:12:26 2010 +0000
1.3 @@ -0,0 +1,43 @@
1.4 +// (C) Copyright Jeremy Siek 1999.
1.5 +// Distributed under the Boost Software License, Version 1.0. (See
1.6 +// accompanying file LICENSE_1_0.txt or copy at
1.7 +// http://www.boost.org/LICENSE_1_0.txt)
1.8 +
1.9 +#ifndef BOOST_TREE_STRUCTURE_HPP
1.10 +#define BOOST_TREE_STRUCTURE_HPP
1.11 +
1.12 +namespace boost {
1.13 +
1.14 + template <class T>
1.15 + struct tree_traits {
1.16 + typedef typename T::node_descriptor node_descriptor;
1.17 + typedef typename T::children_iterator children_iterator;
1.18 + };
1.19 +
1.20 +
1.21 + template <class Tree, class TreeVisitor>
1.22 + void traverse_tree(typename tree_traits<Tree>::node_descriptor v,
1.23 + Tree& t, TreeVisitor visitor)
1.24 + {
1.25 + visitor.preorder(v, t);
1.26 + typename tree_traits<Tree>::children_iterator i, end;
1.27 + tie(i, end) = children(v, t);
1.28 + if (i != end) {
1.29 + traverse_tree(*i++, t, visitor);
1.30 + visitor.inorder(v, t);
1.31 + while (i != end)
1.32 + traverse_tree(*i++, t, visitor);
1.33 + } else
1.34 + visitor.inorder(v, t);
1.35 + visitor.postorder(v, t);
1.36 + }
1.37 +
1.38 + struct null_tree_visitor {
1.39 + template <typename Node, typename Tree> void preorder(Node, Tree&) { }
1.40 + template <typename Node, typename Tree> void inorder(Node, Tree&) { }
1.41 + template <typename Node, typename Tree> void postorder(Node, Tree&) { }
1.42 + };
1.43 +
1.44 +} /* namespace boost */
1.45 +
1.46 +#endif /* BOOST_TREE_STRUCTURE_HPP */