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

◆ WriteEnumMethod()

void System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteEnumMethod ( EnumMapping mapping)
inlineprivate

Definition at line 588 of file XmlSerializationWriterCodeGen.cs.

589 {
590 string s = (string)base.MethodNames[mapping];
591 base.Writer.WriteLine();
592 string cSharpName = mapping.TypeDesc.CSharpName;
593 if (mapping.IsSoap)
594 {
595 base.Writer.Write("void ");
596 base.Writer.Write(s);
597 base.Writer.WriteLine("(object e) {");
598 WriteLocalDecl(cSharpName, "v", "e", mapping.TypeDesc.UseReflection);
599 }
600 else
601 {
602 base.Writer.Write("string ");
603 base.Writer.Write(s);
604 base.Writer.Write("(");
605 base.Writer.Write(mapping.TypeDesc.UseReflection ? "object" : cSharpName);
606 base.Writer.WriteLine(" v) {");
607 }
608 base.Writer.Indent++;
609 base.Writer.WriteLine("string s = null;");
610 ConstantMapping[] constants = mapping.Constants;
611 if (constants.Length != 0)
612 {
613 Hashtable hashtable = new Hashtable();
614 if (mapping.TypeDesc.UseReflection)
615 {
616 base.Writer.WriteLine("switch (" + base.RaCodeGen.GetStringForEnumLongValue("v", mapping.TypeDesc.UseReflection) + " ){");
617 }
618 else
619 {
620 base.Writer.WriteLine("switch (v) {");
621 }
622 base.Writer.Indent++;
623 foreach (ConstantMapping constantMapping in constants)
624 {
625 if (hashtable[constantMapping.Value] == null)
626 {
627 WriteEnumCase(cSharpName, constantMapping, mapping.TypeDesc.UseReflection);
628 base.Writer.Write("s = ");
630 base.Writer.WriteLine("; break;");
631 hashtable.Add(constantMapping.Value, constantMapping.Value);
632 }
633 }
634 if (mapping.IsFlags)
635 {
636 base.Writer.Write("default: s = FromEnum(");
637 base.Writer.Write(base.RaCodeGen.GetStringForEnumLongValue("v", mapping.TypeDesc.UseReflection));
638 base.Writer.Write(", new string[] {");
639 base.Writer.Indent++;
640 for (int j = 0; j < constants.Length; j++)
641 {
642 ConstantMapping constantMapping2 = constants[j];
643 if (j > 0)
644 {
645 base.Writer.WriteLine(", ");
646 }
648 }
649 base.Writer.Write("}, new ");
650 base.Writer.Write(typeof(long).FullName);
651 base.Writer.Write("[] {");
652 for (int k = 0; k < constants.Length; k++)
653 {
654 ConstantMapping constantMapping3 = constants[k];
655 if (k > 0)
656 {
657 base.Writer.WriteLine(", ");
658 }
659 base.Writer.Write("(long)");
660 if (mapping.TypeDesc.UseReflection)
661 {
662 base.Writer.Write(constantMapping3.Value.ToString(CultureInfo.InvariantCulture));
663 continue;
664 }
665 base.Writer.Write(cSharpName);
666 base.Writer.Write(".@");
667 CodeIdentifier.CheckValidIdentifier(constantMapping3.Name);
668 base.Writer.Write(constantMapping3.Name);
669 }
670 base.Writer.Indent--;
671 base.Writer.Write("}, ");
672 WriteQuotedCSharpString(mapping.TypeDesc.FullName);
673 base.Writer.WriteLine("); break;");
674 }
675 else
676 {
677 base.Writer.Write("default: throw CreateInvalidEnumValueException(");
678 base.Writer.Write(base.RaCodeGen.GetStringForEnumLongValue("v", mapping.TypeDesc.UseReflection));
679 base.Writer.Write(".ToString(System.Globalization.CultureInfo.InvariantCulture), ");
680 WriteQuotedCSharpString(mapping.TypeDesc.FullName);
681 base.Writer.WriteLine(");");
682 }
683 base.Writer.Indent--;
684 base.Writer.WriteLine("}");
685 }
686 if (mapping.IsSoap)
687 {
688 base.Writer.Write("WriteXsiType(");
690 base.Writer.Write(", ");
692 base.Writer.WriteLine(");");
693 base.Writer.WriteLine("Writer.WriteString(s);");
694 }
695 else
696 {
697 base.Writer.WriteLine("return s;");
698 }
699 base.Writer.Indent--;
700 base.Writer.WriteLine("}");
701 }
virtual void Add(object key, object? value)
Definition Hashtable.cs:676
static CultureInfo InvariantCulture
void WriteEnumCase(string fullTypeName, ConstantMapping c, bool useReflection)
void WriteLocalDecl(string typeName, string variableName, string initValue, bool useReflection)

References System.Xml.Serialization.CodeIdentifier.CheckValidIdentifier(), System.Xml.Dictionary, System.FullName, System.Globalization.CultureInfo.InvariantCulture, System.s, System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteEnumCase(), System.Xml.Serialization.XmlSerializationWriterCodeGen.WriteLocalDecl(), and System.Xml.Serialization.XmlSerializationCodeGen.WriteQuotedCSharpString().

Referenced by System.Xml.Serialization.XmlSerializationWriterCodeGen.GenerateBegin(), and System.Xml.Serialization.XmlSerializationWriterCodeGen.GenerateMethod().