| using System; | 
| using UnityEditor.MemoryProfiler; | 
| using UnityEngine; | 
|   | 
| namespace MemoryProfilerWindow | 
| { | 
|     class PrimitiveValueReader | 
|     { | 
|         private readonly VirtualMachineInformation _virtualMachineInformation; | 
|         private readonly MemorySection[] _heapSections; | 
|   | 
|         public PrimitiveValueReader(VirtualMachineInformation virtualMachineInformation, MemorySection[] heapSections) | 
|         { | 
|             _virtualMachineInformation = virtualMachineInformation; | 
|             _heapSections = heapSections; | 
|         } | 
|   | 
|         public System.Int32 ReadInt32(BytesAndOffset bo) | 
|         { | 
|             return BitConverter.ToInt32(bo.bytes, bo.offset); | 
|         } | 
|   | 
|         public System.UInt32 ReadUInt32(BytesAndOffset bo) | 
|         { | 
|             return BitConverter.ToUInt32(bo.bytes, bo.offset); | 
|         } | 
|   | 
|         public System.Int64 ReadInt64(BytesAndOffset bo) | 
|         { | 
|             return BitConverter.ToInt64(bo.bytes, bo.offset); | 
|         } | 
|   | 
|         public System.UInt64 ReadUInt64(BytesAndOffset bo) | 
|         { | 
|             return BitConverter.ToUInt64(bo.bytes, bo.offset); | 
|         } | 
|   | 
|         public System.Int16 ReadInt16(BytesAndOffset bo) | 
|         { | 
|             return BitConverter.ToInt16(bo.bytes, bo.offset); | 
|         } | 
|   | 
|         public System.UInt16 ReadUInt16(BytesAndOffset bo) | 
|         { | 
|             return BitConverter.ToUInt16(bo.bytes, bo.offset); | 
|         } | 
|   | 
|         public System.Byte ReadByte(BytesAndOffset bo) | 
|         { | 
|             return bo.bytes[bo.offset]; | 
|         } | 
|   | 
|         public System.SByte ReadSByte(BytesAndOffset bo) | 
|         { | 
|             return (System.SByte)bo.bytes[bo.offset]; | 
|         } | 
|   | 
|         public System.Boolean ReadBool(BytesAndOffset bo) | 
|         { | 
|             return ReadByte(bo) != 0; | 
|         } | 
|   | 
|         public UInt64 ReadPointer(BytesAndOffset bo) | 
|         { | 
|             if (_virtualMachineInformation.pointerSize == 4) | 
|                 return ReadUInt32(bo); | 
|             else | 
|                 return ReadUInt64(bo); | 
|         } | 
|   | 
|         public UInt64 ReadPointer(UInt64 address) | 
|         { | 
|             return ReadPointer(_heapSections.Find(address, _virtualMachineInformation)); | 
|         } | 
|   | 
|         public Char ReadChar(BytesAndOffset bytesAndOffset) | 
|         { | 
|             return System.Text.Encoding.Unicode.GetChars(bytesAndOffset.bytes, bytesAndOffset.offset, 2)[0]; | 
|         } | 
|   | 
|         public System.Single ReadSingle(BytesAndOffset bytesAndOffset) | 
|         { | 
|             return BitConverter.ToSingle(bytesAndOffset.bytes, bytesAndOffset.offset); | 
|         } | 
|   | 
|         public System.Double ReadDouble(BytesAndOffset bytesAndOffset) | 
|         { | 
|             return BitConverter.ToDouble(bytesAndOffset.bytes, bytesAndOffset.offset); | 
|         } | 
|     } | 
| } |