summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Userland/Libraries/LibTextCodec/Decoder.cpp99
1 files changed, 18 insertions, 81 deletions
diff --git a/Userland/Libraries/LibTextCodec/Decoder.cpp b/Userland/Libraries/LibTextCodec/Decoder.cpp
index 8fac02d145..ebde2294b4 100644
--- a/Userland/Libraries/LibTextCodec/Decoder.cpp
+++ b/Userland/Libraries/LibTextCodec/Decoder.cpp
@@ -11,78 +11,15 @@
namespace TextCodec {
namespace {
-Latin1Decoder& latin1_decoder()
-{
- static Latin1Decoder* decoder = nullptr;
- if (!decoder)
- decoder = new Latin1Decoder;
- return *decoder;
-}
-
-UTF8Decoder& utf8_decoder()
-{
- static UTF8Decoder* decoder = nullptr;
- if (!decoder)
- decoder = new UTF8Decoder;
- return *decoder;
-}
-
-UTF16BEDecoder& utf16be_decoder()
-{
- static UTF16BEDecoder* decoder = nullptr;
- if (!decoder)
- decoder = new UTF16BEDecoder;
- return *decoder;
-}
-
-Latin2Decoder& latin2_decoder()
-{
- static Latin2Decoder* decoder = nullptr;
- if (!decoder)
- decoder = new Latin2Decoder;
- return *decoder;
-}
-
-HebrewDecoder& hebrew_decoder()
-{
- static HebrewDecoder* decoder = nullptr;
- if (!decoder)
- decoder = new HebrewDecoder;
- return *decoder;
-}
-
-CyrillicDecoder& cyrillic_decoder()
-{
- static CyrillicDecoder* decoder = nullptr;
- if (!decoder)
- decoder = new CyrillicDecoder;
- return *decoder;
-}
-
-Koi8RDecoder& koi8r_decoder()
-{
- static Koi8RDecoder* decoder = nullptr;
- if (!decoder)
- decoder = new Koi8RDecoder;
- return *decoder;
-}
-
-Latin9Decoder& latin9_decoder()
-{
- static Latin9Decoder* decoder = nullptr;
- if (!decoder)
- decoder = new Latin9Decoder;
- return *decoder;
-}
-
-TurkishDecoder& turkish_decoder()
-{
- static TurkishDecoder* decoder = nullptr;
- if (!decoder)
- decoder = new TurkishDecoder;
- return *decoder;
-}
-
+Latin1Decoder s_latin1_decoder;
+UTF8Decoder s_utf8_decoder;
+UTF16BEDecoder s_utf16be_decoder;
+Latin2Decoder s_latin2_decoder;
+HebrewDecoder s_hebrew_decoder;
+CyrillicDecoder s_cyrillic_decoder;
+Koi8RDecoder s_koi8r_decoder;
+Latin9Decoder s_latin9_decoder;
+TurkishDecoder s_turkish_decoder;
}
Decoder* decoder_for(const String& a_encoding)
@@ -90,23 +27,23 @@ Decoder* decoder_for(const String& a_encoding)
auto encoding = get_standardized_encoding(a_encoding);
if (encoding.has_value()) {
if (encoding.value().equals_ignoring_case("windows-1252"))
- return &latin1_decoder();
+ return &s_latin1_decoder;
if (encoding.value().equals_ignoring_case("utf-8"))
- return &utf8_decoder();
+ return &s_utf8_decoder;
if (encoding.value().equals_ignoring_case("utf-16be"))
- return &utf16be_decoder();
+ return &s_utf16be_decoder;
if (encoding.value().equals_ignoring_case("iso-8859-2"))
- return &latin2_decoder();
+ return &s_latin2_decoder;
if (encoding.value().equals_ignoring_case("windows-1255"))
- return &hebrew_decoder();
+ return &s_hebrew_decoder;
if (encoding.value().equals_ignoring_case("windows-1251"))
- return &cyrillic_decoder();
+ return &s_cyrillic_decoder;
if (encoding.value().equals_ignoring_case("koi8-r"))
- return &koi8r_decoder();
+ return &s_koi8r_decoder;
if (encoding.value().equals_ignoring_case("iso-8859-15"))
- return &latin9_decoder();
+ return &s_latin9_decoder;
if (encoding.value().equals_ignoring_case("windows-1254"))
- return &turkish_decoder();
+ return &s_turkish_decoder;
}
dbgln("TextCodec: No decoder implemented for encoding '{}'", a_encoding);
return nullptr;