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

◆ GenerateLiteralMembersElement()

string System.Xml.Serialization.XmlSerializationReaderCodeGen.GenerateLiteralMembersElement ( XmlMembersMapping xmlMembersMapping)
inlineprivate

Definition at line 493 of file XmlSerializationReaderCodeGen.cs.

494 {
495 ElementAccessor accessor = xmlMembersMapping.Accessor;
496 MemberMapping[] members = ((MembersMapping)accessor.Mapping).Members;
497 bool hasWrapperElement = ((MembersMapping)accessor.Mapping).HasWrapperElement;
498 string text = NextMethodName(accessor.Name);
499 base.Writer.WriteLine();
500 base.Writer.Write("public object[] ");
501 base.Writer.Write(text);
502 base.Writer.WriteLine("() {");
503 base.Writer.Indent++;
504 base.Writer.WriteLine("Reader.MoveToContent();");
505 base.Writer.Write("object[] p = new object[");
506 base.Writer.Write(members.Length.ToString(CultureInfo.InvariantCulture));
507 base.Writer.WriteLine("];");
510 {
512 base.Writer.Indent++;
513 WriteIsStartTag(accessor.Name, (accessor.Form == XmlSchemaForm.Qualified) ? accessor.Namespace : "");
514 }
515 Member anyText = null;
516 Member anyElement = null;
517 Member anyAttribute = null;
521 for (int i = 0; i < members.Length; i++)
522 {
523 MemberMapping memberMapping = members[i];
524 string text2 = $"p[{i}]";
525 string arraySource = text2;
526 if (memberMapping.Xmlns != null)
527 {
528 arraySource = $"(({memberMapping.TypeDesc.CSharpName}){text2})";
529 }
531 Member member = new Member(this, text2, arraySource, "a", i, memberMapping, choiceIdentifierSource);
532 Member member2 = new Member(this, text2, null, "a", i, memberMapping, choiceIdentifierSource);
533 if (!memberMapping.IsSequence)
534 {
535 member.ParamsReadSource = $"paramsRead[{i}]";
536 }
537 if (memberMapping.CheckSpecified == SpecifiedAccessor.ReadWrite)
538 {
539 string text3 = memberMapping.Name + "Specified";
540 for (int j = 0; j < members.Length; j++)
541 {
542 if (members[j].Name == text3)
543 {
545 break;
546 }
547 }
548 }
549 bool flag = false;
550 if (memberMapping.Text != null)
551 {
553 }
554 if (memberMapping.Attribute != null && memberMapping.Attribute.Any)
555 {
557 }
558 if (memberMapping.Attribute != null || memberMapping.Xmlns != null)
559 {
560 list3.Add(member);
561 }
562 else if (memberMapping.Text != null)
563 {
564 list2.Add(member);
565 }
566 if (!memberMapping.IsSequence)
567 {
568 for (int k = 0; k < memberMapping.Elements.Length; k++)
569 {
570 if (memberMapping.Elements[k].Any && memberMapping.Elements[k].Name.Length == 0)
571 {
573 if (memberMapping.Attribute == null && memberMapping.Text == null)
574 {
576 }
577 flag = true;
578 break;
579 }
580 }
581 }
582 if (memberMapping.Attribute != null || memberMapping.Text != null || flag)
583 {
584 list.Add(member2);
585 continue;
586 }
587 if (memberMapping.TypeDesc.IsArrayLike && (memberMapping.Elements.Length != 1 || !(memberMapping.Elements[0].Mapping is ArrayMapping)))
588 {
589 list.Add(member2);
591 continue;
592 }
593 if (memberMapping.TypeDesc.IsArrayLike && !memberMapping.TypeDesc.IsArray)
594 {
596 }
597 list.Add(member);
598 }
599 Member[] array = list.ToArray();
600 Member[] members2 = list2.ToArray();
601 if (array.Length != 0 && array[0].Mapping.IsReturnValue)
602 {
603 base.Writer.WriteLine("IsReturnValue = true;");
604 }
605 WriteParamsRead(members.Length);
606 if (list3.Count > 0)
607 {
608 Member[] members3 = list3.ToArray();
610 WriteAttributes(members3, anyAttribute, "UnknownNode", "(object)p");
612 base.Writer.WriteLine("Reader.MoveToElement();");
613 }
616 {
617 base.Writer.WriteLine("if (Reader.IsEmptyElement) { Reader.Skip(); Reader.MoveToContent(); continue; }");
618 base.Writer.WriteLine("Reader.ReadStartElement();");
619 }
620 if (IsSequence(array))
621 {
622 base.Writer.WriteLine("int state = 0;");
623 }
625 base.Writer.Indent++;
626 string text4 = "UnknownNode((object)p, " + ExpectedElements(array) + ");";
628 base.Writer.WriteLine("Reader.MoveToContent();");
632 {
633 base.Writer.WriteLine("ReadEndElement();");
634 base.Writer.Indent--;
635 base.Writer.WriteLine("}");
636 WriteUnknownNode("UnknownNode", "null", accessor, anyIfs: true);
637 base.Writer.WriteLine("Reader.MoveToContent();");
639 }
640 base.Writer.WriteLine("return p;");
641 base.Writer.Indent--;
642 base.Writer.WriteLine("}");
643 return text;
644 }
void Add(TKey key, TValue value)
static CultureInfo InvariantCulture
void WriteAttributes(Member[] members, Member anyAttribute, string elseCall, string firstParam)
void WriteMemberElements(Member[] members, string elementElseString, string elseString, Member anyElement, Member anyText, string checkTypeHrefsSource)
string GetChoiceIdentifierSource(MemberMapping[] mappings, MemberMapping member)
void InitializeValueTypes(string arrayName, MemberMapping[] mappings)
void WriteUnknownNode(string func, string node, ElementAccessor e, bool anyIfs)

References System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.array, System.Collections.Generic.Dictionary< TKey, TValue >.Count, System.Xml.Dictionary, System.Xml.Serialization.XmlSerializationReaderCodeGen.ExpectedElements(), System.Xml.Serialization.XmlSerializationReaderCodeGen.GetChoiceIdentifierSource(), System.Xml.Serialization.XmlSerializationReaderCodeGen.InitializeValueTypes(), System.Globalization.CultureInfo.InvariantCulture, System.Xml.Serialization.XmlSerializationReaderCodeGen.IsSequence(), System.list, System.Xml.Name, System.Xml.Serialization.XmlSerializationReaderCodeGen.NextMethodName(), System.text, System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteAttributes(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteIsStartTag(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteMemberBegin(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteMemberElements(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteMemberEnd(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteParamsRead(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteUnknownNode(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteWhileLoopEnd(), and System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteWhileNotLoopStart().

Referenced by System.Xml.Serialization.XmlSerializationReaderCodeGen.GenerateMembersElement().