예제 #1
0
        public override string GetRowValue(long row)
        {
            var obj    = m_Table.GetObjectData(row).displayObject;
            var result = m_Table.Renderer.Render(obj);

            return(result);
        }
예제 #2
0
        public override int GetRowValue(long row)
        {
            var obj = m_Table.GetObjectData(row).displayObject;

            switch (obj.dataType)
            {
            case ObjectDataType.Array:
            case ObjectDataType.BoxedValue:
            case ObjectDataType.Object:
            {
                var ptr = obj.hostManagedObjectPtr;
                if (ptr > 0)
                {
                    ManagedObjectInfo moi;
                    if (m_Table.CrawledData.ManagedObjectByAddress.TryGetValue(ptr, out moi))
                    {
                        return(moi.RefCount);
                    }
                }
                break;
            }

            case ObjectDataType.NativeObject:
                return(m_Table.Snapshot.nativeObjects.refcount[obj.nativeObjectIndex]);
            }
            return(-1);
        }
예제 #3
0
        public override string GetRowValue(long row)
        {
            var obj    = m_Table.GetObjectData(row).displayObject;
            var result = m_Table.Formatter.Format(obj, DefaultDataFormatter.Instance);

            return(result);
        }
예제 #4
0
        public override long GetRowValue(long row)
        {
            if (m_Table.GetObjectStatic(row))
            {
                return(0);
            }
            var obj = m_Table.GetObjectData(row).displayObject;

            switch (obj.dataType)
            {
            case ObjectDataType.Object:
            case ObjectDataType.BoxedValue:
            case ObjectDataType.Array:
            case ObjectDataType.Value:
                return(m_Table.Snapshot.typeDescriptions.size[obj.managedTypeIndex]);

            case ObjectDataType.ReferenceArray:
            case ObjectDataType.ReferenceObject:
                return(m_Table.Snapshot.virtualMachineInformation.pointerSize);

            case ObjectDataType.Type:
                return(m_Table.Snapshot.typeDescriptions.size[obj.managedTypeIndex]);

            case ObjectDataType.NativeObject:
                return((long)m_Table.Snapshot.nativeObjects.size[obj.nativeObjectIndex]);

            case ObjectDataType.NativeObjectReference:
                return(0);

            default:
                return(0);
            }
        }
예제 #5
0
        public override int GetRowValue(long row)
        {
            var obj = m_Table.GetObjectData(row).displayObject;

            switch (obj.dataType)
            {
            case ObjectDataType.ReferenceArray:
            {
                obj = ObjectData.FromManagedPointer(m_Table.Snapshot, obj.GetReferencePointer());
                if (obj.hostManagedObjectPtr != 0)
                {
                    goto case ObjectDataType.Array;
                }
                return(-1);
            }

            case ObjectDataType.Array:
            {
                var arrayInfo = ArrayTools.GetArrayInfo(m_Table.Snapshot, obj.managedObjectData, obj.managedTypeIndex);
                return(arrayInfo.length);
            }

            default:
                return(-1);
            }
        }
예제 #6
0
        public override int GetRowValue(long row)
        {
            var obj = m_Table.GetObjectData(row).displayObject;
            var i   = obj.GetUnifiedObjectIndex(m_Table.Snapshot);

            return(i);
        }
예제 #7
0
        public override string GetRowValue(long row)
        {
            var obj    = m_Table.GetObjectData(row).displayObject;
            var result = m_Table.Formatter.FormatUniqueString(obj);

            return(result);
        }
예제 #8
0
        public override long GetRowValue(long row)
        {
            var obj = m_Table.GetObjectData(row).displayObject;

            switch (obj.dataType)
            {
            case ObjectDataType.Value:
                if (m_Table.GetObjectStatic(row))
                {
                    return(m_Table.Snapshot.typeDescriptions.size[obj.managedTypeIndex]);
                }
                return(0);

            case ObjectDataType.ReferenceArray:
            case ObjectDataType.ReferenceObject:
            {
                var ptr = obj.GetReferencePointer();
                if (ptr == 0)
                {
                    return(0);
                }

                return(obj.GetManagedObject(m_Table.Snapshot).Size);
            }

            case ObjectDataType.NativeObject:
                return(0);

            case ObjectDataType.NativeObjectReference:
                return((long)m_Table.Snapshot.nativeObjects.size[obj.nativeObjectIndex]);

            default:
                return(0);
            }
        }
예제 #9
0
        public override string GetRowValue(long row)
        {
            var obj = m_table.GetObjectData(row).displayObject;

            switch (obj.dataType)
            {
            case ObjectDataType.NativeObject:
            case ObjectDataType.NativeObjectReference:
                return(m_table.Snapshot.nativeObjects.objectName[obj.nativeObjectIndex]);
            }

            throw new System.NotSupportedException("ObjectListNativeObjectNameColumn is only allowed to be used for purely native lists");
        }
