protected void FormatObjectRecursed(Thread target, TargetObject obj, bool recursed)
{
try {
if (DisplayFormat == DisplayFormat.Address) {
if (obj.HasAddress)
Append (obj.GetAddress (target).ToString ());
else
Append ("<cannot get address>");
return;
} else if (obj.HasAddress && obj.GetAddress (target).IsNull) {
Append ("null");
return;
} else if (!recursed) {
FormatObject (target, obj);
return;
}
switch (obj.Kind) {
case TargetObjectKind.Enum:
FormatObject (target, obj);
break;
case TargetObjectKind.Fundamental:
TargetFundamentalObject fobj = (TargetFundamentalObject) obj;
object value = fobj.GetObject (target);
Format (target, value);
break;
case TargetObjectKind.Nullable:
FormatNullable (target, (TargetNullableObject) obj);
break;
default:
PrintObject (target, obj);
break;
}
} catch {
Append ("<cannot display object>");
}
}