protected internal RuntimeValue_Indirect(Engine eng, WireProtocol.Commands.Debugging_Value[] array, int pos) : base(eng, array[pos]) { if (++pos < array.Length) { m_value = Convert(eng, array, pos); } }
public RuntimeValue Assign(RuntimeValue val) { RuntimeValue retval = null; if (IsReflection || (val != null && val.IsReflection)) { byte[] data = new byte[8]; uint dt = (uint)RuntimeDataType.DATATYPE_OBJECT; if (val != null) { dt = val.m_handle.m_dt; Array.Copy(val.m_handle.m_builtinValue, data, data.Length); } if (SetBlock(dt, data)) { retval = this; } } else if (IsPrimitive) { if (val == null || val.IsPrimitive == false) { throw new InvalidCastException("The two runtime values are incompatible"); } Value = val.Value; retval = this; } else { if (val != null && val.IsPrimitive == true) { throw new InvalidCastException("The two runtime values are incompatible"); } retval = Assign(val != null ? val.ReferenceIdDirect : 0); } return(retval); }