123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- #if PLAT_BINARYFORMATTER
- using System;
- using System.Runtime.InteropServices;
- using System.Runtime.Serialization;
- namespace ProtoBuf
- {
- [Serializable]
- public readonly partial struct DiscriminatedUnionObject : ISerializable
- {
- void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
- {
- if (Discriminator != default) info.AddValue("d", Discriminator);
- if (Object is object) info.AddValue("o", Object);
- }
- private DiscriminatedUnionObject(SerializationInfo info, StreamingContext context)
- {
- this = default;
- foreach (var field in info)
- {
- switch (field.Name)
- {
- case "d": Discriminator = (int)field.Value; break;
- case "o": Object = field.Value; break;
- }
- }
- }
- }
- [Serializable]
- public readonly partial struct DiscriminatedUnion128Object : ISerializable
- {
- [FieldOffset(8)] private readonly long _lo;
- [FieldOffset(16)] private readonly long _hi;
- void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
- {
- if (_discriminator != default) info.AddValue("d", _discriminator);
- if (_lo != default) info.AddValue("l", _lo);
- if (_hi != default) info.AddValue("h", _hi);
- if (Object != null) info.AddValue("o", Object);
- }
- private DiscriminatedUnion128Object(SerializationInfo info, StreamingContext context)
- {
- this = default;
- foreach (var field in info)
- {
- switch (field.Name)
- {
- case "d": _discriminator = (int)field.Value; break;
- case "l": _lo = (long)field.Value; break;
- case "h": _hi = (long)field.Value; break;
- case "o": Object = field.Value; break;
- }
- }
- }
- }
- [Serializable]
- public readonly partial struct DiscriminatedUnion128 : ISerializable
- {
- [FieldOffset(8)] private readonly long _lo;
- [FieldOffset(16)] private readonly long _hi;
- void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
- {
- if (_discriminator != default) info.AddValue("d", _discriminator);
- if (_lo != default) info.AddValue("l", _lo);
- if (_hi != default) info.AddValue("h", _hi);
- }
- private DiscriminatedUnion128(SerializationInfo info, StreamingContext context)
- {
- this = default;
- foreach (var field in info)
- {
- switch (field.Name)
- {
- case "d": _discriminator = (int)field.Value; break;
- case "l": _lo = (long)field.Value; break;
- case "h": _hi = (long)field.Value; break;
- }
- }
- }
- }
- [Serializable]
- public readonly partial struct DiscriminatedUnion64 : ISerializable
- {
- void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
- {
- if (_discriminator != default) info.AddValue("d", _discriminator);
- if (Int64 != default) info.AddValue("i", Int64);
- }
- private DiscriminatedUnion64(SerializationInfo info, StreamingContext context)
- {
- this = default;
- foreach (var field in info)
- {
- switch (field.Name)
- {
- case "d": _discriminator = (int)field.Value; break;
- case "i": Int64 = (long)field.Value; break;
- }
- }
- }
- }
- [Serializable]
- public readonly partial struct DiscriminatedUnion64Object : ISerializable
- {
- void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
- {
- if (_discriminator != default) info.AddValue("d", _discriminator);
- if (Int64 != default) info.AddValue("i", Int64);
- if (Object is object) info.AddValue("o", Object);
- }
- private DiscriminatedUnion64Object(SerializationInfo info, StreamingContext context)
- {
- this = default;
- foreach (var field in info)
- {
- switch (field.Name)
- {
- case "d": _discriminator = (int)field.Value; break;
- case "i": Int64 = (long)field.Value; break;
- case "o": Object = field.Value; break;
- }
- }
- }
- }
- [Serializable]
- public readonly partial struct DiscriminatedUnion32 : ISerializable
- {
- void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
- {
- if (_discriminator != default) info.AddValue("d", _discriminator);
- if (Int32 != default) info.AddValue("i", Int32);
- }
- private DiscriminatedUnion32(SerializationInfo info, StreamingContext context)
- {
- this = default;
- foreach (var field in info)
- {
- switch (field.Name)
- {
- case "d": _discriminator = (int)field.Value; break;
- case "i": Int32 = (int)field.Value; break;
- }
- }
- }
- }
- [Serializable]
- public readonly partial struct DiscriminatedUnion32Object : ISerializable
- {
- void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
- {
- if (_discriminator != default) info.AddValue("d", _discriminator);
- if (Int32 != default) info.AddValue("i", Int32);
- if (Object is object) info.AddValue("o", Object);
- }
- private DiscriminatedUnion32Object(SerializationInfo info, StreamingContext context)
- {
- this = default;
- foreach (var field in info)
- {
- switch (field.Name)
- {
- case "d": _discriminator = (int)field.Value; break;
- case "i": Int32 = (int)field.Value; break;
- case "o": Object = field.Value; break;
- }
- }
- }
- }
- }
- #endif
|