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/PtrUtil.h" | 29 #include "wtf/OwnPtr.h" |
| 30 #include "wtf/PassOwnPtr.h" |
30 #include "wtf/StdLibExtras.h" | 31 #include "wtf/StdLibExtras.h" |
31 #include "wtf/allocator/PartitionAlloc.h" | 32 #include "wtf/allocator/PartitionAlloc.h" |
32 #include "wtf/allocator/Partitions.h" | 33 #include "wtf/allocator/Partitions.h" |
33 #include "wtf/text/AtomicString.h" | 34 #include "wtf/text/AtomicString.h" |
34 #include "wtf/text/CharacterNames.h" | 35 #include "wtf/text/CharacterNames.h" |
35 #include "wtf/text/StringBuffer.h" | 36 #include "wtf/text/StringBuffer.h" |
36 #include "wtf/text/StringHash.h" | 37 #include "wtf/text/StringHash.h" |
37 #include "wtf/text/StringToNumber.h" | 38 #include "wtf/text/StringToNumber.h" |
38 #include <algorithm> | 39 #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 std::unique_ptr<icu::Transliterator> translit = | 796 OwnPtr<icu::Transliterator> translit = |
797 wrapUnique(icu::Transliterator::createInstance(transliteratorId, UTRANS_
FORWARD, status)); | 797 adoptPtr(icu::Transliterator::createInstance(transliteratorId, UTRANS_FO
RWARD, 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 |