OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-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 #include "base/string_util.h" | 5 #include "base/string_util.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
624 | 624 |
625 utf16->resize(actual_size); | 625 utf16->resize(actual_size); |
626 return true; | 626 return true; |
627 } | 627 } |
628 | 628 |
629 // Number formatting ----------------------------------------------------------- | 629 // Number formatting ----------------------------------------------------------- |
630 | 630 |
631 namespace { | 631 namespace { |
632 | 632 |
633 struct NumberFormatSingletonTraits | 633 struct NumberFormatSingletonTraits |
634 : public DefaultSingletonTraits<NumberFormat> { | 634 : public DefaultSingletonTraits<icu::NumberFormat> { |
635 static NumberFormat* New() { | 635 static icu::NumberFormat* New() { |
636 UErrorCode status = U_ZERO_ERROR; | 636 UErrorCode status = U_ZERO_ERROR; |
637 NumberFormat* formatter = NumberFormat::createInstance(status); | 637 icu::NumberFormat* formatter = icu::NumberFormat::createInstance(status); |
638 DCHECK(U_SUCCESS(status)); | 638 DCHECK(U_SUCCESS(status)); |
639 return formatter; | 639 return formatter; |
640 } | 640 } |
641 // There's no ICU call to destroy a NumberFormat object other than | 641 // There's no ICU call to destroy a NumberFormat object other than |
642 // operator delete, so use the default Delete, which calls operator delete. | 642 // operator delete, so use the default Delete, which calls operator delete. |
643 // This can cause problems if a different allocator is used by this file than | 643 // This can cause problems if a different allocator is used by this file than |
644 // by ICU. | 644 // by ICU. |
645 }; | 645 }; |
646 | 646 |
647 } // namespace | 647 } // namespace |
648 | 648 |
649 std::wstring FormatNumber(int64 number) { | 649 std::wstring FormatNumber(int64 number) { |
650 NumberFormat* number_format = | 650 icu::NumberFormat* number_format = |
651 Singleton<NumberFormat, NumberFormatSingletonTraits>::get(); | 651 Singleton<icu::NumberFormat, NumberFormatSingletonTraits>::get(); |
652 | 652 |
653 if (!number_format) { | 653 if (!number_format) { |
654 // As a fallback, just return the raw number in a string. | 654 // As a fallback, just return the raw number in a string. |
655 return StringPrintf(L"%lld", number); | 655 return StringPrintf(L"%lld", number); |
656 } | 656 } |
657 UnicodeString ustr; | 657 icu::UnicodeString ustr; |
658 number_format->format(number, ustr); | 658 number_format->format(number, ustr); |
659 | 659 |
660 #if defined(WCHAR_T_IS_UTF16) | 660 #if defined(WCHAR_T_IS_UTF16) |
661 return std::wstring(ustr.getBuffer(), | 661 return std::wstring(ustr.getBuffer(), |
662 static_cast<std::wstring::size_type>(ustr.length())); | 662 static_cast<std::wstring::size_type>(ustr.length())); |
663 #elif defined(WCHAR_T_IS_UTF32) | 663 #elif defined(WCHAR_T_IS_UTF32) |
664 wchar_t buffer[64]; // A int64 is less than 20 chars long, so 64 chars | 664 wchar_t buffer[64]; // A int64 is less than 20 chars long, so 64 chars |
665 // leaves plenty of room for formating stuff. | 665 // leaves plenty of room for formating stuff. |
666 int length = 0; | 666 int length = 0; |
667 UErrorCode error = U_ZERO_ERROR; | 667 UErrorCode error = U_ZERO_ERROR; |
(...skipping 16 matching lines...) Expand all Loading... |
684 // This implementation is not so fast since it converts the text encoding | 684 // This implementation is not so fast since it converts the text encoding |
685 // twice. Please feel free to file a bug if this function hurts the | 685 // twice. Please feel free to file a bug if this function hurts the |
686 // performance of Chrome. | 686 // performance of Chrome. |
687 DCHECK(IsStringUTF8(input)); | 687 DCHECK(IsStringUTF8(input)); |
688 std::wstring input_wide = UTF8ToWide(input); | 688 std::wstring input_wide = UTF8ToWide(input); |
689 std::wstring output_wide; | 689 std::wstring output_wide; |
690 TrimPositions result = TrimWhitespace(input_wide, positions, &output_wide); | 690 TrimPositions result = TrimWhitespace(input_wide, positions, &output_wide); |
691 *output = WideToUTF8(output_wide); | 691 *output = WideToUTF8(output_wide); |
692 return result; | 692 return result; |
693 } | 693 } |
OLD | NEW |