private static void ReadBasic(ref int length, ref Basic basic, MessagePackDeserializer deserializer) { if (length >= 8) { length -= 8; basic.UInt64_0 = deserializer.Read8(); return; } if (length >= 4) { length -= 4; basic.UInt32_0 = deserializer.Read4(); if (length >= 2) { length -= 2; basic.UInt16_2 = deserializer.Read2(); if (length >= 1) { length -= 1; basic.Byte_6 = deserializer.Read(); } } return; } if (length >= 2) { length -= 2; basic.UInt16_0 = deserializer.Read2(); if (length >= 1) { length -= 1; basic.Byte_2 = deserializer.Read(); } return; } if (length >= 1) { length -= 1; basic.Byte_0 = deserializer.Read(); } }
internal MessagePackBinary(int length, MessagePackDeserializer deserializer) { Length = length; ReadBasic(ref length, ref Basic1, deserializer); ReadBasic(ref length, ref Basic2, deserializer); ReadBasic(ref length, ref Basic3, deserializer); ReadBasic(ref length, ref Basic4, deserializer); if (length >= 1) { Extended = new byte[length]; var index = 0; for (; length >= 8; length -= 8, index += 8) { Unsafe.As <byte, ulong>(ref Extended[index]) = deserializer.Read8(); } for (; length > 0; --length, ++index) { Extended[index] = deserializer.Read(); } } }