Modified: trunk/Source/_javascript_Core/ChangeLog (100166 => 100167)
--- trunk/Source/_javascript_Core/ChangeLog 2011-11-14 19:23:36 UTC (rev 100166)
+++ trunk/Source/_javascript_Core/ChangeLog 2011-11-14 19:25:40 UTC (rev 100167)
@@ -1,3 +1,16 @@
+2011-11-14 Michael Saboff <msab...@apple.com>
+
+ Towards 8 Bit Strings: Templatize YARR Parser
+ https://bugs.webkit.org/show_bug.cgi?id=72288
+
+ Changed Yarr::Parser to be a template based on character type.
+
+ Reviewed by Oliver Hunt.
+
+ * yarr/YarrParser.h:
+ (JSC::Yarr::Parser::Parser):
+ (JSC::Yarr::parse):
+
2011-11-14 Geoffrey Garen <gga...@apple.com>
32-bit build fix: Removed unused declaration.
Modified: trunk/Source/_javascript_Core/yarr/YarrParser.h (100166 => 100167)
--- trunk/Source/_javascript_Core/yarr/YarrParser.h 2011-11-14 19:23:36 UTC (rev 100166)
+++ trunk/Source/_javascript_Core/yarr/YarrParser.h 2011-11-14 19:25:40 UTC (rev 100167)
@@ -43,7 +43,7 @@
};
// The Parser class should not be used directly - only via the Yarr::parse() method.
-template<class Delegate>
+template<class Delegate, typename CharType>
class Parser {
private:
template<class FriendDelegate>
@@ -231,13 +231,13 @@
: m_delegate(delegate)
, m_backReferenceLimit(backReferenceLimit)
, m_err(NoError)
- , m_data(pattern.characters16())
+ , m_data(pattern.getCharacters<CharType>())
, m_size(pattern.length())
, m_index(0)
, m_parenthesesNestingDepth(0)
{
}
-
+
/*
* parseEscape():
*
@@ -793,7 +793,7 @@
Delegate& m_delegate;
unsigned m_backReferenceLimit;
ErrorCode m_err;
- const UChar* m_data;
+ const CharType* m_data;
unsigned m_size;
unsigned m_index;
unsigned m_parenthesesNestingDepth;
@@ -864,7 +864,9 @@
template<class Delegate>
const char* parse(Delegate& delegate, const UString& pattern, unsigned backReferenceLimit = quantifyInfinite)
{
- return Parser<Delegate>(delegate, pattern, backReferenceLimit).parse();
+ if (pattern.is8Bit())
+ return Parser<Delegate, LChar>(delegate, pattern, backReferenceLimit).parse();
+ return Parser<Delegate, UChar>(delegate, pattern, backReferenceLimit).parse();
}
} } // namespace JSC::Yarr