ObjectValue EvaluateArray (int arrayLength, ulong firstItemPointer, ArrayType t, ObjectValueFlags flags, ObjectPath path) { if (firstItemPointer < 1) return ObjectValue.CreateNullObject (ValueSource, path, t.ToCode (), flags | ObjectValueFlags.Array); var elementType = t.ValueType; var elementTypeToken = elementType is PrimitiveType ? (elementType as PrimitiveType).TypeToken : DTokens.INVALID; var ov = ObjectValue.CreateArray (ValueSource, path, t.ToCode (), (int)arrayLength, flags, null); // Strings if (DGdbTools.IsCharType (elementTypeToken)) { var elementsToDisplay = (int)Math.Min (arrayLength, MaximumDisplayCount); byte[] rawArrayContent; Memory.Read (firstItemPointer.ToString (), DGdbTools.SizeOf(elementTypeToken) * elementsToDisplay, out rawArrayContent); var str = DGdbTools.GetStringValue (rawArrayContent, elementTypeToken); ov.DisplayValue = arrayLength.ToString () + "´\"" + str + "\""; /* Return as an atomic value only return ObjectValue.CreatePrimitive (ValueSource, path, t.ToString (), new EvaluationResult (str, arrayLength.ToString () + "´\"" + str + "\""), flags | ObjectValueFlags.Array); */ } return ov; }