Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2013 Apple Inc. All rights reserved. | 3 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2013 Apple Inc. All rights reserved. |
| 4 * Copyright (C) 2009 Google Inc. All rights reserved. | 4 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 5 * | 5 * |
| 6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
| 7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
| 8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
| 9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
| 10 * | 10 * |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 24 #define StringImpl_h | 24 #define StringImpl_h |
| 25 | 25 |
| 26 #include "wtf/ASCIICType.h" | 26 #include "wtf/ASCIICType.h" |
| 27 #include "wtf/Forward.h" | 27 #include "wtf/Forward.h" |
| 28 #include "wtf/HashMap.h" | 28 #include "wtf/HashMap.h" |
| 29 #include "wtf/StringHasher.h" | 29 #include "wtf/StringHasher.h" |
| 30 #include "wtf/Vector.h" | 30 #include "wtf/Vector.h" |
| 31 #include "wtf/WTFExport.h" | 31 #include "wtf/WTFExport.h" |
| 32 #include "wtf/text/Unicode.h" | 32 #include "wtf/text/Unicode.h" |
| 33 #include <limits.h> | 33 #include <limits.h> |
| 34 #include <string.h> | |
| 34 | 35 |
| 35 #if OS(MACOSX) | 36 #if OS(MACOSX) |
| 36 typedef const struct __CFString * CFStringRef; | 37 typedef const struct __CFString * CFStringRef; |
| 37 #endif | 38 #endif |
| 38 | 39 |
| 39 #ifdef __OBJC__ | 40 #ifdef __OBJC__ |
| 40 @class NSString; | 41 @class NSString; |
| 41 #endif | 42 #endif |
| 42 | 43 |
| 43 namespace WTF { | 44 namespace WTF { |
| (...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 511 return false; | 512 return false; |
| 512 } | 513 } |
| 513 return true; | 514 return true; |
| 514 } | 515 } |
| 515 | 516 |
| 516 WTF_EXPORT bool equalIgnoringASCIICase(const StringImpl*, const StringImpl*); | 517 WTF_EXPORT bool equalIgnoringASCIICase(const StringImpl*, const StringImpl*); |
| 517 WTF_EXPORT bool equalIgnoringASCIICase(const StringImpl*, const LChar*); | 518 WTF_EXPORT bool equalIgnoringASCIICase(const StringImpl*, const LChar*); |
| 518 | 519 |
| 519 WTF_EXPORT int codePointCompareIgnoringASCIICase(const StringImpl*, const LChar* ); | 520 WTF_EXPORT int codePointCompareIgnoringASCIICase(const StringImpl*, const LChar* ); |
| 520 | 521 |
| 521 template<typename CharacterType> | 522 inline size_t find(const LChar* characters, unsigned length, LChar matchCharacte r, unsigned index = 0) |
| 522 inline size_t find(const CharacterType* characters, unsigned length, CharacterTy pe matchCharacter, unsigned index = 0) | 523 { |
| 524 const LChar* found = static_cast<const LChar*>( | |
| 525 memchr(characters + index, matchCharacter, length - index)); | |
|
Nico
2016/05/10 17:47:06
what if index > length?
jbroman
2016/05/11 17:19:32
I'd expect that to be an error at the call site (i
| |
| 526 return found ? found - characters : kNotFound; | |
| 527 } | |
| 528 | |
| 529 inline size_t find(const UChar* characters, unsigned length, UChar matchCharacte r, unsigned index = 0) | |
| 523 { | 530 { |
| 524 while (index < length) { | 531 while (index < length) { |
| 525 if (characters[index] == matchCharacter) | 532 if (characters[index] == matchCharacter) |
| 526 return index; | 533 return index; |
| 527 ++index; | 534 ++index; |
| 528 } | 535 } |
| 529 return kNotFound; | 536 return kNotFound; |
| 530 } | 537 } |
| 531 | 538 |
| 532 ALWAYS_INLINE size_t find(const UChar* characters, unsigned length, LChar matchC haracter, unsigned index = 0) | 539 ALWAYS_INLINE size_t find(const UChar* characters, unsigned length, LChar matchC haracter, unsigned index = 0) |
| 533 { | 540 { |
| 534 return find(characters, length, static_cast<UChar>(matchCharacter), index); | 541 return find(characters, length, static_cast<UChar>(matchCharacter), index); |
| 535 } | 542 } |
| 536 | 543 |
| 537 inline size_t find(const LChar* characters, unsigned length, UChar matchCharacte r, unsigned index = 0) | 544 inline size_t find(const LChar* characters, unsigned length, UChar matchCharacte r, unsigned index = 0) |
| 538 { | 545 { |
| 539 if (matchCharacter & ~0xFF) | 546 if (matchCharacter & ~0xFF) |
| 540 return kNotFound; | 547 return kNotFound; |
| 541 return find(characters, length, static_cast<LChar>(matchCharacter), index); | 548 return find(characters, length, static_cast<LChar>(matchCharacter), index); |
| 542 } | 549 } |
| 543 | 550 |
| 551 template <typename CharacterType> | |
| 552 inline size_t find(const CharacterType* characters, unsigned length, char matchC haracter, unsigned index = 0) | |
| 553 { | |
| 554 return find(characters, length, static_cast<LChar>(matchCharacter), index); | |
|
Nico
2016/05/10 17:47:06
why cast matchCharacter to LChar?
jbroman
2016/05/11 17:19:32
To call the actual implementation above. Without t
| |
| 555 } | |
| 556 | |
| 544 inline size_t find(const LChar* characters, unsigned length, CharacterMatchFunct ionPtr matchFunction, unsigned index = 0) | 557 inline size_t find(const LChar* characters, unsigned length, CharacterMatchFunct ionPtr matchFunction, unsigned index = 0) |
| 545 { | 558 { |
| 546 while (index < length) { | 559 while (index < length) { |
| 547 if (matchFunction(characters[index])) | 560 if (matchFunction(characters[index])) |
| 548 return index; | 561 return index; |
| 549 ++index; | 562 ++index; |
| 550 } | 563 } |
| 551 return kNotFound; | 564 return kNotFound; |
| 552 } | 565 } |
| 553 | 566 |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 762 | 775 |
| 763 using WTF::StringImpl; | 776 using WTF::StringImpl; |
| 764 using WTF::equal; | 777 using WTF::equal; |
| 765 using WTF::equalNonNull; | 778 using WTF::equalNonNull; |
| 766 using WTF::TextCaseSensitivity; | 779 using WTF::TextCaseSensitivity; |
| 767 using WTF::TextCaseSensitive; | 780 using WTF::TextCaseSensitive; |
| 768 using WTF::TextCaseASCIIInsensitive; | 781 using WTF::TextCaseASCIIInsensitive; |
| 769 using WTF::TextCaseInsensitive; | 782 using WTF::TextCaseInsensitive; |
| 770 | 783 |
| 771 #endif | 784 #endif |
| OLD | NEW |