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