예제 #1
0
 private unsafe static void deSerialize(fastCSharp.emit.dataDeSerializer deSerializer, ref fileBlockMember <valueType> value)
 {
     if (deSerializer.CheckNull() == 0)
     {
         value.index.Null();
         value.value = default(valueType);
     }
     else
     {
         byte *read        = deSerializer.Read;
         int   indexCustom = *(int *)read;
         if ((indexCustom & 0x7fffff00) == (emit.pub.PuzzleValue & 0x7fffff00))
         {
             if ((indexCustom & (int)custom.Serialize) == 0)
             {
                 if (value.index.ReSet(*(long *)(read + sizeof(int) * 2), *(int *)(read + sizeof(int))) == 0)
                 {
                     value.index.Custom = 0;
                     value.value        = default(valueType);
                 }
                 deSerializer.Read += sizeof(int) * 2 + sizeof(long);
             }
             else
             {
                 deSerializer.Read += sizeof(int);
                 fastCSharp.emit.dataDeSerializer.typeDeSerializer <valueType> .DeSerialize(deSerializer, ref value.value);
             }
         }
         else
         {
             deSerializer.Error(emit.binaryDeSerializer.deSerializeState.UnknownData);
         }
     }
 }
예제 #2
0
 private unsafe static void deSerialize(fastCSharp.emit.dataDeSerializer deSerializer, ref sessionId value)
 {
     if (deSerializer.VerifyRead(sizeof(ulong) * 4))
     {
         byte *dataStart = deSerializer.Read;
         value.Ticks    = *(ulong *)(dataStart - sizeof(ulong) * 4);
         value.Identity = *(ulong *)(dataStart - sizeof(ulong) * 3);
         value.Low      = *(ulong *)(dataStart - sizeof(ulong) * 2);
         value.High     = *(ulong *)(dataStart - sizeof(ulong));
     }
 }
예제 #3
0
            private static void deSerialize(fastCSharp.emit.dataDeSerializer deSerializer, ref deSerializePool value)
            {
                if (deSerializer.CheckNull() == 0)
                {
                    value.Value = default(valueType);
                }
                else
                {
                    memberMap oldMemberMap = deSerializer.MemberMap;
                    deSerializer.MemberMap = value.MemberMap;
                    try
                    {
                        if (value.Value == null)
                        {
                            valueType poolValue = value.Value = typePool <valueType> .Pop();

                            try
                            {
                                fastCSharp.emit.dataDeSerializer.typeDeSerializer <valueType> .DeSerialize(deSerializer, ref value.Value);
                            }
                            finally
                            {
                                if (poolValue != value.Value)
                                {
                                    typePool <valueType> .PushOnly(poolValue);
                                }
                            }
                        }
                        else
                        {
                            memberMapType parseValue = value.Value;
                            fastCSharp.emit.dataDeSerializer.typeDeSerializer <memberMapType> .DeSerialize(deSerializer, ref parseValue);
                        }
                    }
                    finally
                    {
                        value.MemberMap        = (memberMap <memberMapType>)deSerializer.MemberMap;
                        deSerializer.MemberMap = oldMemberMap;
                    }
                }
            }
예제 #4
0
 private static void deSerialize(fastCSharp.emit.dataDeSerializer deSerializer, ref memberMapValue <valueType> value)
 {
     if (deSerializer.CheckNull() == 0)
     {
         value.Value = default(valueType);
     }
     else
     {
         memberMap oldMemberMap = deSerializer.MemberMap;
         deSerializer.MemberMap = value.MemberMap;
         try
         {
             fastCSharp.emit.dataDeSerializer.typeDeSerializer <valueType> .DeSerialize(deSerializer, ref value.Value);
         }
         finally
         {
             value.MemberMap        = deSerializer.MemberMap;
             deSerializer.MemberMap = oldMemberMap;
         }
     }
 }
