Exemplo n.º 1
0
        public static bool TryReadNil(MsgPackStream stream)
        {
            if (stream.Peek() == FormatCode.Nil)
            {
                stream.Skip(1);
                return(true);
            }

            return(false);
        }
Exemplo n.º 2
0
        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);
            }
        }