Ejemplo n.º 1
0
		public override void Generate (ILGenerator gen)
		{
			if (incMet != null) {
				CodeGenerationHelper.GenerateMethodCall (gen, null, incMet, exp);
				return;
			}
			
			exp.Generate (gen);
			Type t = exp.GetResultType ();
			switch (Type.GetTypeCode (t))
			{
				case TypeCode.Byte:
					gen.Emit (OpCodes.Ldc_I4_1);
					gen.Emit (OpCodes.Add);
					gen.Emit (OpCodes.Conv_U1);
					break;

				case TypeCode.Double:
					gen.Emit (OpCodes.Ldc_R8, 1);
					gen.Emit (OpCodes.Add);
					break;
					
				case TypeCode.Int16:
					gen.Emit (OpCodes.Ldc_I4_1);
					gen.Emit (OpCodes.Add);
					gen.Emit (OpCodes.Conv_I2);
					break;
					
				case TypeCode.UInt32:
				case TypeCode.Int32:
					gen.Emit (OpCodes.Ldc_I4_1);
					gen.Emit (OpCodes.Add);
					break;
					
				case TypeCode.UInt64:
				case TypeCode.Int64:
					gen.Emit (OpCodes.Ldc_I4_1);
					gen.Emit (OpCodes.Add);
					gen.Emit (OpCodes.Conv_U8);
					break;
					
				case TypeCode.SByte:
					gen.Emit (OpCodes.Ldc_I4_1);
					gen.Emit (OpCodes.Add);
					gen.Emit (OpCodes.Conv_I1);
					break;
					
				case TypeCode.Single:
					gen.Emit (OpCodes.Ldc_R4, 1);
					gen.Emit (OpCodes.Add);
					break;
					
				case TypeCode.UInt16:
					gen.Emit (OpCodes.Ldc_I4_1);
					gen.Emit (OpCodes.Add);
					gen.Emit (OpCodes.Conv_U2);
					break;
			}
		}
Ejemplo n.º 2
0
 public override void Generate(ILGenerator gen)
 {
     if (codeMethod != null)
     {
         CodeGenerationHelper.GenerateMethodCall(gen, target, codeMethod, parameters);
     }
     else
     {
         CodeGenerationHelper.GenerateMethodCall(gen, target, method, parameters);
     }
 }
Ejemplo n.º 3
0
 public override void Generate(ILGenerator gen)
 {
     if (exp1.GetResultType() == typeof(string))
     {
         MethodInfo m = typeof(string).GetMethod("Concat", new Type[] { typeof(string), typeof(string) });
         CodeGenerationHelper.GenerateMethodCall(gen, null, m, exp1, exp2);
     }
     else
     {
         exp1.Generate(gen);
         exp2.Generate(gen);
         gen.Emit(OpCodes.Add);
     }
 }
Ejemplo n.º 4
0
 public override void GenerateSet(ILGenerator gen, CodeExpression value)
 {
     CodeGenerationHelper.GenerateMethodCall(gen, target, property.GetSetMethod(), value);
 }
Ejemplo n.º 5
0
 public override void Generate(ILGenerator gen)
 {
     CodeGenerationHelper.GenerateMethodCall(gen, target, property.GetGetMethod());
 }
Ejemplo n.º 6
0
        public override void Generate(ILGenerator gen)
        {
            exp.Generate(gen);
            Type t = exp.GetResultType();

            switch (Type.GetTypeCode(t))
            {
            case TypeCode.Byte:
                gen.Emit(OpCodes.Ldc_I4_1);
                gen.Emit(OpCodes.Add);
                gen.Emit(OpCodes.Conv_U1);
                break;

            case TypeCode.Decimal:
                MethodInfo met = typeof(Decimal).GetMethod("op_Increment");
                CodeGenerationHelper.GenerateMethodCall(gen, null, met, exp);
                break;

            case TypeCode.Double:
                gen.Emit(OpCodes.Ldc_R8, 1);
                gen.Emit(OpCodes.Add);
                break;

            case TypeCode.Int16:
                gen.Emit(OpCodes.Ldc_I4_1);
                gen.Emit(OpCodes.Add);
                gen.Emit(OpCodes.Conv_I2);
                break;

            case TypeCode.UInt32:
            case TypeCode.Int32:
                gen.Emit(OpCodes.Ldc_I4_1);
                gen.Emit(OpCodes.Add);
                break;

            case TypeCode.UInt64:
            case TypeCode.Int64:
                gen.Emit(OpCodes.Ldc_I4_1);
                gen.Emit(OpCodes.Add);
                gen.Emit(OpCodes.Conv_U8);
                break;

            case TypeCode.SByte:
                gen.Emit(OpCodes.Ldc_I4_1);
                gen.Emit(OpCodes.Add);
                gen.Emit(OpCodes.Conv_I1);
                break;

            case TypeCode.Single:
                gen.Emit(OpCodes.Ldc_R4, 1);
                gen.Emit(OpCodes.Add);
                break;

            case TypeCode.UInt16:
                gen.Emit(OpCodes.Ldc_I4_1);
                gen.Emit(OpCodes.Add);
                gen.Emit(OpCodes.Conv_U2);
                break;
            }
            exp.GenerateSet(gen, exp);
        }