Example #1
0
        private void WriteValue(ResourceTypeCode typeCode, object value, BinaryWriter writer, IFormatter objFormatter)
        {
            switch (typeCode)
            {
            case ResourceTypeCode.Null:
                break;

            case ResourceTypeCode.String:
                writer.Write((string)value);
                break;

            case ResourceTypeCode.Boolean:
                writer.Write((bool)value);
                break;

            case ResourceTypeCode.Char:
                writer.Write((ushort)(char)value);
                break;

            case ResourceTypeCode.Byte:
                writer.Write((byte)value);
                break;

            case ResourceTypeCode.SByte:
                writer.Write((sbyte)value);
                break;

            case ResourceTypeCode.Int16:
                writer.Write((short)value);
                break;

            case ResourceTypeCode.UInt16:
                writer.Write((ushort)value);
                break;

            case ResourceTypeCode.Int32:
                writer.Write((int)value);
                break;

            case ResourceTypeCode.UInt32:
                writer.Write((uint)value);
                break;

            case ResourceTypeCode.Int64:
                writer.Write((long)value);
                break;

            case ResourceTypeCode.UInt64:
                writer.Write((ulong)value);
                break;

            case ResourceTypeCode.Single:
                writer.Write((float)value);
                break;

            case ResourceTypeCode.Double:
                writer.Write((double)value);
                break;

            case ResourceTypeCode.Decimal:
                writer.Write((Decimal)value);
                break;

            case ResourceTypeCode.DateTime:
                long binary = ((DateTime)value).ToBinary();
                writer.Write(binary);
                break;

            case ResourceTypeCode.TimeSpan:
                writer.Write(((TimeSpan)value).Ticks);
                break;

            case ResourceTypeCode.ByteArray:
                byte[] buffer1 = (byte[])value;
                writer.Write(buffer1.Length);
                writer.Write(buffer1, 0, buffer1.Length);
                break;

            case ResourceTypeCode.Stream:
                ResourceWriter.StreamWrapper streamWrapper = (ResourceWriter.StreamWrapper)value;
                if (streamWrapper.m_stream.GetType() == typeof(MemoryStream))
                {
                    MemoryStream memoryStream = (MemoryStream)streamWrapper.m_stream;
                    if (memoryStream.Length > (long)int.MaxValue)
                    {
                        throw new ArgumentException(Environment.GetResourceString("ArgumentOutOfRange_StreamLength"));
                    }
                    int index;
                    // ISSUE: explicit reference operation
                    // ISSUE: variable of a reference type
                    int& origin = @index;
                    int  count;
                    // ISSUE: explicit reference operation
                    // ISSUE: variable of a reference type
                    int& length = @count;
                    memoryStream.InternalGetOriginAndLength(origin, length);
                    byte[] buffer2 = memoryStream.InternalGetBuffer();
                    writer.Write(count);
                    writer.Write(buffer2, index, count);
                    break;
                }
                Stream stream = streamWrapper.m_stream;
                if (stream.Length > (long)int.MaxValue)
                {
                    throw new ArgumentException(Environment.GetResourceString("ArgumentOutOfRange_StreamLength"));
                }
                stream.Position = 0L;
                writer.Write((int)stream.Length);
                byte[] buffer3 = new byte[4096];
                int    count1;
                while ((count1 = stream.Read(buffer3, 0, buffer3.Length)) != 0)
                {
                    writer.Write(buffer3, 0, count1);
                }
                if (!streamWrapper.m_closeAfterWrite)
                {
                    break;
                }
                stream.Close();
                break;

            default:
                objFormatter.Serialize(writer.BaseStream, value);
                break;
            }
        }
        // Token: 0x06002C6C RID: 11372 RVA: 0x000A97FC File Offset: 0x000A79FC
        private void WriteValue(ResourceTypeCode typeCode, object value, BinaryWriter writer, IFormatter objFormatter)
        {
            switch (typeCode)
            {
            case ResourceTypeCode.Null:
                return;

            case ResourceTypeCode.String:
                writer.Write((string)value);
                return;

            case ResourceTypeCode.Boolean:
                writer.Write((bool)value);
                return;

            case ResourceTypeCode.Char:
                writer.Write((ushort)((char)value));
                return;

            case ResourceTypeCode.Byte:
                writer.Write((byte)value);
                return;

            case ResourceTypeCode.SByte:
                writer.Write((sbyte)value);
                return;

            case ResourceTypeCode.Int16:
                writer.Write((short)value);
                return;

            case ResourceTypeCode.UInt16:
                writer.Write((ushort)value);
                return;

            case ResourceTypeCode.Int32:
                writer.Write((int)value);
                return;

            case ResourceTypeCode.UInt32:
                writer.Write((uint)value);
                return;

            case ResourceTypeCode.Int64:
                writer.Write((long)value);
                return;

            case ResourceTypeCode.UInt64:
                writer.Write((ulong)value);
                return;

            case ResourceTypeCode.Single:
                writer.Write((float)value);
                return;

            case ResourceTypeCode.Double:
                writer.Write((double)value);
                return;

            case ResourceTypeCode.Decimal:
                writer.Write((decimal)value);
                return;

            case ResourceTypeCode.DateTime:
            {
                long value2 = ((DateTime)value).ToBinary();
                writer.Write(value2);
                return;
            }

            case ResourceTypeCode.TimeSpan:
                writer.Write(((TimeSpan)value).Ticks);
                return;

            case ResourceTypeCode.ByteArray:
            {
                byte[] array = (byte[])value;
                writer.Write(array.Length);
                writer.Write(array, 0, array.Length);
                return;
            }

            case ResourceTypeCode.Stream:
            {
                ResourceWriter.StreamWrapper streamWrapper = (ResourceWriter.StreamWrapper)value;
                if (streamWrapper.m_stream.GetType() == typeof(MemoryStream))
                {
                    MemoryStream memoryStream = (MemoryStream)streamWrapper.m_stream;
                    if (memoryStream.Length > 2147483647L)
                    {
                        throw new ArgumentException(Environment.GetResourceString("ArgumentOutOfRange_StreamLength"));
                    }
                    int index;
                    int num;
                    memoryStream.InternalGetOriginAndLength(out index, out num);
                    byte[] buffer = memoryStream.InternalGetBuffer();
                    writer.Write(num);
                    writer.Write(buffer, index, num);
                    return;
                }
                else
                {
                    Stream stream = streamWrapper.m_stream;
                    if (stream.Length > 2147483647L)
                    {
                        throw new ArgumentException(Environment.GetResourceString("ArgumentOutOfRange_StreamLength"));
                    }
                    stream.Position = 0L;
                    writer.Write((int)stream.Length);
                    byte[] array2 = new byte[4096];
                    int    count;
                    while ((count = stream.Read(array2, 0, array2.Length)) != 0)
                    {
                        writer.Write(array2, 0, count);
                    }
                    if (streamWrapper.m_closeAfterWrite)
                    {
                        stream.Close();
                        return;
                    }
                    return;
                }
                break;
            }
            }
            objFormatter.Serialize(writer.BaseStream, value);
        }