示例#1
0
        public override void write(CCodeWriter writer)
        {
            if (!else_if)
            {
                writer.write_indent(line);
            }
            else
            {
                writer.write_string(" ");
            }
            writer.write_string("if (");
            if (condition != null)
            {
                condition.write(writer);
            }
            writer.write_string(")");

            /* else shouldn't be on a separate line */
            if (false_statement != null && true_statement is CCodeBlock)
            {
                var cblock = (CCodeBlock)true_statement;
                cblock.suppress_newline = true;
            }

            true_statement.write(writer);
            if (false_statement != null)
            {
                if (writer.bol)
                {
                    writer.write_indent();
                    writer.write_string("else");
                }
                else
                {
                    writer.write_string(" else");
                }

                /* else if should be on one line */
                if (false_statement is CCodeIfStatement)
                {
                    var cif = (CCodeIfStatement)false_statement;
                    cif.else_if = true;
                }

                false_statement.write(writer);
            }
        }
示例#2
0
 public override void write(CCodeWriter writer)
 {
     writer.write_indent();
     writer.write_string("goto ");
     writer.write_string(name);
     writer.write_string(";");
     writer.write_newline();
 }
示例#3
0
 public override void write(CCodeWriter writer)
 {
     writer.write_indent(line);
     writer.write_string("case ");
     expression.write(writer);
     writer.write_string(":");
     writer.write_newline();
 }
示例#4
0
        public override void write(CCodeWriter writer)
        {
            writer.write_indent(line);
            writer.write_string("switch (");
            expression.write(writer);
            writer.write_string(")");

            base.write(writer);
        }
 private void write_expression(CCodeWriter writer, CCodeExpression expr)
 {
     writer.write_indent(line);
     if (expr != null)
     {
         expr.write(writer);
     }
     writer.write_string(";");
     writer.write_newline();
 }
示例#6
0
        public override void write(CCodeWriter writer)
        {
            writer.write_indent(line);
            writer.write_string("while (");

            condition.write(writer);

            writer.write_string(")");

            body.write(writer);
        }
示例#7
0
        public override void write(CCodeWriter writer)
        {
            bool first;

            writer.write_indent(line);
            writer.write_string("for (");

            first = true;
            foreach (CCodeExpression init_expr in initializer)
            {
                if (!first)
                {
                    writer.write_string(", ");
                }
                else
                {
                    first = false;
                }
                if (init_expr != null)
                {
                    init_expr.write(writer);
                }
            }

            writer.write_string("; ");
            if (condition != null)
            {
                condition.write(writer);
            }
            writer.write_string("; ");

            first = true;
            foreach (CCodeExpression it_expr in iterator)
            {
                if (!first)
                {
                    writer.write_string(", ");
                }
                else
                {
                    first = false;
                }
                if (it_expr != null)
                {
                    it_expr.write(writer);
                }
            }

            writer.write_string(")");
            body.write(writer);
        }
示例#8
0
        public override void write(CCodeWriter writer)
        {
            writer.write_indent(line);
            writer.write_string("return");

            if (return_expression != null)
            {
                writer.write_string(" ");
                return_expression.write(writer);
            }

            writer.write_string(";");
            writer.write_newline();
        }
示例#9
0
        public override void write(CCodeWriter writer)
        {
            if (name != null)
            {
                writer.write_string("typedef ");
            }
            writer.write_string("enum ");
            writer.write_begin_block();
            bool first = true;

            foreach (CCodeEnumValue value in values)
            {
                if (!first)
                {
                    writer.write_string(",");
                    writer.write_newline();
                }
                writer.write_indent();
                value.write(writer);
                first = false;
            }
            if (!first)
            {
                writer.write_newline();
            }
            writer.write_end_block();
            if (name != null)
            {
                writer.write_string(" ");
                writer.write_string(name);
            }
            if (modifiers.HasFlag(CCodeModifiers.DEPRECATED))
            {
                writer.write_string(" G_GNUC_DEPRECATED");
            }
            writer.write_string(";");
            writer.write_newline();
        }
示例#10
0
 public override void write(CCodeWriter writer)
 {
     writer.write_indent(line);
     writer.write_string("break;");
     writer.write_newline();
 }