Mono.Debugger.Frontend.ObjectFormatter.FormatObject C# (CSharp) Method

FormatObject() protected method

protected FormatObject ( Thread target, TargetObject obj ) : void
target Thread
obj Mono.Debugger.Languages.TargetObject
return void
        protected void FormatObject(Thread target, TargetObject obj)
        {
            switch (obj.Kind) {
            case TargetObjectKind.Array:
                FormatArray (target, (TargetArrayObject) obj);
                break;

            case TargetObjectKind.Pointer:
                TargetPointerObject pobj = (TargetPointerObject) obj;
                if (!pobj.Type.IsTypesafe) {
                    FormatObjectRecursed (target, pobj, true);
                    break;
                }

                try {
                    TargetObject deref = pobj.GetDereferencedObject (target);
                    Append ("&({0}) ", deref.TypeName);
                    FormatObjectRecursed (target, deref, true);
                } catch (Exception ex) {
                    FormatObjectRecursed (target, pobj, true);
                }
                break;

            case TargetObjectKind.Object:
                TargetObjectObject oobj = (TargetObjectObject) obj;
                try {
                    TargetObject deref = oobj.GetDereferencedObject (target);
                    Append ("&({0}) ", deref.TypeName);
                    FormatObjectRecursed (target, deref, false);
                } catch {
                    FormatObjectRecursed (target, oobj, true);
                }
                break;

            case TargetObjectKind.Class:
            case TargetObjectKind.Struct:
                FormatStructObject (target, (TargetClassObject) obj);
                break;

            case TargetObjectKind.Fundamental: {
                object value = ((TargetFundamentalObject) obj).GetObject (target);
                Format (target, value);
                break;
            }

            case TargetObjectKind.Enum:
                FormatEnum (target, (TargetEnumObject) obj);
                break;

            case TargetObjectKind.GenericInstance:
                FormatStructObject (target, (TargetClassObject) obj);
                break;

            case TargetObjectKind.Nullable:
                FormatNullable (target, (TargetNullableObject) obj);
                break;

            default:
                PrintObject (target, obj);
                break;
            }
        }