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

◆ GenerateMembersElement()

string System.Xml.Serialization.XmlSerializationWriterCodeGen.GenerateMembersElement ( XmlMembersMapping xmlMembersMapping)
inlineprivate

Definition at line 367 of file XmlSerializationWriterCodeGen.cs.

368 {
369 ElementAccessor accessor = xmlMembersMapping.Accessor;
370 MembersMapping membersMapping = (MembersMapping)accessor.Mapping;
371 bool hasWrapperElement = membersMapping.HasWrapperElement;
372 bool writeAccessors = membersMapping.WriteAccessors;
374 string text = NextMethodName(accessor.Name);
375 base.Writer.WriteLine();
376 base.Writer.Write("public void ");
377 base.Writer.Write(text);
378 base.Writer.WriteLine("(object[] p) {");
379 base.Writer.Indent++;
380 base.Writer.WriteLine("WriteStartDocument();");
381 if (!membersMapping.IsSoap)
382 {
383 base.Writer.WriteLine("TopLevelElement();");
384 }
385 base.Writer.WriteLine("int pLength = p.Length;");
387 {
388 WriteStartElement(accessor.Name, (accessor.Form == XmlSchemaForm.Qualified) ? accessor.Namespace : "", membersMapping.IsSoap);
389 int num = FindXmlnsIndex(membersMapping.Members);
390 if (num >= 0)
391 {
392 string source = $"(({typeof(XmlSerializerNamespaces).FullName})p[{num}])";
393 base.Writer.Write("if (pLength > ");
394 base.Writer.Write(num.ToString(CultureInfo.InvariantCulture));
395 base.Writer.WriteLine(") {");
396 base.Writer.Indent++;
398 base.Writer.Indent--;
399 base.Writer.WriteLine("}");
400 }
401 for (int i = 0; i < membersMapping.Members.Length; i++)
402 {
403 MemberMapping memberMapping = membersMapping.Members[i];
404 if (memberMapping.Attribute == null || memberMapping.Ignore)
405 {
406 continue;
407 }
408 string text2 = i.ToString(CultureInfo.InvariantCulture);
409 string source2 = "p[" + text2 + "]";
410 string text3 = null;
411 int num2 = 0;
412 if (memberMapping.CheckSpecified != 0)
413 {
414 string text4 = memberMapping.Name + "Specified";
415 for (int j = 0; j < membersMapping.Members.Length; j++)
416 {
417 if (membersMapping.Members[j].Name == text4)
418 {
419 text3 = $"((bool) p[{j}])";
420 num2 = j;
421 break;
422 }
423 }
424 }
425 base.Writer.Write("if (pLength > ");
426 base.Writer.Write(text2);
427 base.Writer.WriteLine(") {");
428 base.Writer.Indent++;
429 if (text3 != null)
430 {
431 base.Writer.Write("if (pLength <= ");
432 base.Writer.Write(num2.ToString(CultureInfo.InvariantCulture));
433 base.Writer.Write(" || ");
434 base.Writer.Write(text3);
435 base.Writer.WriteLine(") {");
436 base.Writer.Indent++;
437 }
438 WriteMember(source2, memberMapping.Attribute, memberMapping.TypeDesc, "p");
439 if (text3 != null)
440 {
441 base.Writer.Indent--;
442 base.Writer.WriteLine("}");
443 }
444 base.Writer.Indent--;
445 base.Writer.WriteLine("}");
446 }
447 }
448 for (int k = 0; k < membersMapping.Members.Length; k++)
449 {
450 MemberMapping memberMapping2 = membersMapping.Members[k];
451 if (memberMapping2.Xmlns != null || memberMapping2.Ignore)
452 {
453 continue;
454 }
455 string text5 = null;
456 int num3 = 0;
457 if (memberMapping2.CheckSpecified != 0)
458 {
459 string text6 = memberMapping2.Name + "Specified";
460 for (int l = 0; l < membersMapping.Members.Length; l++)
461 {
462 if (membersMapping.Members[l].Name == text6)
463 {
464 text5 = $"((bool) p[{l}])";
465 num3 = l;
466 break;
467 }
468 }
469 }
470 string text7 = k.ToString(CultureInfo.InvariantCulture);
471 base.Writer.Write("if (pLength > ");
472 base.Writer.Write(text7);
473 base.Writer.WriteLine(") {");
474 base.Writer.Indent++;
475 if (text5 != null)
476 {
477 base.Writer.Write("if (pLength <= ");
478 base.Writer.Write(num3.ToString(CultureInfo.InvariantCulture));
479 base.Writer.Write(" || ");
480 base.Writer.Write(text5);
481 base.Writer.WriteLine(") {");
482 base.Writer.Indent++;
483 }
484 string source3 = "p[" + text7 + "]";
485 string choiceSource = null;
486 if (memberMapping2.ChoiceIdentifier != null)
487 {
488 for (int m = 0; m < membersMapping.Members.Length; m++)
489 {
490 if (membersMapping.Members[m].Name == memberMapping2.ChoiceIdentifier.MemberName)
491 {
492 choiceSource = ((!memberMapping2.ChoiceIdentifier.Mapping.TypeDesc.UseReflection) ? $"(({membersMapping.Members[m].TypeDesc.CSharpName})p[{m}])" : $"p[{m}]");
493 break;
494 }
495 }
496 }
497 if (flag && memberMapping2.IsReturnValue && memberMapping2.Elements.Length != 0)
498 {
499 base.Writer.Write("WriteRpcResult(");
500 WriteQuotedCSharpString(memberMapping2.Elements[0].Name);
501 base.Writer.Write(", ");
503 base.Writer.WriteLine(");");
504 }
505 WriteMember(source3, choiceSource, memberMapping2.ElementsSortedByDerivation, memberMapping2.Text, memberMapping2.ChoiceIdentifier, memberMapping2.TypeDesc, writeAccessors || hasWrapperElement);
506 if (text5 != null)
507 {
508 base.Writer.Indent--;
509 base.Writer.WriteLine("}");
510 }
511 base.Writer.Indent--;
512 base.Writer.WriteLine("}");
513 }
515 {
517 }
518 if (accessor.IsSoap)
519 {
521 {
522 base.Writer.Write("if (pLength > ");
523 base.Writer.Write(membersMapping.Members.Length.ToString(CultureInfo.InvariantCulture));
524 base.Writer.WriteLine(") {");
525 base.Writer.Indent++;
526 WriteExtraMembers(membersMapping.Members.Length.ToString(CultureInfo.InvariantCulture), "pLength");
527 base.Writer.Indent--;
528 base.Writer.WriteLine("}");
529 }
530 base.Writer.WriteLine("WriteReferencedElements();");
531 }
532 base.Writer.Indent--;
533 base.Writer.WriteLine("}");
534 return text;
535 }
static CultureInfo InvariantCulture
void WriteMember(string source, AttributeAccessor attribute, TypeDesc memberTypeDesc, string parent)
void WriteStartElement(string name, string ns, bool writePrefixed)
void WriteExtraMembers(string loopStartSource, string loopEndSource)

References System.Xml.Serialization.Accessor.Accessor(), System.Xml.Serialization.Mapping.Mapping(), System.Xml.Dictionary, System.Xml.Serialization.XmlSerializationWriterCodeGen.FindXmlnsIndex(), System.Globalization.CultureInfo.InvariantCulture, System.Xml.Serialization.XmlSerializationWriterCodeGen.NextMethodName(), System.source, System.text, System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteEndElement(), System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteExtraMembers(), System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteMember(), System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteNamespaces(), System.Xml.Serialization.XmlSerializationCodeGen.WriteQuotedCSharpString(), and System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteStartElement().

Referenced by System.Xml.Serialization.XmlSerializationWriterCodeGen.GenerateElement().