예제 #5
0
 private unsafe static void deSerialize(fastCSharp.emit.dataDeSerializer deSerializer, ref cache <valueType> value)
 {
     if (deSerializer.CheckNull() != 0)
     {
         int length = deSerializer.ReadInt();
         if (length == 1)
         {
             fastCSharp.emit.dataDeSerializer.typeDeSerializer <valueType> .DeSerialize(deSerializer, ref value.Value);
         }
         else
         {
             if (fastCSharp.emit.dataDeSerializer.DeSerialize(deSerializer.Read, length, ref value.Value))
             {
                 deSerializer.Read += length;
             }
             else
             {
                 deSerializer.Error(binaryDeSerializer.deSerializeState.Custom);
             }
         }
     }
 }
 /// <summary>
 /// 反序列化
 /// </summary>
 /// <param name="_deSerializer_">对象反序列化器</param>
 public unsafe void DeSerialize(fastCSharp.emit.dataDeSerializer _deSerializer_)
 {
     _deSerializer_.AddPoint(this);
     if (_deSerializer_.CheckMemberCount(1073741855))
     {
         byte *_read_    = _deSerializer_.Read;
         byte *_nullMap_ = _read_;
         _read_ += 4;
         if ((_nullMap_[2 >> 3] & (1 << (2 & 7))) != 0)
         {
             GuidNull = null;
         }
         else
         {
             GuidNull = (*(System.Guid *)_read_);
             _read_  += sizeof(System.Guid);
         }
         if ((_nullMap_[3 >> 3] & (1 << (3 & 7))) != 0)
         {
             DecimalNull = null;
         }
         else
         {
             DecimalNull = (*(decimal *)_read_);
             _read_     += sizeof(decimal);
         }
         {
             Guid    = (*(System.Guid *)_read_);
             _read_ += sizeof(System.Guid);
         }
         {
             Decimal = (*(decimal *)_read_);
             _read_ += sizeof(decimal);
         }
         if ((_nullMap_[4 >> 3] & (1 << (4 & 7))) != 0)
         {
             LongNull = null;
         }
         else
         {
             LongNull = (*(long *)_read_);
             _read_  += sizeof(long);
         }
         {
             Long    = (*(long *)_read_);
             _read_ += sizeof(long);
         }
         if ((_nullMap_[5 >> 3] & (1 << (5 & 7))) != 0)
         {
             DoubleNull = null;
         }
         else
         {
             DoubleNull = (*(double *)_read_);
             _read_    += sizeof(double);
         }
         {
             Double  = (*(double *)_read_);
             _read_ += sizeof(double);
         }
         if ((_nullMap_[6 >> 3] & (1 << (6 & 7))) != 0)
         {
             DateTimeNull = null;
         }
         else
         {
             DateTimeNull = (*(System.DateTime *)_read_);
             _read_      += sizeof(System.DateTime);
         }
         if ((_nullMap_[7 >> 3] & (1 << (7 & 7))) != 0)
         {
             ULongNull = null;
         }
         else
         {
             ULongNull = (*(ulong *)_read_);
             _read_   += sizeof(ulong);
         }
         {
             ULong   = (*(ulong *)_read_);
             _read_ += sizeof(ulong);
         }
         {
             DateTime = (*(System.DateTime *)_read_);
             _read_  += sizeof(System.DateTime);
         }
         if ((_nullMap_[8 >> 3] & (1 << (8 & 7))) != 0)
         {
             IntNull = null;
         }
         else
         {
             IntNull = (*(int *)_read_);
             _read_ += sizeof(int);
         }
         {
             Int     = (*(int *)_read_);
             _read_ += sizeof(int);
         }
         if ((_nullMap_[9 >> 3] & (1 << (9 & 7))) != 0)
         {
             UIntNull = null;
         }
         else
         {
             UIntNull = (*(uint *)_read_);
             _read_  += sizeof(uint);
         }
         if ((_nullMap_[10 >> 3] & (1 << (10 & 7))) != 0)
         {
             FloatNull = null;
         }
         else
         {
             FloatNull = (*(float *)_read_);
             _read_   += sizeof(float);
         }
         {
             Float   = (*(float *)_read_);
             _read_ += sizeof(float);
         }
         {
             UInt    = (*(uint *)_read_);
             _read_ += sizeof(uint);
         }
         {
             UShort  = (*(ushort *)_read_);
             _read_ += sizeof(ushort);
         }
         if ((_nullMap_[11 >> 3] & (1 << (11 & 7))) != 0)
         {
             ShortNull = null;
         }
         else
         {
             ShortNull = (*(short *)_read_);
             _read_   += sizeof(short);
         }
         {
             Short   = (*(short *)_read_);
             _read_ += sizeof(short);
         }
         if ((_nullMap_[12 >> 3] & (1 << (12 & 7))) != 0)
         {
             CharNull = null;
         }
         else
         {
             CharNull = (*(char *)_read_);
             _read_  += sizeof(char);
         }
         if ((_nullMap_[13 >> 3] & (1 << (13 & 7))) != 0)
         {
             UShortNull = null;
         }
         else
         {
             UShortNull = (*(ushort *)_read_);
             _read_    += sizeof(ushort);
         }
         {
             Char    = (*(char *)_read_);
             _read_ += sizeof(char);
         }
         if ((_nullMap_[14 >> 3] & (1 << (14 & 7))) != 0)
         {
             ByteNull = null;
         }
         else
         {
             ByteNull = (*(byte *)_read_);
             _read_  += sizeof(byte);
         }
         if ((_nullMap_[0 >> 3] & (1 << (0 & 7))) == 0)
         {
             BoolNull = null;
         }
         else
         {
             BoolNull = ((_nullMap_[0 >> 3] & (2 << (0 & 7))) != 0);
         }
         {
             Byte    = (*(byte *)_read_);
             _read_ += sizeof(byte);
         }
         if ((_nullMap_[15 >> 3] & (1 << (15 & 7))) != 0)
         {
             SByteNull = null;
         }
         else
         {
             SByteNull = (*(sbyte *)_read_);
             _read_   += sizeof(sbyte);
         }
         {
             SByte   = (*(sbyte *)_read_);
             _read_ += sizeof(sbyte);
         }
         Bool = ((_nullMap_[16 >> 3] & (1 << (16 & 7))) != 0);
         _deSerializer_.Read = _read_ + ((int)(_deSerializer_.Read - _read_) & 3);
         if ((_nullMap_[17 >> 3] & (1 << (17 & 7))) == 0)
         {
             if (!_deSerializer_.MemberClassDeSerialize(ref String))
             {
                 return;
             }
         }
     }
     else
     {
         _deSerializer_.Error(fastCSharp.emit.dataDeSerializer.deSerializeState.MemberMap);
     }
 }
