WriteUInt32Variant() private static method

Writes an unsigned 32-bit integer to the stream; supported wire-types: Variant, Fixed32, Fixed64
private static WriteUInt32Variant ( uint value, ProtoWriter writer ) : void
value uint
writer ProtoWriter
return void
Esempio n. 1
0
        /// <summary>
        /// Writes a string to the stream; supported wire-types: String
        /// </summary>
        public static void WriteString(string value, ProtoWriter writer)
        {
            if (writer.wireType != WireType.String)
            {
                throw CreateException(writer);
            }
            if (value == null)
            {
                throw new ArgumentNullException("value");                // written header; now what?
            }
            int len = value.Length;

            if (len == 0)
            {
                WriteUInt32Variant(0, writer);
                writer.wireType = WireType.None;
                return; // just a header
            }
#if MF
            byte[] bytes  = encoding.GetBytes(value);
            int    actual = bytes.Length;
            writer.WriteUInt32Variant((uint)actual);
            writer.Ensure(actual);
            Helpers.BlockCopy(bytes, 0, writer.ioBuffer, writer.ioIndex, actual);
#else
            int predicted = encoding.GetByteCount(value);
            WriteUInt32Variant((uint)predicted, writer);
            DemandSpace(predicted, writer);
            int actual = encoding.GetBytes(value, 0, value.Length, writer.ioBuffer, writer.ioIndex);
            Helpers.DebugAssert(predicted == actual);
#endif
            IncrementedAndReset(actual, writer);
        }
Esempio n. 2
0
        // Token: 0x0600015A RID: 346 RVA: 0x0000DA5C File Offset: 0x0000BC5C
        public static void WriteUInt32(uint value, ProtoWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }
            WireType wireType = writer.wireType;

            if (wireType == WireType.Variant)
            {
                ProtoWriter.WriteUInt32Variant(value, writer);
                writer.wireType = WireType.None;
                return;
            }
            if (wireType == WireType.Fixed64)
            {
                ProtoWriter.WriteInt64((long)value, writer);
                return;
            }
            if (wireType == WireType.Fixed32)
            {
                ProtoWriter.WriteInt32((int)value, writer);
                return;
            }
            throw ProtoWriter.CreateException(writer);
        }
        public static void WriteString(string value, ProtoWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }
            if (writer.wireType != ProtoBuf.WireType.String)
            {
                throw ProtoWriter.CreateException(writer);
            }
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }
            if (value.Length == 0)
            {
                ProtoWriter.WriteUInt32Variant(0, writer);
                writer.wireType = ProtoBuf.WireType.None;
                return;
            }
            int byteCount = ProtoWriter.encoding.GetByteCount(value);

            ProtoWriter.WriteUInt32Variant((uint)byteCount, writer);
            ProtoWriter.DemandSpace(byteCount, writer);
            int bytes = ProtoWriter.encoding.GetBytes(value, 0, value.Length, writer.ioBuffer, writer.ioIndex);

            ProtoWriter.IncrementedAndReset(bytes, writer);
        }
Esempio n. 4
0
        public static void WriteBytes(byte[] data, int offset, int length, ProtoWriter writer)
        {
            if (data == null)
            {
                throw new ArgumentNullException("data");
            }
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }
            switch (writer.wireType)
            {
            case WireType.Fixed64:
                if (length != 8)
                {
                    throw new ArgumentException("length");
                }
                goto IL_D5;

            case WireType.String:
                ProtoWriter.WriteUInt32Variant((uint)length, writer);
                writer.wireType = WireType.None;
                if (length == 0)
                {
                    return;
                }
                if (writer.flushLock != 0 || length <= writer.ioBuffer.Length)
                {
                    goto IL_D5;
                }
                ProtoWriter.Flush(writer);
                writer.dest.Write(data, offset, length);
                writer.position += length;
                return;

            case WireType.Fixed32:
                if (length != 4)
                {
                    throw new ArgumentException("length");
                }
                goto IL_D5;
            }
            throw ProtoWriter.CreateException(writer);
IL_D5:
            ProtoWriter.DemandSpace(length, writer);
            Helpers.BlockCopy(data, offset, writer.ioBuffer, writer.ioIndex, length);
            ProtoWriter.IncrementedAndReset(length, writer);
        }
