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

◆ WriteArray()

void System.Xml.Serialization.XmlSerializationReaderILGen.WriteArray ( string source,
string arrayName,
ArrayMapping arrayMapping,
bool readOnly,
bool isNullable,
int fixupIndex,
int elementIndex )
inlineprivate

Definition at line 2378 of file XmlSerializationReaderILGen.cs.

2379 {
2380 MethodInfo method = typeof(XmlSerializationReader).GetMethod("ReadNull", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
2381 ilg.Ldarg(0);
2382 ilg.Call(method);
2383 ilg.IfNot();
2384 MemberMapping memberMapping = new MemberMapping();
2388 if (source.StartsWith("o.@", StringComparison.Ordinal))
2389 {
2391 }
2393 member.IsNullable = false;
2394 Member[] members = new Member[1] { member };
2398 if (readOnly)
2399 {
2400 ilg.Load(ilg.GetVariable(member.ArrayName));
2401 ilg.Load(null);
2402 ilg.Beq(label);
2403 }
2404 MethodInfo method2 = typeof(XmlSerializationReader).GetMethod("get_Reader", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
2405 MethodInfo method3 = typeof(XmlReader).GetMethod("get_IsEmptyElement", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
2406 ilg.Ldarg(0);
2407 ilg.Call(method2);
2408 ilg.Call(method3);
2409 if (readOnly)
2410 {
2411 ilg.Br_S(label2);
2413 ilg.Ldc(boolVar: true);
2415 }
2416 ilg.If();
2417 MethodInfo method4 = typeof(XmlReader).GetMethod("Skip", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
2418 ilg.Ldarg(0);
2419 ilg.Call(method2);
2420 ilg.Call(method4);
2421 ilg.Else();
2422 MethodInfo method5 = typeof(XmlReader).GetMethod("ReadStartElement", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
2423 ilg.Ldarg(0);
2424 ilg.Call(method2);
2425 ilg.Call(method5);
2427 string text = "UnknownNode(null, " + ExpectedElements(members) + ");";
2428 WriteMemberElements(members, text, text, null, null);
2429 MethodInfo method6 = typeof(XmlReader).GetMethod("MoveToContent", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
2430 ilg.Ldarg(0);
2431 ilg.Call(method2);
2432 ilg.Call(method6);
2433 ilg.Pop();
2435 MethodInfo method7 = typeof(XmlSerializationReader).GetMethod("ReadEndElement", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.EmptyTypes);
2436 ilg.Ldarg(0);
2437 ilg.Call(method7);
2438 ilg.EndIf();
2440 if (isNullable)
2441 {
2442 ilg.Else();
2443 member.IsNullable = true;
2446 }
2447 ilg.EndIf();
2448 }
void Call(MethodInfo methodInfo)
void WriteMemberElements(Member[] members, string elementElseString, string elseString, Member anyElement, Member anyText)

References System.Xml.Serialization.XmlSerializationReaderILGen.Member.ArrayName, System.Xml.Dictionary, System.elementIndex, System.Type.EmptyTypes, System.source, and System.text.

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