summaryrefslogtreecommitdiff
path: root/Client/Assets/Scripts/XMainClient/ProtoBuf/Extensible.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Assets/Scripts/XMainClient/ProtoBuf/Extensible.cs')
-rw-r--r--Client/Assets/Scripts/XMainClient/ProtoBuf/Extensible.cs108
1 files changed, 108 insertions, 0 deletions
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<TValue>(IExtensible instance, int tag, TValue value)
+ {
+ Extensible.AppendValue<TValue>(instance, tag, DataFormat.Default, value);
+ }
+
+ public static void AppendValue<TValue>(IExtensible instance, int tag, DataFormat format, TValue value)
+ {
+ ExtensibleUtil.AppendExtendValue(RuntimeTypeModel.Default, instance, tag, format, value);
+ }
+
+ public static TValue GetValue<TValue>(IExtensible instance, int tag)
+ {
+ return Extensible.GetValue<TValue>(instance, tag, DataFormat.Default);
+ }
+
+ public static TValue GetValue<TValue>(IExtensible instance, int tag, DataFormat format)
+ {
+ TValue result;
+ Extensible.TryGetValue<TValue>(instance, tag, format, out result);
+ return result;
+ }
+
+ public static bool TryGetValue<TValue>(IExtensible instance, int tag, out TValue value)
+ {
+ return Extensible.TryGetValue<TValue>(instance, tag, DataFormat.Default, out value);
+ }
+
+ public static bool TryGetValue<TValue>(IExtensible instance, int tag, DataFormat format, out TValue value)
+ {
+ return Extensible.TryGetValue<TValue>(instance, tag, format, false, out value);
+ }
+
+ public static bool TryGetValue<TValue>(IExtensible instance, int tag, DataFormat format, bool allowDefinedTag, out TValue value)
+ {
+ value = default(TValue);
+ bool result = false;
+ foreach (TValue tvalue in ExtensibleUtil.GetExtendedValues<TValue>(instance, tag, format, true, allowDefinedTag))
+ {
+ value = tvalue;
+ result = true;
+ }
+ return result;
+ }
+
+ public static IEnumerable<TValue> GetValues<TValue>(IExtensible instance, int tag)
+ {
+ return ExtensibleUtil.GetExtendedValues<TValue>(instance, tag, DataFormat.Default, false, false);
+ }
+
+ public static IEnumerable<TValue> GetValues<TValue>(IExtensible instance, int tag, DataFormat format)
+ {
+ return ExtensibleUtil.GetExtendedValues<TValue>(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);
+ }
+ }
+}