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

◆ ValueAsObject()

object System.Xml.XmlSqlBinaryReader.ValueAsObject ( BinXmlToken token,
bool returnInternalTypes )
inlineprivate

Definition at line 3740 of file XmlSqlBinaryReader.cs.

3741 {
3743 switch (token)
3744 {
3745 case BinXmlToken.SQL_NCHAR:
3746 case BinXmlToken.SQL_NVARCHAR:
3747 case BinXmlToken.SQL_NTEXT:
3748 return GetString(_tokDataPos, _tokLen);
3749 case BinXmlToken.XSD_BOOLEAN:
3750 return _data[_tokDataPos] != 0;
3751 case BinXmlToken.SQL_BIT:
3752 return (int)_data[_tokDataPos];
3753 case BinXmlToken.SQL_TINYINT:
3754 return _data[_tokDataPos];
3755 case BinXmlToken.SQL_SMALLINT:
3756 return GetInt16(_tokDataPos);
3757 case BinXmlToken.SQL_INT:
3758 return GetInt32(_tokDataPos);
3759 case BinXmlToken.SQL_BIGINT:
3760 return GetInt64(_tokDataPos);
3761 case BinXmlToken.XSD_BYTE:
3762 {
3763 sbyte b = (sbyte)_data[_tokDataPos];
3764 return b;
3765 }
3766 case BinXmlToken.XSD_UNSIGNEDSHORT:
3767 return GetUInt16(_tokDataPos);
3768 case BinXmlToken.XSD_UNSIGNEDINT:
3769 return GetUInt32(_tokDataPos);
3770 case BinXmlToken.XSD_UNSIGNEDLONG:
3771 return GetUInt64(_tokDataPos);
3772 case BinXmlToken.SQL_REAL:
3773 return GetSingle(_tokDataPos);
3774 case BinXmlToken.SQL_FLOAT:
3775 return GetDouble(_tokDataPos);
3776 case BinXmlToken.SQL_UUID:
3777 {
3779 int int2 = GetInt32(tokDataPos2);
3780 short int3 = GetInt16(tokDataPos2 + 4);
3781 short int4 = GetInt16(tokDataPos2 + 6);
3782 return new Guid(int2, int3, int4, _data[tokDataPos2 + 8], _data[tokDataPos2 + 9], _data[tokDataPos2 + 10], _data[tokDataPos2 + 11], _data[tokDataPos2 + 12], _data[tokDataPos2 + 13], _data[tokDataPos2 + 14], _data[tokDataPos2 + 15]).ToString();
3783 }
3784 case BinXmlToken.SQL_SMALLMONEY:
3785 {
3786 BinXmlSqlMoney binXmlSqlMoney2 = new BinXmlSqlMoney(GetInt32(_tokDataPos));
3788 {
3789 return binXmlSqlMoney2;
3790 }
3791 return binXmlSqlMoney2.ToDecimal();
3792 }
3793 case BinXmlToken.SQL_MONEY:
3794 {
3795 BinXmlSqlMoney binXmlSqlMoney = new BinXmlSqlMoney(GetInt64(_tokDataPos));
3797 {
3798 return binXmlSqlMoney;
3799 }
3800 return binXmlSqlMoney.ToDecimal();
3801 }
3802 case BinXmlToken.SQL_DECIMAL:
3803 case BinXmlToken.SQL_NUMERIC:
3804 case BinXmlToken.XSD_DECIMAL:
3805 {
3806 BinXmlSqlDecimal binXmlSqlDecimal = new BinXmlSqlDecimal(_data, _tokDataPos, token == BinXmlToken.XSD_DECIMAL);
3808 {
3809 return binXmlSqlDecimal;
3810 }
3811 return binXmlSqlDecimal.ToDecimal();
3812 }
3813 case BinXmlToken.SQL_CHAR:
3814 case BinXmlToken.SQL_VARCHAR:
3815 case BinXmlToken.SQL_TEXT:
3816 {
3817 int tokDataPos = _tokDataPos;
3818 int @int = GetInt32(tokDataPos);
3819 Encoding encoding = Encoding.GetEncoding(@int);
3820 return encoding.GetString(_data, tokDataPos + 4, _tokLen - 4);
3821 }
3822 case BinXmlToken.SQL_BINARY:
3823 case BinXmlToken.SQL_VARBINARY:
3824 case BinXmlToken.SQL_IMAGE:
3825 case BinXmlToken.SQL_UDT:
3826 case BinXmlToken.XSD_BINHEX:
3827 case BinXmlToken.XSD_BASE64:
3828 {
3829 byte[] array = new byte[_tokLen];
3830 Array.Copy(_data, _tokDataPos, array, 0, _tokLen);
3831 return array;
3832 }
3833 case BinXmlToken.SQL_DATETIME:
3834 case BinXmlToken.SQL_SMALLDATETIME:
3835 case BinXmlToken.XSD_KATMAI_TIME:
3836 case BinXmlToken.XSD_KATMAI_DATETIME:
3837 case BinXmlToken.XSD_KATMAI_DATE:
3838 case BinXmlToken.XSD_TIME:
3839 case BinXmlToken.XSD_DATETIME:
3840 case BinXmlToken.XSD_DATE:
3841 return ValueAsDateTime();
3842 case BinXmlToken.XSD_KATMAI_TIMEOFFSET:
3843 case BinXmlToken.XSD_KATMAI_DATETIMEOFFSET:
3844 case BinXmlToken.XSD_KATMAI_DATEOFFSET:
3845 return ValueAsDateTimeOffset();
3846 case BinXmlToken.XSD_QNAME:
3847 {
3848 int num = ParseMB32(_tokDataPos);
3850 {
3851 throw new XmlException(System.SR.XmlBin_InvalidQNameID, string.Empty);
3852 }
3854 return new XmlQualifiedName(qName.localname, qName.namespaceUri);
3855 }
3856 default:
3858 }
3859 }
static string XmlBin_InvalidQNameID
Definition SR.cs:1364
Definition SR.cs:7
static Encoding GetEncoding(int codepage)
Definition Encoding.cs:593
unsafe string GetString(byte *bytes, int byteCount)
Definition Encoding.cs:973
string GetString(int pos, int cch)
Exception ThrowUnexpectedToken(BinXmlToken token)

