File indexing completed on 2026-05-10 08:43:45
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEFUNCTIONSIG_H
0010 #define LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEFUNCTIONSIG_H
0011
0012 #include "llvm/DebugInfo/CodeView/TypeIndex.h"
0013 #include "llvm/DebugInfo/CodeView/TypeRecord.h"
0014 #include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"
0015 #include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h"
0016 #include "llvm/DebugInfo/PDB/PDBTypes.h"
0017
0018 namespace llvm {
0019 namespace pdb {
0020
0021 class NativeTypeFunctionSig : public NativeRawSymbol {
0022 protected:
0023 void initialize() override;
0024
0025 public:
0026 NativeTypeFunctionSig(NativeSession &Session, SymIndexId Id,
0027 codeview::TypeIndex TI, codeview::ProcedureRecord Proc);
0028
0029 NativeTypeFunctionSig(NativeSession &Session, SymIndexId Id,
0030 codeview::TypeIndex TI,
0031 codeview::MemberFunctionRecord MemberFunc);
0032
0033 ~NativeTypeFunctionSig() override;
0034
0035 void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields,
0036 PdbSymbolIdField RecurseIdFields) const override;
0037
0038 std::unique_ptr<IPDBEnumSymbols>
0039 findChildren(PDB_SymType Type) const override;
0040
0041 SymIndexId getClassParentId() const override;
0042 PDB_CallingConv getCallingConvention() const override;
0043 uint32_t getCount() const override;
0044 SymIndexId getTypeId() const override;
0045 int32_t getThisAdjust() const override;
0046 bool hasConstructor() const override;
0047 bool isConstType() const override;
0048 bool isConstructorVirtualBase() const override;
0049 bool isCxxReturnUdt() const override;
0050 bool isUnalignedType() const override;
0051 bool isVolatileType() const override;
0052
0053 private:
0054 void initializeArgList(codeview::TypeIndex ArgListTI);
0055
0056 union {
0057 codeview::MemberFunctionRecord MemberFunc;
0058 codeview::ProcedureRecord Proc;
0059 };
0060
0061 SymIndexId ClassParentId = 0;
0062 codeview::TypeIndex Index;
0063 codeview::ArgListRecord ArgList;
0064 bool IsMemberFunction = false;
0065 };
0066
0067 }
0068 }
0069
0070 #endif