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

llvm-svn: 120560
This commit is contained in:
Michael J. Spencer 2010-12-01 06:21:53 +00:00
parent 112a769379
commit a72df5fae8
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);