30 std::unique_ptr<PDBSymbol> RealType)
32 RealType(
std::move(RealType)) {}
42 SymIndexId getTypeId()
const override {
return RealType->getSymIndexId(); }
44 std::unique_ptr<PDBSymbol> RealType;
50 std::unique_ptr<NativeEnumTypes> TypeEnumerator)
51 : Session(Session), TypeEnumerator(
std::move(TypeEnumerator)) {}
53 uint32_t getChildCount()
const override {
54 return TypeEnumerator->getChildCount();
56 std::unique_ptr<PDBSymbol> getChildAtIndex(
uint32_t Index)
const override {
57 return wrap(TypeEnumerator->getChildAtIndex(Index));
59 std::unique_ptr<PDBSymbol> getNext()
override {
60 return wrap(TypeEnumerator->getNext());
63 void reset()
override { TypeEnumerator->reset(); }
66 std::unique_ptr<PDBSymbol>
wrap(std::unique_ptr<PDBSymbol> S)
const {
69 auto NTFA = llvm::make_unique<NativeTypeFunctionArg>(Session, std::move(S));
70 return PDBSymbol::create(Session, std::move(NTFA));
73 std::unique_ptr<NativeEnumTypes> TypeEnumerator;
82 Proc(
std::move(Proc)), Index(Index), IsMemberFunction(
false) {}
88 MemberFunc(
std::move(MemberFunc)), Index(Index), IsMemberFunction(
true) {}
91 if (IsMemberFunction) {
106 cantFail(TypeDeserializer::deserializeAs<ArgListRecord>(CVT, ArgList));
123 if (IsMemberFunction)
134 std::unique_ptr<IPDBEnumSymbols>
137 return llvm::make_unique<NullEnumerator<PDBSymbol>>();
139 auto NET = llvm::make_unique<NativeEnumTypes>(
Session,
141 return std::unique_ptr<IPDBEnumSymbols>(
142 new NativeEnumFunctionArgs(Session, std::move(NET)));
146 if (!IsMemberFunction)
149 return ClassParentId;
174 if (!IsMemberFunction)
184 if (!IsMemberFunction)
188 FunctionOptions::ConstructorWithVirtualBases) !=
void cantFail(Error Err, const char *Msg=nullptr)
Report a fatal error if Err is a failure value.
~NativeTypeFunctionSig() override
int32_t getThisPointerAdjustment() const
Type
MessagePack types as defined in the standard, with the exception of Integer being divided into a sign...
uint32_t getCount() const override
bool isUnalignedType() const override
PDB_CallingConv getCallingConvention() const override
This class represents lattice values for constants.
void initialize() override
NativeTypeFunctionSig(NativeSession &Session, SymIndexId Id, codeview::TypeIndex TI, codeview::ProcedureRecord Proc)
codeview::MemberFunctionRecord MemberFunc
void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields, PdbSymbolIdField RecurseIdFields) const override
codeview::LazyRandomTypeCollection & typeCollection()
static void dump(StringRef Title, SpillInfo const &Spills)
block Block Frequency true
void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields, PdbSymbolIdField RecurseIdFields) const override
Expected< TpiStream & > getPDBTpiStream()
bool isCxxReturnUdt() const override
std::unique_ptr< IPDBEnumSymbols > findChildren(PDB_SymType Type) const override
uint16_t getParameterCount() const
bool isVolatileType() const override
CVType getType(TypeIndex Index) override
TypeIndex getReturnType() const
SymIndexId getTypeId() const override
PDB_SymType
These values correspond to the SymTagEnum enumeration, and are documented here: https://msdn.microsoft.com/en-us/library/bkedss5f.aspx.
bool hasConstructor() const override
void dump(const SparseBitVector< ElementSize > &LHS, raw_ostream &out)
FunctionOptions getOptions() const
The instances of the Type class are immutable: once they are created, they are never changed...
std::vector< TypeIndex > ArgIndices
void dumpSymbolField(raw_ostream &OS, StringRef Name, T Value, int Indent)
void dumpSymbolIdField(raw_ostream &OS, StringRef Name, SymIndexId Value, int Indent, const IPDBSession &Session, PdbSymbolIdField FieldId, PdbSymbolIdField ShowFlags, PdbSymbolIdField RecurseFlags)
SymIndexId getClassParentId() const override
codeview::ProcedureRecord Proc
CallingConvention CallConv
int32_t getThisAdjust() const override
CallingConvention CallConv
TypeIndex getReturnType() const
SymIndexId findSymbolByTypeIndex(codeview::TypeIndex TI)
bool isConstType() const override
LLVMAttributeRef wrap(Attribute Attr)
SymbolCache & getSymbolCache()
FunctionOptions getOptions() const
uint16_t getParameterCount() const
CallingConvention
These values correspond to the CV_call_e enumeration, and are documented at the following locations: ...
This class implements an extremely fast bulk output stream that can only output to a stream...
bool isConstructorVirtualBase() const override