| // Copyright (c) 2005 Carl Barron. Distributed under 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) |
| |
| #include "tag.hpp" |
| #include <iostream> |
| #include <algorithm> |
| |
| namespace |
| { |
| struct print_pair |
| { |
| template <class P> |
| void operator () (const P &x) |
| { |
| std::cout << '\t' << x.first << ':' << x.second <<'\n'; |
| } |
| }; |
| |
| } |
| |
| void walk_data::operator () (const std::string &x) |
| { |
| std::cout << "String:" << x <<'\n'; |
| } |
| |
| void walk_data::operator () (const tag &t) |
| { |
| std::cout << "Tag:" << t.id << '\n'; |
| std::cout << "Attributes\n"; |
| |
| std::for_each |
| ( |
| t.attributes.begin(), |
| t.attributes.end(), |
| print_pair() |
| ); |
| std::cout << "Children:\n"; |
| std::for_each |
| ( |
| t.children.begin(), |
| t.children.end(), |
| boost::apply_visitor(*this) |
| ); |
| std::cout << "End of tag:" << t.id << '\n'; |
| } |