OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/string_util.h" | 5 #include "base/string_util.h" |
6 | 6 |
7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
8 | 8 |
9 #include <ctype.h> | 9 #include <ctype.h> |
10 #include <errno.h> | 10 #include <errno.h> |
(...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
645 if (bytes >= kUnitThresholds[unit_index]) | 645 if (bytes >= kUnitThresholds[unit_index]) |
646 break; | 646 break; |
647 } | 647 } |
648 | 648 |
649 DCHECK(unit_index >= DATA_UNITS_BYTE && unit_index <= DATA_UNITS_GIBIBYTE); | 649 DCHECK(unit_index >= DATA_UNITS_BYTE && unit_index <= DATA_UNITS_GIBIBYTE); |
650 return DataUnits(unit_index); | 650 return DataUnits(unit_index); |
651 } | 651 } |
652 | 652 |
653 // TODO(mpcomplete): deal with locale | 653 // TODO(mpcomplete): deal with locale |
654 // Byte suffixes. This must match the DataUnits enum. | 654 // Byte suffixes. This must match the DataUnits enum. |
655 static const wchar_t* const kByteStrings[] = { | 655 static const char* const kByteStrings[] = { |
656 L"B", | 656 "B", |
657 L"kB", | 657 "kB", |
658 L"MB", | 658 "MB", |
659 L"GB" | 659 "GB" |
660 }; | 660 }; |
661 | 661 |
662 static const wchar_t* const kSpeedStrings[] = { | 662 static const char* const kSpeedStrings[] = { |
663 L"B/s", | 663 "B/s", |
664 L"kB/s", | 664 "kB/s", |
665 L"MB/s", | 665 "MB/s", |
666 L"GB/s" | 666 "GB/s" |
667 }; | 667 }; |
668 | 668 |
669 std::wstring FormatBytesInternal(int64 bytes, | 669 string16 FormatBytesInternal(int64 bytes, |
670 DataUnits units, | 670 DataUnits units, |
671 bool show_units, | 671 bool show_units, |
672 const wchar_t* const* suffix) { | 672 const char* const* suffix) { |
673 if (bytes < 0) { | 673 if (bytes < 0) { |
674 NOTREACHED() << "Negative bytes value"; | 674 NOTREACHED() << "Negative bytes value"; |
675 return std::wstring(); | 675 return string16(); |
676 } | 676 } |
677 | 677 |
678 DCHECK(units >= DATA_UNITS_BYTE && units <= DATA_UNITS_GIBIBYTE); | 678 DCHECK(units >= DATA_UNITS_BYTE && units <= DATA_UNITS_GIBIBYTE); |
679 | 679 |
680 // Put the quantity in the right units. | 680 // Put the quantity in the right units. |
681 double unit_amount = static_cast<double>(bytes); | 681 double unit_amount = static_cast<double>(bytes); |
682 for (int i = 0; i < units; ++i) | 682 for (int i = 0; i < units; ++i) |
683 unit_amount /= 1024.0; | 683 unit_amount /= 1024.0; |
684 | 684 |
685 wchar_t buf[64]; | 685 char buf[64]; |
686 if (bytes != 0 && units != DATA_UNITS_BYTE && unit_amount < 100) | 686 if (bytes != 0 && units != DATA_UNITS_BYTE && unit_amount < 100) |
687 base::swprintf(buf, arraysize(buf), L"%.1lf", unit_amount); | 687 base::snprintf(buf, arraysize(buf), "%.1lf", unit_amount); |
688 else | 688 else |
689 base::swprintf(buf, arraysize(buf), L"%.0lf", unit_amount); | 689 base::snprintf(buf, arraysize(buf), "%.0lf", unit_amount); |
690 | 690 |
691 std::wstring ret(buf); | 691 std::string ret(buf); |
692 if (show_units) { | 692 if (show_units) { |
693 ret += L" "; | 693 ret += " "; |
694 ret += suffix[units]; | 694 ret += suffix[units]; |
695 } | 695 } |
696 | 696 |
697 return ret; | 697 return ASCIIToUTF16(ret); |
698 } | 698 } |
699 | 699 |
700 std::wstring FormatBytes(int64 bytes, DataUnits units, bool show_units) { | 700 string16 FormatBytes(int64 bytes, DataUnits units, bool show_units) { |
701 return FormatBytesInternal(bytes, units, show_units, kByteStrings); | 701 return FormatBytesInternal(bytes, units, show_units, kByteStrings); |
702 } | 702 } |
703 | 703 |
704 std::wstring FormatSpeed(int64 bytes, DataUnits units, bool show_units) { | 704 string16 FormatSpeed(int64 bytes, DataUnits units, bool show_units) { |
705 return FormatBytesInternal(bytes, units, show_units, kSpeedStrings); | 705 return FormatBytesInternal(bytes, units, show_units, kSpeedStrings); |
706 } | 706 } |
707 | 707 |
708 template<class StringType> | 708 template<class StringType> |
709 void DoReplaceSubstringsAfterOffset(StringType* str, | 709 void DoReplaceSubstringsAfterOffset(StringType* str, |
710 typename StringType::size_type start_offset, | 710 typename StringType::size_type start_offset, |
711 const StringType& find_this, | 711 const StringType& find_this, |
712 const StringType& replace_with, | 712 const StringType& replace_with, |
713 bool replace_all) { | 713 bool replace_all) { |
714 if ((start_offset == StringType::npos) || (start_offset >= str->length())) | 714 if ((start_offset == StringType::npos) || (start_offset >= str->length())) |
(...skipping 526 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1241 int rstr_len = (max_len - 3) / 2; | 1241 int rstr_len = (max_len - 3) / 2; |
1242 int lstr_len = rstr_len + ((max_len - 3) % 2); | 1242 int lstr_len = rstr_len + ((max_len - 3) % 2); |
1243 output->assign(input.substr(0, lstr_len) + L"..." + | 1243 output->assign(input.substr(0, lstr_len) + L"..." + |
1244 input.substr(input.length() - rstr_len)); | 1244 input.substr(input.length() - rstr_len)); |
1245 break; | 1245 break; |
1246 } | 1246 } |
1247 } | 1247 } |
1248 | 1248 |
1249 return true; | 1249 return true; |
1250 } | 1250 } |
OLD | NEW |