summaryrefslogtreecommitdiff
path: root/tests/test-iterators.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-iterators.cc')
-rw-r--r--tests/test-iterators.cc27
1 files changed, 19 insertions, 8 deletions
diff --git a/tests/test-iterators.cc b/tests/test-iterators.cc
index 987bc6af..5e89cf84 100644
--- a/tests/test-iterators.cc
+++ b/tests/test-iterators.cc
@@ -28,6 +28,19 @@
#include "../libdw/c++/libdwP.hh"
#include "../libdwfl/c++/libdwflP.hh"
+template <class T>
+void
+traverse_tree (T const &begin, T const &end)
+{
+ for (T it = begin; it != end; ++it)
+ std::cerr << std::dec
+ << std::distance (elfutils::child_iterator (*it),
+ elfutils::child_iterator::end ()) << ' '
+ << std::distance (elfutils::attr_iterator (&*it),
+ elfutils::attr_iterator::end ())
+ << std::endl;
+}
+
int
main (int, char *argv[])
{
@@ -73,14 +86,12 @@ main (int, char *argv[])
assert (elfutils::die_tree_iterator (elfutils::unit_iterator::end ())
== elfutils::die_tree_iterator::end ());
- for (elfutils::die_tree_iterator it (dw);
- it != elfutils::die_tree_iterator::end (); ++it)
- std::cerr << std::dec
- << std::distance (elfutils::child_iterator (*it),
- elfutils::child_iterator::end ()) << ' '
- << std::distance (elfutils::attr_iterator (&*it),
- elfutils::attr_iterator::end ())
- << std::endl;
+ std::cerr << "--- raw ---\n";
+ traverse_tree (elfutils::die_tree_iterator (dw),
+ elfutils::die_tree_iterator::end ());
+ std::cerr << "--- logical ---\n";
+ traverse_tree (elfutils::logical_die_tree_iterator (dw),
+ elfutils::logical_die_tree_iterator::end ());
}
dwfl_end (dwfl);