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);
        }
Ejemplo n.º 2
0
 public static EmitBinaryExpression Multiply(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.Multiply, right);
 }
Ejemplo n.º 3
0
 public static EmitBinaryExpression ModulusAssign(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.ModulusAssign, right);
 }
Ejemplo n.º 4
0
 public static EmitBinaryExpression LessThanOrEqual(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.LessThanOrEqual, right);
 }
Ejemplo n.º 5
0
 public static EmitBinaryExpression GreaterThan(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.GreaterThan, right);
 }
Ejemplo n.º 6
0
 public static EmitForStatement For(EmitVariableDeclarationStatement initializer = null, EmitExpression predicate = null,
     IEmitStatement incrementor = null, IEmitStatement body = null)
 {
     return new EmitForStatement(initializer, predicate, incrementor, body);
 }
Ejemplo n.º 7
0
 public static EmitBinaryExpression BooleanAnd(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.BooleanAnd, right);
 }
Ejemplo n.º 8
0
 public static EmitBinaryExpression SubtractAssign(this EmitVariable left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.SubtractAssign, right);
 }
Ejemplo n.º 9
0
 public static EmitBinaryExpression Multiply(this EmitExpression left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.Multiply, right));
 }
Ejemplo n.º 10
0
 public static EmitBinaryExpression SubtractAssign(this EmitExpression left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.SubtractAssign, right));
 }
Ejemplo n.º 11
0
 public static EmitBinaryExpression Add(this EmitExpression left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.Add, right));
 }
Ejemplo n.º 12
0
 public static EmitBinaryExpression Assign(this EmitVariableDeclarationStatement left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left.Variables.Single(), EmitBinaryOperator.Assign, right));
 }
Ejemplo n.º 13
0
 public static EmitUnaryExpression PostDecrement(this EmitExpression operand)
 {
     return(new EmitUnaryExpression(EmitUnaryOperator.PostfixDecrement, operand));
 }
Ejemplo n.º 14
0
 public EmitIfStatement(EmitExpression condition, EmitStatement statement, EmitStatement @else = null)
 {
     Condition = condition;
     Statement = statement;
     Else = @else;
 }
Ejemplo n.º 15
0
 public static EmitBinaryExpression NotEqualTo(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.NotEquals, right);
 }
Ejemplo n.º 16
0
 public static EmitBinaryExpression ShiftRightAssign(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.ShiftRightAssign, right);
 }
Ejemplo n.º 17
0
 public static EmitBinaryExpression Divide(this EmitExpression left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.Divide, right));
 }
Ejemplo n.º 18
0
 public static EmitBinaryExpression BitwiseOrAssign(this EmitVariableDeclarationStatement left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.BitwiseOrAssign, right);
 }
Ejemplo n.º 19
0
 public static EmitBinaryExpression DivideAssign(this EmitVariable left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.DivideAssign, right));
 }
Ejemplo n.º 20
0
 public EmitIfStatement(EmitExpression condition, EmitStatement statement, EmitStatement @else = null)
 {
     Condition = condition;
     Statement = statement;
     Else      = @else;
 }
Ejemplo n.º 21
0
 public static EmitBinaryExpression Modulus(this EmitVariable left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.Modulus, right));
 }
Ejemplo n.º 22
0
 public static void Foreach(this EmitBlockStatement block, EmitVariable item, EmitExpression collection, EmitStatement statement)
 {
     block.Statements.Add(collection.Foreach(item, statement));
 }
Ejemplo n.º 23
0
 public static EmitBinaryExpression ModulusAssign(this EmitExpression left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.ModulusAssign, right));
 }
Ejemplo n.º 24
0
 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;
 }
Ejemplo n.º 25
0
 public static EmitBinaryExpression ModulusAssign(this EmitVariableDeclarationStatement left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.ModulusAssign, right));
 }
Ejemplo n.º 26
0
 public static EmitBinaryExpression Modulus(this EmitVariableDeclarationStatement left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.Modulus, right);
 }
Ejemplo n.º 27
0
 public static EmitBinaryExpression NotEqualTo(this EmitExpression left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.NotEquals, right));
 }
Ejemplo n.º 28
0
 public static EmitBinaryExpression Assign(this EmitVariableDeclarationStatement left, EmitExpression right)
 {
     return new EmitBinaryExpression(left.Variables.Single(), EmitBinaryOperator.Assign, right);
 }
Ejemplo n.º 29
0
 public static EmitBinaryExpression LessThan(this EmitExpression left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.LessThan, right));
 }
Ejemplo n.º 30
0
 public static EmitBinaryExpression MultiplyAssign(this EmitVariable left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.MultiplyAssign, right);
 }
Ejemplo n.º 31
0
 public static EmitBinaryExpression GreaterThanOrEqual(this EmitExpression left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.GreaterThanOrEqual, right));
 }
Ejemplo n.º 32
0
 public static EmitReturnStatement Return(this EmitBlockStatement block, EmitExpression expression)
 {
     var result = expression.Return();
     block.Statements.Add(result);
     return result;
 }
Ejemplo n.º 33
0
 public static EmitBinaryExpression BooleanOr(this EmitExpression left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.BooleanOr, right));
 }
Ejemplo n.º 34
0
 public static EmitBinaryExpression Subtract(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.Subtract, right);
 }
Ejemplo n.º 35
0
 public EmitForeachStatement(EmitVariable item, EmitExpression collection, EmitStatement statement)
 {
     Item = item;
     Collection = collection;
     Statement = statement;
 }
Ejemplo n.º 36
0
 public static EmitBinaryExpression BitwiseOrAssign(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.BitwiseOrAssign, right);
 }
Ejemplo n.º 37
0
 public static EmitBinaryExpression Divide(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.Divide, right);
 }
Ejemplo n.º 38
0
 public static EmitBinaryExpression Add(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.Add, right);
 }
Ejemplo n.º 39
0
 public static EmitExpressionStatement Express(this EmitBlockStatement block, EmitExpression expression)
 {
     var statement = new EmitExpressionStatement(expression);
     block.Statements.Add(statement);
     return statement;
 }
Ejemplo n.º 40
0
 public EmitBinaryExpression(EmitExpression left, EmitBinaryOperator @operator, EmitExpression right)
 {
     Left = left;
     Operator = @operator;
     Right = right;
 }
Ejemplo n.º 41
0
 public EmitForeachStatement(EmitVariable item, EmitExpression collection, EmitStatement statement)
 {
     Item       = item;
     Collection = collection;
     Statement  = statement;
 }