示例#1
0
        public ClassInfo ReadLibraryId(SerReader analyzer)
        {
            int libraryId = analyzer.reader.ReadInt32();

            analyzer.FixTypeName(analyzer.LibrariesFound[libraryId].Name, Name);
            return(this);
        }
示例#2
0
 public ClassInfo ReadValues(SerReader analyzer)
 {
     //then get additional infos where appropriate
     foreach (MemberInfo member in Members)
     {
         TypeHelper.GetTypeValue(member, member, analyzer);
     }
     return(this);
 }
示例#3
0
 public BinaryArray ReadLengths(SerReader analyzer)
 {
     Lengths = new List <int>(Rank);
     for (int i = 0; i < Rank; i++)
     {
         Lengths.Add(analyzer.reader.ReadInt32());
     }
     return(this);
 }
示例#4
0
        public BinaryArray ReadValues(SerReader analyzer)
        {
            MemberInfo junk = new MemberInfo();

            for (int i = 0; i < Slots; i++)
            {
                TypeHelper.GetTypeValue(this, junk, analyzer);
            }
            return(this);
        }
示例#5
0
 internal ClassInfo ReadMembers(SerReader analyzer)
 {
     ReadObjectId(analyzer);
     Name    = analyzer.ReadMarkString();
     Members = new List <MemberInfo>(analyzer.reader.ReadInt32());
     for (int i = 0; i < Members.Capacity; i++)
     {
         Members.Add(new MemberInfo());
         Members[i].Name           = analyzer.reader.ReadString();
         Members[i].RelevantObject = this;
     }
     return(this);
 }
示例#6
0
        internal ClassInfo ReadTypeInfo(SerReader analyzer)
        {
            //first get binary types
            foreach (MemberInfo member in Members)
            {
                member.BinaryType = (BinaryTypeEnumeration)analyzer.reader.ReadByte();
            }

            //then get additional infos where appropriate
            foreach (MemberInfo member in Members)
            {
                TypeHelper.GetTypeAdditionalInfo(member, analyzer);
            }
            return(this);
        }
示例#7
0
        internal static void GetTypeAdditionalInfo(TypeHoldingThing typeHolder, SerReader analyzer)
        {
            switch (typeHolder.BinaryType)
            {
            case BinaryTypeEnumeration.Primitive:
                typeHolder.PrimitiveType = (PrimitiveTypeEnumeration)analyzer.reader.ReadByte();
                break;

            case BinaryTypeEnumeration.String:
                break;

            case BinaryTypeEnumeration.Object:
                break;

            case BinaryTypeEnumeration.SystemClass:
                typeHolder.TypeInfo          = new ClassTypeInfo();
                typeHolder.TypeInfo.TypeName = analyzer.ReadMarkString();
                break;

            case BinaryTypeEnumeration.Class:
                typeHolder.TypeInfo          = new ClassTypeInfo();
                typeHolder.TypeInfo.TypeName = analyzer.ReadMarkString();
                int libraryId = analyzer.reader.ReadInt32();
                analyzer.FixTypeName(analyzer.LibrariesFound[libraryId].Name, typeHolder.TypeInfo.TypeName);
                break;

            case BinaryTypeEnumeration.ObjectArray:
                break;

            case BinaryTypeEnumeration.StringArray:
                break;

            case BinaryTypeEnumeration.PrimitiveArray:
                typeHolder.PrimitiveType = (PrimitiveTypeEnumeration)analyzer.reader.ReadByte();
                break;
            }
        }
示例#8
0
        internal BinaryArray ReadStruct(SerReader analyzer)
        {
            ReadObjectId(analyzer);
            BinaryArrayTypeEnumeration arrayType = (BinaryArrayTypeEnumeration)analyzer.reader.ReadByte();

            Rank = analyzer.reader.ReadInt32();

            ReadLengths(analyzer);

            if (arrayType == BinaryArrayTypeEnumeration.SingleOffset ||
                arrayType == BinaryArrayTypeEnumeration.JaggedOffset ||
                arrayType == BinaryArrayTypeEnumeration.RectangularOffset)
            {
                LowerBounds = new List <int>(Rank);
                for (int i = 0; i < Rank; i++)
                {
                    LowerBounds.Add(analyzer.reader.ReadInt32());
                }
            }

            BinaryType = (BinaryTypeEnumeration)analyzer.reader.ReadByte();
            TypeHelper.GetTypeAdditionalInfo(this, analyzer);
            return(this);
        }
示例#9
0
 public new BinaryArray ReadObjectId(SerReader analyzer)
 {
     base.ReadObjectId(analyzer);
     return this;
 }
