Пример #1
0
        public static void ReadValue(this ICdlValueWriter writer, BinaryReader stream)
        {
            TypeStorage storage = (TypeStorage)stream.ReadByte();

            switch (storage)
            {
            case TypeStorage.Null:
                writer.SetNull();
                break;

            case TypeStorage.Boolean:
                writer.SetBoolean(stream.ReadBoolean());
                break;

            case TypeStorage.Byte:
                writer.SetByte(stream.ReadByte());
                break;

            case TypeStorage.Int16:
                writer.SetInt16(stream.ReadInt16());
                break;

            case TypeStorage.Int32:
                writer.SetInt32(stream.ReadInt32());
                break;

            case TypeStorage.Int64:
                writer.SetInt64(stream.ReadInt64());
                break;

            case TypeStorage.SByte:
                writer.SetSByte(stream.ReadSByte());
                break;

            case TypeStorage.UInt16:
                writer.SetUInt16(stream.ReadUInt16());
                break;

            case TypeStorage.UInt32:
                writer.SetUInt32(stream.ReadUInt32());
                break;

            case TypeStorage.UInt64:
                writer.SetUInt64(stream.ReadUInt64());
                break;

            case TypeStorage.Float:
                writer.SetFloat(stream.ReadSingle());
                break;

            case TypeStorage.Double:
                writer.SetDouble(stream.ReadDouble());
                break;

            case TypeStorage.Decimal:
                writer.SetDecimal(stream.ReadDecimal());
                break;

            case TypeStorage.DateTime:
                writer.SetDateTime(DateTime.FromBinary(stream.ReadInt64()));
                break;

            case TypeStorage.DateTimeEx:
                writer.SetDateTimeEx(DateTimeEx.FromStream(stream));
                break;

            case TypeStorage.DateEx:
                writer.SetDateEx(DateEx.FromStream(stream));
                break;

            case TypeStorage.TimeEx:
                writer.SetTimeEx(TimeEx.FromStream(stream));
                break;

            case TypeStorage.ByteArray:
            {
                int len = stream.Read7BitEncodedInteger();
                writer.SetByteArray(stream.ReadBytes(len));
            }
            break;

            case TypeStorage.Guid:
                writer.SetGuid(new Guid(stream.ReadBytes(16)));
                break;

            case TypeStorage.String:
                writer.SetString(stream.ReadString());
                break;
            }
        }