diff options
| author | Leon Clarke <leonclarke@google.com> | 2010-06-03 14:33:32 +0100 |
|---|---|---|
| committer | Leon Clarke <leonclarke@google.com> | 2010-06-08 12:24:51 +0100 |
| commit | 5af96e2c7b73ebc627c6894727826a7576d31758 (patch) | |
| tree | f9d5e6f6175ccd7e3d14de9b290f08937a0d17ba /JavaScriptCore/wtf/text | |
| parent | 8cc4fcf4f6adcbc0e0aebfc24fbad9a4cddf2cfb (diff) | |
| download | external_webkit-5af96e2c7b73ebc627c6894727826a7576d31758.zip external_webkit-5af96e2c7b73ebc627c6894727826a7576d31758.tar.gz external_webkit-5af96e2c7b73ebc627c6894727826a7576d31758.tar.bz2 | |
Merge webkit.org at r60469 : Initial merge by git.
Change-Id: I66a0047aa2af802f66bb0c7f2a8b02247a596234
Diffstat (limited to 'JavaScriptCore/wtf/text')
| -rw-r--r-- | JavaScriptCore/wtf/text/StringImpl.cpp | 23 | ||||
| -rw-r--r-- | JavaScriptCore/wtf/text/StringImpl.h | 2 | ||||
| -rw-r--r-- | JavaScriptCore/wtf/text/WTFString.cpp | 5 | ||||
| -rw-r--r-- | JavaScriptCore/wtf/text/WTFString.h | 2 |
4 files changed, 32 insertions, 0 deletions
diff --git a/JavaScriptCore/wtf/text/StringImpl.cpp b/JavaScriptCore/wtf/text/StringImpl.cpp index 3606597..698cab9 100644 --- a/JavaScriptCore/wtf/text/StringImpl.cpp +++ b/JavaScriptCore/wtf/text/StringImpl.cpp @@ -476,6 +476,29 @@ static inline bool equalIgnoringCase(const UChar* a, const UChar* b, int length) return umemcasecmp(a, b, length) == 0; } +int codePointCompare(const StringImpl* s1, const StringImpl* s2) +{ + const unsigned l1 = s1 ? s1->length() : 0; + const unsigned l2 = s2 ? s2->length() : 0; + const unsigned lmin = l1 < l2 ? l1 : l2; + const UChar* c1 = s1 ? s1->characters() : 0; + const UChar* c2 = s2 ? s2->characters() : 0; + unsigned pos = 0; + while (pos < lmin && *c1 == *c2) { + c1++; + c2++; + pos++; + } + + if (pos < lmin) + return (c1[0] > c2[0]) ? 1 : -1; + + if (l1 == l2) + return 0; + + return (l1 > l2) ? 1 : -1; +} + int StringImpl::find(const char* chs, int index, bool caseSensitive) { if (!chs || index < 0) diff --git a/JavaScriptCore/wtf/text/StringImpl.h b/JavaScriptCore/wtf/text/StringImpl.h index f4b2970..244009f 100644 --- a/JavaScriptCore/wtf/text/StringImpl.h +++ b/JavaScriptCore/wtf/text/StringImpl.h @@ -352,6 +352,8 @@ inline bool equalIgnoringCase(const char* a, const UChar* b, unsigned length) { bool equalIgnoringNullity(StringImpl*, StringImpl*); +int codePointCompare(const StringImpl*, const StringImpl*); + static inline bool isSpaceOrNewline(UChar c) { // Use isASCIISpace() for basic Latin-1. diff --git a/JavaScriptCore/wtf/text/WTFString.cpp b/JavaScriptCore/wtf/text/WTFString.cpp index 842d755..d744b15 100644 --- a/JavaScriptCore/wtf/text/WTFString.cpp +++ b/JavaScriptCore/wtf/text/WTFString.cpp @@ -126,6 +126,11 @@ String operator+(const char* cs, const String& s) return String(cs) + s; } +int codePointCompare(const String& a, const String& b) +{ + return codePointCompare(a.impl(), b.impl()); +} + void String::insert(const String& str, unsigned pos) { if (str.isEmpty()) { diff --git a/JavaScriptCore/wtf/text/WTFString.h b/JavaScriptCore/wtf/text/WTFString.h index d98621c..90d9a71 100644 --- a/JavaScriptCore/wtf/text/WTFString.h +++ b/JavaScriptCore/wtf/text/WTFString.h @@ -351,6 +351,8 @@ inline bool charactersAreAllASCII(const UChar* characters, size_t length) return !(ored & 0xFF80); } +int codePointCompare(const String&, const String&); + inline int find(const UChar* characters, size_t length, UChar character, int startPosition) { if (startPosition >= static_cast<int>(length)) |
