Pārlūkot izejas kodu

LibUnicode: Move helper to convert StringEnumeration to a list to ICU.h

This will be needed outside of UnicodeKeywords.cpp.
Timothy Flynn 1 gadu atpakaļ
vecāks
revīzija
c379b35798

+ 32 - 0
Userland/Libraries/LibUnicode/ICU.h

@@ -12,9 +12,11 @@
 #include <AK/OwnPtr.h>
 #include <AK/String.h>
 #include <AK/StringView.h>
+#include <AK/Vector.h>
 #include <LibUnicode/DurationFormat.h>
 
 #include <unicode/locid.h>
+#include <unicode/strenum.h>
 #include <unicode/stringpiece.h>
 #include <unicode/unistr.h>
 #include <unicode/utypes.h>
@@ -88,4 +90,34 @@ Vector<icu::UnicodeString> icu_string_list(ReadonlySpan<String> strings);
 String icu_string_to_string(icu::UnicodeString const& string);
 String icu_string_to_string(UChar const*, i32 length);
 
+template<typename Filter>
+Vector<String> icu_string_enumeration_to_list(OwnPtr<icu::StringEnumeration> enumeration, Filter&& filter)
+{
+    UErrorCode status = U_ZERO_ERROR;
+    Vector<String> result;
+
+    if (!enumeration)
+        return {};
+
+    while (true) {
+        i32 length = 0;
+        auto const* keyword = enumeration->next(&length, status);
+
+        if (icu_failure(status) || keyword == nullptr)
+            break;
+
+        if (!filter(keyword))
+            continue;
+
+        result.append(MUST(String::from_utf8({ keyword, static_cast<size_t>(length) })));
+    }
+
+    return result;
+}
+
+ALWAYS_INLINE Vector<String> icu_string_enumeration_to_list(OwnPtr<icu::StringEnumeration> enumeration)
+{
+    return icu_string_enumeration_to_list(move(enumeration), [](char const*) { return true; });
+}
+
 }

+ 0 - 30
Userland/Libraries/LibUnicode/UnicodeKeywords.cpp

@@ -20,36 +20,6 @@
 
 namespace Unicode {
 
-template<typename Filter>
-static Vector<String> icu_string_enumeration_to_list(OwnPtr<icu::StringEnumeration> enumeration, Filter&& filter)
-{
-    UErrorCode status = U_ZERO_ERROR;
-    Vector<String> result;
-
-    if (!enumeration)
-        return {};
-
-    while (true) {
-        i32 length = 0;
-        auto const* keyword = enumeration->next(&length, status);
-
-        if (icu_failure(status) || keyword == nullptr)
-            break;
-
-        if (!filter(keyword))
-            continue;
-
-        result.append(MUST(String::from_utf8({ keyword, static_cast<size_t>(length) })));
-    }
-
-    return result;
-}
-
-static Vector<String> icu_string_enumeration_to_list(OwnPtr<icu::StringEnumeration> enumeration)
-{
-    return icu_string_enumeration_to_list(move(enumeration), [](char const*) { return true; });
-}
-
 Vector<String> available_keyword_values(StringView locale, StringView key)
 {
     if (key == "ca"sv)