diff options
author | Steve Block <steveblock@google.com> | 2010-09-29 17:32:26 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2010-09-29 17:35:08 +0100 |
commit | 68513a70bcd92384395513322f1b801e7bf9c729 (patch) | |
tree | 161b50f75a5921d61731bb25e730005994fcec85 /JavaScriptCore/wtf/text | |
parent | fd5c6425ce58eb75211be7718d5dee960842a37e (diff) | |
download | external_webkit-68513a70bcd92384395513322f1b801e7bf9c729.zip external_webkit-68513a70bcd92384395513322f1b801e7bf9c729.tar.gz external_webkit-68513a70bcd92384395513322f1b801e7bf9c729.tar.bz2 |
Merge WebKit at r67908: Initial merge by Git
Change-Id: I43a553e7b3299b28cb6ee8aa035ed70fe342b972
Diffstat (limited to 'JavaScriptCore/wtf/text')
-rw-r--r-- | JavaScriptCore/wtf/text/StringImpl.cpp | 6 | ||||
-rw-r--r-- | JavaScriptCore/wtf/text/WTFString.h | 41 |
2 files changed, 37 insertions, 10 deletions
diff --git a/JavaScriptCore/wtf/text/StringImpl.cpp b/JavaScriptCore/wtf/text/StringImpl.cpp index a667525..7822c00 100644 --- a/JavaScriptCore/wtf/text/StringImpl.cpp +++ b/JavaScriptCore/wtf/text/StringImpl.cpp @@ -48,8 +48,10 @@ StringImpl::~StringImpl() if (isAtomic()) AtomicString::remove(this); #if USE(JSC) - if (isIdentifier()) - wtfThreadData().currentIdentifierTable()->remove(this); + if (isIdentifier()) { + if (!wtfThreadData().currentIdentifierTable()->remove(this)) + CRASH(); + } #endif BufferOwnership ownership = bufferOwnership(); diff --git a/JavaScriptCore/wtf/text/WTFString.h b/JavaScriptCore/wtf/text/WTFString.h index fafef12..8a4a6c7 100644 --- a/JavaScriptCore/wtf/text/WTFString.h +++ b/JavaScriptCore/wtf/text/WTFString.h @@ -53,6 +53,7 @@ class BString; namespace WTF { class CString; +struct StringHash; // Declarations of string operations @@ -72,6 +73,8 @@ intptr_t charactersToIntPtr(const UChar*, size_t, bool* ok = 0); // ignores trai double charactersToDouble(const UChar*, size_t, bool* ok = 0); float charactersToFloat(const UChar*, size_t, bool* ok = 0); +template<bool isSpecialCharacter(UChar)> bool isAllSpecialCharacters(const UChar*, size_t); + class String { public: // Construct a null string, distinguishable from an empty string. @@ -220,6 +223,7 @@ public: String simplifyWhiteSpace() const; String removeCharacters(CharacterMatchFunctionPtr) const; + template<bool isSpecialCharacter(UChar)> bool isAllSpecialCharacters() const; // Return the string with case folded for case insensitive comparison. String foldCase() const; @@ -423,7 +427,19 @@ inline void appendNumber(Vector<UChar>& vector, unsigned char number) } } -struct StringHash; +template<bool isSpecialCharacter(UChar)> inline bool isAllSpecialCharacters(const UChar* characters, size_t length) +{ + for (size_t i = 0; i < length; ++i) { + if (!isSpecialCharacter(characters[i])) + return false; + } + return true; +} + +template<bool isSpecialCharacter(UChar)> inline bool String::isAllSpecialCharacters() const +{ + return WTF::isAllSpecialCharacters<isSpecialCharacter>(characters(), length()); +} // StringHash is the default hash for String template<typename T> struct DefaultHash; @@ -440,17 +456,26 @@ template <> struct VectorTraits<String> : SimpleClassVectorTraits using WTF::CString; using WTF::String; - -using WTF::isSpaceOrNewline; -using WTF::find; -using WTF::reverseFind; using WTF::append; using WTF::appendNumber; -using WTF::equal; -using WTF::equalIgnoringCase; using WTF::charactersAreAllASCII; +using WTF::charactersToIntStrict; +using WTF::charactersToUIntStrict; +using WTF::charactersToInt64Strict; +using WTF::charactersToUInt64Strict; +using WTF::charactersToIntPtrStrict; using WTF::charactersToInt; -using WTF::charactersToFloat; +using WTF::charactersToUInt; +using WTF::charactersToInt64; +using WTF::charactersToUInt64; +using WTF::charactersToIntPtr; using WTF::charactersToDouble; +using WTF::charactersToFloat; +using WTF::equal; +using WTF::equalIgnoringCase; +using WTF::find; +using WTF::isAllSpecialCharacters; +using WTF::isSpaceOrNewline; +using WTF::reverseFind; #endif |