1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
using System;
namespace Mono.Debugger.Languages
{
public abstract class TargetObjectObject : TargetPointerObject
{
public new readonly TargetObjectType Type;
internal TargetObjectObject (TargetObjectType type, TargetLocation location)
: base (type, location)
{
this.Type = type;
}
public TargetClassObject GetClassObject (Thread thread)
{
return (TargetClassObject) thread.ThreadServant.DoTargetAccess (
delegate (TargetMemoryAccess target) {
return GetClassObject (target);
});
}
internal abstract TargetClassObject GetClassObject (TargetMemoryAccess target);
internal override long GetDynamicSize (TargetMemoryAccess target, TargetBlob blob,
TargetLocation location,
out TargetLocation dynamic_location)
{
throw new InvalidOperationException ();
}
internal override TargetObject GetArrayElement (TargetMemoryAccess target, int index)
{
throw new InvalidOperationException ();
}
internal override string Print (TargetMemoryAccess target)
{
if (HasAddress)
return String.Format ("{0} ({1})", Type.Name, GetAddress (target));
else
return String.Format ("{0} ({1})", Type.Name, Location);
}
}
}
|