示例#10
0
 public ClassInfo ReadValues(SerReader analyzer)
 {
     //then get additional infos where appropriate
     foreach (MemberInfo member in Members)
     {
         TypeHelper.GetTypeValue(member, member, analyzer);
     }
     return this;
 }
示例#11
0
        internal ClassInfo ReadTypeInfo(SerReader analyzer)
        {
            //first get binary types
            foreach (MemberInfo member in Members)
            {
                member.BinaryType = (BinaryTypeEnumeration)analyzer.reader.ReadByte();
            }

            //then get additional infos where appropriate
            foreach (MemberInfo member in Members)
            {
                TypeHelper.GetTypeAdditionalInfo(member, analyzer);
            }
            return this;
        }
示例#12
0
 internal ClassInfo ReadMembers(SerReader analyzer)
 {
     ReadObjectId(analyzer);
     Name = analyzer.ReadMarkString();
     Members = new List<MemberInfo>(analyzer.reader.ReadInt32());
     for (int i = 0; i < Members.Capacity; i++)
     {
         Members.Add(new MemberInfo());
         Members[i].Name = analyzer.reader.ReadString();
         Members[i].RelevantObject = this;
     }
     return this;
 }
示例#13
0
 public ClassInfo ReadLibraryId(SerReader analyzer)
 {
     int libraryId = analyzer.reader.ReadInt32();
     analyzer.FixTypeName(analyzer.LibrariesFound[libraryId].Name, Name);
     return this;
 }
示例#14
0
 public new ObjectString ReadObjectId(SerReader analyzer)
 {
     base.ReadObjectId(analyzer);
     return this;
 }
示例#15
0
 public new ClassInfo ReadObjectId(SerReader analyzer)
 {
     base.ReadObjectId(analyzer);
     return this;
 }
示例#16
0
 public ObjectString ReadString(SerReader analyzer)
 {
     String = analyzer.ReadAndFixString();
     return this;
 }
示例#17
0
 public ObjectString ReadString(SerReader analyzer)
 {
     String = analyzer.ReadAndFixString();
     return(this);
 }
示例#18
0
 public new ClassInfo ReadObjectId(SerReader analyzer)
 {
     base.ReadObjectId(analyzer);
     return(this);
 }
示例#19
0
 public BinaryArray ReadLengths(SerReader analyzer)
 {
     Lengths = new List<int>(Rank);
     for (int i = 0; i < Rank; i++)
     {
         Lengths.Add(analyzer.reader.ReadInt32());
     }
     return this;
 }
示例#20
0
        internal BinaryArray ReadStruct(SerReader analyzer)
        {
            ReadObjectId(analyzer);
            BinaryArrayTypeEnumeration arrayType = (BinaryArrayTypeEnumeration)analyzer.reader.ReadByte();
            Rank = analyzer.reader.ReadInt32();

            ReadLengths(analyzer);

            if (arrayType == BinaryArrayTypeEnumeration.SingleOffset ||
                    arrayType == BinaryArrayTypeEnumeration.JaggedOffset ||
                    arrayType == BinaryArrayTypeEnumeration.RectangularOffset)
            {
                LowerBounds = new List<int>(Rank);
                for (int i = 0; i < Rank; i++)
                    LowerBounds.Add(analyzer.reader.ReadInt32());
            }

            BinaryType = (BinaryTypeEnumeration)analyzer.reader.ReadByte();
            TypeHelper.GetTypeAdditionalInfo(this, analyzer);
            return this;
        }
示例#21
0
 public new ObjectString ReadObjectId(SerReader analyzer)
 {
     base.ReadObjectId(analyzer);
     return(this);
 }
示例#22
0
 public BinaryArray ReadValues(SerReader analyzer)
 {
     MemberInfo junk = new MemberInfo();
     for (int i = 0; i < Slots; i++)
         TypeHelper.GetTypeValue(this, junk, analyzer);
     return this;
 }
示例#23
0
 public BinaryArray ReadPrimitiveType(SerReader analyzer)
 {
     PrimitiveType = (PrimitiveTypeEnumeration)analyzer.reader.ReadByte();
     return this;
 }
