15#ifndef LLVM_SUPPORT_PATH_H
16#define LLVM_SUPPORT_PATH_H
226 const Twine &d =
"");
Given that RA is a live value
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
StringRef - Represent a constant reference to a string, i.e.
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
CRTP base class which implements the entire standard iterator facade in terms of a minimal subset of ...
const_iterator & operator++()
friend const_iterator begin(StringRef path, Style style)
Get begin iterator over path.
friend const_iterator end(StringRef path)
Get end iterator over path.
ptrdiff_t operator-(const const_iterator &RHS) const
Difference in bytes between this and RHS.
reference operator*() const
friend reverse_iterator rend(StringRef path)
Get reverse end iterator over path.
friend reverse_iterator rbegin(StringRef path, Style style)
Get reverse begin iterator over path.
ptrdiff_t operator-(const reverse_iterator &RHS) const
Difference in bytes between this and RHS.
reverse_iterator & operator++()
reference operator*() const
StringRef get_separator(Style style=Style::native)
Return the preferred separator for this platform.
void remove_filename(SmallVectorImpl< char > &path, Style style=Style::native)
Remove the last component from path unless it is the root dir.
bool user_config_directory(SmallVectorImpl< char > &result)
Get the directory where packages should read user-specific configurations.
bool has_relative_path(const Twine &path, Style style=Style::native)
Has relative path?
bool home_directory(SmallVectorImpl< char > &result)
Get the user's home directory.
StringRef stem(StringRef path, Style style=Style::native)
Get stem.
bool has_root_name(const Twine &path, Style style=Style::native)
Has root name?
void replace_extension(SmallVectorImpl< char > &path, const Twine &extension, Style style=Style::native)
Replace the file extension of path with extension.
bool remove_dots(SmallVectorImpl< char > &path, bool remove_dot_dot=false, Style style=Style::native)
In-place remove any '.
bool has_root_path(const Twine &path, Style style=Style::native)
Has root path?
constexpr bool is_style_posix(Style S)
Check if S uses POSIX path rules.
StringRef root_name(StringRef path, Style style=Style::native)
Get root name.
StringRef root_directory(StringRef path, Style style=Style::native)
Get root directory.
bool has_parent_path(const Twine &path, Style style=Style::native)
Has parent path?
void make_preferred(SmallVectorImpl< char > &path, Style style=Style::native)
For Windows path styles, convert path to use the preferred path separators.
bool is_relative(const Twine &path, Style style=Style::native)
Is path relative?
StringRef filename(StringRef path, Style style=Style::native)
Get filename.
bool cache_directory(SmallVectorImpl< char > &result)
Get the directory where installed packages should put their machine-local cache, e....
bool has_extension(const Twine &path, Style style=Style::native)
Has extension?
bool is_absolute_gnu(const Twine &path, Style style=Style::native)
Is path absolute using GNU rules?
void system_temp_directory(bool erasedOnReboot, SmallVectorImpl< char > &result)
Get the typical temporary directory for the system, e.g., "/var/tmp" or "C:/TEMP".
StringRef parent_path(StringRef path, Style style=Style::native)
Get parent path.
std::string convert_to_slash(StringRef path, Style style=Style::native)
Replaces backslashes with slashes if Windows.
bool is_absolute(const Twine &path, Style style=Style::native)
Is path absolute?
bool has_stem(const Twine &path, Style style=Style::native)
Has stem?
constexpr bool is_style_windows(Style S)
Check if S uses Windows path rules.
bool replace_path_prefix(SmallVectorImpl< char > &Path, StringRef OldPrefix, StringRef NewPrefix, Style style=Style::native)
Replace matching path prefix with another path.
void append(SmallVectorImpl< char > &path, const Twine &a, const Twine &b="", const Twine &c="", const Twine &d="")
Append to path.
StringRef extension(StringRef path, Style style=Style::native)
Get extension.
bool has_filename(const Twine &path, Style style=Style::native)
Has filename?
StringRef root_path(StringRef path, Style style=Style::native)
Get root path.
StringRef relative_path(StringRef path, Style style=Style::native)
Get relative path.
StringRef remove_leading_dotslash(StringRef path, Style style=Style::native)
Remove redundant leading "./" pieces and consecutive separators.
bool has_root_directory(const Twine &path, Style style=Style::native)
Has root directory?
This is an optimization pass for GlobalISel generic memory operations.