summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/platform/text/brew
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/platform/text/brew')
-rw-r--r--Source/WebCore/platform/text/brew/TextBreakIteratorBrew.cpp30
-rw-r--r--Source/WebCore/platform/text/brew/TextCodecBrew.cpp10
-rw-r--r--Source/WebCore/platform/text/brew/TextCodecBrew.h3
3 files changed, 26 insertions, 17 deletions
diff --git a/Source/WebCore/platform/text/brew/TextBreakIteratorBrew.cpp b/Source/WebCore/platform/text/brew/TextBreakIteratorBrew.cpp
index 7f46e4f..3bc1c8a 100644
--- a/Source/WebCore/platform/text/brew/TextBreakIteratorBrew.cpp
+++ b/Source/WebCore/platform/text/brew/TextBreakIteratorBrew.cpp
@@ -26,6 +26,7 @@
#include <wtf/StdLibExtras.h>
#include <wtf/unicode/Unicode.h>
+using namespace std;
using namespace WTF::Unicode;
namespace WebCore {
@@ -260,11 +261,32 @@ TextBreakIterator* characterBreakIterator(const UChar* string, int length)
return &iterator;
}
-TextBreakIterator* lineBreakIterator(const UChar* string, int length)
+static TextBreakIterator* staticLineBreakIterator;
+
+TextBreakIterator* acquireLineBreakIterator(const UChar* string, int length)
{
- DEFINE_STATIC_LOCAL(LineBreakIterator , iterator, ());
- iterator.reset(string, length);
- return &iterator;
+ TextBreakIterator* lineBreakIterator = 0;
+ if (staticLineBreakIterator) {
+ staticLineBreakIterator->reset(string, length);
+ swap(staticLineBreakIterator, lineBreakIterator);
+ }
+
+ if (!lineBreakIterator && string && length) {
+ lineBreakIterator = new LineBreakIterator;
+ lineBreakIterator->reset(string, length);
+ }
+
+ return lineBreakIterator;
+}
+
+void releaseLineBreakIterator(TextBreakIterator* iterator)
+{
+ ASSERT(iterator);
+
+ if (!staticLineBreakIterator)
+ staticLineBreakIterator = iterator;
+ else
+ delete iterator;
}
TextBreakIterator* sentenceBreakIterator(const UChar* string, int length)
diff --git a/Source/WebCore/platform/text/brew/TextCodecBrew.cpp b/Source/WebCore/platform/text/brew/TextCodecBrew.cpp
index 1f32298..aa94980 100644
--- a/Source/WebCore/platform/text/brew/TextCodecBrew.cpp
+++ b/Source/WebCore/platform/text/brew/TextCodecBrew.cpp
@@ -43,16 +43,6 @@ static PassOwnPtr<TextCodec> newTextCodecBrew(const TextEncoding& encoding, cons
return new TextCodecBrew(encoding);
}
-void TextCodecBrew::registerBaseEncodingNames(EncodingNameRegistrar registrar)
-{
- registrar("UTF-8", "UTF-8");
-}
-
-void TextCodecBrew::registerBaseCodecs(TextCodecRegistrar registrar)
-{
- registrar("UTF-8", newTextCodecBrew, 0);
-}
-
void TextCodecBrew::registerExtendedEncodingNames(EncodingNameRegistrar registrar)
{
// FIXME: Not sure how to enumerate all available encodings.
diff --git a/Source/WebCore/platform/text/brew/TextCodecBrew.h b/Source/WebCore/platform/text/brew/TextCodecBrew.h
index 97e2c87..14d11f0 100644
--- a/Source/WebCore/platform/text/brew/TextCodecBrew.h
+++ b/Source/WebCore/platform/text/brew/TextCodecBrew.h
@@ -35,9 +35,6 @@ namespace WebCore {
class TextCodecBrew : public TextCodec {
public:
- static void registerBaseEncodingNames(EncodingNameRegistrar);
- static void registerBaseCodecs(TextCodecRegistrar);
-
static void registerExtendedEncodingNames(EncodingNameRegistrar);
static void registerExtendedCodecs(TextCodecRegistrar);