Пример #1
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            UnderlyingType = r.ReadIndexedType32Lazy();
            Attributes     = new PointerAttributes(r.ReadUInt32());
        }
Пример #2
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            UnderlyingType = r.ReadIndexedType32Lazy();
            Name           = r.ReadCString();
        }
Пример #3
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            NumberOfEntries = r.ReadUInt16();

            //round up 4 bits (descriptor size)
            int numberOfBytes = (int)Math.Ceiling((double)(4 * NumberOfEntries) / 8);

            byte[] descriptorsData = r.ReadBytes(numberOfBytes);

            Descriptors = new VTableShapeDescriptor[NumberOfEntries];

            for (int i = 0; i < NumberOfEntries; i++)
            {
                byte data = descriptorsData[i / 2];
                switch (i % 2)
                {
                case 0:
                    data &= 0xF;
                    break;

                case 1:
                    data = (byte)((data >> 4) & 0xF);
                    break;
                }

                Descriptors[i] = (VTableShapeDescriptor)data;
            }
        }
Пример #4
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            r.ReadUInt16();             //padding
            PointerType = r.ReadIndexedTypeLazy();
        }
Пример #5
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            //// header

            Attributes     = new PointerAttributes16(r.ReadUInt16());
            UnderlyingType = r.ReadIndexedType16Lazy();

            //// body
            switch (Attributes.PointerMode)
            {
            case PointerMode.Pointer:
            case PointerMode.Reference:
                switch (Attributes.PointerType)
                {
                case PointerType.BaseSeg:
                    BaseSegment = r.ReadUInt16();
                    throw new NotImplementedException("LF_REFSYM");
                    break;

                case PointerType.BaseType:
                    BaseType     = r.ReadIndexedType16Lazy();
                    BaseTypeName = r.ReadString16();
                    break;
                }
                break;

            case PointerMode.PointerMember:
            case PointerMode.PointerFunction:
                ContainingClass   = r.ReadIndexedType16Lazy();
                MemberPointerType = r.ReadEnum <MemberPointerType>();
                break;
            }
        }
Пример #6
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            Attributes = new FieldAttributes(r.ReadUInt16());
            TypeRecord = r.ReadIndexedType32Lazy();
            Name       = r.ReadCString();
        }
Пример #7
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            Attributes = new FieldAttributes(r.ReadUInt16());
            Value      = r.ReadVaryingType(out uint ILeafSize);
            FieldName  = r.ReadCString();
        }
Пример #8
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            NumberOfOccurrences = r.ReadUInt16();
            MethodListRecord    = r.ReadIndexedType32Lazy();
            Name = r.ReadCString();
        }
Пример #9
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            Attributes    = new FieldAttributes(r.ReadUInt16());
            BaseClassType = r.ReadIndexedType32Lazy();

            Offset = r.ReadVaryingType(out uint dataSize);
        }
Пример #10
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            UInt16 length = r.ReadUInt16();

            byte[] data = r.ReadBytes((int)length);
            Value = Encoding.ASCII.GetString(data);
        }
Пример #11
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            NumElements    = r.ReadUInt16();
            Properties     = r.ReadFlagsEnum <TypeProperties>();
            UnderlyingType = r.ReadIndexedTypeLazy();
            FieldType      = r.ReadIndexedTypeLazy();
            Name           = r.ReadCString();
        }
Пример #12
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            ReturnValueType   = r.ReadIndexedType32Lazy();
            CallingConvention = r.ReadEnum <CallingConvention>();
            r.ReadByte();             //reserved
            NumberOfParameters = r.ReadUInt16();
            ArgumentListType   = r.ReadIndexedType32Lazy();
        }
Пример #13
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            NumberOfArguments = r.ReadUInt16();
            r.ReadUInt16();             //padding
            ArgumentTypes = Enumerable.Range(1, NumberOfArguments)
                            .Select(_ => r.ReadIndexedType32Lazy())
                            .ToArray();
        }
Пример #14
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            NumberOfElements = r.ReadUInt16();
            Properties       = r.ReadFlagsEnum <TypeProperties>();
            FieldType        = r.ReadIndexedType32Lazy();

            StructSize = r.ReadVaryingType(out uint dataSize);
            Name       = r.ReadCString();
        }
Пример #15
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            ElementType  = r.ReadIndexedTypeLazy <T>();
            IndexingType = r.ReadIndexedTypeLazy <T>();

            Size = r.ReadVaryingType(out uint dataSize);

            Name = r.ReadCString();
        }
Пример #16
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            ReturnValueType     = r.ReadIndexedTypeLazy();
            ContainingClassType = r.ReadIndexedTypeLazy();
            ThisPointerType     = r.ReadIndexedTypeLazy();
            CallingConvention   = r.ReadEnum <CallingConvention>();
            Attributes          = r.ReadFlagsEnum <FunctionAttributes>();
            NumberOfParameters  = r.ReadUInt16();
            ArgumentListType    = r.ReadIndexedTypeLazy();
            ThisAdjustor        = r.ReadUInt32();
        }
Пример #17
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            Attributes             = new FieldAttributes(r.ReadUInt16());
            VirtualBaseClassType   = r.ReadIndexedTypeLazy();
            VirtualBasePointerType = r.ReadIndexedTypeLazy();


            //virtual base pointer offset from address point
            OffsetFromAddress = r.ReadVaryingType(out uint dynSize1);
            //virtual base offset from vbtable
            OffsetFromTable = r.ReadVaryingType(out uint dynSize2);
        }
Пример #18
0
        private IEnumerable <LeafContainerBase> ReadFields()
        {
            TypeDataReader r = CreateReader();

            while (stream.Position + sizeof(UInt16) < stream.Length)
            {
                // We have to read the type directly to increase Stream.Position
                LeafContainerBase leaf = r.ReadTypeDirect(hasSize: false);
                if (leaf == null)
                {
                    yield break;
                }
                yield return(leaf);
            }
        }
Пример #19
0
        private IEnumerable <LeafContainerBase> ReadFields()
        {
            TypeDataReader r = CreateReader();

            while (r.Position + sizeof(UInt16) < r.Length)
            {
                // we need to read the type Directly since we don't know how long it is
                LeafContainerBase leaf = r.ReadTypeDirect(hasSize: false);
                if (leaf == null)
                {
                    yield break;
                }

                yield return(leaf);
            }
        }
Пример #20
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            Attributes          = new FieldAttributes(r.ReadUInt16());
            ProcedureTypeRecord = r.ReadIndexedType32Lazy();

            switch (Attributes.MethodProperties)
            {
            case MethodProperties.Intro:
            case MethodProperties.PureIntro:
                VBaseOffset = r.ReadUInt32();
                break;

            default:
                VBaseOffset = 0;
                break;
            }
        }
Пример #21
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            Referenced = r.ReadIndexedTypeLazy();
        }
Пример #22
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            Value = r.ReadUInt64();
        }
Пример #23
0
        public override void Read()
        {
            TypeDataReader r = CreateReader();

            Value = r.ReadSingle();
        }