OLD | NEW |
1 // Copyright (c) 2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2008 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // FilePath is a container for pathnames stored in a platform's native string | 5 // FilePath is a container for pathnames stored in a platform's native string |
6 // type, providing containers for manipulation in according with the | 6 // type, providing containers for manipulation in according with the |
7 // platform's conventions for pathnames. It supports the following path | 7 // platform's conventions for pathnames. It supports the following path |
8 // types: | 8 // types: |
9 // | 9 // |
10 // POSIX Windows | 10 // POSIX Windows |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 // this is the only situation in which BaseName will return an absolute path. | 139 // this is the only situation in which BaseName will return an absolute path. |
140 FilePath BaseName() const; | 140 FilePath BaseName() const; |
141 | 141 |
142 // Returns a FilePath by appending a separator and the supplied path | 142 // Returns a FilePath by appending a separator and the supplied path |
143 // component to this object's path. Append takes care to avoid adding | 143 // component to this object's path. Append takes care to avoid adding |
144 // excessive separators if this object's path already ends with a separator. | 144 // excessive separators if this object's path already ends with a separator. |
145 // If this object's path is kCurrentDirectory, a new FilePath corresponding | 145 // If this object's path is kCurrentDirectory, a new FilePath corresponding |
146 // only to |component| is returned. |component| must be a relative path; | 146 // only to |component| is returned. |component| must be a relative path; |
147 // it is an error to pass an absolute path. | 147 // it is an error to pass an absolute path. |
148 FilePath Append(const StringType& component) const WARN_UNUSED_RESULT; | 148 FilePath Append(const StringType& component) const WARN_UNUSED_RESULT; |
| 149 FilePath Append(const FilePath& component) const WARN_UNUSED_RESULT; |
149 | 150 |
150 // Returns true if this FilePath contains an absolute path. On Windows, an | 151 // Returns true if this FilePath contains an absolute path. On Windows, an |
151 // absolute path begins with either a drive letter specification followed by | 152 // absolute path begins with either a drive letter specification followed by |
152 // a separator character, or with two separator characters. On POSIX | 153 // a separator character, or with two separator characters. On POSIX |
153 // platforms, an absolute path begins with a separator character. | 154 // platforms, an absolute path begins with a separator character. |
154 bool IsAbsolute() const; | 155 bool IsAbsolute() const; |
155 | 156 |
156 // Older Chromium code assumes that paths are always wstrings. | 157 // Older Chromium code assumes that paths are always wstrings. |
157 // This function converts a wstring to a FilePath, and is useful to smooth | 158 // This function converts a wstring to a FilePath, and is useful to smooth |
158 // porting that old code to the FilePath API. | 159 // porting that old code to the FilePath API. |
159 // It has "Hack" in its name so people feel bad about using it. | 160 // It has "Hack" in its name so people feel bad about using it. |
160 // TODO(port): remove these functions. | 161 // TODO(port): remove these functions. |
161 static FilePath FromWStringHack(const std::wstring& wstring); | 162 static FilePath FromWStringHack(const std::wstring& wstring); |
162 | 163 |
163 // Older Chromium code assumes that paths are always wstrings. | 164 // Older Chromium code assumes that paths are always wstrings. |
164 // This function produces a wstring from a FilePath, and is useful to smooth | 165 // This function produces a wstring from a FilePath, and is useful to smooth |
165 // porting that old code to the FilePath API. | 166 // porting that old code to the FilePath API. |
166 // It has "Hack" in its name so people feel bad about using it. | 167 // It has "Hack" in its name so people feel bad about using it. |
167 // TODO(port): remove these functions. | 168 // TODO(port): remove these functions. |
168 std::wstring ToWStringHack() const; | 169 std::wstring ToWStringHack() const; |
169 | 170 |
170 private: | 171 private: |
171 // If this FilePath contains a drive letter specification, returns the | |
172 // position of the last character of the drive letter specification, | |
173 // otherwise returns npos. This can only be true on Windows, when a pathname | |
174 // begins with a letter followed by a colon. On other platforms, this always | |
175 // returns npos. | |
176 StringType::size_type FindDriveLetter() const; | |
177 | |
178 // Remove trailing separators from this object. If the path is absolute, it | 172 // Remove trailing separators from this object. If the path is absolute, it |
179 // will never be stripped any more than to refer to the absolute root | 173 // will never be stripped any more than to refer to the absolute root |
180 // directory, so "////" will become "/", not "". A leading pair of | 174 // directory, so "////" will become "/", not "". A leading pair of |
181 // separators is never stripped, to support alternate roots. This is used to | 175 // separators is never stripped, to support alternate roots. This is used to |
182 // support UNC paths on Windows. | 176 // support UNC paths on Windows. |
183 void StripTrailingSeparators(); | 177 void StripTrailingSeparators(); |
184 | 178 |
185 StringType path_; | 179 StringType path_; |
186 }; | 180 }; |
187 | 181 |
188 // Macros for string literal initialization of FilePath::CharType[]. | 182 // Macros for string literal initialization of FilePath::CharType[]. |
189 #if defined(OS_POSIX) | 183 #if defined(OS_POSIX) |
190 #define FILE_PATH_LITERAL(x) x | 184 #define FILE_PATH_LITERAL(x) x |
191 #elif defined(OS_WIN) | 185 #elif defined(OS_WIN) |
192 #define FILE_PATH_LITERAL(x) L ## x | 186 #define FILE_PATH_LITERAL(x) L ## x |
193 #endif // OS_WIN | 187 #endif // OS_WIN |
194 | 188 |
195 #endif // BASE_FILE_PATH_H_ | 189 #endif // BASE_FILE_PATH_H_ |
OLD | NEW |