void reset() override { Enumerator->reset(); }
- ConcreteSymbolEnumerator<ChildType> *clone() const override {
- std::unique_ptr<IPDBEnumSymbols> WrappedClone(Enumerator->clone());
- return new ConcreteSymbolEnumerator<ChildType>(std::move(WrappedClone));
- }
-
private:
std::unique_ptr<IPDBEnumSymbols> Enumerator;
llvm::Optional<RecordType> getItemAtIndex(uint32_t Index) const override;
bool getNext(RecordType &Record) override;
void reset() override;
- DIADataStream *clone() const override;
private:
CComPtr<IDiaEnumDebugStreamData> StreamData;
ChildTypePtr getChildAtIndex(uint32_t Index) const override;
ChildTypePtr getNext() override;
void reset() override;
- DIAEnumDebugStreams *clone() const override;
private:
CComPtr<IDiaEnumDebugStreams> Enumerator;
ChildTypePtr getChildAtIndex(uint32_t Index) const override;
ChildTypePtr getNext() override;
void reset() override;
- DIAEnumInjectedSources *clone() const override;
private:
const DIASession &Session;
ChildTypePtr getChildAtIndex(uint32_t Index) const override;
ChildTypePtr getNext() override;
void reset() override;
- DIAEnumLineNumbers *clone() const override;
private:
CComPtr<IDiaEnumLineNumbers> Enumerator;
ChildTypePtr getChildAtIndex(uint32_t Index) const override;
ChildTypePtr getNext() override;
void reset() override;
- DIAEnumSectionContribs *clone() const override;
private:
const DIASession &Session;
ChildTypePtr getChildAtIndex(uint32_t Index) const override;
ChildTypePtr getNext() override;
void reset() override;
- DIAEnumSourceFiles *clone() const override;
private:
const DIASession &Session;
std::unique_ptr<PDBSymbol> getChildAtIndex(uint32_t Index) const override;
std::unique_ptr<PDBSymbol> getNext() override;
void reset() override;
- DIAEnumSymbols *clone() const override;
private:
const DIASession &Session;
std::unique_ptr<IPDBTable> getChildAtIndex(uint32_t Index) const override;
std::unique_ptr<IPDBTable> getNext() override;
void reset() override;
- DIAEnumTables *clone() const override;
private:
CComPtr<IDiaEnumTables> Enumerator;
virtual Optional<RecordType> getItemAtIndex(uint32_t Index) const = 0;
virtual bool getNext(RecordType &Record) = 0;
virtual void reset() = 0;
- virtual IPDBDataStream *clone() const = 0;
};
} // end namespace pdb
virtual ChildTypePtr getChildAtIndex(uint32_t Index) const = 0;
virtual ChildTypePtr getNext() = 0;
virtual void reset() = 0;
- virtual MyType *clone() const = 0;
};
} // end namespace pdb
void dump(raw_ostream &OS, int Indent) const override;
- std::unique_ptr<NativeRawSymbol> clone() const override;
-
PDB_SymType getSymTag() const override;
bool isEditAndContinueEnabled() const override;
SymIndexId getLexicalParentId() const override;
std::unique_ptr<PDBSymbol> getChildAtIndex(uint32_t Index) const override;
std::unique_ptr<PDBSymbol> getNext() override;
void reset() override;
- NativeEnumModules *clone() const override;
private:
NativeSession &Session;
std::unique_ptr<PDBSymbol> getChildAtIndex(uint32_t Index) const override;
std::unique_ptr<PDBSymbol> getNext() override;
void reset() override;
- NativeEnumTypes *clone() const override;
private:
NativeEnumTypes(NativeSession &Session,
public:
NativeExeSymbol(NativeSession &Session, SymIndexId Id);
- std::unique_ptr<NativeRawSymbol> clone() const override;
-
std::unique_ptr<IPDBEnumSymbols>
findChildren(PDB_SymType Type) const override;
NativeRawSymbol(NativeSession &PDBSession, PDB_SymType Tag,
SymIndexId SymbolId);
- virtual std::unique_ptr<NativeRawSymbol> clone() const = 0;
-
void dump(raw_ostream &OS, int Indent) const override;
std::unique_ptr<IPDBEnumSymbols>
uint64_t L);
~NativeTypeBuiltin() override;
- virtual std::unique_ptr<NativeRawSymbol> clone() const override;
-
void dump(raw_ostream &OS, int Indent) const override;
PDB_SymType getSymTag() const override;
void dump(raw_ostream &OS, int Indent) const override;
- std::unique_ptr<NativeRawSymbol> clone() const override;
-
std::unique_ptr<IPDBEnumSymbols>
findChildren(PDB_SymType Type) const override;
~NativeTypePointer() override;
void dump(raw_ostream &OS, int Indent) const override;
- std::unique_ptr<NativeRawSymbol> clone() const override;
bool isConstType() const override;
uint64_t getLength() const override;
return Enumerator->getNext();
}
- std::unique_ptr<PDBSymbol> clone() const;
-
template <typename T>
std::unique_ptr<ConcreteSymbolEnumerator<T>> findAllChildren() const {
auto BaseIter = RawSymbol->findChildren(T::Tag);
class PDBSymbolTypeUDT : public PDBSymbol {
DECLARE_PDB_SYMBOL_CONCRETE_TYPE(PDB_SymType::UDT)
public:
- std::unique_ptr<PDBSymbolTypeUDT> clone() const {
- return getSession().getConcreteSymbolById<PDBSymbolTypeUDT>(
- getSymIndexId());
- }
-
void dump(PDBSymDumper &Dumper) const override;
FORWARD_SYMBOL_ID_METHOD(getClassParent)
}
void DIADataStream::reset() { StreamData->Reset(); }
-
-DIADataStream *DIADataStream::clone() const {
- CComPtr<IDiaEnumDebugStreamData> EnumeratorClone;
- if (S_OK != StreamData->Clone(&EnumeratorClone))
- return nullptr;
-
- return new DIADataStream(EnumeratorClone);
-}
}
void DIAEnumDebugStreams::reset() { Enumerator->Reset(); }
-
-DIAEnumDebugStreams *DIAEnumDebugStreams::clone() const {
- CComPtr<IDiaEnumDebugStreams> EnumeratorClone;
- if (S_OK != Enumerator->Clone(&EnumeratorClone))
- return nullptr;
- return new DIAEnumDebugStreams(EnumeratorClone);
-}
}
void DIAEnumInjectedSources::reset() { Enumerator->Reset(); }
-
-DIAEnumInjectedSources *DIAEnumInjectedSources::clone() const {
- CComPtr<IDiaEnumInjectedSources> EnumeratorClone;
- if (S_OK != Enumerator->Clone(&EnumeratorClone))
- return nullptr;
- return new DIAEnumInjectedSources(Session, EnumeratorClone);
-}
}
void DIAEnumLineNumbers::reset() { Enumerator->Reset(); }
-
-DIAEnumLineNumbers *DIAEnumLineNumbers::clone() const {
- CComPtr<IDiaEnumLineNumbers> EnumeratorClone;
- if (S_OK != Enumerator->Clone(&EnumeratorClone))
- return nullptr;
- return new DIAEnumLineNumbers(EnumeratorClone);
-}
}
void DIAEnumSectionContribs::reset() { Enumerator->Reset(); }
-
-DIAEnumSectionContribs *DIAEnumSectionContribs::clone() const {
- CComPtr<IDiaEnumSectionContribs> EnumeratorClone;
- if (S_OK != Enumerator->Clone(&EnumeratorClone))
- return nullptr;
- return new DIAEnumSectionContribs(Session, EnumeratorClone);
-}
}
void DIAEnumSourceFiles::reset() { Enumerator->Reset(); }
-
-DIAEnumSourceFiles *DIAEnumSourceFiles::clone() const {
- CComPtr<IDiaEnumSourceFiles> EnumeratorClone;
- if (S_OK != Enumerator->Clone(&EnumeratorClone))
- return nullptr;
- return new DIAEnumSourceFiles(Session, EnumeratorClone);
-}
}
void DIAEnumSymbols::reset() { Enumerator->Reset(); }
-
-DIAEnumSymbols *DIAEnumSymbols::clone() const {
- CComPtr<IDiaEnumSymbols> EnumeratorClone;
- if (S_OK != Enumerator->Clone(&EnumeratorClone))
- return nullptr;
- return new DIAEnumSymbols(Session, EnumeratorClone);
-}
}
void DIAEnumTables::reset() { Enumerator->Reset(); }
-
-DIAEnumTables *DIAEnumTables::clone() const {
- CComPtr<IDiaEnumTables> EnumeratorClone;
- if (S_OK != Enumerator->Clone(&EnumeratorClone))
- return nullptr;
- return new DIAEnumTables(EnumeratorClone);
-}
Indent);
}
-std::unique_ptr<NativeRawSymbol> NativeCompilandSymbol::clone() const {
- return llvm::make_unique<NativeCompilandSymbol>(Session, SymbolId, Module);
-}
-
bool NativeCompilandSymbol::isEditAndContinueEnabled() const {
return Module.hasECInfo();
}
void NativeEnumModules::reset() { Index = 0; }
-NativeEnumModules *NativeEnumModules::clone() const {
- return new NativeEnumModules(Session, Index);
-}
-
}
}
void NativeEnumTypes::reset() { Index = 0; }
-NativeEnumTypes *NativeEnumTypes::clone() const {
- return new NativeEnumTypes(Session, Matches, Kind);
-}
-
} // namespace pdb
} // namespace llvm
: NativeRawSymbol(Session, PDB_SymType::Exe, SymbolId),
Dbi(getDbiStreamPtr(Session)) {}
-std::unique_ptr<NativeRawSymbol> NativeExeSymbol::clone() const {
- return llvm::make_unique<NativeExeSymbol>(Session, SymbolId);
-}
-
std::unique_ptr<IPDBEnumSymbols>
NativeExeSymbol::findChildren(PDB_SymType Type) const {
switch (Type) {
NativeTypeBuiltin::~NativeTypeBuiltin() {}
-std::unique_ptr<NativeRawSymbol> NativeTypeBuiltin::clone() const {
- return llvm::make_unique<NativeTypeBuiltin>(Session, SymbolId, Type, Length);
-}
-
void NativeTypeBuiltin::dump(raw_ostream &OS, int Indent) const {
}
dumpSymbolField(OS, "volatileType", isVolatileType(), Indent);
}
-std::unique_ptr<NativeRawSymbol> NativeTypeEnum::clone() const {
- return llvm::make_unique<NativeTypeEnum>(Session, SymbolId, CV);
-}
-
std::unique_ptr<IPDBEnumSymbols>
NativeTypeEnum::findChildren(PDB_SymType Type) const {
switch (Type) {
dumpSymbolField(OS, "volatileType", isVolatileType(), Indent);
}
-std::unique_ptr<NativeRawSymbol> NativeTypePointer::clone() const {
- return llvm::make_unique<NativeTypePointer>(Session, SymbolId, Record);
-}
-
bool NativeTypePointer::isConstType() const { return false; }
uint64_t NativeTypePointer::getLength() const { return Record.getSize(); }
outs().flush();
}
-std::unique_ptr<PDBSymbol> PDBSymbol::clone() const {
- return Session.getSymbolById(getSymIndexId());
-}
-
PDB_SymType PDBSymbol::getSymTag() const { return RawSymbol->getSymTag(); }
uint32_t PDBSymbol::getSymIndexId() const { return RawSymbol->getSymIndexId(); }
void reset() override { CurIter = Args.empty() ? Args.end() : Args.begin(); }
- FunctionArgEnumerator *clone() const override {
- return new FunctionArgEnumerator(Session, Func);
- }
-
private:
typedef std::vector<std::unique_ptr<PDBSymbolData>> ArgListType;
const IPDBSession &Session;
void reset() override { Enumerator->reset(); }
- MyType *clone() const override {
- std::unique_ptr<ArgEnumeratorType> Clone(Enumerator->clone());
- return new FunctionArgEnumerator(Session, std::move(Clone));
- }
-
private:
const IPDBSession &Session;
std::unique_ptr<ArgEnumeratorType> Enumerator;