| 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 |
| (...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 514 // Nothing to do if the string is all ASCII with no uppercase. | 514 // Nothing to do if the string is all ASCII with no uppercase. |
| 515 if (firstIndexToBeLowered == m_length) | 515 if (firstIndexToBeLowered == m_length) |
| 516 return this; | 516 return this; |
| 517 | 517 |
| 518 LChar* data8; | 518 LChar* data8; |
| 519 RefPtr<StringImpl> newImpl = createUninitialized(m_length, data8); | 519 RefPtr<StringImpl> newImpl = createUninitialized(m_length, data8); |
| 520 memcpy(data8, characters8(), firstIndexToBeLowered); | 520 memcpy(data8, characters8(), firstIndexToBeLowered); |
| 521 | 521 |
| 522 for (unsigned i = firstIndexToBeLowered; i < m_length; ++i) { | 522 for (unsigned i = firstIndexToBeLowered; i < m_length; ++i) { |
| 523 LChar ch = characters8()[i]; | 523 LChar ch = characters8()[i]; |
| 524 data8[i] = UNLIKELY(ch & ~0x7F) ? static_cast<LChar>(Unicode::toLowe
r(ch)) | 524 data8[i] = UNLIKELY(ch & ~0x7F) |
| 525 : toASCIILower(ch); | 525 ? static_cast<LChar>(Unicode::toLower(ch)) : toASCIILower(ch); |
| 526 } | 526 } |
| 527 | 527 |
| 528 return newImpl.release(); | 528 return newImpl.release(); |
| 529 } | 529 } |
| 530 | 530 |
| 531 bool noUpper = true; | 531 bool noUpper = true; |
| 532 UChar ored = 0; | 532 UChar ored = 0; |
| 533 | 533 |
| 534 const UChar* end = characters16() + m_length; | 534 const UChar* end = characters16() + m_length; |
| 535 for (const UChar* chp = characters16(); chp != end; ++chp) { | 535 for (const UChar* chp = characters16(); chp != end; ++chp) { |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 618 // We have numberSSCharacters sharp-s characters, but none of the other
special characters. | 618 // We have numberSSCharacters sharp-s characters, but none of the other
special characters. |
| 619 newImpl = createUninitialized(m_length + numberSharpSCharacters, data8); | 619 newImpl = createUninitialized(m_length + numberSharpSCharacters, data8); |
| 620 | 620 |
| 621 LChar* dest = data8; | 621 LChar* dest = data8; |
| 622 | 622 |
| 623 for (int32_t i = 0; i < length; ++i) { | 623 for (int32_t i = 0; i < length; ++i) { |
| 624 LChar c = characters8()[i]; | 624 LChar c = characters8()[i]; |
| 625 if (c == smallLetterSharpSCharacter) { | 625 if (c == smallLetterSharpSCharacter) { |
| 626 *dest++ = 'S'; | 626 *dest++ = 'S'; |
| 627 *dest++ = 'S'; | 627 *dest++ = 'S'; |
| 628 } else | 628 } else { |
| 629 *dest++ = static_cast<LChar>(Unicode::toUpper(c)); | 629 *dest++ = static_cast<LChar>(Unicode::toUpper(c)); |
| 630 } |
| 630 } | 631 } |
| 631 | 632 |
| 632 return newImpl.release(); | 633 return newImpl.release(); |
| 633 } | 634 } |
| 634 | 635 |
| 635 upconvert: | 636 upconvert: |
| 636 RefPtr<StringImpl> upconverted = upconvertedString(); | 637 RefPtr<StringImpl> upconverted = upconvertedString(); |
| 637 const UChar* source16 = upconverted->characters16(); | 638 const UChar* source16 = upconverted->characters16(); |
| 638 | 639 |
| 639 UChar* data16; | 640 UChar* data16; |
| (...skipping 952 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1592 RELEASE_ASSERT((length() - lengthToReplace) < (numeric_limits<unsigned>::max
() - lengthToInsert)); | 1593 RELEASE_ASSERT((length() - lengthToReplace) < (numeric_limits<unsigned>::max
() - lengthToInsert)); |
| 1593 | 1594 |
| 1594 if (is8Bit() && (!str || str->is8Bit())) { | 1595 if (is8Bit() && (!str || str->is8Bit())) { |
| 1595 LChar* data; | 1596 LChar* data; |
| 1596 RefPtr<StringImpl> newImpl = | 1597 RefPtr<StringImpl> newImpl = |
| 1597 createUninitialized(length() - lengthToReplace + lengthToInsert, data); | 1598 createUninitialized(length() - lengthToReplace + lengthToInsert, data); |
| 1598 memcpy(data, characters8(), position * sizeof(LChar)); | 1599 memcpy(data, characters8(), position * sizeof(LChar)); |
| 1599 if (str) | 1600 if (str) |
| 1600 memcpy(data + position, str->characters8(), lengthToInsert * sizeof(
LChar)); | 1601 memcpy(data + position, str->characters8(), lengthToInsert * sizeof(
LChar)); |
| 1601 memcpy(data + position + lengthToInsert, characters8() + position + leng
thToReplace, | 1602 memcpy(data + position + lengthToInsert, characters8() + position + leng
thToReplace, |
| 1602 (length() - position - lengthToReplace) * sizeof(LChar)); | 1603 (length() - position - lengthToReplace) * sizeof(LChar)); |
| 1603 return newImpl.release(); | 1604 return newImpl.release(); |
| 1604 } | 1605 } |
| 1605 UChar* data; | 1606 UChar* data; |
| 1606 RefPtr<StringImpl> newImpl = | 1607 RefPtr<StringImpl> newImpl = |
| 1607 createUninitialized(length() - lengthToReplace + lengthToInsert, data); | 1608 createUninitialized(length() - lengthToReplace + lengthToInsert, data); |
| 1608 if (is8Bit()) | 1609 if (is8Bit()) |
| 1609 for (unsigned i = 0; i < position; ++i) | 1610 for (unsigned i = 0; i < position; ++i) |
| 1610 data[i] = characters8()[i]; | 1611 data[i] = characters8()[i]; |
| 1611 else | 1612 else |
| 1612 memcpy(data, characters16(), position * sizeof(UChar)); | 1613 memcpy(data, characters16(), position * sizeof(UChar)); |
| (...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2119 } else if (localeIdMatchesLang(localeIdentifier, "lt")) { | 2120 } else if (localeIdMatchesLang(localeIdentifier, "lt")) { |
| 2120 // TODO(rob.buis) implement upper-casing rules for lt | 2121 // TODO(rob.buis) implement upper-casing rules for lt |
| 2121 // like in StringImpl::upper(locale). | 2122 // like in StringImpl::upper(locale). |
| 2122 } | 2123 } |
| 2123 } | 2124 } |
| 2124 | 2125 |
| 2125 return toUpper(c); | 2126 return toUpper(c); |
| 2126 } | 2127 } |
| 2127 | 2128 |
| 2128 } // namespace WTF | 2129 } // namespace WTF |
| OLD | NEW |