public override void write(CCodeWriter writer) { writer.write_string("("); writer.write_string(type_name); writer.write_string(") "); inner.write_inner(writer); }
public override void write(CCodeWriter writer) { writer.write_indent(line); writer.write_string("case "); expression.write(writer); writer.write_string(":"); writer.write_newline(); }
public override void write(CCodeWriter writer) { writer.write_indent(); writer.write_string("goto "); writer.write_string(name); writer.write_string(";"); writer.write_newline(); }
public override void write(CCodeWriter writer) { condition.write_inner(writer); writer.write_string(" ? "); true_expression.write_inner(writer); writer.write_string(" : "); false_expression.write_inner(writer); }
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(); }
public override void write(CCodeWriter writer) { writer.write_indent(line); writer.write_string("while ("); condition.write(writer); writer.write_string(")"); body.write(writer); }
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); }
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(); }
public override void write(CCodeWriter writer) { left.write_inner(writer); switch (Operator) { case CCodeBinaryOperator.PLUS: writer.write_string(" + "); break; case CCodeBinaryOperator.MINUS: writer.write_string(" - "); break; case CCodeBinaryOperator.MUL: writer.write_string(" * "); break; case CCodeBinaryOperator.DIV: writer.write_string(" / "); break; case CCodeBinaryOperator.MOD: writer.write_string(" % "); break; case CCodeBinaryOperator.SHIFT_LEFT: writer.write_string(" << "); break; case CCodeBinaryOperator.SHIFT_RIGHT: writer.write_string(" >> "); break; case CCodeBinaryOperator.LESS_THAN: writer.write_string(" < "); break; case CCodeBinaryOperator.GREATER_THAN: writer.write_string(" > "); break; case CCodeBinaryOperator.LESS_THAN_OR_EQUAL: writer.write_string(" <= "); break; case CCodeBinaryOperator.GREATER_THAN_OR_EQUAL: writer.write_string(" >= "); break; case CCodeBinaryOperator.EQUALITY: writer.write_string(" == "); break; case CCodeBinaryOperator.INEQUALITY: writer.write_string(" != "); break; case CCodeBinaryOperator.BITWISE_AND: writer.write_string(" & "); break; case CCodeBinaryOperator.BITWISE_OR: writer.write_string(" | "); break; case CCodeBinaryOperator.BITWISE_XOR: writer.write_string(" ^ "); break; case CCodeBinaryOperator.AND: writer.write_string(" && "); break; case CCodeBinaryOperator.OR: writer.write_string(" || "); break; default: assert_not_reached(); break; } right.write_inner(writer); }
public override void write(CCodeWriter writer) { switch (Operator) { case CCodeUnaryOperator.PLUS: writer.write_string("+"); inner.write_inner(writer); break; case CCodeUnaryOperator.MINUS: writer.write_string("-"); inner.write_inner(writer); break; case CCodeUnaryOperator.LOGICAL_NEGATION: writer.write_string("!"); inner.write_inner(writer); break; case CCodeUnaryOperator.BITWISE_COMPLEMENT: writer.write_string("~"); inner.write_inner(writer); break; case CCodeUnaryOperator.POINTER_INDIRECTION: var inner_unary = inner as CCodeUnaryExpression; if (inner_unary != null && inner_unary.Operator == CCodeUnaryOperator.ADDRESS_OF) { // simplify expression inner_unary.inner.write(writer); return; } writer.write_string("*"); inner.write_inner(writer); break; case CCodeUnaryOperator.ADDRESS_OF: var _inner_unary_ = inner as CCodeUnaryExpression; if (_inner_unary_ != null && _inner_unary_.Operator == CCodeUnaryOperator.POINTER_INDIRECTION) { // simplify expression _inner_unary_.inner.write(writer); return; } writer.write_string("&"); inner.write_inner(writer); break; case CCodeUnaryOperator.PREFIX_INCREMENT: writer.write_string("++"); break; case CCodeUnaryOperator.PREFIX_DECREMENT: writer.write_string("--"); break; case CCodeUnaryOperator.POSTFIX_INCREMENT: inner.write_inner(writer); writer.write_string("++"); break; case CCodeUnaryOperator.POSTFIX_DECREMENT: inner.write_inner(writer); writer.write_string("--"); break; default: assert_not_reached(); break; } }
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); } }
public override void write(CCodeWriter writer) { bool first = true; writer.write_string("("); foreach (CCodeExpression expr in inner) { if (!first) { writer.write_string(", "); } else { first = false; } expr.write(writer); } writer.write_string(")"); }
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(); }
public override void write(CCodeWriter writer) { if (expression is CCodeCommaExpression) { // expand comma expression into multiple statements // to improve code readability var ccomma = expression as CCodeCommaExpression; foreach (CCodeExpression expr in ccomma.get_inner()) { write_expression(writer, expr); } } else if (expression is CCodeParenthesizedExpression) { var cpar = expression as CCodeParenthesizedExpression; write_expression(writer, cpar.inner); } else { write_expression(writer, expression); } }
public override void write_inner(CCodeWriter writer) { writer.write_string("("); this.write(writer); writer.write_string(")"); }
public virtual void write_inner(CCodeWriter writer) { this.write(writer); }
public override void write(CCodeWriter writer) { writer.write_indent(line); writer.write_string("break;"); writer.write_newline(); }
public override void write(CCodeWriter writer) { assert_not_reached(); }