libclang: Port CIndexer::getClangResourcesPath to PathV2. No functionality change.

llvm-svn: 183901
This commit is contained in:
Benjamin Kramer 2013-06-13 13:56:37 +00:00
parent 93c47b74bb
commit e3868e46fb
2 changed files with 14 additions and 16 deletions

View File

@ -43,11 +43,13 @@
using namespace clang;
std::string CIndexer::getClangResourcesPath() {
const std::string &CIndexer::getClangResourcesPath() {
// Did we already compute the path?
if (!ResourcesPath.empty())
return ResourcesPath.str();
return ResourcesPath;
SmallString<128> LibClangPath;
// Find the location where this library lives (libclang.dylib).
#ifdef LLVM_ON_WIN32
MEMORY_BASIC_INFORMATION mbi;
@ -66,26 +68,22 @@ std::string CIndexer::getClangResourcesPath() {
#endif
#endif
llvm::sys::Path LibClangPath(path);
LibClangPath.eraseComponent();
LibClangPath += llvm::sys::path::parent_path(path);
#else
// This silly cast below avoids a C++ warning.
Dl_info info;
if (dladdr((void *)(uintptr_t)clang_createTranslationUnit, &info) == 0)
llvm_unreachable("Call to dladdr() failed");
llvm::sys::Path LibClangPath(info.dli_fname);
// We now have the CIndex directory, locate clang relative to it.
LibClangPath.eraseComponent();
LibClangPath += llvm::sys::path::parent_path(info.dli_fname);
#endif
LibClangPath.appendComponent("clang");
LibClangPath.appendComponent(CLANG_VERSION_STRING);
llvm::sys::path::append(LibClangPath, "clang", CLANG_VERSION_STRING);
// Cache our result.
ResourcesPath = LibClangPath;
return LibClangPath.str();
ResourcesPath = LibClangPath.str();
return ResourcesPath;
}
static llvm::sys::Path GetTemporaryPath() {

View File

@ -38,7 +38,7 @@ class CIndexer {
bool DisplayDiagnostics;
unsigned Options; // CXGlobalOptFlags.
llvm::sys::Path ResourcesPath;
std::string ResourcesPath;
public:
CIndexer() : OnlyLocalDecls(false), DisplayDiagnostics(false),
@ -63,7 +63,7 @@ public:
}
/// \brief Get the path of the clang resource files.
std::string getClangResourcesPath();
const std::string &getClangResourcesPath();
};
/**