|
|
@ -18,14 +18,18 @@ namespace Debugger |
|
|
|
{ |
|
|
|
{ |
|
|
|
public class ArrayValue: Value |
|
|
|
public class ArrayValue: Value |
|
|
|
{ |
|
|
|
{ |
|
|
|
ICorDebugArrayValue corArrayValue; |
|
|
|
|
|
|
|
uint[] dimensions; |
|
|
|
uint[] dimensions; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
uint lenght; |
|
|
|
uint lenght; |
|
|
|
CorElementType corElementType; |
|
|
|
CorElementType corElementType; |
|
|
|
readonly uint rank; |
|
|
|
readonly uint rank; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected ICorDebugArrayValue CorArrayValue { |
|
|
|
|
|
|
|
get { |
|
|
|
|
|
|
|
return this.CorValue.CastTo<ICorDebugArrayValue>(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public uint Lenght { |
|
|
|
public uint Lenght { |
|
|
|
get { |
|
|
|
get { |
|
|
|
return lenght; |
|
|
|
return lenght; |
|
|
@ -57,15 +61,14 @@ namespace Debugger |
|
|
|
|
|
|
|
|
|
|
|
internal unsafe ArrayValue(NDebugger debugger, ICorDebugValue corValue):base(debugger, corValue) |
|
|
|
internal unsafe ArrayValue(NDebugger debugger, ICorDebugValue corValue):base(debugger, corValue) |
|
|
|
{ |
|
|
|
{ |
|
|
|
corArrayValue = this.CorValue.CastTo<ICorDebugArrayValue>(); |
|
|
|
corElementType = (CorElementType)CorArrayValue.ElementType; |
|
|
|
corElementType = (CorElementType)corArrayValue.ElementType; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rank = corArrayValue.Rank; |
|
|
|
rank = CorArrayValue.Rank; |
|
|
|
lenght = corArrayValue.Count; |
|
|
|
lenght = CorArrayValue.Count; |
|
|
|
|
|
|
|
|
|
|
|
dimensions = new uint[rank]; |
|
|
|
dimensions = new uint[rank]; |
|
|
|
fixed (void* pDimensions = dimensions) |
|
|
|
fixed (void* pDimensions = dimensions) |
|
|
|
corArrayValue.GetDimensions(rank, new IntPtr(pDimensions)); |
|
|
|
CorArrayValue.GetDimensions(rank, new IntPtr(pDimensions)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -116,7 +119,7 @@ namespace Debugger |
|
|
|
ICorDebugValue element; |
|
|
|
ICorDebugValue element; |
|
|
|
unsafe { |
|
|
|
unsafe { |
|
|
|
fixed (void* pIndices = indices) { |
|
|
|
fixed (void* pIndices = indices) { |
|
|
|
element = updatedVal.corArrayValue.GetElement(rank, new IntPtr(pIndices)); |
|
|
|
element = updatedVal.CorArrayValue.GetElement(rank, new IntPtr(pIndices)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return Value.CreateValue(debugger, element); |
|
|
|
return Value.CreateValue(debugger, element); |
|
|
|