Esempio n. 1
0
        public override void WriteTo(CodeWriter writer)
        {
            foreach (var item in Case)
            {
                if (item.Mask)
                {
                    using (writer.NewBlock())
                    {
                        writer.AddCommentLine(item.Comment);
                        item.Block.WriteTo(writer);
                    }
                    return;
                }
            }

            for (int i = 0; i < Case.Count; i++)
            {
                writer.NewLine();
                writer.Write(i == 0 ? "if" : "else if");
                writer.Write(" (");
                Case[i].Condition.WriteToWithCast(writer, ProjectConverter.CppTypeName_Bool);
                writer.Write(")");
                using (writer.NewBlock())
                {
                    writer.AddCommentLine(Case[i].Comment);
                    Case[i].Block.WriteTo(writer);
                }
            }
            writer.NewLine();
            writer.Write("else");
            using (writer.NewBlock())
            {
                DefaultBlock.WriteTo(writer);
            }
        }
Esempio n. 2
0
 public override EocStatement Optimize()
 {
     Case.ForEach(x =>
     {
         x.Condition = x.Condition?.Optimize();
         x.Block     = x.Block?.Optimize() as EocStatementBlock;
     });
     DefaultBlock = DefaultBlock?.Optimize() as EocStatementBlock;
     return(this);
 }
Esempio n. 3
0
        public override void ProcessSubExpression(Func <EocExpression, EocExpression> processor, bool deep = true)
        {
            Case.ForEach(x =>
            {
                if (x.Condition != null)
                {
                    if (deep)
                    {
                        x.Condition.ProcessSubExpression(processor, deep);
                    }
                    x.Condition = processor(x.Condition);
                }
                x.Block?.ProcessSubExpression(processor, deep);
            });

            DefaultBlock?.ProcessSubExpression(processor, deep);
        }