Changeset View
Changeset View
Standalone View
Standalone View
lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp
Show First 20 Lines • Show All 984 Lines • ▼ Show 20 Lines | std::unique_ptr<Language::TypeScavenger> ObjCLanguage::GetTypeScavenger() { | ||||
class ObjCModulesScavenger : public Language::TypeScavenger { | class ObjCModulesScavenger : public Language::TypeScavenger { | ||||
protected: | protected: | ||||
bool Find_Impl(ExecutionContextScope *exe_scope, const char *key, | bool Find_Impl(ExecutionContextScope *exe_scope, const char *key, | ||||
ResultSet &results) override { | ResultSet &results) override { | ||||
bool result = false; | bool result = false; | ||||
if (auto *target = exe_scope->CalculateTarget().get()) { | if (auto *target = exe_scope->CalculateTarget().get()) { | ||||
if (auto *clang_modules_decl_vendor = | auto *persistent_vars = llvm::cast<ClangPersistentVariables>( | ||||
target->GetClangModulesDeclVendor()) { | target->GetPersistentExpressionStateForLanguage( | ||||
lldb::eLanguageTypeC)); | |||||
if (std::shared_ptr<ClangModulesDeclVendor> clang_modules_decl_vendor = | |||||
persistent_vars->GetClangModulesDeclVendor()) { | |||||
ConstString key_cs(key); | ConstString key_cs(key); | ||||
auto types = clang_modules_decl_vendor->FindTypes( | auto types = clang_modules_decl_vendor->FindTypes( | ||||
key_cs, /*max_matches*/ UINT32_MAX); | key_cs, /*max_matches*/ UINT32_MAX); | ||||
if (!types.empty()) { | if (!types.empty()) { | ||||
result = true; | result = true; | ||||
std::unique_ptr<Language::TypeScavenger::Result> result( | std::unique_ptr<Language::TypeScavenger::Result> result( | ||||
new ObjCScavengerResult(types.front())); | new ObjCScavengerResult(types.front())); | ||||
results.insert(std::move(result)); | results.insert(std::move(result)); | ||||
▲ Show 20 Lines • Show All 121 Lines • Show Last 20 Lines |