Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: third_party/WebKit/Source/wtf/text/WTFString.cpp

Issue 2373983006: reflow comments in wtf/text (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * (C) 1999 Lars Knoll (knoll@kde.org) 2 * (C) 1999 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010, 2012 Apple Inc. All rights reserved. 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010, 2012 Apple Inc. All rights
4 * reserved.
4 * Copyright (C) 2007-2009 Torch Mobile, Inc. 5 * Copyright (C) 2007-2009 Torch Mobile, Inc.
5 * 6 *
6 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
10 * 11 *
11 * This library is distributed in the hope that it will be useful, 12 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
(...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after
583 CString result = CString::newUninitialized(length, characterBuffer); 584 CString result = CString::newUninitialized(length, characterBuffer);
584 585
585 for (unsigned i = 0; i < length; ++i) { 586 for (unsigned i = 0; i < length; ++i) {
586 UChar ch = characters[i]; 587 UChar ch = characters[i];
587 characterBuffer[i] = ch > 0xff ? '?' : static_cast<char>(ch); 588 characterBuffer[i] = ch > 0xff ? '?' : static_cast<char>(ch);
588 } 589 }
589 590
590 return result; 591 return result;
591 } 592 }
592 593
593 // Helper to write a three-byte UTF-8 code point to the buffer, caller must chec k room is available. 594 // Helper to write a three-byte UTF-8 code point to the buffer, caller must
595 // check room is available.
594 static inline void putUTF8Triple(char*& buffer, UChar ch) { 596 static inline void putUTF8Triple(char*& buffer, UChar ch) {
595 ASSERT(ch >= 0x0800); 597 ASSERT(ch >= 0x0800);
596 *buffer++ = static_cast<char>(((ch >> 12) & 0x0F) | 0xE0); 598 *buffer++ = static_cast<char>(((ch >> 12) & 0x0F) | 0xE0);
597 *buffer++ = static_cast<char>(((ch >> 6) & 0x3F) | 0x80); 599 *buffer++ = static_cast<char>(((ch >> 6) & 0x3F) | 0x80);
598 *buffer++ = static_cast<char>((ch & 0x3F) | 0x80); 600 *buffer++ = static_cast<char>((ch & 0x3F) | 0x80);
599 } 601 }
600 602
601 CString String::utf8(UTF8ConversionMode mode) const { 603 CString String::utf8(UTF8ConversionMode mode) const {
602 unsigned length = this->length(); 604 unsigned length = this->length();
603 605
(...skipping 15 matching lines...) Expand all
619 Vector<char, 1024> bufferVector(length * 3); 621 Vector<char, 1024> bufferVector(length * 3);
620 622
621 char* buffer = bufferVector.data(); 623 char* buffer = bufferVector.data();
622 624
623 if (is8Bit()) { 625 if (is8Bit()) {
624 const LChar* characters = this->characters8(); 626 const LChar* characters = this->characters8();
625 627
626 ConversionResult result = 628 ConversionResult result =
627 convertLatin1ToUTF8(&characters, characters + length, &buffer, 629 convertLatin1ToUTF8(&characters, characters + length, &buffer,
628 buffer + bufferVector.size()); 630 buffer + bufferVector.size());
629 ASSERT_UNUSED( 631 // (length * 3) should be sufficient for any conversion
630 result, 632 ASSERT_UNUSED(result, result != targetExhausted);
631 result !=
632 targetExhausted); // (length * 3) should be sufficient for any conv ersion
633 } else { 633 } else {
634 const UChar* characters = this->characters16(); 634 const UChar* characters = this->characters16();
635 635
636 if (mode == StrictUTF8ConversionReplacingUnpairedSurrogatesWithFFFD) { 636 if (mode == StrictUTF8ConversionReplacingUnpairedSurrogatesWithFFFD) {
637 const UChar* charactersEnd = characters + length; 637 const UChar* charactersEnd = characters + length;
638 char* bufferEnd = buffer + bufferVector.size(); 638 char* bufferEnd = buffer + bufferVector.size();
639 while (characters < charactersEnd) { 639 while (characters < charactersEnd) {
640 // Use strict conversion to detect unpaired surrogates. 640 // Use strict conversion to detect unpaired surrogates.
641 ConversionResult result = convertUTF16ToUTF8(&characters, charactersEnd, 641 ConversionResult result = convertUTF16ToUTF8(&characters, charactersEnd,
642 &buffer, bufferEnd, true); 642 &buffer, bufferEnd, true);
643 ASSERT(result != targetExhausted); 643 ASSERT(result != targetExhausted);
644 // Conversion fails when there is an unpaired surrogate. Put 644 // Conversion fails when there is an unpaired surrogate. Put
645 // replacement character (U+FFFD) instead of the unpaired 645 // replacement character (U+FFFD) instead of the unpaired
646 // surrogate. 646 // surrogate.
647 if (result != conversionOK) { 647 if (result != conversionOK) {
648 ASSERT((0xD800 <= *characters && *characters <= 0xDFFF)); 648 ASSERT((0xD800 <= *characters && *characters <= 0xDFFF));
649 // There should be room left, since one UChar hasn't been 649 // There should be room left, since one UChar hasn't been
650 // converted. 650 // converted.
651 ASSERT((buffer + 3) <= bufferEnd); 651 ASSERT((buffer + 3) <= bufferEnd);
652 putUTF8Triple(buffer, replacementCharacter); 652 putUTF8Triple(buffer, replacementCharacter);
653 ++characters; 653 ++characters;
654 } 654 }
655 } 655 }
656 } else { 656 } else {
657 bool strict = mode == StrictUTF8Conversion; 657 bool strict = mode == StrictUTF8Conversion;
658 ConversionResult result = 658 ConversionResult result =
659 convertUTF16ToUTF8(&characters, characters + length, &buffer, 659 convertUTF16ToUTF8(&characters, characters + length, &buffer,
660 buffer + bufferVector.size(), strict); 660 buffer + bufferVector.size(), strict);
661 ASSERT( 661 // (length * 3) should be sufficient for any conversion
662 result != 662 ASSERT(result != targetExhausted);
663 targetExhausted); // (length * 3) should be sufficient for any conver sion
664 663
665 // Only produced from strict conversion. 664 // Only produced from strict conversion.
666 if (result == sourceIllegal) { 665 if (result == sourceIllegal) {
667 ASSERT(strict); 666 ASSERT(strict);
668 return CString(); 667 return CString();
669 } 668 }
670 669
671 // Check for an unconverted high surrogate. 670 // Check for an unconverted high surrogate.
672 if (result == sourceExhausted) { 671 if (result == sourceExhausted) {
673 if (strict) 672 if (strict)
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
845 } 844 }
846 buffer.append('\0'); 845 buffer.append('\0');
847 return buffer; 846 return buffer;
848 } 847 }
849 848
850 Vector<char> asciiDebug(String& string) { 849 Vector<char> asciiDebug(String& string) {
851 return asciiDebug(string.impl()); 850 return asciiDebug(string.impl());
852 } 851 }
853 852
854 #endif 853 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698