| Index: base/string_util_icu.cc
|
| ===================================================================
|
| --- base/string_util_icu.cc (revision 28217)
|
| +++ base/string_util_icu.cc (working copy)
|
| @@ -1,80 +0,0 @@
|
| -// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "base/string_util.h"
|
| -
|
| -#include <string.h>
|
| -#include <vector>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/logging.h"
|
| -#include "base/singleton.h"
|
| -#include "unicode/numfmt.h"
|
| -#include "unicode/ustring.h"
|
| -
|
| -// Number formatting -----------------------------------------------------------
|
| -
|
| -namespace {
|
| -
|
| -struct NumberFormatSingletonTraits
|
| - : public DefaultSingletonTraits<icu::NumberFormat> {
|
| - static icu::NumberFormat* New() {
|
| - UErrorCode status = U_ZERO_ERROR;
|
| - icu::NumberFormat* formatter = icu::NumberFormat::createInstance(status);
|
| - DCHECK(U_SUCCESS(status));
|
| - return formatter;
|
| - }
|
| - // There's no ICU call to destroy a NumberFormat object other than
|
| - // operator delete, so use the default Delete, which calls operator delete.
|
| - // This can cause problems if a different allocator is used by this file than
|
| - // by ICU.
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -std::wstring FormatNumber(int64 number) {
|
| - icu::NumberFormat* number_format =
|
| - Singleton<icu::NumberFormat, NumberFormatSingletonTraits>::get();
|
| -
|
| - if (!number_format) {
|
| - // As a fallback, just return the raw number in a string.
|
| - return StringPrintf(L"%lld", number);
|
| - }
|
| - icu::UnicodeString ustr;
|
| - number_format->format(number, ustr);
|
| -
|
| -#if defined(WCHAR_T_IS_UTF16)
|
| - return std::wstring(ustr.getBuffer(),
|
| - static_cast<std::wstring::size_type>(ustr.length()));
|
| -#elif defined(WCHAR_T_IS_UTF32)
|
| - wchar_t buffer[64]; // A int64 is less than 20 chars long, so 64 chars
|
| - // leaves plenty of room for formating stuff.
|
| - int length = 0;
|
| - UErrorCode error = U_ZERO_ERROR;
|
| - u_strToWCS(buffer, 64, &length, ustr.getBuffer(), ustr.length() , &error);
|
| - if (U_FAILURE(error)) {
|
| - NOTREACHED();
|
| - // As a fallback, just return the raw number in a string.
|
| - return StringPrintf(L"%lld", number);
|
| - }
|
| - return std::wstring(buffer, static_cast<std::wstring::size_type>(length));
|
| -#endif // defined(WCHAR_T_IS_UTF32)
|
| -}
|
| -
|
| -// Although this function isn't specific to ICU, we implemented it here so
|
| -// that chrome.exe won't pull it in. Moving this function to string_util.cc
|
| -// causes chrome.exe to grow by 400k because of more ICU being pulled in.
|
| -TrimPositions TrimWhitespaceUTF8(const std::string& input,
|
| - TrimPositions positions,
|
| - std::string* output) {
|
| - // This implementation is not so fast since it converts the text encoding
|
| - // twice. Please feel free to file a bug if this function hurts the
|
| - // performance of Chrome.
|
| - DCHECK(IsStringUTF8(input));
|
| - std::wstring input_wide = UTF8ToWide(input);
|
| - std::wstring output_wide;
|
| - TrimPositions result = TrimWhitespace(input_wide, positions, &output_wide);
|
| - *output = WideToUTF8(output_wide);
|
| - return result;
|
| -}
|
|
|