References System.Xml.XmlSqlBinaryReader._data, System.Xml.XmlSqlBinaryReader._symbolTables, System.Xml.XmlSqlBinaryReader._tokDataPos, System.Xml.XmlSqlBinaryReader._token, System.Xml.XmlSqlBinaryReader._tokLen, System.array, System.Xml.XmlSqlBinaryReader.CheckValueTokenBounds(), System.Array.Copy(), System.Xml.Dictionary, System.Xml.XmlSqlBinaryReader.GetDouble(), System.Text.Encoding.GetEncoding(), System.Xml.XmlSqlBinaryReader.GetInt16(), System.Xml.XmlSqlBinaryReader.GetInt32(), System.Xml.XmlSqlBinaryReader.GetInt64(), System.Xml.XmlSqlBinaryReader.GetSingle(), System.Text.Encoding.GetString(), System.Xml.XmlSqlBinaryReader.GetString(), System.Xml.XmlSqlBinaryReader.GetUInt16(), System.Xml.XmlSqlBinaryReader.GetUInt32(), System.Xml.XmlSqlBinaryReader.GetUInt64(), System.Xml.Guid, System.Xml.XmlSqlBinaryReader.ParseMB32(), System.Xml.XmlSqlBinaryReader.SymbolTables.qnameCount, System.Xml.XmlSqlBinaryReader.SymbolTables.qnametable, System.Xml.XmlSqlBinaryReader.ThrowUnexpectedToken(), System.Xml.XmlSqlBinaryReader.ValueAsDateTime(), System.Xml.XmlSqlBinaryReader.ValueAsDateTimeOffset(), System.SR.XmlBin_InvalidQNameID, and System.Xml.XmlException.

Referenced by System.Xml.XmlSqlBinaryReader.ReadContentAs(), and System.Xml.XmlSqlBinaryReader.ReadContentAsObject().