Beispiel #1
0
        internal static void GetTypeAdditionalInfo(TypeHoldingThing typeHolder, BinarySerializationStreamAnalyzer analyzer)
        {
            switch (typeHolder.BinaryType)
            {
            case BinaryTypeEnumeration.Primitive:
            case BinaryTypeEnumeration.PrimitiveArray:
                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.reader.ReadString();
                break;

            case BinaryTypeEnumeration.Class:
                typeHolder.TypeInfo           = new ClassTypeInfo();
                typeHolder.TypeInfo.TypeName  = analyzer.reader.ReadString();
                typeHolder.TypeInfo.LibraryID = analyzer.ReadID();
                break;

            case BinaryTypeEnumeration.ObjectArray:
                break;

            case BinaryTypeEnumeration.StringArray:
                break;
            }
        }
Beispiel #2
0
        internal BinaryArray(BinarySerializationStreamAnalyzer analyzer)
        {
            ObjectID  = analyzer.ReadID();
            ArrayType = (BinaryArrayTypeEnumeration)analyzer.reader.ReadByte();
            Rank      = analyzer.reader.ReadInt32();

            Lengths = new List <int>(Rank);
            for (int i = 0; i < Rank; i++)
            {
                Lengths.Add(analyzer.reader.ReadInt32());
            }

            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);
        }
Beispiel #3
0
 internal ClassInfo(BinarySerializationStreamAnalyzer analyzer)
 {
     ObjectID = analyzer.ReadID();
     Name     = analyzer.reader.ReadString();
     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;
     }
 }
		internal static void GetTypeAdditionalInfo(TypeHoldingThing typeHolder, BinarySerializationStreamAnalyzer analyzer)
		{
			switch(typeHolder.BinaryType)
			{
				case BinaryTypeEnumeration.Primitive:
				case BinaryTypeEnumeration.PrimitiveArray:
					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.reader.ReadString();
					break;
				case BinaryTypeEnumeration.Class:
					typeHolder.TypeInfo = new ClassTypeInfo();
					typeHolder.TypeInfo.TypeName = analyzer.reader.ReadString();
					typeHolder.TypeInfo.LibraryID = analyzer.ReadID();
					break;
				case BinaryTypeEnumeration.ObjectArray:
					break;
				case BinaryTypeEnumeration.StringArray:
					break;
			}
		}
		internal BinaryArray(BinarySerializationStreamAnalyzer analyzer)
		{
			ObjectID = analyzer.ReadID();
			ArrayType = (BinaryArrayTypeEnumeration)analyzer.reader.ReadByte();
			Rank = analyzer.reader.ReadInt32();

			Lengths = new List<int>(Rank);
			for(int i = 0;i < Rank;i++)
			{
				Lengths.Add(analyzer.reader.ReadInt32());
			}

			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);
		}
		internal ClassInfo(BinarySerializationStreamAnalyzer analyzer)
		{
			ObjectID = analyzer.ReadID();
			Name = analyzer.reader.ReadString();
			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;
			}
		}