示例#1
0
 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);
 }
示例#2
0
        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);
        }
示例#3
0
 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);
     });
 }
示例#4
0
        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);
        }
示例#5
0
 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);
 }
示例#6
0
 public FieldArray <T> NewArray <T>(CanCompute <Int32> length)
 {
     return(ManagerGX.NewArray <T>(this, length));
 }