public void SetValue(CanCompute <Int32> index, LocalBuilder value) { Emit(OpCodes.Ldloc_S, instance); Emit(OpCodes.Ldloc_S, index); Emit(OpCodes.Ldloc_S, value); this.PushArray(identity); }
public LocalBuilder GetValue(CanCompute <Int32> index) { var value = DeclareLocal(typeof(T)); Emit(OpCodes.Ldloc_S, instance); Emit(OpCodes.Ldloc_S, index); this.PopArray(identity); Emit(OpCodes.Stloc_S, value); return(value); }
public void Copy(FieldArray <T> target, CanCompute <Int32> length) { this.For(0, length, (int1, tab) => { var local = DeclareLocal(target.identity); GetValue(int1); Emit(OpCodes.Stloc_S, local); target.SetValue(int1, local); }); }
internal static FieldBoolean Comparer <T, T1>(CanCompute <T> field, T1 value, params OpCode[] codes) where T : struct where T1 : struct { var res = field.NewBoolean(); field.Output(); foreach (var code in codes) { field.EmitValue(value); field.Emit(code); } field.Emit(OpCodes.Stloc_S, res); return(res); }
public CanCompute <Int32> GetLength() { if ((object)ILLength == null) { if (Length == -1) { LocalBuilder temp = DeclareLocal(typeof(Int32)); Output(); Emit(OpCodes.Ldlen); Emit(OpCodes.Stloc_S, temp); ILLength = new CanCompute <Int32>(temp, generator); } else { ILLength = this.NewInt32(Length); } } return(ILLength); }
public FieldArray <T> NewArray <T>(CanCompute <Int32> length) { return(ManagerGX.NewArray <T>(this, length)); }