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

◆ Ldc() [6/6]

void System.Xml.Serialization.CodeGenerator.Ldc ( object o)
inlinepackage

Definition at line 808 of file CodeGenerator.cs.

809 {
810 Type type = o.GetType();
811 if (o is Type)
812 {
813 Ldtoken((Type)o);
814 Call(typeof(Type).GetMethod("GetTypeFromHandle", BindingFlags.Static | BindingFlags.Public, new Type[1] { typeof(RuntimeTypeHandle) }));
815 return;
816 }
817 if (type.IsEnum)
818 {
819 Ldc(Convert.ChangeType(o, Enum.GetUnderlyingType(type), null));
820 return;
821 }
822 switch (Type.GetTypeCode(type))
823 {
824 case TypeCode.Boolean:
825 Ldc((bool)o);
826 return;
827 case TypeCode.Char:
828 throw new NotSupportedException(System.SR.XmlInvalidCharSchemaPrimitive);
829 case TypeCode.SByte:
830 case TypeCode.Byte:
831 case TypeCode.Int16:
832 case TypeCode.UInt16:
834 return;
835 case TypeCode.Int32:
836 Ldc((int)o);
837 return;
838 case TypeCode.UInt32:
839 Ldc((int)(uint)o);
840 return;
841 case TypeCode.UInt64:
842 Ldc((long)(ulong)o);
843 return;
844 case TypeCode.Int64:
845 Ldc((long)o);
846 return;
847 case TypeCode.Single:
848 Ldc((float)o);
849 return;
850 case TypeCode.Double:
851 Ldc((double)o);
852 return;
853 case TypeCode.String:
854 Ldstr((string)o);
855 return;
856 case TypeCode.Decimal:
857 {
858 ConstructorInfo constructor2 = typeof(decimal).GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new Type[5]
859 {
860 typeof(int),
861 typeof(int),
862 typeof(int),
863 typeof(bool),
864 typeof(byte)
865 });
866 int[] bits = decimal.GetBits((decimal)o);
867 Ldc(bits[0]);
868 Ldc(bits[1]);
869 Ldc(bits[2]);
870 Ldc((bits[3] & 0x80000000u) == 2147483648u);
871 Ldc((byte)((bits[3] >> 16) & 0xFF));
873 return;
874 }
875 case TypeCode.DateTime:
876 {
877 ConstructorInfo constructor = typeof(DateTime).GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new Type[1] { typeof(long) });
878 Ldc(((DateTime)o).Ticks);
880 return;
881 }
882 }
883 if (type == typeof(TimeSpan))
884 {
885 ConstructorInfo constructor3 = typeof(TimeSpan).GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, new Type[1] { typeof(long) }, null);
886 Ldc(((TimeSpan)o).Ticks);
888 return;
889 }
890 if (type == typeof(DateTimeOffset))
891 {
892 ConstructorInfo constructor4 = typeof(DateTimeOffset).GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, new Type[2]
893 {
894 typeof(long),
895 typeof(TimeSpan)
896 }, null);
897 Ldc(((DateTimeOffset)o).Ticks);
898 Ldc(((DateTimeOffset)o).Offset);
900 return;
901 }
902 throw new NotSupportedException(System.SR.Format(System.SR.UnknownConstantType, type.AssemblyQualifiedName));
903 }
static CultureInfo InvariantCulture
static string UnknownConstantType
Definition SR.cs:294
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string XmlInvalidCharSchemaPrimitive
Definition SR.cs:2136
Definition SR.cs:7
void New(ConstructorInfo constructorInfo)

References System.Reflection.Emit.Call, System.Convert.ChangeType(), System.Xml.Dictionary, System.SR.Format(), System.Type.GetTypeCode(), System.Enum.GetUnderlyingType(), System.Globalization.CultureInfo.InvariantCulture, System.Xml.Serialization.CodeGenerator.Ldc(), System.Reflection.Emit.Ldstr, System.Reflection.Emit.Ldtoken, System.Xml.Serialization.CodeGenerator.New(), System.Convert.ToInt32(), System.type, System.SR.UnknownConstantType, and System.SR.XmlInvalidCharSchemaPrimitive.

Referenced by System.Xml.Serialization.CodeGenerator.Cne(), System.Xml.Serialization.CodeGenerator.EndFor(), System.Xml.Serialization.XmlSerializationILGen.GenerateGetSerializer(), System.Xml.Serialization.XmlSerializationReaderILGen.GenerateLiteralMembersElement(), System.Xml.Serialization.XmlSerializationWriterILGen.GenerateMembersElement(), System.Xml.Serialization.XmlSerializationILGen.GenerateSupportedTypes(), System.Xml.Serialization.XmlSerializationILGen.GenerateTypedSerializer(), System.Xml.Serialization.ReflectionAwareILGen.ILGenForCreateInstance(), System.Xml.Serialization.ReflectionAwareILGen.ILGenForEnumMember(), System.Xml.Serialization.XmlSerializationReaderILGen.InitializeValueTypes(), System.Xml.Serialization.CodeGenerator.Ldc(), System.Xml.Serialization.CodeGenerator.Load(), System.Xml.Serialization.CodeGenerator.WhileBegin(), System.Xml.Serialization.XmlSerializationWriterILGen.WriteArray(), System.Xml.Serialization.ReflectionAwareILGen.WriteArrayTypeCompare(), System.Xml.Serialization.XmlSerializationReaderILGen.WriteAttributes(), System.Xml.Serialization.XmlSerializationWriterILGen.WriteCheckDefault(), System.Xml.Serialization.XmlSerializationWriterILGen.WriteDerivedTypes(), System.Xml.Serialization.XmlSerializationReaderILGen.WriteDerivedTypes(), System.Xml.Serialization.XmlSerializationWriterILGen.WriteElement(), System.Xml.Serialization.XmlSerializationWriterILGen.WriteElementCall(), System.Xml.Serialization.XmlSerializationWriterILGen.WriteElements(), System.Xml.Serialization.XmlSerializationReaderILGen.WriteEnumMethod(), System.Xml.Serialization.XmlSerializationWriterILGen.WriteEnumMethod(), System.Xml.Serialization.XmlSerializationReaderILGen.WriteHashtable(), System.Xml.Serialization.XmlSerializationReaderILGen.WriteLiteralStructMethod(), System.Xml.Serialization.XmlSerializationWriterILGen.WriteMember(), System.Xml.Serialization.XmlSerializationReaderILGen.WriteMemberBegin(), System.Xml.Serialization.XmlSerializationReaderILGen.WriteMemberElements(), System.Xml.Serialization.XmlSerializationReaderILGen.WriteMemberElementsIf(), System.Xml.Serialization.XmlSerializationReaderILGen.WriteMemberEnd(), System.Xml.Serialization.XmlSerializationReaderILGen.WriteMemberText(), System.Xml.Serialization.XmlSerializationWriterILGen.WritePrimitive(), System.Xml.Serialization.XmlSerializationReaderILGen.WritePrimitive(), System.Xml.Serialization.XmlSerializationReaderILGen.WriteQNameEqual(), System.Xml.Serialization.XmlSerializationReaderILGen.WriteSourceBegin(), System.Xml.Serialization.XmlSerializationWriterILGen.WriteStructMethod(), System.Xml.Serialization.XmlSerializationWriterILGen.WriteTag(), System.Xml.Serialization.XmlSerializationReaderILGen.WriteText(), System.Xml.Serialization.ReflectionAwareILGen.WriteTypeCompare(), and System.Xml.Serialization.XmlSerializationReaderILGen.WriteXmlNodeEqual().