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

◆ WriteEnumValue()

void System.Runtime.Serialization.EnumDataContract.WriteEnumValue ( XmlWriterDelegator writer,
object value )
inlinepackage

Definition at line 281 of file EnumDataContract.cs.

282 {
283 long num = (IsULong ? ((long)Convert.ToUInt64(value, null)) : Convert.ToInt64(value, null));
284 for (int i = 0; i < Values.Count; i++)
285 {
286 if (num == Values[i])
287 {
288 writer.WriteString(ChildElementNames[i].Value);
289 return;
290 }
291 }
292 if (IsFlags)
293 {
294 int num2 = -1;
295 bool flag = true;
296 for (int j = 0; j < Values.Count; j++)
297 {
298 long num3 = Values[j];
299 if (num3 == 0L)
300 {
301 num2 = j;
302 continue;
303 }
304 if (num == 0L)
305 {
306 break;
307 }
308 if ((num3 & num) == num3)
309 {
310 if (flag)
311 {
312 flag = false;
313 }
314 else
315 {
316 writer.WriteString(DictionaryGlobals.Space.Value);
317 }
318 writer.WriteString(ChildElementNames[j].Value);
319 num &= ~num3;
320 }
321 }
322 if (num != 0L)
323 {
324 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(System.SR.Format(System.SR.InvalidEnumValueOnWrite, value, DataContract.GetClrTypeFullName(base.UnderlyingType))));
325 }
326 if (flag && num2 >= 0)
327 {
328 writer.WriteString(ChildElementNames[num2].Value);
329 }
330 return;
331 }
332 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(System.SR.Format(System.SR.InvalidEnumValueOnWrite, value, DataContract.GetClrTypeFullName(base.UnderlyingType))));
333 }
DataContract(DataContractCriticalHelper helper)
static string InvalidEnumValueOnWrite
Definition SR.cs:148
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
Definition SR.cs:7

References System.Runtime.Serialization.EnumDataContract.ChildElementNames, System.Collections.Generic.List< T >.Count, System.Runtime.Serialization.XmlObjectSerializer.CreateSerializationException(), System.Runtime.Serialization.Dictionary, System.SR.Format(), System.Runtime.Serialization.DataContract.GetClrTypeFullName(), System.SR.InvalidEnumValueOnWrite, System.Runtime.Serialization.EnumDataContract.IsFlags, System.Runtime.Serialization.EnumDataContract.IsULong, System.L, System.Runtime.Serialization.DictionaryGlobals.Space, System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(), System.Convert.ToInt64(), System.Convert.ToUInt64(), System.value, System.Runtime.Serialization.EnumDataContract.Values, and System.writer.

Referenced by System.Runtime.Serialization.EnumDataContract.WriteXmlValue().