From 6eb915c129fc90c6f4c82ae097dd6ffad5239efc Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 25 Jan 2021 14:28:30 +0800 Subject: +scripts --- .../Scripts/XMainClient/ProtoBuf/Extensible.cs | 108 +++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 Client/Assets/Scripts/XMainClient/ProtoBuf/Extensible.cs (limited to 'Client/Assets/Scripts/XMainClient/ProtoBuf/Extensible.cs') diff --git a/Client/Assets/Scripts/XMainClient/ProtoBuf/Extensible.cs b/Client/Assets/Scripts/XMainClient/ProtoBuf/Extensible.cs new file mode 100644 index 00000000..3c33a044 --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/ProtoBuf/Extensible.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using ProtoBuf.Meta; + +namespace ProtoBuf +{ + public abstract class Extensible : IExtensible + { + private IExtension extensionObject; + + IExtension IExtensible.GetExtensionObject(bool createIfMissing) + { + return this.GetExtensionObject(createIfMissing); + } + + protected virtual IExtension GetExtensionObject(bool createIfMissing) + { + return Extensible.GetExtensionObject(ref this.extensionObject, createIfMissing); + } + + public static IExtension GetExtensionObject(ref IExtension extensionObject, bool createIfMissing) + { + bool flag = createIfMissing && extensionObject == null; + if (flag) + { + extensionObject = new BufferExtension(); + } + return extensionObject; + } + + public static void AppendValue(IExtensible instance, int tag, TValue value) + { + Extensible.AppendValue(instance, tag, DataFormat.Default, value); + } + + public static void AppendValue(IExtensible instance, int tag, DataFormat format, TValue value) + { + ExtensibleUtil.AppendExtendValue(RuntimeTypeModel.Default, instance, tag, format, value); + } + + public static TValue GetValue(IExtensible instance, int tag) + { + return Extensible.GetValue(instance, tag, DataFormat.Default); + } + + public static TValue GetValue(IExtensible instance, int tag, DataFormat format) + { + TValue result; + Extensible.TryGetValue(instance, tag, format, out result); + return result; + } + + public static bool TryGetValue(IExtensible instance, int tag, out TValue value) + { + return Extensible.TryGetValue(instance, tag, DataFormat.Default, out value); + } + + public static bool TryGetValue(IExtensible instance, int tag, DataFormat format, out TValue value) + { + return Extensible.TryGetValue(instance, tag, format, false, out value); + } + + public static bool TryGetValue(IExtensible instance, int tag, DataFormat format, bool allowDefinedTag, out TValue value) + { + value = default(TValue); + bool result = false; + foreach (TValue tvalue in ExtensibleUtil.GetExtendedValues(instance, tag, format, true, allowDefinedTag)) + { + value = tvalue; + result = true; + } + return result; + } + + public static IEnumerable GetValues(IExtensible instance, int tag) + { + return ExtensibleUtil.GetExtendedValues(instance, tag, DataFormat.Default, false, false); + } + + public static IEnumerable GetValues(IExtensible instance, int tag, DataFormat format) + { + return ExtensibleUtil.GetExtendedValues(instance, tag, format, false, false); + } + + public static bool TryGetValue(TypeModel model, Type type, IExtensible instance, int tag, DataFormat format, bool allowDefinedTag, out object value) + { + value = null; + bool result = false; + foreach (object obj in ExtensibleUtil.GetExtendedValues(model, type, instance, tag, format, true, allowDefinedTag)) + { + value = obj; + result = true; + } + return result; + } + + public static IEnumerable GetValues(TypeModel model, Type type, IExtensible instance, int tag, DataFormat format) + { + return ExtensibleUtil.GetExtendedValues(model, type, instance, tag, format, false, false); + } + + public static void AppendValue(TypeModel model, IExtensible instance, int tag, DataFormat format, object value) + { + ExtensibleUtil.AppendExtendValue(model, instance, tag, format, value); + } + } +} -- cgit v1.1-26-g67d0