예제 #7
0
 /// <summary>
 /// 反序列化
 /// </summary>
 /// <param name="_deSerializer_">对象反序列化器</param>
 public unsafe void DeSerialize(fastCSharp.emit.dataDeSerializer _deSerializer_)
 {
     #region IF type.IsNull
     _deSerializer_.AddPoint(this);
     #endregion IF type.IsNull
     if (_deSerializer_.CheckMemberCount(@MemberCountVerify))
     {
         #region IF NullMapFixedSize
         byte *_read_ = _deSerializer_.Read;
         #region IF NullMapSize
         byte *_nullMap_ = _read_;
         _read_ += @NullMapSize;
         #endregion IF NullMapSize
         #endregion IF NullMapFixedSize
         #region LOOP Members
         #region NAME FixedDeSerialize
         #region IF MemberType.IsBool
         #region IF MemberType.IsNull
         if ((_nullMap_[@SerializeNullMapIndex >> 3] & (1 << (@SerializeNullMapIndex & 7))) == 0)
         {
             @MemberName = null;
         }
         else
         {
             @MemberName = /*NOTE*/ (FullName)(object)/*NOTE*/ ((_nullMap_[@SerializeNullMapIndex >> 3] & (2 << (@SerializeNullMapIndex & 7))) != 0);
         }
         #endregion IF MemberType.IsNull
         #region NOT MemberType.IsNull
         @MemberName = /*NOTE*/ (FullName)(object)/*NOTE*/ ((_nullMap_[@SerializeNullMapIndex >> 3] & (1 << (@SerializeNullMapIndex & 7))) != 0);
         #endregion NOT MemberType.IsNull
         #endregion IF MemberType.IsBool
         #region NOT MemberType.IsBool
         #region IF SerializeFixedSize
         #region IF MemberType.IsNull
         if ((_nullMap_[@SerializeNullMapIndex >> 3] & (1 << (@SerializeNullMapIndex & 7))) != 0)
         {
             @MemberName = null;
         }
         else
         #endregion IF MemberType.IsNull
         {
             @MemberName = /*IF:MemberType.Type.IsEnum*/ (@MemberType.FullName) /*IF:MemberType.Type.IsEnum*//*NOTE*/ (object) /*NOTE*/ (*(@MemberType.StructNotNullType *)_read_);
             _read_     += sizeof(@MemberType.StructNotNullType);
         }
         #endregion IF SerializeFixedSize
         #endregion NOT MemberType.IsBool
         #endregion NAME FixedDeSerialize
         #endregion LOOP Members
         #region IF NullMapFixedSize
         _deSerializer_.Read = _read_ + ((int)(_deSerializer_.Read - _read_) & 3);
         #endregion IF NullMapFixedSize
         #region LOOP Members
         #region NAME NotFixedDeSerialize
         #region NOT SerializeFixedSize
         #region IF MemberType.IsNull
         if ((_nullMap_[@SerializeNullMapIndex >> 3] & (1 << (@SerializeNullMapIndex & 7))) == 0)
         #endregion IF MemberType.IsNull
         #region IF MemberType.Type.IsValueType
         #region IF MemberType.NullType
         {
             @MemberType.NullType.FullName _value_ = /*NOTE*/ ((int?)(object)/*NOTE*/ @MemberName /*NOTE*/) /*NOTE*/.HasValue ? /*NOTE*/ (MemberType.NullType.FullName)(object)((int?)(object)/*NOTE*/ @MemberName /*NOTE*/) /*NOTE*/.Value : default(@MemberType.NullType.FullName);
             if (_deSerializer_.MemberStructDeSerialize(ref _value_))
             {
                 @MemberName = _value_;
             }
             else
             {
                 return;
             }
         }
         #endregion IF MemberType.NullType
         #region NOT MemberType.NullType
         if (!_deSerializer_.MemberStructDeSerialize(ref @MemberName))
         {
             return;
         }
         #endregion NOT MemberType.NullType
         #endregion IF MemberType.Type.IsValueType
         #region NOT MemberType.Type.IsValueType
         if (!_deSerializer_.MemberClassDeSerialize(ref @MemberName))
         {
             return;
         }
         #endregion NOT MemberType.Type.IsValueType
         #endregion NOT SerializeFixedSize
         #endregion NAME NotFixedDeSerialize
         #endregion LOOP Members
     }
     #region IF Attribute.IsMemberMap
     else if (_deSerializer_.GetMemberMap <@type.FullName>() != null)
     {
         #region IF NullMapSize
         byte *_nullMap_ = _deSerializer_.Read;
         #endregion IF NullMapSize
         #region IF FixedSize
         byte *_read_;
         #region IF NullMapSize
         _read_ = _nullMap_ + @NullMapSize;
         #endregion IF NullMapSize
         #region NOT NullMapSize
         _read_ = _deSerializer_.Read;
         #endregion NOT NullMapSize
         #endregion IF FixedSize
         #region LOOP Members
         if (_deSerializer_.IsMemberMap(@MemberIndex))
         {
             #region FROMNAME FixedDeSerialize
             #endregion FROMNAME FixedDeSerialize
         }
         #endregion LOOP Members
         #region IF FixedSize
         _deSerializer_.Read = _read_ + ((int)(_deSerializer_.Read - _read_) & 3);
         #endregion IF FixedSize
         #region LOOP Members
         if (_deSerializer_.IsMemberMap(@MemberIndex))
         {
             #region FROMNAME NotFixedDeSerialize
             #endregion FROMNAME NotFixedDeSerialize
         }
         #endregion LOOP Members
     }
     #endregion IF Attribute.IsMemberMap
     #region NOT Attribute.IsMemberMap
     else
     {
         _deSerializer_.Error(fastCSharp.emit.dataDeSerializer.deSerializeState.MemberMap);
     }
     #endregion NOT Attribute.IsMemberMap
 }