Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ _LoadObjectV2()

unsafe object System.Resources.ResourceReader._LoadObjectV2 ( int pos,
out ResourceTypeCode typeCode )
inlineprivate

Definition at line 738 of file ResourceReader.cs.

739 {
742 switch (typeCode)
743 {
744 case ResourceTypeCode.Null:
745 return null;
746 case ResourceTypeCode.String:
747 return _store.ReadString();
748 case ResourceTypeCode.Boolean:
749 return _store.ReadBoolean();
750 case ResourceTypeCode.Char:
751 return (char)_store.ReadUInt16();
752 case ResourceTypeCode.Byte:
753 return _store.ReadByte();
754 case ResourceTypeCode.SByte:
755 return _store.ReadSByte();
756 case ResourceTypeCode.Int16:
757 return _store.ReadInt16();
758 case ResourceTypeCode.UInt16:
759 return _store.ReadUInt16();
760 case ResourceTypeCode.Int32:
761 return _store.ReadInt32();
762 case ResourceTypeCode.UInt32:
763 return _store.ReadUInt32();
764 case ResourceTypeCode.Int64:
765 return _store.ReadInt64();
766 case ResourceTypeCode.UInt64:
767 return _store.ReadUInt64();
768 case ResourceTypeCode.Single:
769 return _store.ReadSingle();
770 case ResourceTypeCode.Double:
771 return _store.ReadDouble();
772 case ResourceTypeCode.Decimal:
773 return _store.ReadDecimal();
774 case ResourceTypeCode.DateTime:
775 {
776 long dateData = _store.ReadInt64();
777 return DateTime.FromBinary(dateData);
778 }
779 case ResourceTypeCode.TimeSpan:
780 {
781 long ticks = _store.ReadInt64();
782 return new TimeSpan(ticks);
783 }
784 case ResourceTypeCode.ByteArray:
785 {
786 int num2 = _store.ReadInt32();
787 if (num2 < 0)
788 {
789 throw new BadImageFormatException(SR.Format(SR.BadImageFormat_ResourceDataLengthInvalid, num2));
790 }
791 if (_ums == null)
792 {
793 if (num2 > _store.BaseStream.Length)
794 {
795 throw new BadImageFormatException(SR.Format(SR.BadImageFormat_ResourceDataLengthInvalid, num2));
796 }
797 return _store.ReadBytes(num2);
798 }
799 if (num2 > _ums.Length - _ums.Position)
800 {
801 throw new BadImageFormatException(SR.Format(SR.BadImageFormat_ResourceDataLengthInvalid, num2));
802 }
803 byte[] array2 = new byte[num2];
804 int num3 = _ums.Read(array2, 0, num2);
805 return array2;
806 }
807 case ResourceTypeCode.Stream:
808 {
809 int num = _store.ReadInt32();
810 if (num < 0)
811 {
812 throw new BadImageFormatException(SR.Format(SR.BadImageFormat_ResourceDataLengthInvalid, num));
813 }
814 if (_ums == null)
815 {
816 byte[] array = _store.ReadBytes(num);
818 }
819 if (num > _ums.Length - _ums.Position)
820 {
821 throw new BadImageFormatException(SR.Format(SR.BadImageFormat_ResourceDataLengthInvalid, num));
822 }
823 return new UnmanagedMemoryStream(_ums.PositionPointer, num, num, FileAccess.Read);
824 }
825 default:
826 {
827 if (typeCode < ResourceTypeCode.StartOfUserTypes)
828 {
829 throw new BadImageFormatException(SR.BadImageFormat_TypeMismatch);
830 }
831 int typeIndex = (int)(typeCode - 64);
833 }
834 }
835 }
virtual bool ReadBoolean()
virtual double ReadDouble()
virtual byte ReadByte()
virtual string ReadString()
virtual ulong ReadUInt64()
virtual float ReadSingle()
virtual sbyte ReadSByte()
virtual ushort ReadUInt16()
virtual int ReadInt32()
virtual Stream BaseStream
virtual short ReadInt16()
virtual byte[] ReadBytes(int count)
virtual decimal ReadDecimal()
virtual long ReadInt64()
virtual uint ReadUInt32()
override int Read(byte[] buffer, int offset, int count)
object DeserializeObject(int typeIndex)

References System.Resources.ResourceReader._dataSectionOffset, System.Resources.ResourceReader._store, System.Resources.ResourceReader._ums, System.array, System.SR.BadImageFormat_ResourceDataLengthInvalid, System.SR.BadImageFormat_TypeMismatch, System.IO.BinaryReader.BaseStream, System.Resources.ResourceReader.DeserializeObject(), System.SR.Format(), System.DateTime.FromBinary(), System.IO.UnmanagedMemoryStream.Length, System.IO.UnmanagedMemoryStream.Position, System.IO.UnmanagedMemoryStream.PositionPointer, System.IO.UnmanagedMemoryStream.Read(), System.IO.BinaryReader.Read7BitEncodedInt(), System.IO.BinaryReader.ReadBoolean(), System.IO.BinaryReader.ReadByte(), System.IO.BinaryReader.ReadBytes(), System.IO.BinaryReader.ReadDecimal(), System.IO.BinaryReader.ReadDouble(), System.IO.BinaryReader.ReadInt16(), System.IO.BinaryReader.ReadInt32(), System.IO.BinaryReader.ReadInt64(), System.IO.BinaryReader.ReadSByte(), System.IO.BinaryReader.ReadSingle(), System.IO.BinaryReader.ReadString(), System.IO.BinaryReader.ReadUInt16(), System.IO.BinaryReader.ReadUInt32(), System.IO.BinaryReader.ReadUInt64(), and System.Resources.TimeSpan.

Referenced by System.Resources.ResourceReader.LoadObjectV2().