public static bool TryReadNil(MsgPackStream stream) { if (stream.Peek() == FormatCode.Nil) { stream.Skip(1); return(true); } return(false); }
public static void Skip(MsgPackStream stream) { var code = stream.ReadUInt8(); switch (FormatMask.Match(code)) { case FormatMask.PositiveFixInt: return; case FormatMask.NegativeFixInt: return; case FormatMask.FixString: stream.Skip(code & 0x1Fu); return; case FormatMask.FixArray: SkipElements(stream, code & 0xFu); return; case FormatMask.FixMap: SkipElements(stream, 2u * (code & 0xFu)); return; } switch (code) { case FormatCode.Nil: return; case FormatCode.False: return; case FormatCode.True: return; case FormatCode.Int8: stream.Skip(1u); break; case FormatCode.UInt8: stream.Skip(1u); break; case FormatCode.Int16: stream.Skip(2u); break; case FormatCode.UInt16: stream.Skip(2u); break; case FormatCode.Int32: stream.Skip(4u); break; case FormatCode.UInt32: stream.Skip(4u); break; case FormatCode.Int64: stream.Skip(8u); break; case FormatCode.UInt64: stream.Skip(8u); break; case FormatCode.Float32: stream.Skip(4u); break; case FormatCode.Float64: stream.Skip(8u); break; case FormatCode.Str8: stream.Skip(stream.ReadUInt8()); break; case FormatCode.Str16: stream.Skip(stream.ReadUInt16()); break; case FormatCode.Str32: stream.Skip(stream.ReadUInt32()); break; case FormatCode.Bin8: stream.Skip(stream.ReadUInt8()); break; case FormatCode.Bin16: stream.Skip(stream.ReadUInt16()); break; case FormatCode.Bin32: stream.Skip(stream.ReadUInt32()); break; case FormatCode.Array16: SkipElements(stream, stream.ReadUInt16()); break; case FormatCode.Array32: SkipElements(stream, stream.ReadUInt32()); break; case FormatCode.Map16: SkipElements(stream, 2u * stream.ReadUInt16()); break; case FormatCode.Map32: SkipElements(stream, 2u * stream.ReadUInt32()); break; case FormatCode.FixExt1: stream.Skip(2u); break; case FormatCode.FixExt2: stream.Skip(3u); break; case FormatCode.FixExt4: stream.Skip(5u); break; case FormatCode.FixExt8: stream.Skip(9u); break; case FormatCode.FixExt16: stream.Skip(17u); break; case FormatCode.Ext8: stream.Skip(1u + stream.ReadUInt8()); break; case FormatCode.Ext16: stream.Skip(1u + stream.ReadUInt16()); break; case FormatCode.Ext32: stream.Skip(1u + stream.ReadUInt32()); break; default: throw new MsgPackCodeException(code); } }