Example #1
0
        private static MutableTuple MakeTuple(Type tupleType, int size, BitArray bitArray)
        {
            MutableTuple tuple = (MutableTuple)Activator.CreateInstance(tupleType);

            tuple._size      = size;
            tuple._valuesSet = bitArray;
            if (size > 0x80)
            {
                while (size > 0x80)
                {
                    size = ((size + 0x80) - 1) / 0x80;
                }
                for (int i = 0; i < size; i++)
                {
                    PropertyInfo property = tupleType.GetProperty("Item" + string.Format(CultureInfo.InvariantCulture, "{0:D3}", new object[] { i }));
                    tuple.SetValueImpl(i, MakeTuple(property.PropertyType, null));
                }
            }
            return(tuple);
        }
Example #2
0
 private void SetNestedValue(int size, int index, object value)
 {
     if (size < 0x80)
     {
         this.SetValueImpl(index, value);
     }
     else
     {
         MutableTuple valueImpl = this;
         int          num       = -1;
         foreach (int num2 in GetAccessPath(size, index))
         {
             if (num != -1)
             {
                 valueImpl = (MutableTuple)valueImpl.GetValueImpl(num);
             }
             num = num2;
         }
         valueImpl.SetValueImpl(num, value);
     }
 }