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

◆ GenerateEncodedMembersElement()

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

Definition at line 669 of file XmlSerializationReaderCodeGen.cs.

670 {
671 ElementAccessor accessor = xmlMembersMapping.Accessor;
672 MembersMapping membersMapping = (MembersMapping)accessor.Mapping;
673 MemberMapping[] members = membersMapping.Members;
674 bool hasWrapperElement = membersMapping.HasWrapperElement;
675 bool writeAccessors = membersMapping.WriteAccessors;
676 string text = NextMethodName(accessor.Name);
677 base.Writer.WriteLine();
678 base.Writer.Write("public object[] ");
679 base.Writer.Write(text);
680 base.Writer.WriteLine("() {");
681 base.Writer.Indent++;
682 base.Writer.WriteLine("Reader.MoveToContent();");
683 base.Writer.Write("object[] p = new object[");
684 base.Writer.Write(members.Length.ToString(CultureInfo.InvariantCulture));
685 base.Writer.WriteLine("];");
688 {
690 if (membersMapping.ValidateRpcWrapperElement)
691 {
692 base.Writer.Write("if (!");
693 WriteXmlNodeEqual("Reader", accessor.Name, (accessor.Form == XmlSchemaForm.Qualified) ? accessor.Namespace : "");
694 base.Writer.WriteLine(") throw CreateUnknownNodeException();");
695 }
696 base.Writer.WriteLine("bool isEmptyWrapper = Reader.IsEmptyElement;");
697 base.Writer.WriteLine("Reader.ReadStartElement();");
698 }
699 Member[] array = new Member[members.Length];
700 for (int i = 0; i < members.Length; i++)
701 {
702 MemberMapping memberMapping = members[i];
703 string text2 = $"p[{i}]";
704 string arraySource = text2;
705 if (memberMapping.Xmlns != null)
706 {
707 arraySource = $"(({memberMapping.TypeDesc.CSharpName}){text2})";
708 }
709 Member member = new Member(this, text2, arraySource, "a", i, memberMapping);
710 if (!memberMapping.IsSequence)
711 {
712 member.ParamsReadSource = $"paramsRead[{i}]";
713 }
714 array[i] = member;
715 if (memberMapping.CheckSpecified != SpecifiedAccessor.ReadWrite)
716 {
717 continue;
718 }
719 string text3 = memberMapping.Name + "Specified";
720 for (int j = 0; j < members.Length; j++)
721 {
722 if (members[j].Name == text3)
723 {
725 break;
726 }
727 }
728 }
729 string fixupMethodName = "fixup_" + text;
731 if (array.Length != 0 && array[0].Mapping.IsReturnValue)
732 {
733 base.Writer.WriteLine("IsReturnValue = true;");
734 }
735 string text4 = ((!hasWrapperElement && !writeAccessors) ? "hrefList" : null);
736 if (text4 != null)
737 {
739 }
740 WriteParamsRead(members.Length);
742 base.Writer.Indent++;
743 string elementElseString = ((text4 == null) ? "UnknownNode((object)p);" : "if (Reader.GetAttribute(\"id\", null) != null) { ReadReferencedElement(); } else { UnknownNode((object)p); }");
744 WriteMemberElements(array, elementElseString, "UnknownNode((object)p);", null, null, text4);
745 base.Writer.WriteLine("Reader.MoveToContent();");
748 {
749 base.Writer.WriteLine("if (!isEmptyWrapper) ReadEndElement();");
750 }
751 if (text4 != null)
752 {
754 }
755 base.Writer.WriteLine("ReadReferencedElements();");
756 base.Writer.WriteLine("return p;");
757 base.Writer.Indent--;
758 base.Writer.WriteLine("}");
759 if (flag)
760 {
762 }
763 return text;
764 }
static CultureInfo InvariantCulture
void WriteMemberElements(Member[] members, string elementElseString, string elseString, Member anyElement, Member anyText, string checkTypeHrefsSource)
void InitializeValueTypes(string arrayName, MemberMapping[] mappings)
bool WriteMemberFixupBegin(Member[] members, string fixupMethodName, string source)
void WriteFixupMethod(string fixupMethodName, Member[] members, string typeName, bool useReflection, bool typed, string source)

References System.array, System.Xml.Dictionary, System.Xml.Serialization.XmlSerializationReaderCodeGen.InitializeValueTypes(), System.Globalization.CultureInfo.InvariantCulture, System.Xml.Name, System.Xml.Serialization.XmlSerializationReaderCodeGen.NextMethodName(), System.text, System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteFixupMethod(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteHandleHrefList(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteInitCheckTypeHrefList(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteMemberElements(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteMemberFixupBegin(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteParamsRead(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteReadNonRoots(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteWhileLoopEnd(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteWhileNotLoopStart(), and System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteXmlNodeEqual().

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