예제 #1
0
        public override void VisitGlobalvar(Globalvar globalvar)
        {
            // Create the array
            IL.Emit(OpCodes.Ldc_I4, globalvar.Variables.Length);
            IL.Emit(OpCodes.Newarr, typeof(string));
            IL.Emit(OpCodes.Stloc, Vars);

            // Set each index of the array to a string
            // arr[i] = var[i]
            for (int i = 0; i < globalvar.Variables.Length; i++)
            {
                IL.Emit(OpCodes.Ldloc, Vars);
                IL.Emit(OpCodes.Ldc_I4, i);
                IL.Emit(OpCodes.Ldstr, globalvar.Variables[i]);
                IL.Emit(OpCodes.Stelem, typeof(string));
            }

            // Call ExecutionContext.GlobalVars(string[] vars)
            IL.Emit(OpCodes.Ldloc, Vars);
            IL.Emit(OpCodes.Call, typeof(ExecutionContext).GetMethod("GlobalVars"));
        }
        public override void VisitGlobalvar(Globalvar globalvar)
        {
            // Create the array
            IL.Emit(OpCodes.Ldc_I4, globalvar.Variables.Length);
            IL.Emit(OpCodes.Newarr, typeof(string));
            IL.Emit(OpCodes.Stloc, Vars);

            // Set each index of the array to a string
            // arr[i] = var[i]
            for (int i = 0; i < globalvar.Variables.Length; i++)
            {
                IL.Emit(OpCodes.Ldloc, Vars);
                IL.Emit(OpCodes.Ldc_I4, i);
                IL.Emit(OpCodes.Ldstr, globalvar.Variables[i]);
                IL.Emit(OpCodes.Stelem, typeof(string));
            }

            // Call ExecutionContext.GlobalVars(string[] vars)
            IL.Emit(OpCodes.Ldloc, Vars);
            IL.Emit(OpCodes.Call, typeof(ExecutionContext).GetMethod("GlobalVars"));
        }