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

◆ WriteText()

void System.Xml.Serialization.XmlSerializationReaderILGen.WriteText ( Member member)
inlineprivate

Definition at line 1920 of file XmlSerializationReaderILGen.cs.

1921 {
1922 TextAccessor text = member.Mapping.Text;
1923 if (text.Mapping is SpecialMapping)
1924 {
1925 SpecialMapping specialMapping = (SpecialMapping)text.Mapping;
1926 WriteSourceBeginTyped(member.ArraySource, specialMapping.TypeDesc);
1927 TypeKind kind = specialMapping.TypeDesc.Kind;
1928 if (kind == TypeKind.Node)
1929 {
1930 MethodInfo method = typeof(XmlSerializationReader).GetMethod("get_Reader", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
1931 MethodInfo method2 = typeof(XmlReader).GetMethod("ReadContentAsString", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
1932 MethodInfo method3 = typeof(XmlSerializationReader).GetMethod("get_Document", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
1933 MethodInfo method4 = typeof(XmlDocument).GetMethod("CreateTextNode", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new Type[1] { typeof(string) });
1934 ilg.Ldarg(0);
1935 ilg.Call(method3);
1936 ilg.Ldarg(0);
1937 ilg.Call(method);
1938 ilg.Call(method2);
1939 ilg.Call(method4);
1940 WriteSourceEnd(member.ArraySource, specialMapping.TypeDesc.Type);
1941 return;
1942 }
1944 }
1945 if (member.IsArrayLike)
1946 {
1947 WriteSourceBegin(member.ArraySource);
1948 if (text.Mapping.TypeDesc.CollapseWhitespace)
1949 {
1950 ilg.Ldarg(0);
1951 }
1952 MethodInfo method5 = typeof(XmlSerializationReader).GetMethod("get_Reader", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
1953 MethodInfo method6 = typeof(XmlReader).GetMethod("ReadContentAsString", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
1954 ilg.Ldarg(0);
1955 ilg.Call(method5);
1956 ilg.Call(method6);
1957 if (text.Mapping.TypeDesc.CollapseWhitespace)
1958 {
1959 MethodInfo method7 = typeof(XmlSerializationReader).GetMethod("CollapseWhitespace", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new Type[1] { typeof(string) });
1960 ilg.Call(method7);
1961 }
1962 }
1963 else if (text.Mapping.TypeDesc == base.StringTypeDesc || text.Mapping.TypeDesc.FormatterName == "String")
1964 {
1965 LocalBuilder local = ilg.GetLocal("tmp");
1966 MethodInfo method8 = typeof(XmlSerializationReader).GetMethod("ReadString", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, new Type[2]
1967 {
1968 typeof(string),
1969 typeof(bool)
1970 });
1971 ilg.Ldarg(0);
1972 ilg.Ldloc(local);
1973 ilg.Ldc(text.Mapping.TypeDesc.CollapseWhitespace);
1974 ilg.Call(method8);
1975 ilg.Stloc(local);
1976 WriteSourceBegin(member.ArraySource);
1977 ilg.Ldloc(local);
1978 }
1979 else
1980 {
1981 WriteSourceBegin(member.ArraySource);
1982 WritePrimitive(text.Mapping, "Reader.ReadString()");
1983 }
1984 WriteSourceEnd(member.ArraySource, text.Mapping.TypeDesc.Type);
1985 }
static string XmlInternalError
Definition SR.cs:1812
Definition SR.cs:7
void Call(MethodInfo methodInfo)
void Stloc(Type type, string name)
LocalBuilder GetLocal(string name)
void Ldloc(LocalBuilder localBuilder)

References System.Xml.Serialization.XmlSerializationReaderILGen.Member.ArraySource, System.Xml.Serialization.CodeGenerator.Call(), System.Xml.Dictionary, System.Type.EmptyTypes, System.Xml.Serialization.CodeGenerator.GetLocal(), System.Xml.Serialization.XmlSerializationILGen.ilg, System.Xml.Serialization.XmlSerializationReaderILGen.Member.IsArrayLike, System.Xml.Serialization.CodeGenerator.Ldarg(), System.Xml.Serialization.CodeGenerator.Ldc(), System.Xml.Serialization.CodeGenerator.Ldloc(), System.Xml.Serialization.XmlSerializationReaderILGen.Member.Mapping, System.Xml.Serialization.CodeGenerator.Stloc(), System.text, System.Xml.Serialization.AccessorMapping.Text, System.Xml.Serialization.XmlSerializationReaderILGen.WritePrimitive(), System.Xml.Serialization.XmlSerializationReaderILGen.WriteSourceBegin(), System.Xml.Serialization.XmlSerializationReaderILGen.WriteSourceBeginTyped(), System.Xml.Serialization.XmlSerializationReaderILGen.WriteSourceEnd(), and System.SR.XmlInternalError.

Referenced by System.Xml.Serialization.XmlSerializationReaderILGen.WriteMemberText().