Support/PathV2: Add is_{absolute,relative} implementation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120560 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Michael J. Spencer 2010-12-01 06:21:53 +00:00
parent ae18008584
commit ce2b68fb54
2 changed files with 26 additions and 0 deletions

View File

@ -642,6 +642,30 @@ error_code has_extension(const Twine &path, bool &result) {
return make_error_code(errc::success);
}
error_code is_absolute(const Twine &path, bool &result) {
SmallString<128> path_storage;
StringRef p = path.toStringRef(path_storage);
bool rootDir = false,
rootName = false;
if (error_code ec = has_root_directory(p, rootDir)) return ec;
#ifdef LLVM_ON_WIN32
if (error_code ec = has_root_name(p, rootName)) return ec;
#else
rootName = true;
#endif
result = rootDir && rootName;
return make_error_code(errc::success);
}
error_code is_relative(const Twine &path, bool &result) {
bool res;
error_code ec = is_absolute(path, res);
result = !res;
return ec;
}
}
}
}

View File

@ -112,6 +112,8 @@ TEST(Support, Path) {
TEST_PATH(stem, *i, sfres);
TEST_PATH(has_extension, *i, bres);
TEST_PATH(extension, *i, sfres);
TEST_PATH(is_absolute, *i, bres);
TEST_PATH(is_relative, *i, bres);
SmallString<16> temp_store;
TEST_PATH_SMALLVEC(make_absolute, *i, temp_store);