コード例 #1
0
        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
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression Multiply(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.Multiply, right);
 }
コード例 #3
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression ModulusAssign(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.ModulusAssign, right);
 }
コード例 #4
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression LessThanOrEqual(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.LessThanOrEqual, right);
 }
コード例 #5
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression GreaterThan(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.GreaterThan, right);
 }
コード例 #6
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 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
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression BooleanAnd(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.BooleanAnd, right);
 }
コード例 #8
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression SubtractAssign(this EmitVariable left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.SubtractAssign, right);
 }
コード例 #9
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression Multiply(this EmitExpression left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.Multiply, right));
 }
コード例 #10
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression SubtractAssign(this EmitExpression left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.SubtractAssign, right));
 }
コード例 #11
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression Add(this EmitExpression left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.Add, right));
 }
コード例 #12
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression Assign(this EmitVariableDeclarationStatement left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left.Variables.Single(), EmitBinaryOperator.Assign, right));
 }
コード例 #13
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitUnaryExpression PostDecrement(this EmitExpression operand)
 {
     return(new EmitUnaryExpression(EmitUnaryOperator.PostfixDecrement, operand));
 }
コード例 #14
0
ファイル: EmitIfStatement.cs プロジェクト: kswoll/sexy-emit
 public EmitIfStatement(EmitExpression condition, EmitStatement statement, EmitStatement @else = null)
 {
     Condition = condition;
     Statement = statement;
     Else = @else;
 }
コード例 #15
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression NotEqualTo(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.NotEquals, right);
 }
コード例 #16
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression ShiftRightAssign(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.ShiftRightAssign, right);
 }
コード例 #17
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression Divide(this EmitExpression left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.Divide, right));
 }
コード例 #18
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression BitwiseOrAssign(this EmitVariableDeclarationStatement left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.BitwiseOrAssign, right);
 }
コード例 #19
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression DivideAssign(this EmitVariable left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.DivideAssign, right));
 }
コード例 #20
0
ファイル: EmitIfStatement.cs プロジェクト: kswoll/sexy-emit
 public EmitIfStatement(EmitExpression condition, EmitStatement statement, EmitStatement @else = null)
 {
     Condition = condition;
     Statement = statement;
     Else      = @else;
 }
コード例 #21
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression Modulus(this EmitVariable left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.Modulus, right));
 }
コード例 #22
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static void Foreach(this EmitBlockStatement block, EmitVariable item, EmitExpression collection, EmitStatement statement)
 {
     block.Statements.Add(collection.Foreach(item, statement));
 }
コード例 #23
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression ModulusAssign(this EmitExpression left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.ModulusAssign, right));
 }
コード例 #24
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 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
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression ModulusAssign(this EmitVariableDeclarationStatement left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.ModulusAssign, right));
 }
コード例 #26
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression Modulus(this EmitVariableDeclarationStatement left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.Modulus, right);
 }
コード例 #27
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression NotEqualTo(this EmitExpression left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.NotEquals, right));
 }
コード例 #28
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression Assign(this EmitVariableDeclarationStatement left, EmitExpression right)
 {
     return new EmitBinaryExpression(left.Variables.Single(), EmitBinaryOperator.Assign, right);
 }
コード例 #29
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression LessThan(this EmitExpression left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.LessThan, right));
 }
コード例 #30
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression MultiplyAssign(this EmitVariable left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.MultiplyAssign, right);
 }
コード例 #31
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression GreaterThanOrEqual(this EmitExpression left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.GreaterThanOrEqual, right));
 }
コード例 #32
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitReturnStatement Return(this EmitBlockStatement block, EmitExpression expression)
 {
     var result = expression.Return();
     block.Statements.Add(result);
     return result;
 }
コード例 #33
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression BooleanOr(this EmitExpression left, EmitExpression right)
 {
     return(new EmitBinaryExpression(left, EmitBinaryOperator.BooleanOr, right));
 }
コード例 #34
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 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
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression BitwiseOrAssign(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.BitwiseOrAssign, right);
 }
コード例 #37
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression Divide(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.Divide, right);
 }
コード例 #38
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 public static EmitBinaryExpression Add(this EmitExpression left, EmitExpression right)
 {
     return new EmitBinaryExpression(left, EmitBinaryOperator.Add, right);
 }
コード例 #39
0
ファイル: EmitAst.cs プロジェクト: kswoll/sexy-emit
 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;
 }