X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FSupport%2FPath.h;h=955cc991d9b7ed01b2b5e6ab3cdf388a4b1f06c7;hb=27fff2c5ff6be081149b7e72ff8e667cb423be7d;hp=f7dd1fc1208ba752bc574c1bf20a5acb6a00c2cf;hpb=b7faac8a2e320b0f357d82833a8bb9f67b869565;p=oota-llvm.git diff --git a/include/llvm/Support/Path.h b/include/llvm/Support/Path.h index f7dd1fc1208..955cc991d9b 100644 --- a/include/llvm/Support/Path.h +++ b/include/llvm/Support/Path.h @@ -216,7 +216,7 @@ StringRef root_name(StringRef path); /// @result The root directory of \a path if it has one, otherwise /// "". StringRef root_directory(StringRef path); - + /// @brief Get root path. /// /// Equivalent to root_name + root_directory. @@ -308,7 +308,7 @@ bool is_separator(char value); /// @result StringRef of the preferred separator, null-terminated. StringRef get_separator(); -/// @brief Get the typical temporary directory for the system, e.g., +/// @brief Get the typical temporary directory for the system, e.g., /// "/var/tmp" or "C:/TEMP" /// /// @param erasedOnReboot Whether to favor a path that is erased on reboot @@ -325,6 +325,22 @@ void system_temp_directory(bool erasedOnReboot, SmallVectorImpl &result); /// @result True if a home directory is set, false otherwise. bool home_directory(SmallVectorImpl &result); +/// @brief Get the user's cache directory. +/// +/// Expect the resulting path to be a directory shared with other +/// applications/services used by the user. Params \p Path1 to \p Path3 can be +/// used to append additional directory names to the resulting path. Recommended +/// pattern is //. +/// +/// @param Result Holds the resulting path. +/// @param Path1 Additional path to be appended to the user's cache directory +/// path. "" can be used to append nothing. +/// @param Path2 Second additional path to be appended. +/// @param Path3 Third additional path to be appended. +/// @result True if a cache directory path is set, false otherwise. +bool user_cache_directory(SmallVectorImpl &Result, const Twine &Path1, + const Twine &Path2 = "", const Twine &Path3 = ""); + /// @brief Has root name? /// /// root_name != "" @@ -401,6 +417,19 @@ bool is_absolute(const Twine &path); /// @result True if the path is relative, false if it is not. bool is_relative(const Twine &path); +/// @brief Remove redundant leading "./" pieces and consecutive separators. +/// +/// @param path Input path. +/// @result The cleaned-up \a path. +StringRef remove_leading_dotslash(StringRef path); + +/// @brief In-place remove any './' and optionally '../' components from a path. +/// +/// @param path processed path +/// @param remove_dot_dot specify if '../' should be removed +/// @result True if path was changed +bool remove_dots(SmallVectorImpl &path, bool remove_dot_dot = false); + } // end namespace path } // end namespace sys } // end namespace llvm