Exemplo n.º 1
0
        protected override TypeBinaryExpression DecodeTyped(ExpressionType expressionType, ref byte *data, ref int remainingBytes, bool doNotCheckBounds)
        {
            var expression = CommonCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var type       = typeCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);

            return(Expression.TypeEqual(expression, type));
        }
Exemplo n.º 2
0
        protected override unsafe InvocationExpression DecodeTyped(ExpressionType expressionType, ref byte *data, ref int remainingBytes, bool doNotCheckBounds)
        {
            var expression = CommonCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var arguments  = expressionArrayCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);

            return(Expression.Invoke(expression, arguments));
        }
 protected override void EncodeTyped(ref byte *data, LambdaExpression expression)
 {
     CommonCodec.Encode(ref data, expression.Body);
     stringCodec.Encode(ref data, expression.Name);
     boolCodec.Encode(ref data, expression.TailCall);
     expressionArrayCodec.Encode(ref data, expression.Parameters.Select(x => (Expression)x).ToArray());
 }
        protected override MemberInitExpression DecodeTyped(ExpressionType expressionType, ref byte *data, ref int remainingBytes, bool doNotCheckBounds)
        {
            var newExpression = (NewExpression)CommonCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var bindings      = memberBindingCollectionCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);

            return(Expression.MemberInit(newExpression, bindings));
        }
Exemplo n.º 5
0
        protected override MemberExpression DecodeTyped(ExpressionType expressionType, ref byte *data, ref int remainingBytes, bool doNotCheckBounds)
        {
            var expression = CommonCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var member     = memberInfoCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);

            return(Expression.MakeMemberAccess(expression, member));
        }
        protected override ListInitExpression DecodeTyped(ExpressionType expressionType, ref byte *data, ref int remainingBytes, bool doNotCheckBounds)
        {
            var newExpression = (NewExpression)CommonCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var initializers  = elementInitArrayCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);

            return(Expression.ListInit(newExpression, initializers));
        }
Exemplo n.º 7
0
 protected override void EncodeTyped(ref byte *data, ConditionalExpression expression)
 {
     CommonCodec.Encode(ref data, expression.Test);
     CommonCodec.Encode(ref data, expression.IfTrue);
     CommonCodec.Encode(ref data, expression.IfFalse);
     typeCodec.Encode(ref data, expression.Type);
 }
Exemplo n.º 8
0
 protected override void EncodeTyped(ref byte *data, BinaryExpression expression)
 {
     CommonCodec.Encode(ref data, expression.Left);
     CommonCodec.Encode(ref data, expression.Right);
     boolCodec.Encode(ref data, expression.IsLiftedToNull);
     methodInfoCodec.Encode(ref data, expression.Method);
     CommonCodec.Encode(ref data, expression.Conversion);
 }
Exemplo n.º 9
0
        protected override unsafe int CalculateSizeTyped(InvocationExpression expression)
        {
            int result = 0;

            result += CommonCodec.CalculateSize(expression.Expression);
            result += expressionArrayCodec.CalculateSize(expression.Arguments.ToArray());
            return(result);
        }
Exemplo n.º 10
0
        protected override int CalculateSizeTyped(MemberExpression expression)
        {
            int result = 0;

            result += CommonCodec.CalculateSize(expression.Expression);
            result += memberInfoCodec.CalculateSize(expression.Member);
            return(result);
        }
        protected override int CalculateSizeTyped(ListInitExpression expression)
        {
            int result = 0;

            result += CommonCodec.CalculateSize(expression.NewExpression);
            result += elementInitArrayCodec.CalculateSize(expression.Initializers.ToArray());
            return(result);
        }
        protected override int CalculateSizeTyped(MemberInitExpression expression)
        {
            int result = 0;

            result += CommonCodec.CalculateSize(expression.NewExpression);
            result += memberBindingCollectionCodec.CalculateSize(expression.Bindings);
            return(result);
        }
        protected override MethodCallExpression DecodeTyped(ExpressionType expressionType, ref byte *data, ref int remainingBytes, bool doNotCheckBounds)
        {
            var instance  = CommonCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var method    = methodInfoCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var arguments = expressionArrayCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);

            return(Expression.Call(instance, method, arguments));
        }
Exemplo n.º 14
0
        protected override UnaryExpression DecodeTyped(ExpressionType expressionType, ref byte *data, ref int remainingBytes, bool doNotCheckBounds)
        {
            var operand = CommonCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var type    = typeCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var method  = methodInfoCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);

            return(Expression.MakeUnary(expressionType, operand, type, method));
        }
Exemplo n.º 15
0
        protected override IndexExpression DecodeTyped(ExpressionType expressionType, ref byte *data, ref int remainingBytes, bool doNotCheckBounds)
        {
            var instance  = CommonCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var indexer   = propertyInfoCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var arguments = expressionArrayCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);

            return(Expression.MakeIndex(instance, indexer, arguments));
        }
Exemplo n.º 16
0
        protected override int CalculateSizeTyped(TypeBinaryExpression expression)
        {
            int result = 0;

            result += CommonCodec.CalculateSize(expression.Expression);
            result += typeCodec.CalculateSize(expression.TypeOperand);
            return(result);
        }
