コード例 #1
0
        private DEBUG_PROPERTY_INFO[] CreateMultiDimArrayPropertyInfos(enum_DEBUGPROP_INFO_FLAGS dwFields, ArrayMirror array)
        {
            var arrayValues = new DEBUG_PROPERTY_INFO[array.Length];

            var dimIndex      = new int[array.Rank];
            var dimLowerBound = new int[array.Rank];
            var dimUpperBound = new int[array.Rank];

            for (int dim = 0; dim < array.Rank; dim++)
            {
                dimIndex[dim]      = array.GetLowerBound(dim);
                dimLowerBound[dim] = array.GetLowerBound(dim);
                dimUpperBound[dim] = array.GetLowerBound(dim) + array.GetLength(dim) - 1;
            }

            for (int i = 0; i < array.Length; i++)
            {
                var valueAtIndex = array.GetValues(i, 1).First();
                arrayValues[i] = new MonoProperty(_stackFrame, _currentMirror, array.Type.GetElementType(), valueAtIndex, string.Join(",", dimIndex)).GetDebugPropertyInfo(dwFields);

                for (int dim = array.Rank - 1; dim >= 0; dim--)
                {
                    if (dimIndex[dim] < dimUpperBound[dim])
                    {
                        dimIndex[dim]++;
                        break;
                    }
                    else
                    {
                        dimIndex[dim] = dimLowerBound[dim];
                    }
                }
            }

            return(arrayValues);
        }
コード例 #2
0
 public ArrayElementValueLocation(DmdType type, ArrayMirror arrayMirror, uint index)
 {
     Type             = type ?? throw new ArgumentNullException(nameof(type));
     this.arrayMirror = arrayMirror ?? throw new ArgumentNullException(nameof(arrayMirror));
     this.index       = index;
 }
コード例 #3
0
ファイル: ArrayAdaptor.cs プロジェクト: dten/debugger-libs
 public ArrayAdaptor(ArrayMirror array)
 {
     this.array = array;
 }