Ejemplo n.º 1
0
        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();
 }