Esempio n. 5
0
        // Token: 0x060034C3 RID: 13507 RVA: 0x001320A0 File Offset: 0x001304A0
        public static void WriteBytes(byte[] data, int offset, int length, ProtoWriter writer)
        {
            if (data == null)
            {
                throw new ArgumentNullException("data");
            }
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }
            WireType wireType = writer.wireType;

            if (wireType != WireType.Fixed32)
            {
                if (wireType != WireType.Fixed64)
                {
                    if (wireType != WireType.String)
                    {
                        throw ProtoWriter.CreateException(writer);
                    }
                    ProtoWriter.WriteUInt32Variant((uint)length, writer);
                    writer.wireType = WireType.None;
                    if (length == 0)
                    {
                        return;
                    }
                    if (writer.flushLock == 0 && length > writer.ioBuffer.Length)
                    {
                        ProtoWriter.Flush(writer);
                        writer.dest.Write(data, offset, length);
                        writer.position += length;
                        return;
                    }
                }
                else if (length != 8)
                {
                    throw new ArgumentException("length");
                }
            }
            else if (length != 4)
            {
                throw new ArgumentException("length");
            }
            ProtoWriter.DemandSpace(length, writer);
            Helpers.BlockCopy(data, offset, writer.ioBuffer, writer.ioIndex, length);
            ProtoWriter.IncrementedAndReset(length, writer);
        }
        public static void WriteUInt32(uint value, ProtoWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }
            ProtoBuf.WireType wireType = writer.wireType;
            switch (wireType)
            {
            case ProtoBuf.WireType.Variant:
            {
                ProtoWriter.WriteUInt32Variant(value, writer);
                writer.wireType = ProtoBuf.WireType.None;
                return;
            }

            case ProtoBuf.WireType.Fixed64:
            {
                ProtoWriter.WriteInt64((long)value, writer);
                return;
            }

            default:
            {
                if (wireType != ProtoBuf.WireType.Fixed32)
                {
                    break;
                }
                else
                {
                    ProtoWriter.WriteInt32((int)value, writer);
                    return;
                }
            }
            }
            throw ProtoWriter.CreateException(writer);
        }
