void Root::visit(Visitor& visitor) const { visitor.start(m_result); m_opening->visit(visitor); m_languages->visit(visitor); m_variation->visit(visitor); visitor.finish(m_result); }
void Action::visit(Visitor& visitor) const { switch (m_command) { case Clear: visitor.clear(); break; case Insert: visitor.insert(m_level, m_key1); break; case Replace: visitor.replace(m_level, m_key1, m_key2); break; case Remove: visitor.remove(m_level, m_key1, m_key2); break; case Finish: visitor.finish(m_level); break; } }
void Node::visit(Visitor& visitor, List const& nodes, TagSet const& tags) { result::ID result = result::fromString(tags.value(tag::Result)); visitor.start(result); for (unsigned i = 0; i < nodes.size(); ++i) nodes[i]->visit(visitor); visitor.finish(result); }