예제 #1
0
파일: DiExp.cs 프로젝트: qtxtz/ZCompileCore
        public void GenerateGet(EmitExpContext context)
        {
            ILGenerator il        = context.ILout;
            MethodInfo  getMethod = ExProperty.Property.GetGetMethod();

            SubjectExp.Generate(context);
            ArgExp.RequireType = getMethod.ReturnType;
            ArgExp.Generate(context);
            EmitHelper.CallDynamic(il, getMethod, ExProperty.IsSelf);
        }
예제 #2
0
        public void GenerateSet(EmitExpContext context, Exp valueExpr)
        {
            ILGenerator il        = context.ILout;
            MethodInfo  setMethod = ExProperty.Property.GetSetMethod();

            GenenrateSubject(context);
            valueExpr.Generate(context);

            EmitHelper.CallDynamic(il, setMethod, ExProperty.IsSelf);
        }
예제 #3
0
        protected void GenerateArgsExp(EmitExpContext context, ParameterInfo[] paramInfos, Exp[] args)
        {
            var size = paramInfos.Length;

            for (int i = 0; i < size; i++)
            {
                Exp           argExp    = args[i];
                ParameterInfo parameter = paramInfos[i];
                argExp.RequireType = parameter.ParameterType;
                argExp.Generate(context);
            }
        }
예제 #4
0
파일: DiExp.cs 프로젝트: qtxtz/ZCompileCore
        public void GenerateSet(EmitExpContext context, Exp valueExpr)
        {
            ILGenerator il        = context.ILout;
            MethodInfo  setMethod = ExProperty.Property.GetSetMethod();

            SubjectExp.Generate(context);
            ArgExp.RequireType = setMethod.GetParameters()[0].ParameterType;
            ArgExp.Generate(context);
            //EmitHelper.Box(il, ArgExp.RetType, setMethod.GetParameters()[0].ParameterType);
            valueExpr.RequireType = setMethod.GetParameters()[1].ParameterType;
            valueExpr.Generate(context);
            EmitHelper.CallDynamic(il, setMethod, ExProperty.IsSelf);
        }
예제 #5
0
        public override void Generate(EmitExpContext context)
        {
            ILGenerator il = context.ILout;

            EmitHelper.LoadInt(il,0);
            if(RetType== typeof(float))
            {
                 il.Emit(OpCodes.Conv_R4);
            }
            RightExp.Generate(context);
            il.Emit(OpCodes.Sub);
            base.GenerateConv(context);
        }
예제 #6
0
        public override void Generate(EmitExpContext context)
        {
            ILGenerator il = context.ILout;

            ValueExp.Generate(context);
        }