예제 #10
0
        public override string GetRowValue(long row)
        {
            var d = m_Table.GetObjectData(row).displayObject;

            switch (d.dataType)
            {
            case ObjectDataType.Array:
            case ObjectDataType.BoxedValue:
            case ObjectDataType.Object:
            case ObjectDataType.ReferenceArray:
            case ObjectDataType.Value:
                if (d.managedTypeIndex < 0)
                {
                    return("<unknown type>");
                }
                return(m_Table.Snapshot.typeDescriptions.typeDescriptionName[d.managedTypeIndex]);

            case ObjectDataType.ReferenceObject:
            {
                var ptr = d.GetReferencePointer();
                if (ptr != 0)
                {
                    var obj = ObjectData.FromManagedPointer(m_Table.Snapshot, ptr);
                    if (obj.IsValid && obj.managedTypeIndex != d.managedTypeIndex)
                    {
                        return("(" + m_Table.Snapshot.typeDescriptions.typeDescriptionName[obj.managedTypeIndex] + ") "
                               + m_Table.Snapshot.typeDescriptions.typeDescriptionName[d.managedTypeIndex]);
                    }
                }
                return(m_Table.Snapshot.typeDescriptions.typeDescriptionName[d.managedTypeIndex]);
            }

            case ObjectDataType.Global:
                return("Global");

            case ObjectDataType.Type:
                return("Type");

            case ObjectDataType.NativeObject:
            {
                int iType = m_Table.Snapshot.nativeObjects.nativeTypeArrayIndex[d.nativeObjectIndex];
                return(m_Table.Snapshot.nativeTypes.typeName[iType]);
            }

            case ObjectDataType.Unknown:
            default:
                return("<unknown>");
            }
        }
예제 #11
0
        public override int GetRowValue(long row)
        {
            var obj = m_Table.GetObjectData(row).displayObject;

            switch (obj.dataType)
            {
            case ObjectDataType.NativeObject:
            case ObjectDataType.NativeObjectReference:
                return(m_Table.Snapshot.nativeObjects.instanceId[obj.nativeObjectIndex]);

            case ObjectDataType.Object:
            case ObjectDataType.ReferenceObject:
                throw new System.NotSupportedException("ObjectListNativeInstanceIdColumn is only to be used in native-objects-only-lists. Use ObjectListNativeInstanceIdLinkColumn instead");
            }
            return(CachedSnapshot.NativeObjectEntriesCache.InstanceID_None);
        }
예제 #12
0
        public override long GetRowValue(long row)
        {
            var obj = m_Table.GetObjectData(row).displayObject;

            switch (obj.dataType)
            {
            case ObjectDataType.Value:
                if (m_Table.GetObjectStatic(row))
                {
                    return(m_Table.Snapshot.typeDescriptions.size[obj.managedTypeIndex]);
                }
                return(0);

            case ObjectDataType.ReferenceArray:
            case ObjectDataType.ReferenceObject:
            {
                var ptr = obj.GetReferencePointer();
                if (ptr == 0)
                {
                    return(0);
                }
                ManagedObjectInfo moi;
                if (m_Table.CrawledData.ManagedObjectByAddress.TryGetValue(ptr, out moi))
                {
                    return(moi.Size);
                }
                else
                {
                    UnityEngine.Debug.LogWarning("Managed object at address '" + obj.hostManagedObjectPtr + "' not found");
                    return(0);
                }
            }

            case ObjectDataType.NativeObject:
                return(0);

            case ObjectDataType.NativeObjectReference:
                return((long)m_Table.Snapshot.nativeObjects.size[obj.nativeObjectIndex]);

            default:
                return(0);
            }
        }
예제 #13
0
        public override Database.LinkRequest GetRowLink(long row)
        {
            var obj = m_Table.GetObjectData(row).displayObject;

            if (obj.isManaged)
            {
                ManagedObjectInfo moi = GetInfo(obj);
                if (moi.IsValid() && moi.NativeObjectIndex >= 0)
                {
                    var instanceId = m_Table.Snapshot.nativeObjects.instanceId[moi.NativeObjectIndex];
                    if (instanceId == CachedSnapshot.NativeObjectEntriesCache.InstanceID_None)
                    {
                        return(null);
                    }
                    return(MakeLink(ObjectAllNativeTable.TableName, instanceId, row));
                }
            }
            // we are linking native objects to themselves currently as that allows us
            // to jump from a native object to the native object's table. (eg: MemoryMap / TreeMap spreadsheets to tables)
            // TODO: Improve column link API so it supports all 3 cases ( native - native , managed - native,  native - managed)
            else if (obj.isNative)
            {
                int index = obj.GetNativeObjectIndex(m_Table.Snapshot);
                if (index < 0)
                {
                    return(null);
                }
                var instanceId = m_Table.Snapshot.nativeObjects.instanceId[index];
                if (instanceId == CachedSnapshot.NativeObjectEntriesCache.InstanceID_None)
                {
                    return(null);
                }
                return(MakeLink(ObjectAllNativeTable.TableName, instanceId, row));
            }
            return(null);
        }
예제 #14
0
        public override string GetRowValue(long row)
        {
            var obj = m_Table.GetObjectData(row).displayObject;

            return(GetObjecType(obj));
        }
예제 #15
0
        public override ulong GetRowValue(long row)
        {
            var obj = m_Table.GetObjectData(row).displayObject;

            return(obj.GetObjectPointer(m_Table.Snapshot, false));
        }