コード例 #1
0
void InstantiationVisitor::visit(SwitchStmt& s)
{
	std::vector<SwitchEntry> entries;

	for (auto& entry : s.entries()) {
		std::vector<SwitchLabel> labels;

		for (auto& label : entry.labels()) {
			if (label.expr())
				labels.emplace_back(label.sloc(), clone(*label.expr()));
			else
				labels.emplace_back(label.sloc(), nullptr);
		}

		entries.emplace_back(std::move(labels), clone(entry.statement()));
	}

	_stmt.reset(new SwitchStmt(s.sloc(), clone(s.expr()), std::move(entries)));
}