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

◆ WritePrimitive()

void System.Xml.Serialization.XmlSerializationReaderILGen.WritePrimitive ( TypeMapping mapping,
string source )
inlineprivate

Definition at line 645 of file XmlSerializationReaderILGen.cs.

646 {
647 if (mapping is EnumMapping)
648 {
649 string text = ReferenceMapping(mapping);
650 if (text == null)
651 {
653 }
654 MethodBuilder methodInfo = EnsureMethodBuilder(typeBuilder, text, MethodAttributes.Private | MethodAttributes.HideBySig, mapping.TypeDesc.Type, new Type[1] { typeof(string) });
655 ilg.Ldarg(0);
656 switch (source)
657 {
658 case "Reader.ReadElementString()":
659 case "Reader.ReadString()":
660 {
661 MethodInfo method3 = typeof(XmlSerializationReader).GetMethod("get_Reader", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
662 MethodInfo method4 = typeof(XmlReader).GetMethod((source == "Reader.ReadElementString()") ? "ReadElementContentAsString" : "ReadContentAsString", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
663 ilg.Ldarg(0);
666 break;
667 }
668 case "Reader.Value":
669 {
670 MethodInfo method = typeof(XmlSerializationReader).GetMethod("get_Reader", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
671 MethodInfo method2 = typeof(XmlReader).GetMethod("get_Value", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
672 ilg.Ldarg(0);
673 ilg.Call(method);
675 break;
676 }
677 case "vals[i]":
678 {
679 LocalBuilder local = ilg.GetLocal("vals");
682 break;
683 }
684 case "false":
686 break;
687 default:
688 throw Globals.NotSupported("Unexpected: " + source);
689 }
691 return;
692 }
693 if (mapping.TypeDesc == base.StringTypeDesc)
694 {
695 switch (source)
696 {
697 case "Reader.ReadElementString()":
698 case "Reader.ReadString()":
699 {
700 MethodInfo method7 = typeof(XmlSerializationReader).GetMethod("get_Reader", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
701 MethodInfo method8 = typeof(XmlReader).GetMethod((source == "Reader.ReadElementString()") ? "ReadElementContentAsString" : "ReadContentAsString", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
702 ilg.Ldarg(0);
705 break;
706 }
707 case "Reader.Value":
708 {
709 MethodInfo method5 = typeof(XmlSerializationReader).GetMethod("get_Reader", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
710 MethodInfo method6 = typeof(XmlReader).GetMethod("get_Value", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
711 ilg.Ldarg(0);
714 break;
715 }
716 case "vals[i]":
717 {
721 break;
722 }
723 default:
724 throw Globals.NotSupported("Unexpected: " + source);
725 }
726 return;
727 }
728 if (mapping.TypeDesc.FormatterName == "String")
729 {
730 if (source == "vals[i]")
731 {
732 if (mapping.TypeDesc.CollapseWhitespace)
733 {
734 ilg.Ldarg(0);
735 }
739 if (mapping.TypeDesc.CollapseWhitespace)
740 {
741 MethodInfo method9 = typeof(XmlSerializationReader).GetMethod("CollapseWhitespace", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, new Type[1] { typeof(string) }, null);
743 }
744 return;
745 }
746 MethodInfo method10 = typeof(XmlSerializationReader).GetMethod("get_Reader", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
747 MethodInfo method11 = typeof(XmlReader).GetMethod((source == "Reader.Value") ? "get_Value" : "ReadElementContentAsString", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
748 if (mapping.TypeDesc.CollapseWhitespace)
749 {
750 ilg.Ldarg(0);
751 }
752 ilg.Ldarg(0);
755 if (mapping.TypeDesc.CollapseWhitespace)
756 {
757 MethodInfo method12 = typeof(XmlSerializationReader).GetMethod("CollapseWhitespace", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new Type[1] { typeof(string) });
759 }
760 return;
761 }
762 Type type = ((source == "false") ? typeof(bool) : typeof(string));
764 if (mapping.TypeDesc.HasCustomFormatter)
765 {
767 if ((mapping.TypeDesc.FormatterName == "ByteArrayBase64" && source == "false") || (mapping.TypeDesc.FormatterName == "ByteArrayHex" && source == "false") || mapping.TypeDesc.FormatterName == "XmlQualifiedName")
768 {
770 ilg.Ldarg(0);
771 }
772 method13 = typeof(XmlSerializationReader).GetMethod("To" + mapping.TypeDesc.FormatterName, bindingAttr, new Type[1] { type });
773 }
774 else
775 {
776 method13 = typeof(XmlConvert).GetMethod("To" + mapping.TypeDesc.FormatterName, BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, new Type[1] { type });
777 }
778 switch (source)
779 {
780 case "Reader.ReadElementString()":
781 case "Reader.ReadString()":
782 {
783 MethodInfo method16 = typeof(XmlSerializationReader).GetMethod("get_Reader", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
784 MethodInfo method17 = typeof(XmlReader).GetMethod((source == "Reader.ReadElementString()") ? "ReadElementContentAsString" : "ReadContentAsString", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
785 ilg.Ldarg(0);
788 break;
789 }
790 case "Reader.Value":
791 {
792 MethodInfo method14 = typeof(XmlSerializationReader).GetMethod("get_Reader", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
793 MethodInfo method15 = typeof(XmlReader).GetMethod("get_Value", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
794 ilg.Ldarg(0);
797 break;
798 }
799 case "vals[i]":
800 {
804 break;
805 }
806 default:
808 break;
809 }
811 }
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string XmlMissingMethodEnum
Definition SR.cs:1508
Definition SR.cs:7
void LoadArrayElement(object obj, object arrayIndex)
void Call(MethodInfo methodInfo)
LocalBuilder GetLocal(string name)
MethodBuilder EnsureMethodBuilder(TypeBuilder typeBuilder, string methodName, MethodAttributes attributes, Type returnType, Type[] parameterTypes)

References System.Xml.Serialization.CodeGenerator.Call(), System.Xml.Dictionary, System.Type.EmptyTypes, System.Xml.Serialization.XmlSerializationILGen.EnsureMethodBuilder(), System.SR.Format(), System.Xml.Serialization.CodeGenerator.GetLocal(), System.Xml.Serialization.XmlSerializationILGen.ilg, System.Xml.Serialization.CodeGenerator.Ldarg(), System.Xml.Serialization.CodeGenerator.Ldc(), System.Xml.Serialization.CodeGenerator.LoadArrayElement(), System.Xml.Serialization.Globals.NotSupported(), System.Xml.Serialization.XmlSerializationILGen.ReferenceMapping(), System.source, System.text, System.type, System.Xml.Serialization.XmlSerializationILGen.typeBuilder, and System.SR.XmlMissingMethodEnum.

Referenced by System.Xml.Serialization.XmlSerializationReaderILGen.WriteAttribute(), and System.Xml.Serialization.XmlSerializationReaderILGen.WriteText().