From 9027bcad0c2ba7c853d143540f3dc3cc8f5307bc Mon Sep 17 00:00:00 2001 From: RogueException Date: Mon, 7 Aug 2017 04:35:25 -0300 Subject: [PATCH] Fixed List serialization --- .../JsonConverters/EntityOrIdPropertyConverter.cs | 8 ++++---- .../JsonConverters/ImagePropertyConverter.cs | 4 ++-- .../JsonConverters/Int53PropertyConverter.cs | 4 ++-- .../JsonConverters/OptionalPropertyConverter.cs | 8 ++++---- .../JsonConverters/UInt53PropertyConverter.cs | 4 ++-- .../Json/Converters/Collections.cs | 8 ++++---- .../Json/Converters/Nullable.cs | 8 ++++---- src/Discord.Net.Serialization/Json/Converters/Object.cs | 13 +++++-------- .../Json/Converters/Primitives.DateTime.cs | 8 ++++---- .../Json/Converters/Primitives.Enum.cs | 4 ++-- .../Json/Converters/Primitives.Float.cs | 12 ++++++------ .../Json/Converters/Primitives.Other.cs | 8 ++++---- .../Json/Converters/Primitives.Signed.cs | 16 ++++++++-------- .../Json/Converters/Primitives.String.cs | 4 ++-- .../Json/Converters/Primitives.Unsigned.cs | 16 ++++++++-------- .../Json/IJsonPropertyConverter.cs | 4 ++-- src/Discord.Net.Serialization/Json/IJsonPropertyMap.cs | 4 ++-- src/Discord.Net.Serialization/Json/JsonFormat.cs | 4 ++-- src/Discord.Net.Serialization/Json/JsonPropertyMap.cs | 8 ++++---- 19 files changed, 71 insertions(+), 74 deletions(-) diff --git a/src/Discord.Net.Rest/Serialization/JsonConverters/EntityOrIdPropertyConverter.cs b/src/Discord.Net.Rest/Serialization/JsonConverters/EntityOrIdPropertyConverter.cs index 8cdbaab3e..c25302c18 100644 --- a/src/Discord.Net.Rest/Serialization/JsonConverters/EntityOrIdPropertyConverter.cs +++ b/src/Discord.Net.Rest/Serialization/JsonConverters/EntityOrIdPropertyConverter.cs @@ -12,19 +12,19 @@ namespace Discord.Serialization.Json.Converters _innerConverter = innerConverter; } - public EntityOrId Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public EntityOrId Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); if (reader.ValueType == JsonValueType.Number) return new EntityOrId(reader.ParseUInt64()); - return new EntityOrId(_innerConverter.Read(map, reader, false)); + return new EntityOrId(_innerConverter.Read(map, ref reader, false)); } - public void Write(PropertyMap map, JsonWriter writer, EntityOrId value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, EntityOrId value, bool isTopLevel) { if (value.Object != null) - _innerConverter.Write(map, writer, value.Object, isTopLevel); + _innerConverter.Write(map, ref writer, value.Object, isTopLevel); else { if (isTopLevel) diff --git a/src/Discord.Net.Rest/Serialization/JsonConverters/ImagePropertyConverter.cs b/src/Discord.Net.Rest/Serialization/JsonConverters/ImagePropertyConverter.cs index 1c73e9440..8062c0c9e 100644 --- a/src/Discord.Net.Rest/Serialization/JsonConverters/ImagePropertyConverter.cs +++ b/src/Discord.Net.Rest/Serialization/JsonConverters/ImagePropertyConverter.cs @@ -4,9 +4,9 @@ namespace Discord.Serialization.Json.Converters { internal class ImagePropertyConverter : IJsonPropertyConverter { - public API.Image Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public API.Image Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) => throw new System.NotImplementedException(); - public void Write(PropertyMap map, JsonWriter writer, API.Image value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, API.Image value, bool isTopLevel) => throw new System.NotImplementedException(); } } diff --git a/src/Discord.Net.Rest/Serialization/JsonConverters/Int53PropertyConverter.cs b/src/Discord.Net.Rest/Serialization/JsonConverters/Int53PropertyConverter.cs index 0b9f0a285..d59fd1610 100644 --- a/src/Discord.Net.Rest/Serialization/JsonConverters/Int53PropertyConverter.cs +++ b/src/Discord.Net.Rest/Serialization/JsonConverters/Int53PropertyConverter.cs @@ -4,7 +4,7 @@ namespace Discord.Serialization.Json.Converters { internal class Int53PropertyConverter : IJsonPropertyConverter { - public long Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public long Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); @@ -12,7 +12,7 @@ namespace Discord.Serialization.Json.Converters throw new SerializationException("Bad input, expected Number"); return reader.ParseInt64(); } - public void Write(PropertyMap map, JsonWriter writer, long value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, long value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value); diff --git a/src/Discord.Net.Rest/Serialization/JsonConverters/OptionalPropertyConverter.cs b/src/Discord.Net.Rest/Serialization/JsonConverters/OptionalPropertyConverter.cs index 8c0c276f4..06609fbbd 100644 --- a/src/Discord.Net.Rest/Serialization/JsonConverters/OptionalPropertyConverter.cs +++ b/src/Discord.Net.Rest/Serialization/JsonConverters/OptionalPropertyConverter.cs @@ -11,13 +11,13 @@ namespace Discord.Serialization.Json.Converters _innerConverter = innerConverter; } - public Optional Read(PropertyMap map, JsonReader reader, bool isTopLevel) - => new Optional(_innerConverter.Read(map, reader, isTopLevel)); + public Optional Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) + => new Optional(_innerConverter.Read(map, ref reader, isTopLevel)); - public void Write(PropertyMap map, JsonWriter writer, Optional value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, Optional value, bool isTopLevel) { if (value.IsSpecified) - _innerConverter.Write(map, writer, value.Value, isTopLevel); + _innerConverter.Write(map, ref writer, value.Value, isTopLevel); } } } diff --git a/src/Discord.Net.Rest/Serialization/JsonConverters/UInt53PropertyConverter.cs b/src/Discord.Net.Rest/Serialization/JsonConverters/UInt53PropertyConverter.cs index 02a76a1e5..fa35ff711 100644 --- a/src/Discord.Net.Rest/Serialization/JsonConverters/UInt53PropertyConverter.cs +++ b/src/Discord.Net.Rest/Serialization/JsonConverters/UInt53PropertyConverter.cs @@ -4,7 +4,7 @@ namespace Discord.Serialization.Json.Converters { internal class UInt53PropertyConverter : IJsonPropertyConverter { - public ulong Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public ulong Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); @@ -12,7 +12,7 @@ namespace Discord.Serialization.Json.Converters throw new SerializationException("Bad input, expected Number"); return reader.ParseUInt64(); } - public void Write(PropertyMap map, JsonWriter writer, ulong value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, ulong value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value); diff --git a/src/Discord.Net.Serialization/Json/Converters/Collections.cs b/src/Discord.Net.Serialization/Json/Converters/Collections.cs index 95567322e..b0096b860 100644 --- a/src/Discord.Net.Serialization/Json/Converters/Collections.cs +++ b/src/Discord.Net.Serialization/Json/Converters/Collections.cs @@ -12,25 +12,25 @@ namespace Discord.Serialization.Json.Converters _innerConverter = innerConverter; } - public List Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public List Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if ((isTopLevel && !reader.Read()) || reader.TokenType != JsonTokenType.StartArray) throw new SerializationException("Bad input, expected StartArray"); var list = new List(); while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) - list.Add(_innerConverter.Read(map, reader, false)); + list.Add(_innerConverter.Read(map, ref reader, false)); return list; } - public void Write(PropertyMap map, JsonWriter writer, List value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, List value, bool isTopLevel) { if (isTopLevel) writer.WriteArrayStart(map.Key); else writer.WriteArrayStart(); for (int i = 0; i < value.Count; i++) - _innerConverter.Write(map, writer, value[i], false); + _innerConverter.Write(map, ref writer, value[i], false); writer.WriteArrayEnd(); } } diff --git a/src/Discord.Net.Serialization/Json/Converters/Nullable.cs b/src/Discord.Net.Serialization/Json/Converters/Nullable.cs index 2f39ca99a..bd1efaa31 100644 --- a/src/Discord.Net.Serialization/Json/Converters/Nullable.cs +++ b/src/Discord.Net.Serialization/Json/Converters/Nullable.cs @@ -12,19 +12,19 @@ namespace Discord.Serialization.Json.Converters _innerConverter = innerConverter; } - public T? Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public T? Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); if (reader.ValueType == JsonValueType.Null) return null; - return _innerConverter.Read(map, reader, false); + return _innerConverter.Read(map, ref reader, false); } - public void Write(PropertyMap map, JsonWriter writer, T? value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, T? value, bool isTopLevel) { if (value.HasValue) - _innerConverter.Write(map, writer, value.Value, isTopLevel); + _innerConverter.Write(map, ref writer, value.Value, isTopLevel); else { if (isTopLevel) diff --git a/src/Discord.Net.Serialization/Json/Converters/Object.cs b/src/Discord.Net.Serialization/Json/Converters/Object.cs index b810702e9..06eaeb045 100644 --- a/src/Discord.Net.Serialization/Json/Converters/Object.cs +++ b/src/Discord.Net.Serialization/Json/Converters/Object.cs @@ -7,7 +7,7 @@ namespace Discord.Serialization.Json.Converters { private static readonly ModelMap _map = SerializationFormat.Json.MapModel(); - public T Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public T Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { var model = new T(); @@ -20,25 +20,22 @@ namespace Discord.Serialization.Json.Converters if (reader.TokenType != JsonTokenType.PropertyName) throw new SerializationException("Bad input, expected PropertyName"); - string key = reader.ParseString(); + string key = reader.ParseString(); if (_map.PropertiesByKey.TryGetValue(key, out var property)) - (property as IJsonPropertyMap).Read(model, reader); + (property as IJsonPropertyMap).Read(model, ref reader); else reader.Skip(); //Unknown property, skip - - if (!reader.Read()) - throw new SerializationException("Bad input, expected Value"); } throw new SerializationException("Bad input, expected EndObject"); } - public void Write(PropertyMap map, JsonWriter writer, T value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, T value, bool isTopLevel) { if (isTopLevel) writer.WriteObjectStart(map.Key); else writer.WriteObjectStart(); for (int i = 0; i < _map.Properties.Length; i++) - (_map.Properties[i] as IJsonPropertyMap).Write(value, writer); + (_map.Properties[i] as IJsonPropertyMap).Write(value, ref writer); writer.WriteObjectEnd(); } } diff --git a/src/Discord.Net.Serialization/Json/Converters/Primitives.DateTime.cs b/src/Discord.Net.Serialization/Json/Converters/Primitives.DateTime.cs index 2039c0e54..e8e8e4ab8 100644 --- a/src/Discord.Net.Serialization/Json/Converters/Primitives.DateTime.cs +++ b/src/Discord.Net.Serialization/Json/Converters/Primitives.DateTime.cs @@ -5,7 +5,7 @@ namespace Discord.Serialization.Json.Converters { internal class DateTimePropertyConverter : IJsonPropertyConverter { - public DateTime Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public DateTime Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); @@ -13,7 +13,7 @@ namespace Discord.Serialization.Json.Converters throw new SerializationException("Bad input, expected String"); return reader.ParseDateTime(); } - public void Write(PropertyMap map, JsonWriter writer, DateTime value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, DateTime value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value); @@ -24,7 +24,7 @@ namespace Discord.Serialization.Json.Converters internal class DateTimeOffsetPropertyConverter : IJsonPropertyConverter { - public DateTimeOffset Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public DateTimeOffset Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); @@ -32,7 +32,7 @@ namespace Discord.Serialization.Json.Converters throw new SerializationException("Bad input, expected String"); return reader.ParseDateTimeOffset(); } - public void Write(PropertyMap map, JsonWriter writer, DateTimeOffset value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, DateTimeOffset value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value); diff --git a/src/Discord.Net.Serialization/Json/Converters/Primitives.Enum.cs b/src/Discord.Net.Serialization/Json/Converters/Primitives.Enum.cs index 6f3d6fc5a..de87c6b8d 100644 --- a/src/Discord.Net.Serialization/Json/Converters/Primitives.Enum.cs +++ b/src/Discord.Net.Serialization/Json/Converters/Primitives.Enum.cs @@ -4,9 +4,9 @@ namespace Discord.Serialization.Json.Converters { internal class EnumPropertyConverter : IJsonPropertyConverter { - public T Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public T Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) => throw new System.NotImplementedException(); - public void Write(PropertyMap map, JsonWriter writer, T value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, T value, bool isTopLevel) => throw new System.NotImplementedException(); } } diff --git a/src/Discord.Net.Serialization/Json/Converters/Primitives.Float.cs b/src/Discord.Net.Serialization/Json/Converters/Primitives.Float.cs index d53edfa66..1c5b33678 100644 --- a/src/Discord.Net.Serialization/Json/Converters/Primitives.Float.cs +++ b/src/Discord.Net.Serialization/Json/Converters/Primitives.Float.cs @@ -4,7 +4,7 @@ namespace Discord.Serialization.Json.Converters { internal class SinglePropertyConverter : IJsonPropertyConverter { - public float Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public float Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); @@ -12,7 +12,7 @@ namespace Discord.Serialization.Json.Converters throw new SerializationException("Bad input, expected Number or String"); return reader.ParseSingle(); } - public void Write(PropertyMap map, JsonWriter writer, float value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, float value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value.ToString()); @@ -23,7 +23,7 @@ namespace Discord.Serialization.Json.Converters internal class DoublePropertyConverter : IJsonPropertyConverter { - public double Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public double Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); @@ -31,7 +31,7 @@ namespace Discord.Serialization.Json.Converters throw new SerializationException("Bad input, expected Number or String"); return reader.ParseDouble(); } - public void Write(PropertyMap map, JsonWriter writer, double value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, double value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value.ToString()); @@ -42,7 +42,7 @@ namespace Discord.Serialization.Json.Converters internal class DecimalPropertyConverter : IJsonPropertyConverter { - public decimal Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public decimal Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); @@ -50,7 +50,7 @@ namespace Discord.Serialization.Json.Converters throw new SerializationException("Bad input, expected Number or String"); return reader.ParseDecimal(); } - public void Write(PropertyMap map, JsonWriter writer, decimal value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, decimal value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value.ToString()); diff --git a/src/Discord.Net.Serialization/Json/Converters/Primitives.Other.cs b/src/Discord.Net.Serialization/Json/Converters/Primitives.Other.cs index 81a165589..7bc5abe86 100644 --- a/src/Discord.Net.Serialization/Json/Converters/Primitives.Other.cs +++ b/src/Discord.Net.Serialization/Json/Converters/Primitives.Other.cs @@ -5,7 +5,7 @@ namespace Discord.Serialization.Json.Converters { internal class BooleanPropertyConverter : IJsonPropertyConverter { - public bool Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public bool Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); @@ -16,7 +16,7 @@ namespace Discord.Serialization.Json.Converters default: throw new SerializationException("Bad input, expected False or True"); } } - public void Write(PropertyMap map, JsonWriter writer, bool value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, bool value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value); @@ -27,7 +27,7 @@ namespace Discord.Serialization.Json.Converters internal class GuidPropertyConverter : IJsonPropertyConverter { - public Guid Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public Guid Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); @@ -35,7 +35,7 @@ namespace Discord.Serialization.Json.Converters throw new SerializationException("Bad input, expected String"); return Guid.Parse(reader.ParseString()); } - public void Write(PropertyMap map, JsonWriter writer, Guid value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, Guid value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value.ToString()); diff --git a/src/Discord.Net.Serialization/Json/Converters/Primitives.Signed.cs b/src/Discord.Net.Serialization/Json/Converters/Primitives.Signed.cs index 523caf559..dcf0cd946 100644 --- a/src/Discord.Net.Serialization/Json/Converters/Primitives.Signed.cs +++ b/src/Discord.Net.Serialization/Json/Converters/Primitives.Signed.cs @@ -4,7 +4,7 @@ namespace Discord.Serialization.Json.Converters { internal class Int8PropertyConverter : IJsonPropertyConverter { - public sbyte Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public sbyte Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); @@ -12,7 +12,7 @@ namespace Discord.Serialization.Json.Converters throw new SerializationException("Bad input, expected Number or String"); return reader.ParseInt8(); } - public void Write(PropertyMap map, JsonWriter writer, sbyte value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, sbyte value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value); @@ -23,7 +23,7 @@ namespace Discord.Serialization.Json.Converters internal class Int16PropertyConverter : IJsonPropertyConverter { - public short Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public short Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); @@ -31,7 +31,7 @@ namespace Discord.Serialization.Json.Converters throw new SerializationException("Bad input, expected Number or String"); return reader.ParseInt16(); } - public void Write(PropertyMap map, JsonWriter writer, short value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, short value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value); @@ -42,7 +42,7 @@ namespace Discord.Serialization.Json.Converters internal class Int32PropertyConverter : IJsonPropertyConverter { - public int Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public int Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); @@ -50,7 +50,7 @@ namespace Discord.Serialization.Json.Converters throw new SerializationException("Bad input, expected Number or String"); return reader.ParseInt32(); } - public void Write(PropertyMap map, JsonWriter writer, int value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, int value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value); @@ -61,7 +61,7 @@ namespace Discord.Serialization.Json.Converters internal class Int64PropertyConverter : IJsonPropertyConverter { - public long Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public long Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); @@ -69,7 +69,7 @@ namespace Discord.Serialization.Json.Converters throw new SerializationException("Bad input, expected Number or String"); return reader.ParseInt64(); } - public void Write(PropertyMap map, JsonWriter writer, long value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, long value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value.ToString()); diff --git a/src/Discord.Net.Serialization/Json/Converters/Primitives.String.cs b/src/Discord.Net.Serialization/Json/Converters/Primitives.String.cs index 945df43dd..8781d8a3c 100644 --- a/src/Discord.Net.Serialization/Json/Converters/Primitives.String.cs +++ b/src/Discord.Net.Serialization/Json/Converters/Primitives.String.cs @@ -23,7 +23,7 @@ namespace Discord.Serialization.Json.Converters internal class StringPropertyConverter : IJsonPropertyConverter { - public string Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public string Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); @@ -31,7 +31,7 @@ namespace Discord.Serialization.Json.Converters throw new SerializationException("Bad input, expected String"); return reader.ParseString(); } - public void Write(PropertyMap map, JsonWriter writer, string value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, string value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value); diff --git a/src/Discord.Net.Serialization/Json/Converters/Primitives.Unsigned.cs b/src/Discord.Net.Serialization/Json/Converters/Primitives.Unsigned.cs index 88eef695d..cd1267abb 100644 --- a/src/Discord.Net.Serialization/Json/Converters/Primitives.Unsigned.cs +++ b/src/Discord.Net.Serialization/Json/Converters/Primitives.Unsigned.cs @@ -4,7 +4,7 @@ namespace Discord.Serialization.Json.Converters { internal class UInt8PropertyConverter : IJsonPropertyConverter { - public byte Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public byte Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); @@ -12,7 +12,7 @@ namespace Discord.Serialization.Json.Converters throw new SerializationException("Bad input, expected Number or String"); return reader.ParseUInt8(); } - public void Write(PropertyMap map, JsonWriter writer, byte value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, byte value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value); @@ -23,7 +23,7 @@ namespace Discord.Serialization.Json.Converters internal class UInt16PropertyConverter : IJsonPropertyConverter { - public ushort Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public ushort Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); @@ -31,7 +31,7 @@ namespace Discord.Serialization.Json.Converters throw new SerializationException("Bad input, expected Number or String"); return reader.ParseUInt16(); } - public void Write(PropertyMap map, JsonWriter writer, ushort value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, ushort value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value); @@ -42,7 +42,7 @@ namespace Discord.Serialization.Json.Converters internal class UInt32PropertyConverter : IJsonPropertyConverter { - public uint Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public uint Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); @@ -50,7 +50,7 @@ namespace Discord.Serialization.Json.Converters throw new SerializationException("Bad input, expected Number or String"); return reader.ParseUInt32(); } - public void Write(PropertyMap map, JsonWriter writer, uint value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, uint value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value); @@ -61,7 +61,7 @@ namespace Discord.Serialization.Json.Converters internal class UInt64PropertyConverter : IJsonPropertyConverter { - public ulong Read(PropertyMap map, JsonReader reader, bool isTopLevel) + public ulong Read(PropertyMap map, ref JsonReader reader, bool isTopLevel) { if (isTopLevel) reader.Read(); @@ -69,7 +69,7 @@ namespace Discord.Serialization.Json.Converters throw new SerializationException("Bad input, expected Number or String"); return reader.ParseUInt64(); } - public void Write(PropertyMap map, JsonWriter writer, ulong value, bool isTopLevel) + public void Write(PropertyMap map, ref JsonWriter writer, ulong value, bool isTopLevel) { if (isTopLevel) writer.WriteAttribute(map.Key, value.ToString()); diff --git a/src/Discord.Net.Serialization/Json/IJsonPropertyConverter.cs b/src/Discord.Net.Serialization/Json/IJsonPropertyConverter.cs index 1a9709b7a..08adc28e9 100644 --- a/src/Discord.Net.Serialization/Json/IJsonPropertyConverter.cs +++ b/src/Discord.Net.Serialization/Json/IJsonPropertyConverter.cs @@ -4,7 +4,7 @@ namespace Discord.Serialization.Json { public interface IJsonPropertyConverter { - T Read(PropertyMap map, JsonReader reader, bool isTopLevel); - void Write(PropertyMap map, JsonWriter writer, T value, bool isTopLevel); + T Read(PropertyMap map, ref JsonReader reader, bool isTopLevel); + void Write(PropertyMap map, ref JsonWriter writer, T value, bool isTopLevel); } } diff --git a/src/Discord.Net.Serialization/Json/IJsonPropertyMap.cs b/src/Discord.Net.Serialization/Json/IJsonPropertyMap.cs index eab665bde..3ebc05b06 100644 --- a/src/Discord.Net.Serialization/Json/IJsonPropertyMap.cs +++ b/src/Discord.Net.Serialization/Json/IJsonPropertyMap.cs @@ -6,7 +6,7 @@ namespace Discord.Serialization { string Key { get; } - void Write(TModel model, JsonWriter writer); - void Read(TModel model, JsonReader reader); + void Write(TModel model, ref JsonWriter writer); + void Read(TModel model, ref JsonReader reader); } } diff --git a/src/Discord.Net.Serialization/Json/JsonFormat.cs b/src/Discord.Net.Serialization/Json/JsonFormat.cs index f5603becf..3126d0814 100644 --- a/src/Discord.Net.Serialization/Json/JsonFormat.cs +++ b/src/Discord.Net.Serialization/Json/JsonFormat.cs @@ -70,14 +70,14 @@ namespace Discord.Serialization.Json if (!reader.Read()) return null; var converter = _converters.Get() as IJsonPropertyConverter; - return converter.Read(null, reader, false); + return converter.Read(null, ref reader, false); } protected internal override void Write(Serializer serializer, ArrayFormatter stream, TModel model) { var writer = new JsonWriter(stream); var converter = _converters.Get() as IJsonPropertyConverter; - converter.Write(null, writer, model, false); + converter.Write(null, ref writer, model, false); } } } diff --git a/src/Discord.Net.Serialization/Json/JsonPropertyMap.cs b/src/Discord.Net.Serialization/Json/JsonPropertyMap.cs index 2fa374270..ce57bfd54 100644 --- a/src/Discord.Net.Serialization/Json/JsonPropertyMap.cs +++ b/src/Discord.Net.Serialization/Json/JsonPropertyMap.cs @@ -19,16 +19,16 @@ namespace Discord.Serialization.Json _setFunc = propInfo.SetMethod.CreateDelegate(typeof(Action)) as Action; } - public void Write(TModel model, JsonWriter writer) + public void Write(TModel model, ref JsonWriter writer) { var value = _getFunc(model); if (value == null && ExcludeNull) return; - _converter.Write(this, writer, value, true); + _converter.Write(this, ref writer, value, true); } - public void Read(TModel model, JsonReader reader) + public void Read(TModel model, ref JsonReader reader) { - var value = _converter.Read(this, reader, true); + var value = _converter.Read(this, ref reader, true); _setFunc(model, value); } }