diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2007-03-29 16:43:20 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2007-03-29 16:43:20 +0000 |
commit | 69cce815e7414ad9a186920c78890c852986d6bf (patch) | |
tree | 1e40f9377343d63797382c56cda19544249b599f /include/llvm | |
parent | 585e0882c38516b52e67eb0b22c91c72c10ce9a4 (diff) | |
download | external_llvm-69cce815e7414ad9a186920c78890c852986d6bf.zip external_llvm-69cce815e7414ad9a186920c78890c852986d6bf.tar.gz external_llvm-69cce815e7414ad9a186920c78890c852986d6bf.tar.bz2 |
For PR789:
* Add a method: bool isAbsolute() const, which determines if the path name
is absolute or not.
* Implement caching of file status information in the Path object. Allow it
to be updated forcefully or lazily re-fetched from the cached value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35456 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm')
-rw-r--r-- | include/llvm/System/Path.h | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/include/llvm/System/Path.h b/include/llvm/System/Path.h index f6b2be0..8192dc4 100644 --- a/include/llvm/System/Path.h +++ b/include/llvm/System/Path.h @@ -123,7 +123,7 @@ namespace sys { /// Find the path to a library using its short name. Use the system /// dependent library paths to locate the library. /// @brief Find a library. - static Path FindLibrary(std::string& short_name); + static Path FindLibrary(std::string& short_name); /// Construct a path to the default LLVM configuration directory. The /// implementation must ensure that this is a well-known (same on many @@ -162,14 +162,14 @@ namespace sys { /// provided so that they can be used to indicate null or error results in /// other lib/System functionality. /// @brief Construct an empty (and invalid) path. - Path() : path() {} + Path() : path(), status(0) {} /// This constructor will accept a std::string as a path. No checking is /// done on this path to determine if it is valid. To determine validity /// of the path, use the isValid method. /// @param p The path to assign. /// @brief Construct a Path from a string. - explicit Path(const std::string& p) : path(p) {} + explicit Path(const std::string& p) : path(p), status(0) {} /// @} /// @name Operators @@ -265,6 +265,11 @@ namespace sys { /// @brief Determines if the path references the root directory. bool isRootDirectory() const; + /// This function determines if the path name is absolute, as opposed to + /// relative. + /// @breif Determine if the path is absolute. + bool isAbsolute() const; + /// This function opens the file associated with the path name provided by /// the Path object and reads its magic number. If the magic number at the /// start of the file matches \p magic, true is returned. In all other @@ -352,7 +357,11 @@ namespace sys { /// of the file system. This returns false on success, or true on error /// and fills in the specified error string if specified. /// @brief Get file status. - bool getFileStatus(FileStatus &Status, std::string *Error = 0) const; + bool getFileStatus( + FileStatus &Status, ///< The resulting file status + bool forceUpdate = false, ///< Force an update from the file system + std::string *Error = 0 ///< Optional place to return an error msg. + ) const; /// @} /// @name Path Mutators @@ -511,6 +520,7 @@ namespace sys { /// @{ private: mutable std::string path; ///< Storage for the path name. + mutable FileStatus *status; ///< Status information. /// @} }; |