Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(254)

Side by Side Diff: base/file_path.cc

Issue 12278014: Make base compile with no "using base::FilePath". (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/command_line.cc ('k') | base/file_util.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "base/file_path.h" 5 #include "base/file_path.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 #include <algorithm> 8 #include <algorithm>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 11 matching lines...) Expand all
22 #include "base/mac/scoped_cftyperef.h" 22 #include "base/mac/scoped_cftyperef.h"
23 #include "base/third_party/icu/icu_utf.h" 23 #include "base/third_party/icu/icu_utf.h"
24 #endif 24 #endif
25 25
26 #if defined(OS_WIN) 26 #if defined(OS_WIN)
27 #include <windows.h> 27 #include <windows.h>
28 #elif defined(OS_MACOSX) 28 #elif defined(OS_MACOSX)
29 #include <CoreFoundation/CoreFoundation.h> 29 #include <CoreFoundation/CoreFoundation.h>
30 #endif 30 #endif
31 31
32 namespace base {
33
32 #if defined(FILE_PATH_USES_WIN_SEPARATORS) 34 #if defined(FILE_PATH_USES_WIN_SEPARATORS)
33 const FilePath::CharType FilePath::kSeparators[] = FILE_PATH_LITERAL("\\/"); 35 const FilePath::CharType FilePath::kSeparators[] = FILE_PATH_LITERAL("\\/");
34 #else // FILE_PATH_USES_WIN_SEPARATORS 36 #else // FILE_PATH_USES_WIN_SEPARATORS
35 const FilePath::CharType FilePath::kSeparators[] = FILE_PATH_LITERAL("/"); 37 const FilePath::CharType FilePath::kSeparators[] = FILE_PATH_LITERAL("/");
36 #endif // FILE_PATH_USES_WIN_SEPARATORS 38 #endif // FILE_PATH_USES_WIN_SEPARATORS
37 39
38 const FilePath::CharType FilePath::kCurrentDirectory[] = FILE_PATH_LITERAL("."); 40 const FilePath::CharType FilePath::kCurrentDirectory[] = FILE_PATH_LITERAL(".");
39 const FilePath::CharType FilePath::kParentDirectory[] = FILE_PATH_LITERAL(".."); 41 const FilePath::CharType FilePath::kParentDirectory[] = FILE_PATH_LITERAL("..");
40 42
41 const FilePath::CharType FilePath::kExtensionSeparator = FILE_PATH_LITERAL('.'); 43 const FilePath::CharType FilePath::kExtensionSeparator = FILE_PATH_LITERAL('.');
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 if (IsEmptyOrSpecialCase(BaseName().value())) 399 if (IsEmptyOrSpecialCase(BaseName().value()))
398 return FilePath(); 400 return FilePath();
399 401
400 StringType ext = Extension(); 402 StringType ext = Extension();
401 StringType ret = RemoveExtension().value(); 403 StringType ret = RemoveExtension().value();
402 ret.append(suffix); 404 ret.append(suffix);
403 ret.append(ext); 405 ret.append(ext);
404 return FilePath(ret); 406 return FilePath(ret);
405 } 407 }
406 408
407 FilePath FilePath::InsertBeforeExtensionASCII(const base::StringPiece& suffix) 409 FilePath FilePath::InsertBeforeExtensionASCII(const StringPiece& suffix)
408 const { 410 const {
409 DCHECK(IsStringASCII(suffix)); 411 DCHECK(IsStringASCII(suffix));
410 #if defined(OS_WIN) 412 #if defined(OS_WIN)
411 return InsertBeforeExtension(ASCIIToUTF16(suffix.as_string())); 413 return InsertBeforeExtension(ASCIIToUTF16(suffix.as_string()));
412 #elif defined(OS_POSIX) 414 #elif defined(OS_POSIX)
413 return InsertBeforeExtension(suffix.as_string()); 415 return InsertBeforeExtension(suffix.as_string());
414 #endif 416 #endif
415 } 417 }
416 418
417 FilePath FilePath::AddExtension(const StringType& extension) const { 419 FilePath FilePath::AddExtension(const StringType& extension) const {
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 } 501 }
500 502
501 new_path.path_.append(*appended); 503 new_path.path_.append(*appended);
502 return new_path; 504 return new_path;
503 } 505 }
504 506
505 FilePath FilePath::Append(const FilePath& component) const { 507 FilePath FilePath::Append(const FilePath& component) const {
506 return Append(component.value()); 508 return Append(component.value());
507 } 509 }
508 510
509 FilePath FilePath::AppendASCII(const base::StringPiece& component) const { 511 FilePath FilePath::AppendASCII(const StringPiece& component) const {
510 DCHECK(IsStringASCII(component)); 512 DCHECK(IsStringASCII(component));
511 #if defined(OS_WIN) 513 #if defined(OS_WIN)
512 return Append(ASCIIToUTF16(component.as_string())); 514 return Append(ASCIIToUTF16(component.as_string()));
513 #elif defined(OS_POSIX) 515 #elif defined(OS_POSIX)
514 return Append(component.as_string()); 516 return Append(component.as_string());
515 #endif 517 #endif
516 } 518 }
517 519
518 bool FilePath::IsAbsolute() const { 520 bool FilePath::IsAbsolute() const {
519 return IsPathAbsolute(path_); 521 return IsPathAbsolute(path_);
(...skipping 17 matching lines...) Expand all
537 return true; 539 return true;
538 } 540 }
539 return false; 541 return false;
540 } 542 }
541 543
542 #if defined(OS_POSIX) 544 #if defined(OS_POSIX)
543 // See file_path.h for a discussion of the encoding of paths on POSIX 545 // See file_path.h for a discussion of the encoding of paths on POSIX
544 // platforms. These encoding conversion functions are not quite correct. 546 // platforms. These encoding conversion functions are not quite correct.
545 547
546 string16 FilePath::LossyDisplayName() const { 548 string16 FilePath::LossyDisplayName() const {
547 return WideToUTF16(base::SysNativeMBToWide(path_)); 549 return WideToUTF16(SysNativeMBToWide(path_));
548 } 550 }
549 551
550 std::string FilePath::MaybeAsASCII() const { 552 std::string FilePath::MaybeAsASCII() const {
551 if (IsStringASCII(path_)) 553 if (IsStringASCII(path_))
552 return path_; 554 return path_;
553 return ""; 555 return "";
554 } 556 }
555 557
556 std::string FilePath::AsUTF8Unsafe() const { 558 std::string FilePath::AsUTF8Unsafe() const {
557 #if defined(OS_MACOSX) || defined(OS_CHROMEOS) 559 #if defined(OS_MACOSX) || defined(OS_CHROMEOS)
558 return value(); 560 return value();
559 #else 561 #else
560 return WideToUTF8(base::SysNativeMBToWide(value())); 562 return WideToUTF8(SysNativeMBToWide(value()));
561 #endif 563 #endif
562 } 564 }
563 565
564 // The *Hack functions are temporary while we fix the remainder of the code. 566 // The *Hack functions are temporary while we fix the remainder of the code.
565 // Remember to remove the #includes at the top when you remove these. 567 // Remember to remove the #includes at the top when you remove these.
566 568
567 // static 569 // static
568 FilePath FilePath::FromWStringHack(const std::wstring& wstring) { 570 FilePath FilePath::FromWStringHack(const std::wstring& wstring) {
569 return FilePath(base::SysWideToNativeMB(wstring)); 571 return FilePath(SysWideToNativeMB(wstring));
570 } 572 }
571 573
572 // static 574 // static
573 FilePath FilePath::FromUTF8Unsafe(const std::string& utf8) { 575 FilePath FilePath::FromUTF8Unsafe(const std::string& utf8) {
574 #if defined(OS_MACOSX) || defined(OS_CHROMEOS) 576 #if defined(OS_MACOSX) || defined(OS_CHROMEOS)
575 return FilePath(utf8); 577 return FilePath(utf8);
576 #else 578 #else
577 return FilePath(base::SysWideToNativeMB(UTF8ToWide(utf8))); 579 return FilePath(SysWideToNativeMB(UTF8ToWide(utf8)));
578 #endif 580 #endif
579 } 581 }
580 582
581 #elif defined(OS_WIN) 583 #elif defined(OS_WIN)
582 string16 FilePath::LossyDisplayName() const { 584 string16 FilePath::LossyDisplayName() const {
583 return path_; 585 return path_;
584 } 586 }
585 587
586 std::string FilePath::MaybeAsASCII() const { 588 std::string FilePath::MaybeAsASCII() const {
587 if (IsStringASCII(path_)) 589 if (IsStringASCII(path_))
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after
1122 return (codepoint1 < codepoint2) ? -1 : 1; 1124 return (codepoint1 < codepoint2) ? -1 : 1;
1123 if (codepoint1 == 0) { 1125 if (codepoint1 == 0) {
1124 DCHECK_EQ(index1, length1); 1126 DCHECK_EQ(index1, length1);
1125 DCHECK_EQ(index2, length2); 1127 DCHECK_EQ(index2, length2);
1126 return 0; 1128 return 0;
1127 } 1129 }
1128 } 1130 }
1129 } 1131 }
1130 1132
1131 StringType FilePath::GetHFSDecomposedForm(const StringType& string) { 1133 StringType FilePath::GetHFSDecomposedForm(const StringType& string) {
1132 base::mac::ScopedCFTypeRef<CFStringRef> cfstring( 1134 mac::ScopedCFTypeRef<CFStringRef> cfstring(
1133 CFStringCreateWithBytesNoCopy( 1135 CFStringCreateWithBytesNoCopy(
1134 NULL, 1136 NULL,
1135 reinterpret_cast<const UInt8*>(string.c_str()), 1137 reinterpret_cast<const UInt8*>(string.c_str()),
1136 string.length(), 1138 string.length(),
1137 kCFStringEncodingUTF8, 1139 kCFStringEncodingUTF8,
1138 false, 1140 false,
1139 kCFAllocatorNull)); 1141 kCFAllocatorNull));
1140 // Query the maximum length needed to store the result. In most cases this 1142 // Query the maximum length needed to store the result. In most cases this
1141 // will overestimate the required space. The return value also already 1143 // will overestimate the required space. The return value also already
1142 // includes the space needed for a terminating 0. 1144 // includes the space needed for a terminating 0.
(...skipping 26 matching lines...) Expand all
1169 return string2.empty() ? 0 : -1; 1171 return string2.empty() ? 0 : -1;
1170 if (string2.empty()) 1172 if (string2.empty())
1171 return 1; 1173 return 1;
1172 1174
1173 StringType hfs1 = GetHFSDecomposedForm(string1); 1175 StringType hfs1 = GetHFSDecomposedForm(string1);
1174 StringType hfs2 = GetHFSDecomposedForm(string2); 1176 StringType hfs2 = GetHFSDecomposedForm(string2);
1175 1177
1176 // GetHFSDecomposedForm() returns an empty string in an error case. 1178 // GetHFSDecomposedForm() returns an empty string in an error case.
1177 if (hfs1.empty() || hfs2.empty()) { 1179 if (hfs1.empty() || hfs2.empty()) {
1178 NOTREACHED(); 1180 NOTREACHED();
1179 base::mac::ScopedCFTypeRef<CFStringRef> cfstring1( 1181 mac::ScopedCFTypeRef<CFStringRef> cfstring1(
1180 CFStringCreateWithBytesNoCopy( 1182 CFStringCreateWithBytesNoCopy(
1181 NULL, 1183 NULL,
1182 reinterpret_cast<const UInt8*>(string1.c_str()), 1184 reinterpret_cast<const UInt8*>(string1.c_str()),
1183 string1.length(), 1185 string1.length(),
1184 kCFStringEncodingUTF8, 1186 kCFStringEncodingUTF8,
1185 false, 1187 false,
1186 kCFAllocatorNull)); 1188 kCFAllocatorNull));
1187 base::mac::ScopedCFTypeRef<CFStringRef> cfstring2( 1189 mac::ScopedCFTypeRef<CFStringRef> cfstring2(
1188 CFStringCreateWithBytesNoCopy( 1190 CFStringCreateWithBytesNoCopy(
1189 NULL, 1191 NULL,
1190 reinterpret_cast<const UInt8*>(string2.c_str()), 1192 reinterpret_cast<const UInt8*>(string2.c_str()),
1191 string2.length(), 1193 string2.length(),
1192 kCFStringEncodingUTF8, 1194 kCFStringEncodingUTF8,
1193 false, 1195 false,
1194 kCFAllocatorNull)); 1196 kCFAllocatorNull));
1195 return CFStringCompare(cfstring1, 1197 return CFStringCompare(cfstring1,
1196 cfstring2, 1198 cfstring2,
1197 kCFCompareCaseInsensitive); 1199 kCFCompareCaseInsensitive);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1244 StringType copy = path_; 1246 StringType copy = path_;
1245 for (size_t i = 1; i < arraysize(kSeparators); ++i) { 1247 for (size_t i = 1; i < arraysize(kSeparators); ++i) {
1246 std::replace(copy.begin(), copy.end(), kSeparators[i], kSeparators[0]); 1248 std::replace(copy.begin(), copy.end(), kSeparators[i], kSeparators[0]);
1247 } 1249 }
1248 return FilePath(copy); 1250 return FilePath(copy);
1249 #else 1251 #else
1250 return *this; 1252 return *this;
1251 #endif 1253 #endif
1252 } 1254 }
1253 1255
1254 void PrintTo(const FilePath& path, std::ostream* out) { 1256 } // namespace base
1257
1258 void PrintTo(const base::FilePath& path, std::ostream* out) {
1255 *out << path.value(); 1259 *out << path.value();
1256 } 1260 }
OLDNEW
« no previous file with comments | « base/command_line.cc ('k') | base/file_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698