#include #include #include #include #include //#include #include struct test_visitor : pw::node::visitor { virtual void enter(pw::node *n) override; virtual void leave(pw::node *n) override; }; void test_visitor::enter(pw::node *n) { std::cout << n->name() << " " << n->is_leaf() << std::endl; } void test_visitor::leave(pw::node *n) { } #include int main(int argc,char **argv) { using namespace pw; node::ref root(std::make_shared("root")); root->add_child(std::make_shared("sub-1")); node::ref sub_2_1 = std::make_shared("sub-2-1"); root->add_child(std::make_shared("sub-2"))->add_child(std::make_shared("sub-2-1")); root->add_child(std::make_shared("sub-3"))->add_child(sub_2_1); std::cout << "sub-2-1 parent count: " << sub_2_1->parents().size() << std::endl; test_visitor tv; root->visit(tv); return 0; }