示例#24
0
 internal static void GetTypeAdditionalInfo(TypeHoldingThing typeHolder, SerReader analyzer)
 {
     switch (typeHolder.BinaryType)
     {
         case BinaryTypeEnumeration.Primitive:
             typeHolder.PrimitiveType = (PrimitiveTypeEnumeration)analyzer.reader.ReadByte();
             break;
         case BinaryTypeEnumeration.String:
             break;
         case BinaryTypeEnumeration.Object:
             break;
         case BinaryTypeEnumeration.SystemClass:
             typeHolder.TypeInfo = new ClassTypeInfo();
             typeHolder.TypeInfo.TypeName = analyzer.ReadMarkString();
             break;
         case BinaryTypeEnumeration.Class:
             typeHolder.TypeInfo = new ClassTypeInfo();
             typeHolder.TypeInfo.TypeName = analyzer.ReadMarkString();
             int libraryId = analyzer.reader.ReadInt32();
             analyzer.FixTypeName(analyzer.LibrariesFound[libraryId].Name, typeHolder.TypeInfo.TypeName);
             break;
         case BinaryTypeEnumeration.ObjectArray:
             break;
         case BinaryTypeEnumeration.StringArray:
             break;
         case BinaryTypeEnumeration.PrimitiveArray:
             typeHolder.PrimitiveType = (PrimitiveTypeEnumeration)analyzer.reader.ReadByte();
             break;
     }
 }
示例#25
0
 public new BinaryArray ReadObjectId(SerReader analyzer)
 {
     base.ReadObjectId(analyzer);
     return(this);
 }
示例#26
0
 internal static void GetTypeValue(TypeHoldingThing typeHolder, ValueHoldingThing valueHolder, SerReader analyzer)
 {
     switch (typeHolder.BinaryType)
     {
         case BinaryTypeEnumeration.Primitive:
             switch (typeHolder.PrimitiveType)
             {
                 case PrimitiveTypeEnumeration.Boolean:
                     valueHolder.Value = analyzer.reader.ReadBoolean();
                     break;
                 case PrimitiveTypeEnumeration.Byte:
                     valueHolder.Value = analyzer.reader.ReadByte();
                     break;
                 case PrimitiveTypeEnumeration.Char:
                     valueHolder.Value = analyzer.reader.ReadChar();
                     break;
                 case PrimitiveTypeEnumeration.DateTime:
                     valueHolder.Value = DateTime.FromBinary(analyzer.reader.ReadInt64());
                     break;
                 case PrimitiveTypeEnumeration.Decimal:
                     string decimalValue = analyzer.reader.ReadString();
                     valueHolder.Value = decimal.Parse(decimalValue);
                     break;
                 case PrimitiveTypeEnumeration.Double:
                     valueHolder.Value = analyzer.reader.ReadDouble();
                     break;
                 case PrimitiveTypeEnumeration.Int16:
                     valueHolder.Value = analyzer.reader.ReadInt16();
                     break;
                 case PrimitiveTypeEnumeration.Int32:
                     valueHolder.Value = analyzer.reader.ReadInt32();
                     break;
                 case PrimitiveTypeEnumeration.Int64:
                     valueHolder.Value = analyzer.reader.ReadInt64();
                     break;
                 case PrimitiveTypeEnumeration.Null:
                     valueHolder.Value = null;
                     break;
                 case PrimitiveTypeEnumeration.SByte:
                     valueHolder.Value = analyzer.reader.ReadSByte();
                     break;
                 case PrimitiveTypeEnumeration.Single:
                     valueHolder.Value = analyzer.reader.ReadSingle();
                     break;
                 case PrimitiveTypeEnumeration.String:
                     valueHolder.Value = analyzer.ReadAndFixString();
                     break;
                 case PrimitiveTypeEnumeration.TimeSpan:
                     valueHolder.Value = TimeSpan.FromTicks(analyzer.reader.ReadInt64());
                     break;
                 case PrimitiveTypeEnumeration.UInt16:
                     valueHolder.Value = analyzer.reader.ReadUInt16();
                     break;
                 case PrimitiveTypeEnumeration.UInt32:
                     valueHolder.Value = analyzer.reader.ReadUInt32();
                     break;
                 case PrimitiveTypeEnumeration.UInt64:
                     valueHolder.Value = analyzer.reader.ReadUInt64();
                     break;
             }
             break;
         case BinaryTypeEnumeration.String:
             valueHolder.ValueRefID = analyzer.ParseRecord(typeHolder.RelevantObject);
             break;
         case BinaryTypeEnumeration.Object:
             valueHolder.ValueRefID = analyzer.ParseRecord(typeHolder.RelevantObject);
             break;
         case BinaryTypeEnumeration.SystemClass:
             valueHolder.ValueRefID = analyzer.ParseRecord(typeHolder.RelevantObject);
             break;
         case BinaryTypeEnumeration.Class:
             valueHolder.ValueRefID = analyzer.ParseRecord(typeHolder.RelevantObject);
             break;
         case BinaryTypeEnumeration.ObjectArray:
             valueHolder.ValueRefID = analyzer.ParseRecord(typeHolder.RelevantObject);
             break;
         case BinaryTypeEnumeration.StringArray:
             valueHolder.ValueRefID = analyzer.ParseRecord(typeHolder.RelevantObject);
             break;
         case BinaryTypeEnumeration.PrimitiveArray:
             valueHolder.ValueRefID = analyzer.ParseRecord(typeHolder.RelevantObject);
             break;
     }
 }
