| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2001 Dirk Mueller ( mueller@kde.org ) | 4 * (C) 2001 Dirk Mueller ( mueller@kde.org ) |
| 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2013 Apple Inc. All r
ights reserved. | 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2013 Apple Inc. All r
ights reserved. |
| 6 * Copyright (C) 2006 Andrew Wellington (proton@wiretapped.net) | 6 * Copyright (C) 2006 Andrew Wellington (proton@wiretapped.net) |
| 7 * | 7 * |
| 8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
| 9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
| 10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
| 11 * version 2 of the License, or (at your option) any later version. | 11 * version 2 of the License, or (at your option) any later version. |
| 12 * | 12 * |
| 13 * This library is distributed in the hope that it will be useful, | 13 * This library is distributed in the hope that it will be useful, |
| 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 16 * Library General Public License for more details. | 16 * Library General Public License for more details. |
| 17 * | 17 * |
| 18 * You should have received a copy of the GNU Library General Public License | 18 * You should have received a copy of the GNU Library General Public License |
| 19 * along with this library; see the file COPYING.LIB. If not, write to | 19 * along with this library; see the file COPYING.LIB. If not, write to |
| 20 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 20 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
| 21 * Boston, MA 02110-1301, USA. | 21 * Boston, MA 02110-1301, USA. |
| 22 * | 22 * |
| 23 */ | 23 */ |
| 24 | 24 |
| 25 #include "wtf/text/StringImpl.h" | 25 #include "wtf/text/StringImpl.h" |
| 26 | 26 |
| 27 #include "wtf/DynamicAnnotations.h" | 27 #include "wtf/DynamicAnnotations.h" |
| 28 #include "wtf/LeakAnnotations.h" | 28 #include "wtf/LeakAnnotations.h" |
| 29 #include "wtf/OwnPtr.h" | 29 #include "wtf/PtrUtil.h" |
| 30 #include "wtf/PassOwnPtr.h" | |
| 31 #include "wtf/StdLibExtras.h" | 30 #include "wtf/StdLibExtras.h" |
| 32 #include "wtf/allocator/PartitionAlloc.h" | 31 #include "wtf/allocator/PartitionAlloc.h" |
| 33 #include "wtf/allocator/Partitions.h" | 32 #include "wtf/allocator/Partitions.h" |
| 34 #include "wtf/text/AtomicString.h" | 33 #include "wtf/text/AtomicString.h" |
| 35 #include "wtf/text/CharacterNames.h" | 34 #include "wtf/text/CharacterNames.h" |
| 36 #include "wtf/text/StringBuffer.h" | 35 #include "wtf/text/StringBuffer.h" |
| 37 #include "wtf/text/StringHash.h" | 36 #include "wtf/text/StringHash.h" |
| 38 #include "wtf/text/StringToNumber.h" | 37 #include "wtf/text/StringToNumber.h" |
| 39 #include <algorithm> | 38 #include <algorithm> |
| 39 #include <memory> |
| 40 #include <unicode/translit.h> | 40 #include <unicode/translit.h> |
| 41 #include <unicode/unistr.h> | 41 #include <unicode/unistr.h> |
| 42 | 42 |
| 43 #ifdef STRING_STATS | 43 #ifdef STRING_STATS |
| 44 #include "wtf/DataLog.h" | 44 #include "wtf/DataLog.h" |
| 45 #include "wtf/HashMap.h" | 45 #include "wtf/HashMap.h" |
| 46 #include "wtf/HashSet.h" | 46 #include "wtf/HashSet.h" |
| 47 #include "wtf/RefCounted.h" | 47 #include "wtf/RefCounted.h" |
| 48 #include "wtf/ThreadingPrimitives.h" | 48 #include "wtf/ThreadingPrimitives.h" |
| 49 #include <unistd.h> | 49 #include <unistd.h> |
| (...skipping 736 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 786 int length = m_length; | 786 int length = m_length; |
| 787 | 787 |
| 788 RefPtr<StringImpl> upconverted = upconvertedString(); | 788 RefPtr<StringImpl> upconverted = upconvertedString(); |
| 789 const UChar* source16 = upconverted->characters16(); | 789 const UChar* source16 = upconverted->characters16(); |
| 790 | 790 |
| 791 if (localeForConversion) | 791 if (localeForConversion) |
| 792 return caseConvert(source16, length, u_strToUpper, localeForConversion,
this); | 792 return caseConvert(source16, length, u_strToUpper, localeForConversion,
this); |
| 793 | 793 |
| 794 // TODO(jungshik): Cache transliterator if perf penaly warrants it for Greek
. | 794 // TODO(jungshik): Cache transliterator if perf penaly warrants it for Greek
. |
| 795 UErrorCode status = U_ZERO_ERROR; | 795 UErrorCode status = U_ZERO_ERROR; |
| 796 OwnPtr<icu::Transliterator> translit = | 796 std::unique_ptr<icu::Transliterator> translit = |
| 797 adoptPtr(icu::Transliterator::createInstance(transliteratorId, UTRANS_FO
RWARD, status)); | 797 wrapUnique(icu::Transliterator::createInstance(transliteratorId, UTRANS_
FORWARD, status)); |
| 798 if (U_FAILURE(status)) | 798 if (U_FAILURE(status)) |
| 799 return upper(); | 799 return upper(); |
| 800 | 800 |
| 801 // target will be copy-on-write. | 801 // target will be copy-on-write. |
| 802 icu::UnicodeString target(false, source16, length); | 802 icu::UnicodeString target(false, source16, length); |
| 803 translit->transliterate(target); | 803 translit->transliterate(target); |
| 804 | 804 |
| 805 return create(target.getBuffer(), target.length()); | 805 return create(target.getBuffer(), target.length()); |
| 806 } | 806 } |
| 807 | 807 |
| (...skipping 1549 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2357 } else if (localeIdMatchesLang(localeIdentifier, "lt")) { | 2357 } else if (localeIdMatchesLang(localeIdentifier, "lt")) { |
| 2358 // TODO(rob.buis) implement upper-casing rules for lt | 2358 // TODO(rob.buis) implement upper-casing rules for lt |
| 2359 // like in StringImpl::upper(locale). | 2359 // like in StringImpl::upper(locale). |
| 2360 } | 2360 } |
| 2361 } | 2361 } |
| 2362 | 2362 |
| 2363 return toUpper(c); | 2363 return toUpper(c); |
| 2364 } | 2364 } |
| 2365 | 2365 |
| 2366 } // namespace WTF | 2366 } // namespace WTF |
| OLD | NEW |