You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1331 lines
42 KiB
1331 lines
42 KiB
using System; |
|
|
|
namespace MessagePack.Formatters |
|
{ |
|
public sealed class Int16Formatter : IMessagePackFormatter<Int16> |
|
{ |
|
public static readonly Int16Formatter Instance = new Int16Formatter(); |
|
|
|
Int16Formatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Int16 value, IFormatterResolver formatterResolver) |
|
{ |
|
return MessagePackBinary.WriteInt16(ref bytes, offset, value); |
|
} |
|
|
|
public Int16 Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
return MessagePackBinary.ReadInt16(bytes, offset, out readSize); |
|
} |
|
} |
|
|
|
public sealed class NullableInt16Formatter : IMessagePackFormatter<Int16?> |
|
{ |
|
public static readonly NullableInt16Formatter Instance = new NullableInt16Formatter(); |
|
|
|
NullableInt16Formatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Int16? value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.WriteInt16(ref bytes, offset, value.Value); |
|
} |
|
} |
|
|
|
public Int16? Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.ReadInt16(bytes, offset, out readSize); |
|
} |
|
} |
|
} |
|
|
|
public sealed class Int16ArrayFormatter : IMessagePackFormatter<Int16[]> |
|
{ |
|
public static readonly Int16ArrayFormatter Instance = new Int16ArrayFormatter(); |
|
|
|
Int16ArrayFormatter() |
|
{ |
|
|
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Int16[] value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
offset += MessagePackBinary.WriteArrayHeader(ref bytes, offset, value.Length); |
|
for (int i = 0; i < value.Length; i++) |
|
{ |
|
offset += MessagePackBinary.WriteInt16(ref bytes, offset, value[i]); |
|
} |
|
|
|
return offset - startOffset; |
|
} |
|
} |
|
|
|
public Int16[] Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
|
|
var len = MessagePackBinary.ReadArrayHeader(bytes, offset, out readSize); |
|
offset += readSize; |
|
var array = new Int16[len]; |
|
for (int i = 0; i < array.Length; i++) |
|
{ |
|
array[i] = MessagePackBinary.ReadInt16(bytes, offset, out readSize); |
|
offset += readSize; |
|
} |
|
readSize = offset - startOffset; |
|
return array; |
|
} |
|
} |
|
} |
|
|
|
public sealed class Int32Formatter : IMessagePackFormatter<Int32> |
|
{ |
|
public static readonly Int32Formatter Instance = new Int32Formatter(); |
|
|
|
Int32Formatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Int32 value, IFormatterResolver formatterResolver) |
|
{ |
|
return MessagePackBinary.WriteInt32(ref bytes, offset, value); |
|
} |
|
|
|
public Int32 Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
return MessagePackBinary.ReadInt32(bytes, offset, out readSize); |
|
} |
|
} |
|
|
|
public sealed class NullableInt32Formatter : IMessagePackFormatter<Int32?> |
|
{ |
|
public static readonly NullableInt32Formatter Instance = new NullableInt32Formatter(); |
|
|
|
NullableInt32Formatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Int32? value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.WriteInt32(ref bytes, offset, value.Value); |
|
} |
|
} |
|
|
|
public Int32? Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.ReadInt32(bytes, offset, out readSize); |
|
} |
|
} |
|
} |
|
|
|
public sealed class Int32ArrayFormatter : IMessagePackFormatter<Int32[]> |
|
{ |
|
public static readonly Int32ArrayFormatter Instance = new Int32ArrayFormatter(); |
|
|
|
Int32ArrayFormatter() |
|
{ |
|
|
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Int32[] value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
offset += MessagePackBinary.WriteArrayHeader(ref bytes, offset, value.Length); |
|
for (int i = 0; i < value.Length; i++) |
|
{ |
|
offset += MessagePackBinary.WriteInt32(ref bytes, offset, value[i]); |
|
} |
|
|
|
return offset - startOffset; |
|
} |
|
} |
|
|
|
public Int32[] Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
|
|
var len = MessagePackBinary.ReadArrayHeader(bytes, offset, out readSize); |
|
offset += readSize; |
|
var array = new Int32[len]; |
|
for (int i = 0; i < array.Length; i++) |
|
{ |
|
array[i] = MessagePackBinary.ReadInt32(bytes, offset, out readSize); |
|
offset += readSize; |
|
} |
|
readSize = offset - startOffset; |
|
return array; |
|
} |
|
} |
|
} |
|
|
|
public sealed class Int64Formatter : IMessagePackFormatter<Int64> |
|
{ |
|
public static readonly Int64Formatter Instance = new Int64Formatter(); |
|
|
|
Int64Formatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Int64 value, IFormatterResolver formatterResolver) |
|
{ |
|
return MessagePackBinary.WriteInt64(ref bytes, offset, value); |
|
} |
|
|
|
public Int64 Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
return MessagePackBinary.ReadInt64(bytes, offset, out readSize); |
|
} |
|
} |
|
|
|
public sealed class NullableInt64Formatter : IMessagePackFormatter<Int64?> |
|
{ |
|
public static readonly NullableInt64Formatter Instance = new NullableInt64Formatter(); |
|
|
|
NullableInt64Formatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Int64? value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.WriteInt64(ref bytes, offset, value.Value); |
|
} |
|
} |
|
|
|
public Int64? Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.ReadInt64(bytes, offset, out readSize); |
|
} |
|
} |
|
} |
|
|
|
public sealed class Int64ArrayFormatter : IMessagePackFormatter<Int64[]> |
|
{ |
|
public static readonly Int64ArrayFormatter Instance = new Int64ArrayFormatter(); |
|
|
|
Int64ArrayFormatter() |
|
{ |
|
|
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Int64[] value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
offset += MessagePackBinary.WriteArrayHeader(ref bytes, offset, value.Length); |
|
for (int i = 0; i < value.Length; i++) |
|
{ |
|
offset += MessagePackBinary.WriteInt64(ref bytes, offset, value[i]); |
|
} |
|
|
|
return offset - startOffset; |
|
} |
|
} |
|
|
|
public Int64[] Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
|
|
var len = MessagePackBinary.ReadArrayHeader(bytes, offset, out readSize); |
|
offset += readSize; |
|
var array = new Int64[len]; |
|
for (int i = 0; i < array.Length; i++) |
|
{ |
|
array[i] = MessagePackBinary.ReadInt64(bytes, offset, out readSize); |
|
offset += readSize; |
|
} |
|
readSize = offset - startOffset; |
|
return array; |
|
} |
|
} |
|
} |
|
|
|
public sealed class UInt16Formatter : IMessagePackFormatter<UInt16> |
|
{ |
|
public static readonly UInt16Formatter Instance = new UInt16Formatter(); |
|
|
|
UInt16Formatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, UInt16 value, IFormatterResolver formatterResolver) |
|
{ |
|
return MessagePackBinary.WriteUInt16(ref bytes, offset, value); |
|
} |
|
|
|
public UInt16 Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
return MessagePackBinary.ReadUInt16(bytes, offset, out readSize); |
|
} |
|
} |
|
|
|
public sealed class NullableUInt16Formatter : IMessagePackFormatter<UInt16?> |
|
{ |
|
public static readonly NullableUInt16Formatter Instance = new NullableUInt16Formatter(); |
|
|
|
NullableUInt16Formatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, UInt16? value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.WriteUInt16(ref bytes, offset, value.Value); |
|
} |
|
} |
|
|
|
public UInt16? Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.ReadUInt16(bytes, offset, out readSize); |
|
} |
|
} |
|
} |
|
|
|
public sealed class UInt16ArrayFormatter : IMessagePackFormatter<UInt16[]> |
|
{ |
|
public static readonly UInt16ArrayFormatter Instance = new UInt16ArrayFormatter(); |
|
|
|
UInt16ArrayFormatter() |
|
{ |
|
|
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, UInt16[] value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
offset += MessagePackBinary.WriteArrayHeader(ref bytes, offset, value.Length); |
|
for (int i = 0; i < value.Length; i++) |
|
{ |
|
offset += MessagePackBinary.WriteUInt16(ref bytes, offset, value[i]); |
|
} |
|
|
|
return offset - startOffset; |
|
} |
|
} |
|
|
|
public UInt16[] Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
|
|
var len = MessagePackBinary.ReadArrayHeader(bytes, offset, out readSize); |
|
offset += readSize; |
|
var array = new UInt16[len]; |
|
for (int i = 0; i < array.Length; i++) |
|
{ |
|
array[i] = MessagePackBinary.ReadUInt16(bytes, offset, out readSize); |
|
offset += readSize; |
|
} |
|
readSize = offset - startOffset; |
|
return array; |
|
} |
|
} |
|
} |
|
|
|
public sealed class UInt32Formatter : IMessagePackFormatter<UInt32> |
|
{ |
|
public static readonly UInt32Formatter Instance = new UInt32Formatter(); |
|
|
|
UInt32Formatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, UInt32 value, IFormatterResolver formatterResolver) |
|
{ |
|
return MessagePackBinary.WriteUInt32(ref bytes, offset, value); |
|
} |
|
|
|
public UInt32 Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
return MessagePackBinary.ReadUInt32(bytes, offset, out readSize); |
|
} |
|
} |
|
|
|
public sealed class NullableUInt32Formatter : IMessagePackFormatter<UInt32?> |
|
{ |
|
public static readonly NullableUInt32Formatter Instance = new NullableUInt32Formatter(); |
|
|
|
NullableUInt32Formatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, UInt32? value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.WriteUInt32(ref bytes, offset, value.Value); |
|
} |
|
} |
|
|
|
public UInt32? Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.ReadUInt32(bytes, offset, out readSize); |
|
} |
|
} |
|
} |
|
|
|
public sealed class UInt32ArrayFormatter : IMessagePackFormatter<UInt32[]> |
|
{ |
|
public static readonly UInt32ArrayFormatter Instance = new UInt32ArrayFormatter(); |
|
|
|
UInt32ArrayFormatter() |
|
{ |
|
|
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, UInt32[] value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
offset += MessagePackBinary.WriteArrayHeader(ref bytes, offset, value.Length); |
|
for (int i = 0; i < value.Length; i++) |
|
{ |
|
offset += MessagePackBinary.WriteUInt32(ref bytes, offset, value[i]); |
|
} |
|
|
|
return offset - startOffset; |
|
} |
|
} |
|
|
|
public UInt32[] Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
|
|
var len = MessagePackBinary.ReadArrayHeader(bytes, offset, out readSize); |
|
offset += readSize; |
|
var array = new UInt32[len]; |
|
for (int i = 0; i < array.Length; i++) |
|
{ |
|
array[i] = MessagePackBinary.ReadUInt32(bytes, offset, out readSize); |
|
offset += readSize; |
|
} |
|
readSize = offset - startOffset; |
|
return array; |
|
} |
|
} |
|
} |
|
|
|
public sealed class UInt64Formatter : IMessagePackFormatter<UInt64> |
|
{ |
|
public static readonly UInt64Formatter Instance = new UInt64Formatter(); |
|
|
|
UInt64Formatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, UInt64 value, IFormatterResolver formatterResolver) |
|
{ |
|
return MessagePackBinary.WriteUInt64(ref bytes, offset, value); |
|
} |
|
|
|
public UInt64 Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
return MessagePackBinary.ReadUInt64(bytes, offset, out readSize); |
|
} |
|
} |
|
|
|
public sealed class NullableUInt64Formatter : IMessagePackFormatter<UInt64?> |
|
{ |
|
public static readonly NullableUInt64Formatter Instance = new NullableUInt64Formatter(); |
|
|
|
NullableUInt64Formatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, UInt64? value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.WriteUInt64(ref bytes, offset, value.Value); |
|
} |
|
} |
|
|
|
public UInt64? Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.ReadUInt64(bytes, offset, out readSize); |
|
} |
|
} |
|
} |
|
|
|
public sealed class UInt64ArrayFormatter : IMessagePackFormatter<UInt64[]> |
|
{ |
|
public static readonly UInt64ArrayFormatter Instance = new UInt64ArrayFormatter(); |
|
|
|
UInt64ArrayFormatter() |
|
{ |
|
|
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, UInt64[] value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
offset += MessagePackBinary.WriteArrayHeader(ref bytes, offset, value.Length); |
|
for (int i = 0; i < value.Length; i++) |
|
{ |
|
offset += MessagePackBinary.WriteUInt64(ref bytes, offset, value[i]); |
|
} |
|
|
|
return offset - startOffset; |
|
} |
|
} |
|
|
|
public UInt64[] Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
|
|
var len = MessagePackBinary.ReadArrayHeader(bytes, offset, out readSize); |
|
offset += readSize; |
|
var array = new UInt64[len]; |
|
for (int i = 0; i < array.Length; i++) |
|
{ |
|
array[i] = MessagePackBinary.ReadUInt64(bytes, offset, out readSize); |
|
offset += readSize; |
|
} |
|
readSize = offset - startOffset; |
|
return array; |
|
} |
|
} |
|
} |
|
|
|
public sealed class SingleFormatter : IMessagePackFormatter<Single> |
|
{ |
|
public static readonly SingleFormatter Instance = new SingleFormatter(); |
|
|
|
SingleFormatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Single value, IFormatterResolver formatterResolver) |
|
{ |
|
return MessagePackBinary.WriteSingle(ref bytes, offset, value); |
|
} |
|
|
|
public Single Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
return MessagePackBinary.ReadSingle(bytes, offset, out readSize); |
|
} |
|
} |
|
|
|
public sealed class NullableSingleFormatter : IMessagePackFormatter<Single?> |
|
{ |
|
public static readonly NullableSingleFormatter Instance = new NullableSingleFormatter(); |
|
|
|
NullableSingleFormatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Single? value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.WriteSingle(ref bytes, offset, value.Value); |
|
} |
|
} |
|
|
|
public Single? Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.ReadSingle(bytes, offset, out readSize); |
|
} |
|
} |
|
} |
|
|
|
public sealed class SingleArrayFormatter : IMessagePackFormatter<Single[]> |
|
{ |
|
public static readonly SingleArrayFormatter Instance = new SingleArrayFormatter(); |
|
|
|
SingleArrayFormatter() |
|
{ |
|
|
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Single[] value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
offset += MessagePackBinary.WriteArrayHeader(ref bytes, offset, value.Length); |
|
for (int i = 0; i < value.Length; i++) |
|
{ |
|
offset += MessagePackBinary.WriteSingle(ref bytes, offset, value[i]); |
|
} |
|
|
|
return offset - startOffset; |
|
} |
|
} |
|
|
|
public Single[] Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
|
|
var len = MessagePackBinary.ReadArrayHeader(bytes, offset, out readSize); |
|
offset += readSize; |
|
var array = new Single[len]; |
|
for (int i = 0; i < array.Length; i++) |
|
{ |
|
array[i] = MessagePackBinary.ReadSingle(bytes, offset, out readSize); |
|
offset += readSize; |
|
} |
|
readSize = offset - startOffset; |
|
return array; |
|
} |
|
} |
|
} |
|
|
|
public sealed class DoubleFormatter : IMessagePackFormatter<Double> |
|
{ |
|
public static readonly DoubleFormatter Instance = new DoubleFormatter(); |
|
|
|
DoubleFormatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Double value, IFormatterResolver formatterResolver) |
|
{ |
|
return MessagePackBinary.WriteDouble(ref bytes, offset, value); |
|
} |
|
|
|
public Double Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
return MessagePackBinary.ReadDouble(bytes, offset, out readSize); |
|
} |
|
} |
|
|
|
public sealed class NullableDoubleFormatter : IMessagePackFormatter<Double?> |
|
{ |
|
public static readonly NullableDoubleFormatter Instance = new NullableDoubleFormatter(); |
|
|
|
NullableDoubleFormatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Double? value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.WriteDouble(ref bytes, offset, value.Value); |
|
} |
|
} |
|
|
|
public Double? Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.ReadDouble(bytes, offset, out readSize); |
|
} |
|
} |
|
} |
|
|
|
public sealed class DoubleArrayFormatter : IMessagePackFormatter<Double[]> |
|
{ |
|
public static readonly DoubleArrayFormatter Instance = new DoubleArrayFormatter(); |
|
|
|
DoubleArrayFormatter() |
|
{ |
|
|
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Double[] value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
offset += MessagePackBinary.WriteArrayHeader(ref bytes, offset, value.Length); |
|
for (int i = 0; i < value.Length; i++) |
|
{ |
|
offset += MessagePackBinary.WriteDouble(ref bytes, offset, value[i]); |
|
} |
|
|
|
return offset - startOffset; |
|
} |
|
} |
|
|
|
public Double[] Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
|
|
var len = MessagePackBinary.ReadArrayHeader(bytes, offset, out readSize); |
|
offset += readSize; |
|
var array = new Double[len]; |
|
for (int i = 0; i < array.Length; i++) |
|
{ |
|
array[i] = MessagePackBinary.ReadDouble(bytes, offset, out readSize); |
|
offset += readSize; |
|
} |
|
readSize = offset - startOffset; |
|
return array; |
|
} |
|
} |
|
} |
|
|
|
public sealed class BooleanFormatter : IMessagePackFormatter<Boolean> |
|
{ |
|
public static readonly BooleanFormatter Instance = new BooleanFormatter(); |
|
|
|
BooleanFormatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Boolean value, IFormatterResolver formatterResolver) |
|
{ |
|
return MessagePackBinary.WriteBoolean(ref bytes, offset, value); |
|
} |
|
|
|
public Boolean Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
return MessagePackBinary.ReadBoolean(bytes, offset, out readSize); |
|
} |
|
} |
|
|
|
public sealed class NullableBooleanFormatter : IMessagePackFormatter<Boolean?> |
|
{ |
|
public static readonly NullableBooleanFormatter Instance = new NullableBooleanFormatter(); |
|
|
|
NullableBooleanFormatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Boolean? value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.WriteBoolean(ref bytes, offset, value.Value); |
|
} |
|
} |
|
|
|
public Boolean? Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.ReadBoolean(bytes, offset, out readSize); |
|
} |
|
} |
|
} |
|
|
|
public sealed class BooleanArrayFormatter : IMessagePackFormatter<Boolean[]> |
|
{ |
|
public static readonly BooleanArrayFormatter Instance = new BooleanArrayFormatter(); |
|
|
|
BooleanArrayFormatter() |
|
{ |
|
|
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Boolean[] value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
offset += MessagePackBinary.WriteArrayHeader(ref bytes, offset, value.Length); |
|
for (int i = 0; i < value.Length; i++) |
|
{ |
|
offset += MessagePackBinary.WriteBoolean(ref bytes, offset, value[i]); |
|
} |
|
|
|
return offset - startOffset; |
|
} |
|
} |
|
|
|
public Boolean[] Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
|
|
var len = MessagePackBinary.ReadArrayHeader(bytes, offset, out readSize); |
|
offset += readSize; |
|
var array = new Boolean[len]; |
|
for (int i = 0; i < array.Length; i++) |
|
{ |
|
array[i] = MessagePackBinary.ReadBoolean(bytes, offset, out readSize); |
|
offset += readSize; |
|
} |
|
readSize = offset - startOffset; |
|
return array; |
|
} |
|
} |
|
} |
|
|
|
public sealed class ByteFormatter : IMessagePackFormatter<Byte> |
|
{ |
|
public static readonly ByteFormatter Instance = new ByteFormatter(); |
|
|
|
ByteFormatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Byte value, IFormatterResolver formatterResolver) |
|
{ |
|
return MessagePackBinary.WriteByte(ref bytes, offset, value); |
|
} |
|
|
|
public Byte Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
return MessagePackBinary.ReadByte(bytes, offset, out readSize); |
|
} |
|
} |
|
|
|
public sealed class NullableByteFormatter : IMessagePackFormatter<Byte?> |
|
{ |
|
public static readonly NullableByteFormatter Instance = new NullableByteFormatter(); |
|
|
|
NullableByteFormatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Byte? value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.WriteByte(ref bytes, offset, value.Value); |
|
} |
|
} |
|
|
|
public Byte? Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.ReadByte(bytes, offset, out readSize); |
|
} |
|
} |
|
} |
|
|
|
|
|
public sealed class SByteFormatter : IMessagePackFormatter<SByte> |
|
{ |
|
public static readonly SByteFormatter Instance = new SByteFormatter(); |
|
|
|
SByteFormatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, SByte value, IFormatterResolver formatterResolver) |
|
{ |
|
return MessagePackBinary.WriteSByte(ref bytes, offset, value); |
|
} |
|
|
|
public SByte Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
return MessagePackBinary.ReadSByte(bytes, offset, out readSize); |
|
} |
|
} |
|
|
|
public sealed class NullableSByteFormatter : IMessagePackFormatter<SByte?> |
|
{ |
|
public static readonly NullableSByteFormatter Instance = new NullableSByteFormatter(); |
|
|
|
NullableSByteFormatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, SByte? value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.WriteSByte(ref bytes, offset, value.Value); |
|
} |
|
} |
|
|
|
public SByte? Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.ReadSByte(bytes, offset, out readSize); |
|
} |
|
} |
|
} |
|
|
|
public sealed class SByteArrayFormatter : IMessagePackFormatter<SByte[]> |
|
{ |
|
public static readonly SByteArrayFormatter Instance = new SByteArrayFormatter(); |
|
|
|
SByteArrayFormatter() |
|
{ |
|
|
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, SByte[] value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
offset += MessagePackBinary.WriteArrayHeader(ref bytes, offset, value.Length); |
|
for (int i = 0; i < value.Length; i++) |
|
{ |
|
offset += MessagePackBinary.WriteSByte(ref bytes, offset, value[i]); |
|
} |
|
|
|
return offset - startOffset; |
|
} |
|
} |
|
|
|
public SByte[] Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
|
|
var len = MessagePackBinary.ReadArrayHeader(bytes, offset, out readSize); |
|
offset += readSize; |
|
var array = new SByte[len]; |
|
for (int i = 0; i < array.Length; i++) |
|
{ |
|
array[i] = MessagePackBinary.ReadSByte(bytes, offset, out readSize); |
|
offset += readSize; |
|
} |
|
readSize = offset - startOffset; |
|
return array; |
|
} |
|
} |
|
} |
|
|
|
public sealed class CharFormatter : IMessagePackFormatter<Char> |
|
{ |
|
public static readonly CharFormatter Instance = new CharFormatter(); |
|
|
|
CharFormatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Char value, IFormatterResolver formatterResolver) |
|
{ |
|
return MessagePackBinary.WriteChar(ref bytes, offset, value); |
|
} |
|
|
|
public Char Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
return MessagePackBinary.ReadChar(bytes, offset, out readSize); |
|
} |
|
} |
|
|
|
public sealed class NullableCharFormatter : IMessagePackFormatter<Char?> |
|
{ |
|
public static readonly NullableCharFormatter Instance = new NullableCharFormatter(); |
|
|
|
NullableCharFormatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Char? value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.WriteChar(ref bytes, offset, value.Value); |
|
} |
|
} |
|
|
|
public Char? Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.ReadChar(bytes, offset, out readSize); |
|
} |
|
} |
|
} |
|
|
|
public sealed class CharArrayFormatter : IMessagePackFormatter<Char[]> |
|
{ |
|
public static readonly CharArrayFormatter Instance = new CharArrayFormatter(); |
|
|
|
CharArrayFormatter() |
|
{ |
|
|
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, Char[] value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
offset += MessagePackBinary.WriteArrayHeader(ref bytes, offset, value.Length); |
|
for (int i = 0; i < value.Length; i++) |
|
{ |
|
offset += MessagePackBinary.WriteChar(ref bytes, offset, value[i]); |
|
} |
|
|
|
return offset - startOffset; |
|
} |
|
} |
|
|
|
public Char[] Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
|
|
var len = MessagePackBinary.ReadArrayHeader(bytes, offset, out readSize); |
|
offset += readSize; |
|
var array = new Char[len]; |
|
for (int i = 0; i < array.Length; i++) |
|
{ |
|
array[i] = MessagePackBinary.ReadChar(bytes, offset, out readSize); |
|
offset += readSize; |
|
} |
|
readSize = offset - startOffset; |
|
return array; |
|
} |
|
} |
|
} |
|
|
|
public sealed class DateTimeFormatter : IMessagePackFormatter<DateTime> |
|
{ |
|
public static readonly DateTimeFormatter Instance = new DateTimeFormatter(); |
|
|
|
DateTimeFormatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, DateTime value, IFormatterResolver formatterResolver) |
|
{ |
|
return MessagePackBinary.WriteDateTime(ref bytes, offset, value); |
|
} |
|
|
|
public DateTime Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
return MessagePackBinary.ReadDateTime(bytes, offset, out readSize); |
|
} |
|
} |
|
|
|
public sealed class NullableDateTimeFormatter : IMessagePackFormatter<DateTime?> |
|
{ |
|
public static readonly NullableDateTimeFormatter Instance = new NullableDateTimeFormatter(); |
|
|
|
NullableDateTimeFormatter() |
|
{ |
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, DateTime? value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.WriteDateTime(ref bytes, offset, value.Value); |
|
} |
|
} |
|
|
|
public DateTime? Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
return MessagePackBinary.ReadDateTime(bytes, offset, out readSize); |
|
} |
|
} |
|
} |
|
|
|
public sealed class DateTimeArrayFormatter : IMessagePackFormatter<DateTime[]> |
|
{ |
|
public static readonly DateTimeArrayFormatter Instance = new DateTimeArrayFormatter(); |
|
|
|
DateTimeArrayFormatter() |
|
{ |
|
|
|
} |
|
|
|
public int Serialize(ref byte[] bytes, int offset, DateTime[] value, IFormatterResolver formatterResolver) |
|
{ |
|
if (value == null) |
|
{ |
|
return MessagePackBinary.WriteNil(ref bytes, offset); |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
offset += MessagePackBinary.WriteArrayHeader(ref bytes, offset, value.Length); |
|
for (int i = 0; i < value.Length; i++) |
|
{ |
|
offset += MessagePackBinary.WriteDateTime(ref bytes, offset, value[i]); |
|
} |
|
|
|
return offset - startOffset; |
|
} |
|
} |
|
|
|
public DateTime[] Deserialize(byte[] bytes, int offset, IFormatterResolver formatterResolver, out int readSize) |
|
{ |
|
if (MessagePackBinary.IsNil(bytes, offset)) |
|
{ |
|
readSize = 1; |
|
return null; |
|
} |
|
else |
|
{ |
|
var startOffset = offset; |
|
|
|
var len = MessagePackBinary.ReadArrayHeader(bytes, offset, out readSize); |
|
offset += readSize; |
|
var array = new DateTime[len]; |
|
for (int i = 0; i < array.Length; i++) |
|
{ |
|
array[i] = MessagePackBinary.ReadDateTime(bytes, offset, out readSize); |
|
offset += readSize; |
|
} |
|
readSize = offset - startOffset; |
|
return array; |
|
} |
|
} |
|
} |
|
|
|
} |