示例#27
0
 public BinaryArray ReadPrimitiveType(SerReader analyzer)
 {
     PrimitiveType = (PrimitiveTypeEnumeration)analyzer.reader.ReadByte();
     return(this);
 }
示例#28
0
 public ObjectWithId ReadObjectId(SerReader analyzer)
 {
     ObjectID = analyzer.reader.ReadInt32();
     return(this);
 }
示例#29
0
        internal static void GetTypeValue(TypeHoldingThing typeHolder, ValueHoldingThing valueHolder, SerReader analyzer)
        {
            switch (typeHolder.BinaryType)
            {
            case BinaryTypeEnumeration.Primitive:
                switch (typeHolder.PrimitiveType)
                {
                case PrimitiveTypeEnumeration.Boolean:
                    valueHolder.Value = analyzer.reader.ReadBoolean();
                    break;

                case PrimitiveTypeEnumeration.Byte:
                    valueHolder.Value = analyzer.reader.ReadByte();
                    break;

                case PrimitiveTypeEnumeration.Char:
                    valueHolder.Value = analyzer.reader.ReadChar();
                    break;

                case PrimitiveTypeEnumeration.DateTime:
                    valueHolder.Value = DateTime.FromBinary(analyzer.reader.ReadInt64());
                    break;

                case PrimitiveTypeEnumeration.Decimal:
                    string decimalValue = analyzer.reader.ReadString();
                    valueHolder.Value = decimal.Parse(decimalValue);
                    break;

                case PrimitiveTypeEnumeration.Double:
                    valueHolder.Value = analyzer.reader.ReadDouble();
                    break;

                case PrimitiveTypeEnumeration.Int16:
                    valueHolder.Value = analyzer.reader.ReadInt16();
                    break;

                case PrimitiveTypeEnumeration.Int32:
                    valueHolder.Value = analyzer.reader.ReadInt32();
                    break;

                case PrimitiveTypeEnumeration.Int64:
                    valueHolder.Value = analyzer.reader.ReadInt64();
                    break;

                case PrimitiveTypeEnumeration.Null:
                    valueHolder.Value = null;
                    break;

                case PrimitiveTypeEnumeration.SByte:
                    valueHolder.Value = analyzer.reader.ReadSByte();
                    break;

                case PrimitiveTypeEnumeration.Single:
                    valueHolder.Value = analyzer.reader.ReadSingle();
                    break;

                case PrimitiveTypeEnumeration.String:
                    valueHolder.Value = analyzer.ReadAndFixString();
                    break;

                case PrimitiveTypeEnumeration.TimeSpan:
                    valueHolder.Value = TimeSpan.FromTicks(analyzer.reader.ReadInt64());
                    break;

                case PrimitiveTypeEnumeration.UInt16:
                    valueHolder.Value = analyzer.reader.ReadUInt16();
                    break;

                case PrimitiveTypeEnumeration.UInt32:
                    valueHolder.Value = analyzer.reader.ReadUInt32();
                    break;

                case PrimitiveTypeEnumeration.UInt64:
                    valueHolder.Value = analyzer.reader.ReadUInt64();
                    break;
                }
                break;

            case BinaryTypeEnumeration.String:
                valueHolder.ValueRefID = analyzer.ParseRecord(typeHolder.RelevantObject);
                break;

            case BinaryTypeEnumeration.Object:
                valueHolder.ValueRefID = analyzer.ParseRecord(typeHolder.RelevantObject);
                break;

            case BinaryTypeEnumeration.SystemClass:
                valueHolder.ValueRefID = analyzer.ParseRecord(typeHolder.RelevantObject);
                break;

            case BinaryTypeEnumeration.Class:
                valueHolder.ValueRefID = analyzer.ParseRecord(typeHolder.RelevantObject);
                break;

            case BinaryTypeEnumeration.ObjectArray:
                valueHolder.ValueRefID = analyzer.ParseRecord(typeHolder.RelevantObject);
                break;

            case BinaryTypeEnumeration.StringArray:
                valueHolder.ValueRefID = analyzer.ParseRecord(typeHolder.RelevantObject);
                break;

            case BinaryTypeEnumeration.PrimitiveArray:
                valueHolder.ValueRefID = analyzer.ParseRecord(typeHolder.RelevantObject);
                break;
            }
        }
示例#30
0
 public ObjectWithId ReadObjectId(SerReader analyzer)
 {
     ObjectID = analyzer.reader.ReadInt32();
     return this;
 }