Esempio n. 7
0
        /// <summary>
        /// Writes a string to the stream; supported wire-types: String
        /// </summary>
        public static void WriteString(string value, ProtoWriter writer)
        {
            if (writer.wireType != WireType.String) throw CreateException(writer);
            if (value == null) throw new ArgumentNullException("value"); // written header; now what?
            int len = value.Length;
            if (len == 0)
            {
                WriteUInt32Variant(0, writer);
                writer.wireType = WireType.None;
                return; // just a header
            }
#if MF
            byte[] bytes = encoding.GetBytes(value);
            int actual = bytes.Length;
            writer.WriteUInt32Variant((uint)actual);
            writer.Ensure(actual);
            Helpers.BlockCopy(bytes, 0, writer.ioBuffer, writer.ioIndex, actual);
#else
            int predicted = encoding.GetByteCount(value);
            WriteUInt32Variant((uint)predicted, writer);
            DemandSpace(predicted, writer);
            int actual = encoding.GetBytes(value, 0, value.Length, writer.ioBuffer, writer.ioIndex);
            Helpers.DebugAssert(predicted == actual);
#endif
            IncrementedAndReset(actual, writer);
        }
        public static void WriteInt32(int value, ProtoWriter writer)
        {
            byte[] numArray;
            int    num;

            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }
            ProtoBuf.WireType wireType = writer.wireType;
            switch (wireType)
            {
            case ProtoBuf.WireType.Variant:
            {
                if (value >= 0)
                {
                    ProtoWriter.WriteUInt32Variant((uint)value, writer);
                    writer.wireType = ProtoBuf.WireType.None;
                    return;
                }
                ProtoWriter.DemandSpace(10, writer);
                numArray          = writer.ioBuffer;
                num               = writer.ioIndex;
                numArray[num]     = (byte)(value | 128);
                numArray[num + 1] = (byte)(value >> 7 | 128);
                numArray[num + 2] = (byte)(value >> 14 | 128);
                numArray[num + 3] = (byte)(value >> 21 | 128);
                numArray[num + 4] = (byte)(value >> 28 | 128);
                int  num1 = 255;
                byte num2 = (byte)num1;
                numArray[num + 8] = (byte)num1;
                byte num3 = num2;
                byte num4 = num3;
                numArray[num + 7] = num3;
                byte num5 = num4;
                byte num6 = num5;
                numArray[num + 6] = num5;
                numArray[num + 5] = num6;
                numArray[num + 9] = 1;
                ProtoWriter.IncrementedAndReset(10, writer);
                return;
            }

            case ProtoBuf.WireType.Fixed64:
            {
                ProtoWriter.DemandSpace(8, writer);
                numArray          = writer.ioBuffer;
                num               = writer.ioIndex;
                numArray[num]     = (byte)value;
                numArray[num + 1] = (byte)(value >> 8);
                numArray[num + 2] = (byte)(value >> 16);
                numArray[num + 3] = (byte)(value >> 24);
                int  num7 = 0;
                byte num8 = (byte)num7;
                numArray[num + 7] = (byte)num7;
                byte num9  = num8;
                byte num10 = num9;
                numArray[num + 6] = num9;
                byte num11 = num10;
                byte num12 = num11;
                numArray[num + 5] = num11;
                numArray[num + 4] = num12;
                ProtoWriter.IncrementedAndReset(8, writer);
                return;
            }

            default:
            {
                if (wireType == ProtoBuf.WireType.Fixed32)
                {
                    break;
                }
                else
                {
                    if (wireType != ProtoBuf.WireType.SignedVariant)
                    {
                        throw ProtoWriter.CreateException(writer);
                    }
                    ProtoWriter.WriteUInt32Variant(ProtoWriter.Zig(value), writer);
                    writer.wireType = ProtoBuf.WireType.None;
                    return;
                }
            }
            }
            ProtoWriter.DemandSpace(4, writer);
            ProtoWriter.WriteInt32ToBuffer(value, writer.ioBuffer, writer.ioIndex);
            ProtoWriter.IncrementedAndReset(4, writer);
        }
        internal static void WriteHeaderCore(int fieldNumber, ProtoBuf.WireType wireType, ProtoWriter writer)
        {
            uint num = (uint)(fieldNumber << 3 | (int)(wireType & (ProtoBuf.WireType.Fixed64 | ProtoBuf.WireType.String | ProtoBuf.WireType.StartGroup | ProtoBuf.WireType.EndGroup | ProtoBuf.WireType.Fixed32)));

            ProtoWriter.WriteUInt32Variant(num, writer);
        }
        public static void WriteBytes(byte[] data, int offset, int length, ProtoWriter writer)
        {
            if (data == null)
            {
                throw new ArgumentNullException("data");
            }
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }
            switch (writer.wireType)
            {
            case ProtoBuf.WireType.Fixed64:
            {
                if (length == 8)
                {
                    break;
                }
                throw new ArgumentException("length");
            }

            case ProtoBuf.WireType.String:
            {
                ProtoWriter.WriteUInt32Variant((uint)length, writer);
                writer.wireType = ProtoBuf.WireType.None;
                if (length == 0)
                {
                    return;
                }
                if (writer.flushLock != 0 || length <= (int)writer.ioBuffer.Length)
                {
                    break;
                }
                ProtoWriter.Flush(writer);
                writer.dest.Write(data, offset, length);
                writer.position += length;
                return;
            }

            case ProtoBuf.WireType.StartGroup:
            case ProtoBuf.WireType.EndGroup:
            {
                throw ProtoWriter.CreateException(writer);
            }

            case ProtoBuf.WireType.Fixed32:
            {
                if (length == 4)
                {
                    break;
                }
                throw new ArgumentException("length");
            }

            default:
            {
                throw ProtoWriter.CreateException(writer);
            }
            }
            ProtoWriter.DemandSpace(length, writer);
            Helpers.BlockCopy(data, offset, writer.ioBuffer, writer.ioIndex, length);
            ProtoWriter.IncrementedAndReset(length, writer);
        }
