public EmitMethodInvocationExpression(EmitExpression target, EmitMethod method, params EmitExpression[] arguments) { if (method.IsStatic && target != null) throw new Exception("Static method cannot have a target"); Target = target; Method = method; Arguments.AddRange(arguments); }
public static EmitBinaryExpression Multiply(this EmitExpression left, EmitExpression right) { return new EmitBinaryExpression(left, EmitBinaryOperator.Multiply, right); }
public static EmitBinaryExpression ModulusAssign(this EmitExpression left, EmitExpression right) { return new EmitBinaryExpression(left, EmitBinaryOperator.ModulusAssign, right); }
public static EmitBinaryExpression LessThanOrEqual(this EmitExpression left, EmitExpression right) { return new EmitBinaryExpression(left, EmitBinaryOperator.LessThanOrEqual, right); }
public static EmitBinaryExpression GreaterThan(this EmitExpression left, EmitExpression right) { return new EmitBinaryExpression(left, EmitBinaryOperator.GreaterThan, right); }
public static EmitForStatement For(EmitVariableDeclarationStatement initializer = null, EmitExpression predicate = null, IEmitStatement incrementor = null, IEmitStatement body = null) { return new EmitForStatement(initializer, predicate, incrementor, body); }
public static EmitBinaryExpression BooleanAnd(this EmitExpression left, EmitExpression right) { return new EmitBinaryExpression(left, EmitBinaryOperator.BooleanAnd, right); }
public static EmitBinaryExpression SubtractAssign(this EmitVariable left, EmitExpression right) { return new EmitBinaryExpression(left, EmitBinaryOperator.SubtractAssign, right); }
public static EmitBinaryExpression Multiply(this EmitExpression left, EmitExpression right) { return(new EmitBinaryExpression(left, EmitBinaryOperator.Multiply, right)); }
public static EmitBinaryExpression SubtractAssign(this EmitExpression left, EmitExpression right) { return(new EmitBinaryExpression(left, EmitBinaryOperator.SubtractAssign, right)); }
public static EmitBinaryExpression Add(this EmitExpression left, EmitExpression right) { return(new EmitBinaryExpression(left, EmitBinaryOperator.Add, right)); }
public static EmitBinaryExpression Assign(this EmitVariableDeclarationStatement left, EmitExpression right) { return(new EmitBinaryExpression(left.Variables.Single(), EmitBinaryOperator.Assign, right)); }
public static EmitUnaryExpression PostDecrement(this EmitExpression operand) { return(new EmitUnaryExpression(EmitUnaryOperator.PostfixDecrement, operand)); }
public EmitIfStatement(EmitExpression condition, EmitStatement statement, EmitStatement @else = null) { Condition = condition; Statement = statement; Else = @else; }
public static EmitBinaryExpression NotEqualTo(this EmitExpression left, EmitExpression right) { return new EmitBinaryExpression(left, EmitBinaryOperator.NotEquals, right); }
public static EmitBinaryExpression ShiftRightAssign(this EmitExpression left, EmitExpression right) { return new EmitBinaryExpression(left, EmitBinaryOperator.ShiftRightAssign, right); }
public static EmitBinaryExpression Divide(this EmitExpression left, EmitExpression right) { return(new EmitBinaryExpression(left, EmitBinaryOperator.Divide, right)); }
public static EmitBinaryExpression BitwiseOrAssign(this EmitVariableDeclarationStatement left, EmitExpression right) { return new EmitBinaryExpression(left, EmitBinaryOperator.BitwiseOrAssign, right); }
public static EmitBinaryExpression DivideAssign(this EmitVariable left, EmitExpression right) { return(new EmitBinaryExpression(left, EmitBinaryOperator.DivideAssign, right)); }
public static EmitBinaryExpression Modulus(this EmitVariable left, EmitExpression right) { return(new EmitBinaryExpression(left, EmitBinaryOperator.Modulus, right)); }
public static void Foreach(this EmitBlockStatement block, EmitVariable item, EmitExpression collection, EmitStatement statement) { block.Statements.Add(collection.Foreach(item, statement)); }
public static EmitBinaryExpression ModulusAssign(this EmitExpression left, EmitExpression right) { return(new EmitBinaryExpression(left, EmitBinaryOperator.ModulusAssign, right)); }
public static EmitIfStatement If(this EmitBlockStatement block, EmitExpression condition, EmitStatement statement, EmitStatement @else = null) { var ifStatement = new EmitIfStatement(condition, statement, @else); block.Statements.Add(ifStatement); return ifStatement; }
public static EmitBinaryExpression ModulusAssign(this EmitVariableDeclarationStatement left, EmitExpression right) { return(new EmitBinaryExpression(left, EmitBinaryOperator.ModulusAssign, right)); }
public static EmitBinaryExpression Modulus(this EmitVariableDeclarationStatement left, EmitExpression right) { return new EmitBinaryExpression(left, EmitBinaryOperator.Modulus, right); }
public static EmitBinaryExpression NotEqualTo(this EmitExpression left, EmitExpression right) { return(new EmitBinaryExpression(left, EmitBinaryOperator.NotEquals, right)); }
public static EmitBinaryExpression Assign(this EmitVariableDeclarationStatement left, EmitExpression right) { return new EmitBinaryExpression(left.Variables.Single(), EmitBinaryOperator.Assign, right); }
public static EmitBinaryExpression LessThan(this EmitExpression left, EmitExpression right) { return(new EmitBinaryExpression(left, EmitBinaryOperator.LessThan, right)); }
public static EmitBinaryExpression MultiplyAssign(this EmitVariable left, EmitExpression right) { return new EmitBinaryExpression(left, EmitBinaryOperator.MultiplyAssign, right); }
public static EmitBinaryExpression GreaterThanOrEqual(this EmitExpression left, EmitExpression right) { return(new EmitBinaryExpression(left, EmitBinaryOperator.GreaterThanOrEqual, right)); }
public static EmitReturnStatement Return(this EmitBlockStatement block, EmitExpression expression) { var result = expression.Return(); block.Statements.Add(result); return result; }
public static EmitBinaryExpression BooleanOr(this EmitExpression left, EmitExpression right) { return(new EmitBinaryExpression(left, EmitBinaryOperator.BooleanOr, right)); }
public static EmitBinaryExpression Subtract(this EmitExpression left, EmitExpression right) { return new EmitBinaryExpression(left, EmitBinaryOperator.Subtract, right); }
public EmitForeachStatement(EmitVariable item, EmitExpression collection, EmitStatement statement) { Item = item; Collection = collection; Statement = statement; }
public static EmitBinaryExpression BitwiseOrAssign(this EmitExpression left, EmitExpression right) { return new EmitBinaryExpression(left, EmitBinaryOperator.BitwiseOrAssign, right); }
public static EmitBinaryExpression Divide(this EmitExpression left, EmitExpression right) { return new EmitBinaryExpression(left, EmitBinaryOperator.Divide, right); }
public static EmitBinaryExpression Add(this EmitExpression left, EmitExpression right) { return new EmitBinaryExpression(left, EmitBinaryOperator.Add, right); }
public static EmitExpressionStatement Express(this EmitBlockStatement block, EmitExpression expression) { var statement = new EmitExpressionStatement(expression); block.Statements.Add(statement); return statement; }
public EmitBinaryExpression(EmitExpression left, EmitBinaryOperator @operator, EmitExpression right) { Left = left; Operator = @operator; Right = right; }