Exemplo n.º 17
0
        protected override int CalculateSizeTyped(IndexExpression expression)
        {
            int result = 0;

            result += CommonCodec.CalculateSize(expression.Object);
            result += propertyInfoCodec.CalculateSize(expression.Indexer);
            result += expressionArrayCodec.CalculateSize(expression.Arguments.ToArray());
            return(result);
        }
Exemplo n.º 18
0
        protected override int CalculateSizeTyped(UnaryExpression expression)
        {
            int result = 0;

            result += CommonCodec.CalculateSize(expression.Operand);
            result += typeCodec.CalculateSize(expression.Type);
            result += methodInfoCodec.CalculateSize(expression.Method);
            return(result);
        }
Exemplo n.º 19
0
        protected override ConditionalExpression DecodeTyped(ExpressionType expressionType, ref byte *data, ref int remainingBytes, bool doNotCheckBounds)
        {
            var test    = CommonCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var ifTrue  = CommonCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var ifFalse = CommonCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var type    = typeCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);

            return(Expression.Condition(test, ifTrue, ifFalse, type));
        }
        protected override int CalculateSizeTyped(MethodCallExpression expression)
        {
            int result = 0;

            result += CommonCodec.CalculateSize(expression.Object);
            result += methodInfoCodec.CalculateSize(expression.Method);
            result += expressionArrayCodec.CalculateSize(expression.Arguments.ToArray());
            return(result);
        }
Exemplo n.º 21
0
        protected override LambdaExpression DecodeTyped(ExpressionType expressionType, ref byte *data, ref int remainingBytes, bool doNotCheckBounds)
        {
            //var delegateType = typeCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var body       = CommonCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var name       = stringCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var tailCall   = boolCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var parameters = expressionArrayCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds).Select(x => (ParameterExpression)x);

            return(Expression.Lambda(/*delegateType, */ body, name, tailCall, parameters));
        }
Exemplo n.º 22
0
        protected override int CalculateSizeTyped(ConditionalExpression expression)
        {
            int result = 0;

            result += CommonCodec.CalculateSize(expression.Test);
            result += CommonCodec.CalculateSize(expression.IfTrue);
            result += CommonCodec.CalculateSize(expression.IfFalse);
            result += typeCodec.CalculateSize(expression.Type);
            return(result);
        }
Exemplo n.º 23
0
        protected override int CalculateSizeTyped(LambdaExpression expression)
        {
            int result = 0;

            result += CommonCodec.CalculateSize(expression.Body);
            result += stringCodec.CalculateSize(expression.Name);
            result += boolCodec.CalculateSize(expression.TailCall);
            result += expressionArrayCodec.CalculateSize(expression.Parameters.Select(x => (Expression)x).ToArray());
            return(result);
        }
Exemplo n.º 24
0
        protected override BinaryExpression DecodeTyped(ExpressionType expressionType, ref byte *data, ref int remainingBytes, bool doNotCheckBounds)
        {
            var left       = CommonCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var right      = CommonCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var liftToNull = boolCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var method     = methodInfoCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);
            var conversion = (LambdaExpression)CommonCodec.Decode(ref data, ref remainingBytes, doNotCheckBounds);

            return(Expression.MakeBinary(expressionType, left, right, liftToNull, method, conversion));
        }
Exemplo n.º 25
0
        protected override int CalculateSizeTyped(BinaryExpression expression)
        {
            int result = 0;

            result += CommonCodec.CalculateSize(expression.Left);
            result += CommonCodec.CalculateSize(expression.Right);
            result += boolCodec.CalculateSize(expression.IsLiftedToNull);
            result += methodInfoCodec.CalculateSize(expression.Method);
            result += CommonCodec.CalculateSize(expression.Conversion);
            return(result);
        }
Exemplo n.º 26
0
 protected override void EncodeTyped(ref byte *data, IndexExpression expression)
 {
     CommonCodec.Encode(ref data, expression.Object);
     propertyInfoCodec.Encode(ref data, expression.Indexer);
     expressionArrayCodec.Encode(ref data, expression.Arguments.ToArray());
 }
Exemplo n.º 27
0
 protected override unsafe void EncodeTyped(ref byte *data, InvocationExpression expression)
 {
     CommonCodec.Encode(ref data, expression.Expression);
     expressionArrayCodec.Encode(ref data, expression.Arguments.ToArray());
 }
 protected override void EncodeTyped(ref byte *data, MethodCallExpression expression)
 {
     CommonCodec.Encode(ref data, expression.Object);
     methodInfoCodec.Encode(ref data, expression.Method);
     expressionArrayCodec.Encode(ref data, expression.Arguments.ToArray());
 }
Exemplo n.º 29
0
 protected override void EncodeTyped(ref byte *data, TypeBinaryExpression expression)
 {
     CommonCodec.Encode(ref data, expression.Expression);
     typeCodec.Encode(ref data, expression.TypeOperand);
 }
Exemplo n.º 30
0
 protected override void EncodeTyped(ref byte *data, UnaryExpression expression)
 {
     CommonCodec.Encode(ref data, expression.Operand);
     typeCodec.Encode(ref data, expression.Type);
     methodInfoCodec.Encode(ref data, expression.Method);
 }