public override void VisitSwitchSection(SwitchSectionSyntax node) { var _case = new CaseCPPModel(); foreach (var label in node.Labels) { switch (label) { case CaseSwitchLabelSyntax l: _case.Labels.Add(new CaseSwitchLabelCPPModel() { Condition = Invoke<ExpressionVisitor>(l.Value).Expression }); break; case DefaultSwitchLabelSyntax d: _case.Labels.Add(new DefaultSwitchLabelCPPModel()); break; default: Visit(label); break; } } using (Context.WithCodeContainer(_case)) { foreach (var statement in node.Statements) { Invoke<BlockVisitor>(statement); } } }
public override void VisitCaseCPPModel(CaseCPPModel model) { VisitChildren(model.Labels); OpenBlock(); VisitChildren(model.Members); CloseBlock(); }