Esempio n. 11
0
        public static void WriteInt32(int value, ProtoWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }
            WireType wireType = writer.wireType;

            switch (wireType)
            {
            case WireType.Variant:
                if (value >= 0)
                {
                    ProtoWriter.WriteUInt32Variant((uint)value, writer);
                    writer.wireType = WireType.None;
                }
                else
                {
                    ProtoWriter.DemandSpace(10, writer);
                    byte[] array = writer.ioBuffer;
                    int    num   = writer.ioIndex;
                    array[num]     = (byte)(value | 128);
                    array[num + 1] = (byte)(value >> 7 | 128);
                    array[num + 2] = (byte)(value >> 14 | 128);
                    array[num + 3] = (byte)(value >> 21 | 128);
                    array[num + 4] = (byte)(value >> 28 | 128);
                    array[num + 5] = (array[num + 6] = (array[num + 7] = (array[num + 8] = 255)));
                    array[num + 9] = 1;
                    ProtoWriter.IncrementedAndReset(10, writer);
                }
                return;

            case WireType.Fixed64:
            {
                ProtoWriter.DemandSpace(8, writer);
                byte[] array = writer.ioBuffer;
                int    num   = writer.ioIndex;
                array[num]     = (byte)value;
                array[num + 1] = (byte)(value >> 8);
                array[num + 2] = (byte)(value >> 16);
                array[num + 3] = (byte)(value >> 24);
                array[num + 4] = (array[num + 5] = (array[num + 6] = (array[num + 7] = 0)));
                ProtoWriter.IncrementedAndReset(8, writer);
                return;
            }

            case WireType.String:
            case WireType.StartGroup:
            case WireType.EndGroup:
IL_36:
                if (wireType != WireType.SignedVariant)
                {
                    throw ProtoWriter.CreateException(writer);
                }
                ProtoWriter.WriteUInt32Variant(ProtoWriter.Zig(value), writer);
                writer.wireType = WireType.None;
                return;

            case WireType.Fixed32:
                ProtoWriter.DemandSpace(4, writer);
                ProtoWriter.WriteInt32ToBuffer(value, writer.ioBuffer, writer.ioIndex);
                ProtoWriter.IncrementedAndReset(4, writer);
                return;
            }
            goto IL_36;
        }
Esempio n. 12
0
        internal static void WriteHeaderCore(int fieldNumber, WireType wireType, ProtoWriter writer)
        {
            uint value = (uint)(fieldNumber << 3 | (int)(wireType & (WireType)7));

            ProtoWriter.WriteUInt32Variant(value, writer);
        }
Esempio n. 13
0
        // Token: 0x06000160 RID: 352 RVA: 0x0000DAB0 File Offset: 0x0000BCB0
        public static void WriteInt32(int value, ProtoWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }
            WireType wireType = writer.wireType;

            if (wireType <= WireType.Fixed64)
            {
                if (wireType != WireType.Variant)
                {
                    if (wireType == WireType.Fixed64)
                    {
                        ProtoWriter.DemandSpace(8, writer);
                        byte[] array = writer.ioBuffer;
                        int    num   = writer.ioIndex;
                        array[num]     = (byte)value;
                        array[num + 1] = (byte)(value >> 8);
                        array[num + 2] = (byte)(value >> 16);
                        array[num + 3] = (byte)(value >> 24);
                        array[num + 4] = (array[num + 5] = (array[num + 6] = (array[num + 7] = 0)));
                        ProtoWriter.IncrementedAndReset(8, writer);
                        return;
                    }
                }
                else
                {
                    if (value >= 0)
                    {
                        ProtoWriter.WriteUInt32Variant((uint)value, writer);
                        writer.wireType = WireType.None;
                        return;
                    }
                    ProtoWriter.DemandSpace(10, writer);
                    byte[] array = writer.ioBuffer;
                    int    num   = writer.ioIndex;
                    array[num]     = (byte)(value | 128);
                    array[num + 1] = (byte)(value >> 7 | 128);
                    array[num + 2] = (byte)(value >> 14 | 128);
                    array[num + 3] = (byte)(value >> 21 | 128);
                    array[num + 4] = (byte)(value >> 28 | 128);
                    array[num + 5] = (array[num + 6] = (array[num + 7] = (array[num + 8] = byte.MaxValue)));
                    array[num + 9] = 1;
                    ProtoWriter.IncrementedAndReset(10, writer);
                    return;
                }
            }
            else
            {
                if (wireType == WireType.Fixed32)
                {
                    ProtoWriter.DemandSpace(4, writer);
                    ProtoWriter.WriteInt32ToBuffer(value, writer.ioBuffer, writer.ioIndex);
                    ProtoWriter.IncrementedAndReset(4, writer);
                    return;
                }
                if (wireType == WireType.SignedVariant)
                {
                    ProtoWriter.WriteUInt32Variant(ProtoWriter.Zig(value), writer);
                    writer.wireType = WireType.None;
                    return;
                }
            }
            throw ProtoWriter.CreateException(writer);
        }