Пример #1
0
        public Version Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
        {
            string val = reader.ReadString();

            if (val == null)
            {
                return(default);
Пример #2
0
        public BssomNumber Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
        {
            if (reader.TryReadNull())
            {
                return(null);
            }

            return(BssomObjectFormatterHelper.DeserializePrimitiveWithBssomPrimitiveType(ref reader));
        }
Пример #3
0
        public void DeserializeTestWithT_IBssomBuffer_Type_Context()
        {
            int val     = int.MaxValue;
            var buf     = BssomSerializer.Serialize(val);
            var sbuf    = new SimpleBuffer(buf);
            var context = new BssomDeserializeContext();

            ((int)BssomSerializer.Deserialize(ref context, sbuf, typeof(int))).Is(int.MaxValue);
        }
Пример #4
0
        public void DeserializeTestWithStream_Type_Context()
        {
            int val     = int.MaxValue;
            var context = new BssomDeserializeContext();
            var buf     = BssomSerializer.Serialize(val);
            var stream  = new FakePipeStream(buf);

            ((int)BssomSerializer.Deserialize(ref context, stream, typeof(int))).Is(int.MaxValue);
            stream.CurrentCursor().Is(5);
        }
Пример #5
0
        public unsafe string Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
        {
            if (reader.TryReadNull())
            {
                return(null);
            }

            reader.EnsureType(BssomType.StringCode);
            int      dataLen = reader.ReadVariableNumber();
            ref byte refb    = ref reader.BssomBuffer.ReadRef((int)dataLen);
Пример #6
0
        public void DeserializeTestWithT_ReadSize_Type_Context()
        {
            int val = int.MaxValue;
            var buf = new byte[7];

            BssomSerializer.Serialize(ref buf, 1, val);
            var context = new BssomDeserializeContext();

            ((int)BssomSerializer.Deserialize(ref context, buf, 1, out int readSize, typeof(int))).Is(int.MaxValue);
            readSize.Is(5);
        }
Пример #7
0
        public BssomGuid Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
        {
            object val = BssomObjectFormatterHelper.DeserializeBssObject(ref reader, ref context, true);

            if (val == null)
            {
                return(null);
            }

            return((BssomGuid)val);
        }
Пример #8
0
        public Map1DataSource(BssomReader reader, BssomDeserializeContext context, bool isOnlyReadFieldOffset = false)
        {
            _reader      = reader;
            _context     = context;
            KeyFormatter = context.Option.FormatterResolver.GetFormatterWithVerify <TKey>();
            if (!isOnlyReadFieldOffset)
            {
                ValueFormatter = context.Option.FormatterResolver.GetFormatterWithVerify <TValue>();
            }

            ReadPosition = reader.Position;
            int size = reader.ReadVariableNumber();

            EndPosition = reader.Position + size;
            Count       = reader.ReadVariableNumber();
        }
Пример #9
0
 public string Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
 {
     return(reader.ReadString());
 }
 public Int64 Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
 {
     return(reader.ReadInt64());
 }
Пример #11
0
 public T Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
 {
     return(deserializer(ref reader, ref context));
 }
 public Decimal Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
 {
     return(reader.ReadDecimal());
 }
 public Guid Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
 {
     return(reader.ReadGuid());
 }
 public Boolean Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
 {
     return(reader.ReadBoolean());
 }
 public Char Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
 {
     return(reader.ReadChar());
 }
Пример #16
0
 public BssomValue Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
 {
     return((BssomValue)BssomObjectFormatterHelper.DeserializeBssObject(ref reader, ref context, true));
 }
 public Double Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
 {
     return(reader.ReadFloat64());
 }
Пример #18
0
 public SByte[] Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
 {
     if (reader.TryReadNullWithEnsureArray1BuildInType(BssomType.Int8Code))
     {
         return(default);
Пример #19
0
 public int Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
 {
     return(PrimitiveResolver.Instance.GetFormatter <int>().Deserialize(ref reader, ref context) + 1);
 }
Пример #20
0
        public static object DeserializeBssObject(ref BssomReader reader, ref BssomDeserializeContext context,
                                                  bool isPriorityToDeserializeObjectAsBssomValue)
        {
            byte type = reader.SkipBlankCharacterAndPeekBssomType();

            switch (type)
            {
            case BssomType.NullCode:
                reader.BssomBuffer.SeekWithOutVerify(1, BssomSeekOrgin.Current);
                if (isPriorityToDeserializeObjectAsBssomValue)
                {
                    return(BssomNull.Value);
                }

                return(null);

            case BssomType.BooleanCode:
                reader.BssomBuffer.SeekWithOutVerify(1, BssomSeekOrgin.Current);
                if (isPriorityToDeserializeObjectAsBssomValue)
                {
                    return(new BssomBoolean(reader.ReadBooleanWithOutTypeHead()));
                }

                return(reader.ReadBooleanWithOutTypeHead());

            case BssomType.Int32Code:
                reader.BssomBuffer.SeekWithOutVerify(1, BssomSeekOrgin.Current);
                if (isPriorityToDeserializeObjectAsBssomValue)
                {
                    return(new BssomNumber(reader.ReadInt32WithOutTypeHead()));
                }

                return(reader.ReadInt32WithOutTypeHead());

            case BssomType.Int16Code:
                reader.BssomBuffer.SeekWithOutVerify(1, BssomSeekOrgin.Current);
                if (isPriorityToDeserializeObjectAsBssomValue)
                {
                    return(new BssomNumber(reader.ReadInt16WithOutTypeHead()));
                }

                return(reader.ReadInt16WithOutTypeHead());

            case BssomType.Int64Code:
                reader.BssomBuffer.SeekWithOutVerify(1, BssomSeekOrgin.Current);
                if (isPriorityToDeserializeObjectAsBssomValue)
                {
                    return(new BssomNumber(reader.ReadInt64WithOutTypeHead()));
                }

                return(reader.ReadInt64WithOutTypeHead());

            case BssomType.UInt64Code:
                reader.BssomBuffer.SeekWithOutVerify(1, BssomSeekOrgin.Current);
                if (isPriorityToDeserializeObjectAsBssomValue)
                {
                    return(new BssomNumber(reader.ReadUInt64WithOutTypeHead()));
                }

                return(reader.ReadUInt64WithOutTypeHead());

            case BssomType.UInt32Code:
                reader.BssomBuffer.SeekWithOutVerify(1, BssomSeekOrgin.Current);
                if (isPriorityToDeserializeObjectAsBssomValue)
                {
                    return(new BssomNumber(reader.ReadUInt32WithOutTypeHead()));
                }

                return(reader.ReadUInt32WithOutTypeHead());

            case BssomType.UInt16Code:
                reader.BssomBuffer.SeekWithOutVerify(1, BssomSeekOrgin.Current);
                if (isPriorityToDeserializeObjectAsBssomValue)
                {
                    return(new BssomNumber(reader.ReadUInt16WithOutTypeHead()));
                }

                return(reader.ReadUInt16WithOutTypeHead());

            case BssomType.UInt8Code:
                reader.BssomBuffer.SeekWithOutVerify(1, BssomSeekOrgin.Current);
                if (isPriorityToDeserializeObjectAsBssomValue)
                {
                    return(new BssomNumber(reader.ReadUInt8WithOutTypeHead()));
                }

                return(reader.ReadUInt8WithOutTypeHead());

            case BssomType.Int8Code:
                reader.BssomBuffer.SeekWithOutVerify(1, BssomSeekOrgin.Current);
                if (isPriorityToDeserializeObjectAsBssomValue)
                {
                    return(new BssomNumber(reader.ReadInt8WithOutTypeHead()));
                }

                return(reader.ReadInt8WithOutTypeHead());

            case BssomType.Float32Code:
                reader.BssomBuffer.SeekWithOutVerify(1, BssomSeekOrgin.Current);
                if (isPriorityToDeserializeObjectAsBssomValue)
                {
                    return(new BssomFloat(reader.ReadFloat32WithOutTypeHead()));
                }

                return(reader.ReadFloat32WithOutTypeHead());

            case BssomType.Float64Code:
                reader.BssomBuffer.SeekWithOutVerify(1, BssomSeekOrgin.Current);
                if (isPriorityToDeserializeObjectAsBssomValue)
                {
                    return(new BssomFloat(reader.ReadFloat64WithOutTypeHead()));
                }

                return(reader.ReadFloat64WithOutTypeHead());

            case BssomType.TimestampCode:
                reader.BssomBuffer.SeekWithOutVerify(1, BssomSeekOrgin.Current);
                if (isPriorityToDeserializeObjectAsBssomValue)
                {
                    return(new BssomDateTime(reader.ReadStandDateTimeWithOutTypeHead()));
                }

                return(reader.ReadStandDateTimeWithOutTypeHead());

            case BssomType.StringCode:
                reader.BssomBuffer.SeekWithOutVerify(1, BssomSeekOrgin.Current);
                if (isPriorityToDeserializeObjectAsBssomValue)
                {
                    return(new BssomString(reader.ReadStringWithOutTypeHead()));
                }

                return(reader.ReadStringWithOutTypeHead());

            case BssomType.NativeCode:
            {
                reader.BssomBuffer.SeekWithOutVerify(1, BssomSeekOrgin.Current);
                type = reader.ReadBssomType();
                switch (type)
                {
                case NativeBssomType.CharCode:
                    if (isPriorityToDeserializeObjectAsBssomValue)
                    {
                        return(new BssomChar(reader.ReadCharWithOutTypeHead()));
                    }

                    return(reader.ReadCharWithOutTypeHead());

                case NativeBssomType.DecimalCode:
                    if (isPriorityToDeserializeObjectAsBssomValue)
                    {
                        return(new BssomDecimal(reader.ReadDecimalWithOutTypeHead()));
                    }

                    return(reader.ReadDecimalWithOutTypeHead());

                case NativeBssomType.DateTimeCode:
                    if (isPriorityToDeserializeObjectAsBssomValue)
                    {
                        return(new BssomDateTime(reader.ReadNativeDateTimeWithOutTypeHead()));
                    }

                    return(reader.ReadNativeDateTimeWithOutTypeHead());

                case NativeBssomType.GuidCode:
                    if (isPriorityToDeserializeObjectAsBssomValue)
                    {
                        return(new BssomGuid(reader.ReadGuidWithOutTypeHead()));
                    }

                    return(reader.ReadGuidWithOutTypeHead());
                }
            }
            break;

            case BssomType.Array1:
            {
                reader.BssomBuffer.SeekWithOutVerify(1, BssomSeekOrgin.Current);
                byte eleType = reader.ReadBssomType();
                if (eleType != BssomType.NativeCode)
                {
                    reader.BssomBuffer.Seek(-BssomBinaryPrimitives.Array1BuildInTypeCodeSize, BssomSeekOrgin.Current);
                }

                switch (eleType)
                {
                case BssomType.BooleanCode:
                    return(new BssomArray(BooleanListFormatter.Instance.Deserialize(ref reader, ref context), false));

                case BssomType.Int32Code:
                    return(new BssomArray(Int32ListFormatter.Instance.Deserialize(ref reader, ref context), false));

                case BssomType.Int16Code:
                    return(new BssomArray(Int16ListFormatter.Instance.Deserialize(ref reader, ref context), false));

                case BssomType.Int64Code:
                    return(new BssomArray(Int64ListFormatter.Instance.Deserialize(ref reader, ref context), false));

                case BssomType.UInt64Code:
                    return(new BssomArray(UInt64ListFormatter.Instance.Deserialize(ref reader, ref context), false));

                case BssomType.UInt32Code:
                    return(new BssomArray(UInt32ListFormatter.Instance.Deserialize(ref reader, ref context), false));

                case BssomType.UInt16Code:
                    return(new BssomArray(UInt16ListFormatter.Instance.Deserialize(ref reader, ref context), false));

                case BssomType.UInt8Code:
                    return(new BssomArray(UInt8ListFormatter.Instance.Deserialize(ref reader, ref context), false));

                case BssomType.Int8Code:
                    return(new BssomArray(Int8ListFormatter.Instance.Deserialize(ref reader, ref context), false));

                case BssomType.Float32Code:
                    return(new BssomArray(Float32ListFormatter.Instance.Deserialize(ref reader, ref context), false));

                case BssomType.Float64Code:
                    return(new BssomArray(Float64ListFormatter.Instance.Deserialize(ref reader, ref context), false));

                case BssomType.TimestampCode:
                    return(new BssomArray(DateTimeListFormatter.Instance.Deserialize(ref reader, ref context), false));

                case BssomType.NativeCode:
                {
                    type = reader.ReadBssomType();
                    reader.BssomBuffer.Seek(-BssomBinaryPrimitives.Array1NativeTypeCodeSize, BssomSeekOrgin.Current);
                    switch (type)
                    {
                    case NativeBssomType.CharCode:
                        return(new BssomArray(CharListFormatter.Instance.Deserialize(ref reader, ref context), false));

                    case NativeBssomType.DecimalCode:
                        return(new BssomArray(DecimalListFormatter.Instance.Deserialize(ref reader, ref context), false));

                    case NativeBssomType.DateTimeCode:
                        return(new BssomArray(DateTimeListFormatter.Instance.Deserialize(ref reader, ref context), false));

                    case NativeBssomType.GuidCode:
                        return(new BssomArray(GuidListFormatter.Instance.Deserialize(ref reader, ref context), false));
                    }
                    break;
                }
                }
                break;
            }

            case BssomType.Array2:
            {
                reader.BssomBuffer.SeekWithOutVerify(1, BssomSeekOrgin.Current);
                reader.SkipVariableNumber();
                int           count = reader.ReadVariableNumber();
                List <object> ary   = new List <object>(count);
                for (int i = 0; i < count; i++)
                {
                    ary.Add(DeserializeBssObject(ref reader, ref context, isPriorityToDeserializeObjectAsBssomValue));
                }
                return(new BssomArray(ary, false));
            }

            case BssomType.Map1:
            case BssomType.Map2:
            {
                return(new BssomMap(MapFormatterHelper.GenericDictionaryDeserialize <object, object>(ref reader, ref context)));
            }
            }
            throw BssomSerializationOperationException.UnexpectedCodeRead(type, reader.Position);
        }
Пример #21
0
        public static BssMapObjMarshalReader <TKey, TValue> Create(ref BssomReader reader, ref BssomDeserializeContext context, bool isOnlyReadFieldOffset = false)
        {
            BssMapObjMarshalReader <TKey, TValue> apr = new BssMapObjMarshalReader <TKey, TValue>();

            apr._reader  = reader;
            apr._context = context;
            apr.Paras    = BssMapHeadPackInfo.Create(ref reader);
            if (!isOnlyReadFieldOffset)
            {
                apr.ValueFormatter = context.Option.FormatterResolver.GetFormatterWithVerify <TValue>();
            }

            return(apr);
        }
Пример #22
0
 public T?Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
 {
     if (reader.TryReadNull())
     {
         return(default);
Пример #23
0
 public IDictionary Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
 {
     return(MapFormatterHelper.GenericDictionaryDeserialize <object, object>(ref reader, ref context));
 }
Пример #24
0
        public static IMapDataSource <TKey, TValue> Deserialize <TKey, TValue>(ref BssomReader reader, ref BssomDeserializeContext context)
        {
            byte type = reader.SkipBlankCharacterAndReadBssomType();

            if (type == BssomType.NullCode)
            {
                return(default);
Пример #25
0
 public T[] Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
 {
     if (reader.TryReadNullWithEnsureBuildInType(BssomType.Array2))
     {
         return(default);
 public UInt32 Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
 {
     return(reader.ReadUInt32());
 }
Пример #27
0
 public object Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
 {
     return(BssomObjectFormatterHelper.DeserializeBssObject(ref reader, ref context, context.Option.IsPriorityToDeserializeObjectAsBssomValue));
 }
 public SByte Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
 {
     return(reader.ReadInt8());
 }
Пример #29
0
 public _Attribute_Class_3 Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
 {
     return(MapCodeGenResolver.Instance.GetFormatter <_Attribute_Class_3>().Deserialize(ref reader, ref context));
 }
 public Single Deserialize(ref BssomReader reader, ref BssomDeserializeContext context)
 {
     return(reader.ReadFloat32());
 }