Beispiel #1
0
        public override void Write()
        {
            TypeDataWriter w = CreateWriter(LeafType.LF_ARGLIST);

            w.WriteUInt16(NumberOfArguments);
            w.WriteUInt16(0x00);

            foreach (ILeafContainer leaf in ArgumentTypes)
            {
                w.WriteIndexedType(leaf);
            }

            w.WriteHeader();
        }
Beispiel #2
0
        public void Write(PDBFile pdb, Stream stream)
        {
            TypeDataWriter w = new TypeDataWriter(pdb, stream, LeafType.LF_ARGLIST);

            w.WriteUInt16(NumberOfArguments);
            w.WriteUInt16(0x00);

            foreach (ILeafContainer leaf in ArgumentTypes)
            {
                w.WriteIndexedType(leaf);
            }

            w.WriteLeafHeader();
        }
Beispiel #3
0
        public override void Write()
        {
            TypeDataWriter w = CreateWriter(LeafType.LF_VTSHAPE);

            w.WriteUInt16(NumberOfEntries);

            byte data = 0x00;

            for (int i = 0; i < NumberOfEntries; i++)
            {
                byte descr = (byte)Descriptors[i];

                switch (i % 2)
                {
                case 0:
                    data = (byte)(descr & 0xF);
                    break;

                case 1:
                    data = (byte)(((descr << 4) & 0xF) | data);
                    w.WriteByte(data);
                    break;
                }
            }

            w.WriteHeader();
        }
Beispiel #4
0
        public override void Write()
        {
            TypeDataWriter w = CreateWriter(LeafType.LF_USHORT);

            w.WriteUInt16(Value);
            w.WriteHeader();
        }
Beispiel #5
0
        public override void Write()
        {
            TypeDataWriter w = CreateWriter(LeafType.LF_VFUNCTAB);

            w.WriteUInt16(0x00);
            w.WriteIndexedType(PointerType);
            w.WriteHeader();
        }
Beispiel #6
0
        public override void Write()
        {
            TypeDataWriter w = CreateWriter(LeafType.LF_VFTPATH_16t);

            w.WriteUInt16(NumElements);
            w.WriteIndexedType16(Bases);
            w.WriteHeader();
        }
Beispiel #7
0
        public override void Write()
        {
            TypeDataWriter w = CreateWriter(LeafType.LF_ENUMERATE);

            w.WriteUInt16((ushort)Attributes);
            w.WriteVaryingType(Value);
            w.WriteCString(FieldName);
            w.WriteHeader();
        }
Beispiel #8
0
        public override void Write()
        {
            TypeDataWriter w = CreateWriter(LeafType.LF_METHOD);

            w.WriteUInt16(NumberOfOccurrences);
            w.WriteIndexedType(MethodListRecord);
            w.WriteCString(Name);
            w.WriteHeader();
        }
Beispiel #9
0
        public override void Write()
        {
            TypeDataWriter w = CreateWriter(LeafType.LF_NESTTYPE);

            w.WriteUInt16(0x00);
            w.WriteIndexedType(NestedTypeDef);
            w.WriteCString(Name);
            w.WriteHeader();
        }
Beispiel #10
0
        public override void Write()
        {
            TypeDataWriter w = CreateWriter(LeafType.LF_BCLASS);

            w.WriteUInt16((ushort)Attributes);
            w.WriteIndexedType(BaseClassType);
            w.WriteIndexedType(Offset);
            w.WriteHeader();
        }
Beispiel #11
0
        public override void Write()
        {
            TypeDataWriter w = CreateWriter(LeafType.LF_STMEMBER);

            w.WriteUInt16((ushort)Attributes);
            w.WriteIndexedType(TypeRecord);
            w.WriteCString(Name);
            w.WriteHeader();
        }
Beispiel #12
0
        public override void Write()
        {
            TypeDataWriter w = CreateWriter(LeafType.LF_MEMBER);

            w.WriteUInt16((ushort)Attributes);
            w.WriteIndexedType(FieldType);
            w.WriteVaryingType(Offset);
            w.WriteCString(Name);
            w.WriteHeader();
        }
Beispiel #13
0
        public void Write(PDBFile pdb, Stream stream)
        {
            TypeDataWriter w = CreateWriter(LeafType.LF_UNION);

            w.WriteUInt16(NumberOfElements);
            w.Write <TypeProperties>(Properties);
            w.WriteIndexedType(FieldType);
            w.WriteVaryingType(StructSize);
            w.WriteCString(Name);
        }
Beispiel #14
0
        public override void Write()
        {
            TypeDataWriter w = CreateWriter(LeafType.LF_IVBCLASS);

            w.WriteUInt16((ushort)Attributes);
            w.WriteIndexedType(VirtualBaseClassType);
            w.WriteIndexedType(VirtualBasePointerType);
            w.WriteVaryingType(OffsetFromAddress);
            w.WriteVaryingType(OffsetFromTable);
            w.WriteHeader();
        }
Beispiel #15
0
        public override void Write()
        {
            TypeDataWriter w = CreateWriter(LeafType.LF_ENUM);

            w.WriteUInt16(NumElements);
            w.Write <TypeProperties>(Properties);
            w.WriteIndexedType(UnderlyingType);
            w.WriteIndexedType(FieldType);
            w.WriteCString(Name);
            w.WriteHeader();
        }
Beispiel #16
0
        public override void Write()
        {
            TypeDataWriter w = CreateWriter(LeafType.LF_PROCEDURE);

            w.WriteIndexedType(ReturnValueType);
            w.Write <CallingConvention>(CallingConvention);
            w.WriteByte(0x00);
            w.WriteUInt16(NumberOfParameters);
            w.WriteIndexedType(ArgumentListType);
            w.WriteHeader();
        }
Beispiel #17
0
        public override void Write()
        {
            TypeDataWriter w = CreateWriter(LeafType.LF_CLASS);

            w.WriteUInt16(NumberOfElements);
            w.Write <TypeProperties>(FieldProperties);
            w.WriteIndexedType(FieldIndex);
            w.WriteIndexedType(VShapeTableType);
            w.WriteVaryingType(StructSize);
            w.WriteCString(Name);
            w.WriteHeader();
        }
Beispiel #18
0
        public override void Write()
        {
            TypeDataWriter w = CreateWriter(LeafType.LF_MFUNCTION);

            w.WriteIndexedType(ReturnValueType);
            w.WriteIndexedType(ContainingClassType);
            w.WriteIndexedType(ThisPointerType);
            w.Write <CallingConvention>(CallingConvention);
            w.Write <FunctionAttributes>(Attributes);
            w.WriteUInt16(NumberOfParameters);
            w.WriteIndexedType(ArgumentListType);
            w.WriteUInt32(ThisAdjustor);
            w.WriteHeader();
        }
Beispiel #19
0
        public override void Write()
        {
            TypeDataWriter w = CreateWriter(LeafType.LF_METHODLIST);

            w.WriteUInt16((ushort)Attributes);
            w.WriteIndexedType(ProcedureTypeRecord);
            switch (Attributes.MethodProperties)
            {
            case MethodProperties.Intro:
            case MethodProperties.PureIntro:
                w.WriteUInt32(VBaseOffset);
                break;
            }
            w.WriteHeader();
        }