Exemple #1
0
        public void WriteVInt64(long value)
        {
            var len = PackUnpack.LengthVInt(value);

            if ((uint)_buf.Length < (uint)len)
            {
                Resize(len);
            }

            PackUnpack.UnsafePackVInt(ref PackUnpack.UnsafeGetAndAdvance(ref _buf, len), value, len);
        }
Exemple #2
0
        public void WriteVInt64(long value)
        {
            var len = PackUnpack.LengthVInt(value);

            if ((uint)Buf.Length < len)
            {
                if (!Resize(len))
                {
                    Span <byte> buf    = stackalloc byte[(int)len];
                    ref var     bufRef = ref MemoryMarshal.GetReference(buf);
                    PackUnpack.UnsafePackVInt(ref bufRef, value, len);
                    WriteBlock(ref bufRef, len);
                    return;
                }
            }
Exemple #3
0
        public void WriteVInt64(long value)
        {
            var len = PackUnpack.LengthVInt(value);

            if (Pos + len > End)
            {
                FlushBuffer();
                if (Pos + len > End)
                {
                    Span <byte> buf = stackalloc byte[len];
                    PackUnpack.UnsafePackVInt(ref MemoryMarshal.GetReference(buf), value, len);
                    WriteBlock(buf);
                    return;
                }
            }

            PackUnpack.UnsafePackVInt(ref Unsafe.AddByteOffset(ref MemoryMarshal.GetReference(Buf.AsSpan()), (IntPtr)Pos), value, len);
            Pos += len;
        }