Bladeren bron

Everywhere: Use to_number<T> instead of to_{int,uint,float,double}

In a bunch of cases, this actually ends up simplifying the code as
to_number will handle something such as:

```
Optional<I> opt;
if constexpr (IsSigned<I>)
    opt = view.to_int<I>();
else
    opt = view.to_uint<I>();
```

For us.

The main goal here however is to have a single generic number conversion
API between all of the String classes.
Shannon Booth 1 jaar geleden
bovenliggende
commit
e2e7c4d574
100 gewijzigde bestanden met toevoegingen van 283 en 298 verwijderingen
  1. 10 10
      AK/IPv4Address.h
  2. 2 2
      AK/JsonParser.cpp
  3. 4 3
      AK/URLParser.cpp
  4. 3 3
      Base/usr/share/man/man2/readlink.md
  5. 1 1
      Kernel/Boot/CommandLine.cpp
  6. 2 2
      Kernel/Devices/Storage/StorageManagement.cpp
  7. 1 1
      Kernel/FileSystem/DevPtsFS/Inode.cpp
  8. 1 1
      Kernel/FileSystem/ProcFS/Inode.cpp
  9. 3 3
      Kernel/FileSystem/ProcFS/ProcessExposed.cpp
  10. 1 1
      Meta/Lagom/Tools/CodeGenerators/JSSpecCompiler/Parser/CppASTConverter.cpp
  11. 1 1
      Meta/Lagom/Tools/CodeGenerators/JSSpecCompiler/Parser/TextParser.cpp
  12. 3 3
      Meta/Lagom/Tools/CodeGenerators/LibEDID/GeneratePnpIDs.cpp
  13. 4 4
      Meta/Lagom/Tools/CodeGenerators/LibLocale/GenerateDateTimeFormatData.cpp
  14. 2 2
      Meta/Lagom/Tools/CodeGenerators/LibLocale/GenerateNumberFormatData.cpp
  15. 4 4
      Meta/Lagom/Tools/CodeGenerators/LibLocale/GeneratePluralRulesData.cpp
  16. 22 22
      Meta/Lagom/Tools/CodeGenerators/LibTimeZone/GenerateTimeZoneData.cpp
  17. 2 2
      Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp
  18. 1 1
      Meta/Lagom/Tools/CodeGenerators/StateMachineGenerator/main.cpp
  19. 2 2
      Tests/AK/TestByteString.cpp
  20. 8 8
      Tests/AK/TestFloatingPointParsing.cpp
  21. 1 1
      Tests/AK/TestHashMap.cpp
  22. 1 1
      Tests/AK/TestQueue.cpp
  23. 5 5
      Userland/Applets/ClipboardHistory/ClipboardHistoryModel.cpp
  24. 2 2
      Userland/Applications/3DFileViewer/WavefrontOBJLoader.cpp
  25. 2 2
      Userland/Applications/Debugger/main.cpp
  26. 6 6
      Userland/Applications/FileManager/FileOperationProgressWidget.cpp
  27. 2 2
      Userland/Applications/FontEditor/MainWidget.cpp
  28. 6 6
      Userland/Applications/Maps/SearchPanel.cpp
  29. 2 2
      Userland/Applications/Maps/main.cpp
  30. 2 2
      Userland/Applications/PDFViewer/NumericInput.cpp
  31. 2 2
      Userland/Applications/PixelPaint/EditGuideDialog.cpp
  32. 1 1
      Userland/Applications/PixelPaint/ImageEditor.cpp
  33. 3 3
      Userland/Applications/PixelPaint/MainWidget.cpp
  34. 3 2
      Userland/Applications/PixelPaint/Tools/EllipseTool.cpp
  35. 2 2
      Userland/Applications/PixelPaint/Tools/RectangleTool.cpp
  36. 3 3
      Userland/Applications/Presenter/Presentation.cpp
  37. 1 1
      Userland/Applications/SoundPlayer/M3UParser.cpp
  38. 1 1
      Userland/Applications/Spreadsheet/Cell.cpp
  39. 1 1
      Userland/Applications/Spreadsheet/Spreadsheet.cpp
  40. 1 1
      Userland/DevTools/HackStudio/Debugger/VariablesModel.cpp
  41. 1 1
      Userland/Libraries/LibArchive/TarStream.h
  42. 1 1
      Userland/Libraries/LibC/grp.cpp
  43. 1 1
      Userland/Libraries/LibC/netdb.cpp
  44. 2 2
      Userland/Libraries/LibC/pwd.cpp
  45. 1 1
      Userland/Libraries/LibC/scanf.cpp
  46. 7 7
      Userland/Libraries/LibC/shadow.cpp
  47. 10 10
      Userland/Libraries/LibChess/UCICommand.cpp
  48. 6 14
      Userland/Libraries/LibCore/ArgsParser.cpp
  49. 1 4
      Userland/Libraries/LibCore/ConfigFile.h
  50. 1 1
      Userland/Libraries/LibCore/Process.cpp
  51. 1 1
      Userland/Libraries/LibCore/SystemServerTakeover.cpp
  52. 17 17
      Userland/Libraries/LibCrypto/ASN1/ASN1.cpp
  53. 1 1
      Userland/Libraries/LibDiff/Hunks.cpp
  54. 1 1
      Userland/Libraries/LibGUI/AbstractTableView.cpp
  55. 5 5
      Userland/Libraries/LibGUI/Clipboard.cpp
  56. 2 2
      Userland/Libraries/LibGUI/SpinBox.cpp
  57. 1 1
      Userland/Libraries/LibGUI/ValueSlider.cpp
  58. 1 4
      Userland/Libraries/LibGUI/Variant.h
  59. 4 4
      Userland/Libraries/LibGUI/Window.cpp
  60. 1 1
      Userland/Libraries/LibGemini/Job.cpp
  61. 6 6
      Userland/Libraries/LibGfx/Color.cpp
  62. 1 1
      Userland/Libraries/LibGfx/CursorParams.cpp
  63. 3 3
      Userland/Libraries/LibGfx/Font/FontDatabase.cpp
  64. 1 1
      Userland/Libraries/LibHTTP/HttpRequest.cpp
  65. 3 3
      Userland/Libraries/LibHTTP/Job.cpp
  66. 2 2
      Userland/Libraries/LibIMAP/Parser.cpp
  67. 1 1
      Userland/Libraries/LibJS/Runtime/AbstractOperations.cpp
  68. 1 1
      Userland/Libraries/LibJS/Runtime/Date.cpp
  69. 4 4
      Userland/Libraries/LibJS/Runtime/Intl/NumberFormat.cpp
  70. 4 4
      Userland/Libraries/LibJS/Runtime/Intl/PluralRules.cpp
  71. 1 1
      Userland/Libraries/LibJS/Runtime/PropertyKey.h
  72. 15 15
      Userland/Libraries/LibJS/Runtime/Temporal/AbstractOperations.cpp
  73. 2 2
      Userland/Libraries/LibJS/Runtime/Temporal/InstantPrototype.cpp
  74. 2 2
      Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTimePrototype.cpp
  75. 1 1
      Userland/Libraries/LibJS/Runtime/Value.cpp
  76. 1 1
      Userland/Libraries/LibJS/Token.cpp
  77. 4 4
      Userland/Libraries/LibLine/Editor.cpp
  78. 1 1
      Userland/Libraries/LibManual/Node.cpp
  79. 1 1
      Userland/Libraries/LibManual/SectionNode.cpp
  80. 1 1
      Userland/Libraries/LibMarkdown/List.cpp
  81. 2 2
      Userland/Libraries/LibMarkdown/Text.cpp
  82. 2 2
      Userland/Libraries/LibPDF/Fonts/PS1FontProgram.cpp
  83. 1 1
      Userland/Libraries/LibRegex/RegexMatcher.h
  84. 8 8
      Userland/Libraries/LibRegex/RegexParser.cpp
  85. 1 1
      Userland/Libraries/LibSQL/SQLClient.cpp
  86. 1 1
      Userland/Libraries/LibSQL/Value.cpp
  87. 1 4
      Userland/Libraries/LibSQL/Value.h
  88. 1 1
      Userland/Libraries/LibSymbolication/Symbolication.cpp
  89. 3 3
      Userland/Libraries/LibVT/Terminal.cpp
  90. 1 1
      Userland/Libraries/LibWasm/AbstractMachine/Validator.cpp
  91. 2 2
      Userland/Libraries/LibWeb/ARIA/AriaData.cpp
  92. 3 3
      Userland/Libraries/LibWeb/CSS/Parser/SelectorParsing.cpp
  93. 1 1
      Userland/Libraries/LibWeb/CSS/Parser/Tokenizer.cpp
  94. 2 2
      Userland/Libraries/LibWeb/Cookie/ParsedCookie.cpp
  95. 4 4
      Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/Headers.cpp
  96. 2 2
      Userland/Libraries/LibWeb/HTML/HTMLImageElement.cpp
  97. 1 1
      Userland/Libraries/LibWeb/HTML/HTMLSelectElement.cpp
  98. 1 1
      Userland/Libraries/LibWeb/HTML/HTMLTableElement.cpp
  99. 1 1
      Userland/Libraries/LibWeb/HTML/Numbers.cpp
  100. 1 1
      Userland/Libraries/LibWeb/HTML/Parser/HTMLParser.cpp

+ 10 - 10
AK/IPv4Address.h

@@ -108,19 +108,19 @@ public:
         u32 d {};
         u32 d {};
 
 
         if (parts.size() == 1) {
         if (parts.size() == 1) {
-            d = parts[0].to_uint().value_or(256);
+            d = parts[0].to_number<u32>().value_or(256);
         } else if (parts.size() == 2) {
         } else if (parts.size() == 2) {
-            a = parts[0].to_uint().value_or(256);
-            d = parts[1].to_uint().value_or(256);
+            a = parts[0].to_number<u32>().value_or(256);
+            d = parts[1].to_number<u32>().value_or(256);
         } else if (parts.size() == 3) {
         } else if (parts.size() == 3) {
-            a = parts[0].to_uint().value_or(256);
-            b = parts[1].to_uint().value_or(256);
-            d = parts[2].to_uint().value_or(256);
+            a = parts[0].to_number<u32>().value_or(256);
+            b = parts[1].to_number<u32>().value_or(256);
+            d = parts[2].to_number<u32>().value_or(256);
         } else if (parts.size() == 4) {
         } else if (parts.size() == 4) {
-            a = parts[0].to_uint().value_or(256);
-            b = parts[1].to_uint().value_or(256);
-            c = parts[2].to_uint().value_or(256);
-            d = parts[3].to_uint().value_or(256);
+            a = parts[0].to_number<u32>().value_or(256);
+            b = parts[1].to_number<u32>().value_or(256);
+            c = parts[2].to_number<u32>().value_or(256);
+            d = parts[3].to_number<u32>().value_or(256);
         } else {
         } else {
             return {};
             return {};
         }
         }

+ 2 - 2
AK/JsonParser.cpp

@@ -278,13 +278,13 @@ ErrorOr<JsonValue> JsonParser::parse_number()
 
 
     StringView number_string(number_buffer.data(), number_buffer.size());
     StringView number_string(number_buffer.data(), number_buffer.size());
 
 
-    auto to_unsigned_result = number_string.to_uint<u64>();
+    auto to_unsigned_result = number_string.to_number<u64>();
     if (to_unsigned_result.has_value()) {
     if (to_unsigned_result.has_value()) {
         if (*to_unsigned_result <= NumericLimits<u32>::max())
         if (*to_unsigned_result <= NumericLimits<u32>::max())
             return JsonValue((u32)*to_unsigned_result);
             return JsonValue((u32)*to_unsigned_result);
 
 
         return JsonValue(*to_unsigned_result);
         return JsonValue(*to_unsigned_result);
-    } else if (auto signed_number = number_string.to_int<i64>(); signed_number.has_value()) {
+    } else if (auto signed_number = number_string.to_number<i64>(); signed_number.has_value()) {
 
 
         if (*signed_number <= NumericLimits<i32>::max())
         if (*signed_number <= NumericLimits<i32>::max())
             return JsonValue((i32)*signed_number);
             return JsonValue((i32)*signed_number);

+ 4 - 3
AK/URLParser.cpp

@@ -124,7 +124,7 @@ static Optional<ParsedIPv4Number> parse_ipv4_number(StringView input)
     if (radix == 8)
     if (radix == 8)
         maybe_output = StringUtils::convert_to_uint_from_octal(input);
         maybe_output = StringUtils::convert_to_uint_from_octal(input);
     else if (radix == 10)
     else if (radix == 10)
-        maybe_output = input.to_uint();
+        maybe_output = input.to_number<u32>();
     else if (radix == 16)
     else if (radix == 16)
         maybe_output = StringUtils::convert_to_uint_from_hex(input);
         maybe_output = StringUtils::convert_to_uint_from_hex(input);
     else
     else
@@ -1292,10 +1292,11 @@ URL URLParser::basic_parse(StringView raw_input, Optional<URL> const& base_url,
                 // 1. If buffer is not the empty string, then:
                 // 1. If buffer is not the empty string, then:
                 if (!buffer.is_empty()) {
                 if (!buffer.is_empty()) {
                     // 1. Let port be the mathematical integer value that is represented by buffer in radix-10 using ASCII digits for digits with values 0 through 9.
                     // 1. Let port be the mathematical integer value that is represented by buffer in radix-10 using ASCII digits for digits with values 0 through 9.
-                    auto port = buffer.string_view().to_uint();
+                    auto port = buffer.string_view().to_number<u16>();
 
 
                     // 2. If port is greater than 2^16 − 1, port-out-of-range validation error, return failure.
                     // 2. If port is greater than 2^16 − 1, port-out-of-range validation error, return failure.
-                    if (!port.has_value() || port.value() > 65535) {
+                    // NOTE: This is done by to_number.
+                    if (!port.has_value()) {
                         report_validation_error();
                         report_validation_error();
                         return {};
                         return {};
                     }
                     }

+ 3 - 3
Base/usr/share/man/man2/readlink.md

@@ -55,9 +55,9 @@ pid_t read_pid_using_readlink()
 
 
 ErrorOr<pid_t> read_pid_using_core_file()
 ErrorOr<pid_t> read_pid_using_core_file()
 {
 {
-    auto target = TRY(File::read_link("/proc/self"sv));
-    auto pid = target.to_uint();
-    ASSERT(pid.has_value());
+    auto target = TRY(FileSystem::read_link("/proc/self"sv));
+    auto pid = target.to_number<pid_t>();
+    VERIFY(pid.has_value());
     return pid.value();
     return pid.value();
 }
 }
 ```
 ```

+ 1 - 1
Kernel/Boot/CommandLine.cpp

@@ -316,7 +316,7 @@ Vector<NonnullOwnPtr<KString>> CommandLine::userspace_init_args() const
 UNMAP_AFTER_INIT size_t CommandLine::switch_to_tty() const
 UNMAP_AFTER_INIT size_t CommandLine::switch_to_tty() const
 {
 {
     auto const default_tty = lookup("switch_to_tty"sv).value_or("1"sv);
     auto const default_tty = lookup("switch_to_tty"sv).value_or("1"sv);
-    auto switch_tty_number = default_tty.to_uint();
+    auto switch_tty_number = default_tty.to_number<unsigned>();
     if (switch_tty_number.has_value() && switch_tty_number.value() >= 1) {
     if (switch_tty_number.has_value() && switch_tty_number.value() >= 1) {
         return switch_tty_number.value() - 1;
         return switch_tty_number.value() - 1;
     }
     }

+ 2 - 2
Kernel/Devices/Storage/StorageManagement.cpp

@@ -248,7 +248,7 @@ UNMAP_AFTER_INIT Optional<unsigned> StorageManagement::extract_boot_device_parti
         PANIC("StorageManagement: Invalid root boot parameter.");
         PANIC("StorageManagement: Invalid root boot parameter.");
     }
     }
 
 
-    auto parameter_number = parameter_view.substring_view(partition_number_prefix.length()).to_uint<unsigned>();
+    auto parameter_number = parameter_view.substring_view(partition_number_prefix.length()).to_number<unsigned>();
     if (!parameter_number.has_value()) {
     if (!parameter_number.has_value()) {
         PANIC("StorageManagement: Invalid root boot parameter.");
         PANIC("StorageManagement: Invalid root boot parameter.");
     }
     }
@@ -268,7 +268,7 @@ UNMAP_AFTER_INIT Array<unsigned, 3> StorageManagement::extract_boot_device_addre
             return;
             return;
         if (parts_count > 2)
         if (parts_count > 2)
             return;
             return;
-        auto parameter_number = parameter_view.to_uint<unsigned>();
+        auto parameter_number = parameter_view.to_number<unsigned>();
         if (!parameter_number.has_value()) {
         if (!parameter_number.has_value()) {
             parse_failure = true;
             parse_failure = true;
             return;
             return;

+ 1 - 1
Kernel/FileSystem/DevPtsFS/Inode.cpp

@@ -70,7 +70,7 @@ ErrorOr<NonnullRefPtr<Inode>> DevPtsFSInode::lookup(StringView name)
     if (name == "." || name == "..")
     if (name == "." || name == "..")
         return *this;
         return *this;
 
 
-    auto pty_index = name.to_uint();
+    auto pty_index = name.to_number<unsigned>();
     if (!pty_index.has_value())
     if (!pty_index.has_value())
         return ENOENT;
         return ENOENT;
 
 

+ 1 - 1
Kernel/FileSystem/ProcFS/Inode.cpp

@@ -159,7 +159,7 @@ ErrorOr<NonnullRefPtr<Inode>> ProcFSInode::lookup_as_root_directory(StringView n
     if (name == "self"sv)
     if (name == "self"sv)
         return procfs().get_inode({ fsid(), 2 });
         return procfs().get_inode({ fsid(), 2 });
 
 
-    auto pid = name.to_uint<unsigned>();
+    auto pid = name.to_number<unsigned>();
     if (!pid.has_value())
     if (!pid.has_value())
         return ESRCH;
         return ESRCH;
     auto actual_pid = pid.value();
     auto actual_pid = pid.value();

+ 3 - 3
Kernel/FileSystem/ProcFS/ProcessExposed.cpp

@@ -79,7 +79,7 @@ ErrorOr<void> Process::traverse_stacks_directory(FileSystemID fsid, Function<Err
 
 
 ErrorOr<NonnullRefPtr<Inode>> Process::lookup_stacks_directory(ProcFS& procfs, StringView name) const
 ErrorOr<NonnullRefPtr<Inode>> Process::lookup_stacks_directory(ProcFS& procfs, StringView name) const
 {
 {
-    auto maybe_needle = name.to_uint();
+    auto maybe_needle = name.to_number<unsigned>();
     if (!maybe_needle.has_value())
     if (!maybe_needle.has_value())
         return ENOENT;
         return ENOENT;
     auto needle = maybe_needle.release_value();
     auto needle = maybe_needle.release_value();
@@ -120,7 +120,7 @@ ErrorOr<void> Process::traverse_children_directory(FileSystemID fsid, Function<E
 
 
 ErrorOr<NonnullRefPtr<Inode>> Process::lookup_children_directory(ProcFS& procfs, StringView name) const
 ErrorOr<NonnullRefPtr<Inode>> Process::lookup_children_directory(ProcFS& procfs, StringView name) const
 {
 {
-    auto maybe_pid = name.to_uint();
+    auto maybe_pid = name.to_number<unsigned>();
     if (!maybe_pid.has_value())
     if (!maybe_pid.has_value())
         return ENOENT;
         return ENOENT;
 
 
@@ -173,7 +173,7 @@ ErrorOr<void> Process::traverse_file_descriptions_directory(FileSystemID fsid, F
 
 
 ErrorOr<NonnullRefPtr<Inode>> Process::lookup_file_descriptions_directory(ProcFS& procfs, StringView name) const
 ErrorOr<NonnullRefPtr<Inode>> Process::lookup_file_descriptions_directory(ProcFS& procfs, StringView name) const
 {
 {
-    auto maybe_index = name.to_uint();
+    auto maybe_index = name.to_number<unsigned>();
     if (!maybe_index.has_value())
     if (!maybe_index.has_value())
         return ENOENT;
         return ENOENT;
 
 

+ 1 - 1
Meta/Lagom/Tools/CodeGenerators/JSSpecCompiler/Parser/CppASTConverter.cpp

@@ -122,7 +122,7 @@ template<>
 NullableTree CppASTConverter::convert_node(Cpp::NumericLiteral const& literal)
 NullableTree CppASTConverter::convert_node(Cpp::NumericLiteral const& literal)
 {
 {
     // TODO: Numerical literals are not limited to i64.
     // TODO: Numerical literals are not limited to i64.
-    return make_ref_counted<MathematicalConstant>(literal.value().to_int<i64>().value());
+    return make_ref_counted<MathematicalConstant>(literal.value().to_number<i64>().value());
 }
 }
 
 
 template<>
 template<>

+ 1 - 1
Meta/Lagom/Tools/CodeGenerators/JSSpecCompiler/Parser/TextParser.cpp

@@ -254,7 +254,7 @@ ParseErrorOr<Tree> TextParser::parse_expression()
             if (token.type == TokenType::Identifier) {
             if (token.type == TokenType::Identifier) {
                 expression = make_ref_counted<UnresolvedReference>(token.data);
                 expression = make_ref_counted<UnresolvedReference>(token.data);
             } else if (token.type == TokenType::Number) {
             } else if (token.type == TokenType::Number) {
-                expression = make_ref_counted<MathematicalConstant>(token.data.to_int<i64>().value());
+                expression = make_ref_counted<MathematicalConstant>(token.data.to_number<i64>().value());
             } else if (token.type == TokenType::String) {
             } else if (token.type == TokenType::String) {
                 expression = make_ref_counted<StringLiteral>(token.data);
                 expression = make_ref_counted<StringLiteral>(token.data);
             } else {
             } else {

+ 3 - 3
Meta/Lagom/Tools/CodeGenerators/LibEDID/GeneratePnpIDs.cpp

@@ -26,19 +26,19 @@ static ErrorOr<ApprovalDate> parse_approval_date(StringView date)
     if (parts.size() != 3)
     if (parts.size() != 3)
         return Error::from_string_literal("Failed to parse approval date parts (mm/dd/yyyy)");
         return Error::from_string_literal("Failed to parse approval date parts (mm/dd/yyyy)");
 
 
-    auto month = parts[0].to_uint();
+    auto month = parts[0].to_number<unsigned>();
     if (!month.has_value())
     if (!month.has_value())
         return Error::from_string_literal("Failed to parse month from approval date");
         return Error::from_string_literal("Failed to parse month from approval date");
     if (month.value() == 0 || month.value() > 12)
     if (month.value() == 0 || month.value() > 12)
         return Error::from_string_literal("Invalid month in approval date");
         return Error::from_string_literal("Invalid month in approval date");
 
 
-    auto day = parts[1].to_uint();
+    auto day = parts[1].to_number<unsigned>();
     if (!day.has_value())
     if (!day.has_value())
         return Error::from_string_literal("Failed to parse day from approval date");
         return Error::from_string_literal("Failed to parse day from approval date");
     if (day.value() == 0 || day.value() > 31)
     if (day.value() == 0 || day.value() > 31)
         return Error::from_string_literal("Invalid day in approval date");
         return Error::from_string_literal("Invalid day in approval date");
 
 
-    auto year = parts[2].to_uint();
+    auto year = parts[2].to_number<unsigned>();
     if (!year.has_value())
     if (!year.has_value())
         return Error::from_string_literal("Failed to parse year from approval date");
         return Error::from_string_literal("Failed to parse year from approval date");
     if (year.value() < 1900 || year.value() > 2999)
     if (year.value() < 1900 || year.value() > 2999)

+ 4 - 4
Meta/Lagom/Tools/CodeGenerators/LibLocale/GenerateDateTimeFormatData.cpp

@@ -652,7 +652,7 @@ static ErrorOr<void> parse_week_data(ByteString core_path, CLDR& cldr)
     auto const& weekend_end_object = week_data_object.get_object("weekendEnd"sv).value();
     auto const& weekend_end_object = week_data_object.get_object("weekendEnd"sv).value();
 
 
     minimum_days_object.for_each_member([&](auto const& region, auto const& value) {
     minimum_days_object.for_each_member([&](auto const& region, auto const& value) {
-        auto minimum_days = value.as_string().template to_uint<u8>();
+        auto minimum_days = value.as_string().template to_number<u8>();
         cldr.minimum_days.set(region, *minimum_days);
         cldr.minimum_days.set(region, *minimum_days);
 
 
         if (!cldr.minimum_days_regions.contains_slow(region))
         if (!cldr.minimum_days_regions.contains_slow(region))
@@ -1279,7 +1279,7 @@ static void parse_calendar_symbols(Calendar& calendar, JsonObject const& calenda
         auto symbol_lists = create_symbol_lists(2);
         auto symbol_lists = create_symbol_lists(2);
 
 
         auto append_symbol = [&](auto& symbols, auto const& key, auto symbol) {
         auto append_symbol = [&](auto& symbols, auto const& key, auto symbol) {
-            if (auto key_index = key.to_uint(); key_index.has_value())
+            if (auto key_index = key.template to_number<unsigned>(); key_index.has_value())
                 symbols[*key_index] = cldr.unique_strings.ensure(move(symbol));
                 symbols[*key_index] = cldr.unique_strings.ensure(move(symbol));
         };
         };
 
 
@@ -1303,7 +1303,7 @@ static void parse_calendar_symbols(Calendar& calendar, JsonObject const& calenda
         auto symbol_lists = create_symbol_lists(12);
         auto symbol_lists = create_symbol_lists(12);
 
 
         auto append_symbol = [&](auto& symbols, auto const& key, auto symbol) {
         auto append_symbol = [&](auto& symbols, auto const& key, auto symbol) {
-            auto key_index = key.to_uint().value() - 1;
+            auto key_index = key.template to_number<unsigned>().value() - 1;
             symbols[key_index] = cldr.unique_strings.ensure(move(symbol));
             symbols[key_index] = cldr.unique_strings.ensure(move(symbol));
         };
         };
 
 
@@ -1611,7 +1611,7 @@ static ErrorOr<void> parse_day_periods(ByteString core_path, CLDR& cldr)
         VERIFY(time.substring_view(hour_end_index) == ":00"sv);
         VERIFY(time.substring_view(hour_end_index) == ":00"sv);
 
 
         auto hour = time.substring_view(0, hour_end_index);
         auto hour = time.substring_view(0, hour_end_index);
-        return hour.template to_uint<u8>().value();
+        return hour.template to_number<u8>().value();
     };
     };
 
 
     auto parse_day_period = [&](auto const& symbol, auto const& ranges) -> Optional<DayPeriod> {
     auto parse_day_period = [&](auto const& symbol, auto const& ranges) -> Optional<DayPeriod> {

+ 2 - 2
Meta/Lagom/Tools/CodeGenerators/LibLocale/GenerateNumberFormatData.cpp

@@ -441,7 +441,7 @@ static ErrorOr<void> parse_number_systems(ByteString locale_numbers_path, CLDR&
             auto patterns = value.as_string().split(';');
             auto patterns = value.as_string().split(';');
             NumberFormat format {};
             NumberFormat format {};
 
 
-            if (auto type = split_key[0].template to_uint<u64>(); type.has_value()) {
+            if (auto type = split_key[0].template to_number<u64>(); type.has_value()) {
                 VERIFY(*type % 10 == 0);
                 VERIFY(*type % 10 == 0);
                 format.magnitude = static_cast<u8>(log10(*type));
                 format.magnitude = static_cast<u8>(log10(*type));
 
 
@@ -580,7 +580,7 @@ static ErrorOr<void> parse_number_systems(ByteString locale_numbers_path, CLDR&
         locale.number_systems.append(system_index);
         locale.number_systems.append(system_index);
     }
     }
 
 
-    locale.minimum_grouping_digits = minimum_grouping_digits.template to_uint<u8>().value();
+    locale.minimum_grouping_digits = minimum_grouping_digits.template to_number<u8>().value();
     return {};
     return {};
 }
 }
 
 

+ 4 - 4
Meta/Lagom/Tools/CodeGenerators/LibLocale/GeneratePluralRulesData.cpp

@@ -245,7 +245,7 @@ static Relation parse_relation(StringView relation)
         auto symbol = lhs.substring_view(0, *index);
         auto symbol = lhs.substring_view(0, *index);
         VERIFY(symbol.length() == 1);
         VERIFY(symbol.length() == 1);
 
 
-        auto modulus = lhs.substring_view(*index + modulus_operator.length()).to_uint();
+        auto modulus = lhs.substring_view(*index + modulus_operator.length()).to_number<unsigned>();
         VERIFY(modulus.has_value());
         VERIFY(modulus.has_value());
 
 
         parsed.symbol = symbol[0];
         parsed.symbol = symbol[0];
@@ -257,15 +257,15 @@ static Relation parse_relation(StringView relation)
 
 
     rhs.for_each_split_view(set_operator, SplitBehavior::Nothing, [&](auto set) {
     rhs.for_each_split_view(set_operator, SplitBehavior::Nothing, [&](auto set) {
         if (auto index = set.find(range_operator); index.has_value()) {
         if (auto index = set.find(range_operator); index.has_value()) {
-            auto range_begin = set.substring_view(0, *index).to_uint();
+            auto range_begin = set.substring_view(0, *index).template to_number<unsigned>();
             VERIFY(range_begin.has_value());
             VERIFY(range_begin.has_value());
 
 
-            auto range_end = set.substring_view(*index + range_operator.length()).to_uint();
+            auto range_end = set.substring_view(*index + range_operator.length()).template to_number<unsigned>();
             VERIFY(range_end.has_value());
             VERIFY(range_end.has_value());
 
 
             parsed.comparators.empend(Array { *range_begin, *range_end });
             parsed.comparators.empend(Array { *range_begin, *range_end });
         } else {
         } else {
-            auto value = set.to_uint();
+            auto value = set.template to_number<unsigned>();
             VERIFY(value.has_value());
             VERIFY(value.has_value());
 
 
             parsed.comparators.empend(*value);
             parsed.comparators.empend(*value);

+ 22 - 22
Meta/Lagom/Tools/CodeGenerators/LibTimeZone/GenerateTimeZoneData.cpp

@@ -172,7 +172,7 @@ static Optional<DateTime> parse_date_time(ReadonlySpan<StringView> segments)
         return {};
         return {};
 
 
     DateTime date_time {};
     DateTime date_time {};
-    date_time.year = segments[0].to_uint().value();
+    date_time.year = segments[0].to_number<unsigned>().value();
 
 
     if (segments.size() > 1)
     if (segments.size() > 1)
         date_time.month = find_index(short_month_names.begin(), short_month_names.end(), segments[1]) + 1;
         date_time.month = find_index(short_month_names.begin(), short_month_names.end(), segments[1]) + 1;
@@ -186,15 +186,15 @@ static Optional<DateTime> parse_date_time(ReadonlySpan<StringView> segments)
             date_time.after_weekday = find_index(short_day_names.begin(), short_day_names.end(), weekday);
             date_time.after_weekday = find_index(short_day_names.begin(), short_day_names.end(), weekday);
 
 
             auto day = segments[2].substring_view(*index + ">="sv.length());
             auto day = segments[2].substring_view(*index + ">="sv.length());
-            date_time.day = day.to_uint().value();
+            date_time.day = day.to_number<unsigned>().value();
         } else if (auto index = segments[2].find("<="sv); index.has_value()) {
         } else if (auto index = segments[2].find("<="sv); index.has_value()) {
             auto weekday = segments[2].substring_view(0, *index);
             auto weekday = segments[2].substring_view(0, *index);
             date_time.before_weekday = find_index(short_day_names.begin(), short_day_names.end(), weekday);
             date_time.before_weekday = find_index(short_day_names.begin(), short_day_names.end(), weekday);
 
 
             auto day = segments[2].substring_view(*index + "<="sv.length());
             auto day = segments[2].substring_view(*index + "<="sv.length());
-            date_time.day = day.to_uint().value();
+            date_time.day = day.to_number<unsigned>().value();
         } else {
         } else {
-            date_time.day = segments[2].to_uint().value();
+            date_time.day = segments[2].to_number<unsigned>().value();
         }
         }
     }
     }
 
 
@@ -202,9 +202,9 @@ static Optional<DateTime> parse_date_time(ReadonlySpan<StringView> segments)
         // FIXME: Some times end with a letter, e.g. "2:00u" and "2:00s". Figure out what this means and handle it.
         // FIXME: Some times end with a letter, e.g. "2:00u" and "2:00s". Figure out what this means and handle it.
         auto time_segments = segments[3].split_view(':');
         auto time_segments = segments[3].split_view(':');
 
 
-        date_time.hour = time_segments[0].to_int().value();
-        date_time.minute = time_segments.size() > 1 ? time_segments[1].substring_view(0, 2).to_uint().value() : 0;
-        date_time.second = time_segments.size() > 2 ? time_segments[2].substring_view(0, 2).to_uint().value() : 0;
+        date_time.hour = time_segments[0].to_number<int>().value();
+        date_time.minute = time_segments.size() > 1 ? time_segments[1].substring_view(0, 2).to_number<unsigned>().value() : 0;
+        date_time.second = time_segments.size() > 2 ? time_segments[2].substring_view(0, 2).to_number<unsigned>().value() : 0;
     }
     }
 
 
     return date_time;
     return date_time;
@@ -214,9 +214,9 @@ static i64 parse_time_offset(StringView segment)
 {
 {
     auto segments = segment.split_view(':');
     auto segments = segment.split_view(':');
 
 
-    i64 hours = segments[0].to_int().value();
-    i64 minutes = segments.size() > 1 ? segments[1].to_uint().value() : 0;
-    i64 seconds = segments.size() > 2 ? segments[2].to_uint().value() : 0;
+    i64 hours = segments[0].to_number<int>().value();
+    i64 minutes = segments.size() > 1 ? segments[1].to_number<unsigned>().value() : 0;
+    i64 seconds = segments.size() > 2 ? segments[2].to_number<unsigned>().value() : 0;
 
 
     i64 sign = ((hours < 0) || (segments[0] == "-0"sv)) ? -1 : 1;
     i64 sign = ((hours < 0) || (segments[0] == "-0"sv)) ? -1 : 1;
     return (hours * 3600) + sign * ((minutes * 60) + seconds);
     return (hours * 3600) + sign * ((minutes * 60) + seconds);
@@ -309,12 +309,12 @@ static void parse_rule(StringView rule_line, TimeZoneData& time_zone_data)
 
 
     DaylightSavingsOffset dst_offset {};
     DaylightSavingsOffset dst_offset {};
     dst_offset.offset = parse_time_offset(segments[8]);
     dst_offset.offset = parse_time_offset(segments[8]);
-    dst_offset.year_from = segments[2].to_uint().value();
+    dst_offset.year_from = segments[2].to_number<unsigned>().value();
 
 
     if (segments[3] == "only")
     if (segments[3] == "only")
         dst_offset.year_to = dst_offset.year_from;
         dst_offset.year_to = dst_offset.year_from;
     else if (segments[3] != "max"sv)
     else if (segments[3] != "max"sv)
-        dst_offset.year_to = segments[3].to_uint().value();
+        dst_offset.year_to = segments[3].to_number<unsigned>().value();
 
 
     auto in_effect = Array { "0"sv, segments[5], segments[6], segments[7] };
     auto in_effect = Array { "0"sv, segments[5], segments[6], segments[7] };
     dst_offset.in_effect = parse_date_time(in_effect).release_value();
     dst_offset.in_effect = parse_date_time(in_effect).release_value();
@@ -369,22 +369,22 @@ static ErrorOr<void> parse_time_zone_coordinates(Core::InputBufferedFile& file,
 
 
         if (coordinate.length() == 5) {
         if (coordinate.length() == 5) {
             // ±DDMM
             // ±DDMM
-            parsed.degrees = coordinate.substring_view(0, 3).to_int().value();
-            parsed.minutes = coordinate.substring_view(3).to_int().value();
+            parsed.degrees = coordinate.substring_view(0, 3).template to_number<int>().value();
+            parsed.minutes = coordinate.substring_view(3).template to_number<int>().value();
         } else if (coordinate.length() == 6) {
         } else if (coordinate.length() == 6) {
             // ±DDDMM
             // ±DDDMM
-            parsed.degrees = coordinate.substring_view(0, 4).to_int().value();
-            parsed.minutes = coordinate.substring_view(4).to_int().value();
+            parsed.degrees = coordinate.substring_view(0, 4).template to_number<int>().value();
+            parsed.minutes = coordinate.substring_view(4).template to_number<int>().value();
         } else if (coordinate.length() == 7) {
         } else if (coordinate.length() == 7) {
             // ±DDMMSS
             // ±DDMMSS
-            parsed.degrees = coordinate.substring_view(0, 3).to_int().value();
-            parsed.minutes = coordinate.substring_view(3, 2).to_int().value();
-            parsed.seconds = coordinate.substring_view(5).to_int().value();
+            parsed.degrees = coordinate.substring_view(0, 3).template to_number<int>().value();
+            parsed.minutes = coordinate.substring_view(3, 2).template to_number<int>().value();
+            parsed.seconds = coordinate.substring_view(5).template to_number<int>().value();
         } else if (coordinate.length() == 8) {
         } else if (coordinate.length() == 8) {
             // ±DDDDMMSS
             // ±DDDDMMSS
-            parsed.degrees = coordinate.substring_view(0, 4).to_int().value();
-            parsed.minutes = coordinate.substring_view(4, 2).to_int().value();
-            parsed.seconds = coordinate.substring_view(6).to_int().value();
+            parsed.degrees = coordinate.substring_view(0, 4).template to_number<int>().value();
+            parsed.minutes = coordinate.substring_view(4, 2).template to_number<int>().value();
+            parsed.seconds = coordinate.substring_view(6).template to_number<int>().value();
         } else {
         } else {
             VERIFY_NOT_REACHED();
             VERIFY_NOT_REACHED();
         }
         }

+ 2 - 2
Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp

@@ -675,7 +675,7 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
     else
     else
         @cpp_name@ = JS::js_null();
         @cpp_name@ = JS::js_null();
 )~~~");
 )~~~");
-                } else if (optional_default_value->to_int().has_value() || optional_default_value->to_uint().has_value()) {
+                } else if (optional_default_value->to_number<int>().has_value() || optional_default_value->to_number<unsigned>().has_value()) {
                     scoped_generator.append(R"~~~(
                     scoped_generator.append(R"~~~(
     else
     else
         @cpp_name@ = JS::Value(@parameter.optional_default_value@);
         @cpp_name@ = JS::Value(@parameter.optional_default_value@);
@@ -1428,7 +1428,7 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
                         union_generator.append(R"~~~(
                         union_generator.append(R"~~~(
     @union_type@ @cpp_name@ = @js_name@@js_suffix@.is_undefined() ? TRY(@js_name@@js_suffix@_to_dictionary(@js_name@@js_suffix@)) : TRY(@js_name@@js_suffix@_to_variant(@js_name@@js_suffix@));
     @union_type@ @cpp_name@ = @js_name@@js_suffix@.is_undefined() ? TRY(@js_name@@js_suffix@_to_dictionary(@js_name@@js_suffix@)) : TRY(@js_name@@js_suffix@_to_variant(@js_name@@js_suffix@));
 )~~~");
 )~~~");
-                    } else if (optional_default_value->to_int().has_value() || optional_default_value->to_uint().has_value()) {
+                    } else if (optional_default_value->to_number<int>().has_value() || optional_default_value->to_number<unsigned>().has_value()) {
                         union_generator.append(R"~~~(
                         union_generator.append(R"~~~(
     @union_type@ @cpp_name@ = @js_name@@js_suffix@.is_undefined() ? @parameter.optional_default_value@ : TRY(@js_name@@js_suffix@_to_variant(@js_name@@js_suffix@));
     @union_type@ @cpp_name@ = @js_name@@js_suffix@.is_undefined() ? @parameter.optional_default_value@ : TRY(@js_name@@js_suffix@_to_variant(@js_name@@js_suffix@));
 )~~~");
 )~~~");

+ 1 - 1
Meta/Lagom/Tools/CodeGenerators/StateMachineGenerator/main.cpp

@@ -92,7 +92,7 @@ parse_state_machine(StringView input)
             if (lexer.next_is('\\')) {
             if (lexer.next_is('\\')) {
                 num = (int)lexer.consume_escaped_character('\\');
                 num = (int)lexer.consume_escaped_character('\\');
             } else {
             } else {
-                num = lexer.consume_until('\'').to_int().value();
+                num = lexer.consume_until('\'').to_number<int>().value();
                 lexer.ignore();
                 lexer.ignore();
             }
             }
             lexer.consume_specific('\'');
             lexer.consume_specific('\'');

+ 2 - 2
Tests/AK/TestByteString.cpp

@@ -125,8 +125,8 @@ TEST_CASE(repeated)
 
 
 TEST_CASE(to_int)
 TEST_CASE(to_int)
 {
 {
-    EXPECT_EQ(ByteString("123").to_int().value(), 123);
-    EXPECT_EQ(ByteString("-123").to_int().value(), -123);
+    EXPECT_EQ(ByteString("123").to_number<int>().value(), 123);
+    EXPECT_EQ(ByteString("-123").to_number<int>().value(), -123);
 }
 }
 
 
 TEST_CASE(to_lowercase)
 TEST_CASE(to_lowercase)

+ 8 - 8
Tests/AK/TestFloatingPointParsing.cpp

@@ -578,14 +578,14 @@ TEST_CASE(invalid_hex_floats)
     EXPECT_HEX_PARSE_TO_VALUE_AND_CONSUME_CHARS("0xCAPE", 0xCAp0, 4);
     EXPECT_HEX_PARSE_TO_VALUE_AND_CONSUME_CHARS("0xCAPE", 0xCAp0, 4);
 }
 }
 
 
-#define BENCHMARK_DOUBLE_PARSING(value, iterations)     \
-    do {                                                \
-        auto data = #value##sv;                         \
-        auto true_result = value;                       \
-        for (int i = 0; i < iterations * 10'000; ++i) { \
-            AK::taint_for_optimizer(data);              \
-            EXPECT_EQ(data.to_double(), true_result);   \
-        }                                               \
+#define BENCHMARK_DOUBLE_PARSING(value, iterations)           \
+    do {                                                      \
+        auto data = #value##sv;                               \
+        auto true_result = value;                             \
+        for (int i = 0; i < iterations * 10'000; ++i) {       \
+            AK::taint_for_optimizer(data);                    \
+            EXPECT_EQ(data.to_number<double>(), true_result); \
+        }                                                     \
     } while (false)
     } while (false)
 
 
 BENCHMARK_CASE(one)
 BENCHMARK_CASE(one)

+ 1 - 1
Tests/AK/TestHashMap.cpp

@@ -157,7 +157,7 @@ TEST_CASE(many_strings)
     }
     }
     EXPECT_EQ(strings.size(), 999u);
     EXPECT_EQ(strings.size(), 999u);
     for (auto& it : strings) {
     for (auto& it : strings) {
-        EXPECT_EQ(it.key.to_int().value(), it.value);
+        EXPECT_EQ(it.key.to_number<int>().value(), it.value);
     }
     }
     for (int i = 0; i < 999; ++i) {
     for (int i = 0; i < 999; ++i) {
         EXPECT_EQ(strings.remove(ByteString::number(i)), true);
         EXPECT_EQ(strings.remove(ByteString::number(i)), true);

+ 1 - 1
Tests/AK/TestQueue.cpp

@@ -52,7 +52,7 @@ TEST_CASE(order)
     }
     }
 
 
     for (int i = 0; i < 10000; ++i) {
     for (int i = 0; i < 10000; ++i) {
-        EXPECT_EQ(strings.dequeue().to_int().value(), i);
+        EXPECT_EQ(strings.dequeue().to_number<int>().value(), i);
     }
     }
 
 
     EXPECT(strings.is_empty());
     EXPECT(strings.is_empty());

+ 5 - 5
Userland/Applets/ClipboardHistory/ClipboardHistoryModel.cpp

@@ -41,7 +41,7 @@ ErrorOr<String> ClipboardHistoryModel::column_name(int column) const
 
 
 static StringView bpp_for_format_resilient(ByteString format)
 static StringView bpp_for_format_resilient(ByteString format)
 {
 {
-    unsigned format_uint = format.to_uint().value_or(static_cast<unsigned>(Gfx::BitmapFormat::Invalid));
+    unsigned format_uint = format.to_number<unsigned>().value_or(static_cast<unsigned>(Gfx::BitmapFormat::Invalid));
     // Cannot use Gfx::Bitmap::bpp_for_format here, as we have to accept invalid enum values.
     // Cannot use Gfx::Bitmap::bpp_for_format here, as we have to accept invalid enum values.
     switch (static_cast<Gfx::BitmapFormat>(format_uint)) {
     switch (static_cast<Gfx::BitmapFormat>(format_uint)) {
     case Gfx::BitmapFormat::BGRx8888:
     case Gfx::BitmapFormat::BGRx8888:
@@ -79,10 +79,10 @@ GUI::Variant ClipboardHistoryModel::data(const GUI::ModelIndex& index, GUI::Mode
         }
         }
         if (data_and_type.mime_type.starts_with("glyph/"sv)) {
         if (data_and_type.mime_type.starts_with("glyph/"sv)) {
             StringBuilder builder;
             StringBuilder builder;
-            auto count = data_and_type.metadata.get("count").value().to_uint().value_or(0);
-            auto start = data_and_type.metadata.get("start").value().to_uint().value_or(0);
-            auto width = data_and_type.metadata.get("width").value().to_uint().value_or(0);
-            auto height = data_and_type.metadata.get("height").value().to_uint().value_or(0);
+            auto count = data_and_type.metadata.get("count").value().to_number<unsigned>().value_or(0);
+            auto start = data_and_type.metadata.get("start").value().to_number<unsigned>().value_or(0);
+            auto width = data_and_type.metadata.get("width").value().to_number<unsigned>().value_or(0);
+            auto height = data_and_type.metadata.get("height").value().to_number<unsigned>().value_or(0);
             if (count > 1) {
             if (count > 1) {
                 builder.appendff("U+{:04X}..U+{:04X} ({} glyphs) [{}x{}]", start, start + count - 1, count, width, height);
                 builder.appendff("U+{:04X}..U+{:04X} ({} glyphs) [{}x{}]", start, start + count - 1, count, width, height);
             } else {
             } else {

+ 2 - 2
Userland/Applications/3DFileViewer/WavefrontOBJLoader.cpp

@@ -13,12 +13,12 @@
 
 
 static inline GLuint get_index_value(StringView& representation)
 static inline GLuint get_index_value(StringView& representation)
 {
 {
-    return representation.to_uint().value_or(1) - 1;
+    return representation.to_number<GLuint>().value_or(1) - 1;
 }
 }
 
 
 static ErrorOr<GLfloat> parse_float(StringView string)
 static ErrorOr<GLfloat> parse_float(StringView string)
 {
 {
-    auto maybe_float = string.to_float(TrimWhitespace::No);
+    auto maybe_float = string.to_number<GLfloat>(TrimWhitespace::No);
     if (!maybe_float.has_value())
     if (!maybe_float.has_value())
         return Error::from_string_literal("Wavefront: Expected floating point value when parsing TexCoord line");
         return Error::from_string_literal("Wavefront: Expected floating point value when parsing TexCoord line");
 
 

+ 2 - 2
Userland/Applications/Debugger/main.cpp

@@ -61,7 +61,7 @@ static bool handle_disassemble_command(ByteString const& command, FlatPtr first_
     auto parts = command.split(' ');
     auto parts = command.split(' ');
     size_t number_of_instructions_to_disassemble = 5;
     size_t number_of_instructions_to_disassemble = 5;
     if (parts.size() == 2) {
     if (parts.size() == 2) {
-        auto number = parts[1].to_uint();
+        auto number = parts[1].to_number<unsigned>();
         if (!number.has_value())
         if (!number.has_value())
             return false;
             return false;
         number_of_instructions_to_disassemble = number.value();
         number_of_instructions_to_disassemble = number.value();
@@ -142,7 +142,7 @@ static bool handle_breakpoint_command(ByteString const& command)
         auto source_arguments = argument.split(':');
         auto source_arguments = argument.split(':');
         if (source_arguments.size() != 2)
         if (source_arguments.size() != 2)
             return false;
             return false;
-        auto line = source_arguments[1].to_uint();
+        auto line = source_arguments[1].to_number<unsigned>();
         if (!line.has_value())
         if (!line.has_value())
             return false;
             return false;
         auto file = source_arguments[0];
         auto file = source_arguments[0];

+ 6 - 6
Userland/Applications/FileManager/FileOperationProgressWidget.cpp

@@ -106,12 +106,12 @@ FileOperationProgressWidget::FileOperationProgressWidget(FileOperation operation
         if (parts[0] == "PROGRESS"sv) {
         if (parts[0] == "PROGRESS"sv) {
             VERIFY(parts.size() >= 8);
             VERIFY(parts.size() >= 8);
             did_progress(
             did_progress(
-                parts[3].to_uint().value_or(0),
-                parts[4].to_uint().value_or(0),
-                parts[1].to_uint().value_or(0),
-                parts[2].to_uint().value_or(0),
-                parts[5].to_uint().value_or(0),
-                parts[6].to_uint().value_or(0),
+                parts[3].to_number<unsigned>().value_or(0),
+                parts[4].to_number<unsigned>().value_or(0),
+                parts[1].to_number<unsigned>().value_or(0),
+                parts[2].to_number<unsigned>().value_or(0),
+                parts[5].to_number<unsigned>().value_or(0),
+                parts[6].to_number<unsigned>().value_or(0),
                 parts[7]);
                 parts[7]);
         }
         }
     };
     };

+ 2 - 2
Userland/Applications/FontEditor/MainWidget.cpp

@@ -1057,11 +1057,11 @@ void MainWidget::paste_glyphs()
     if (!mime_type.starts_with("glyph/x-fonteditor"sv))
     if (!mime_type.starts_with("glyph/x-fonteditor"sv))
         return;
         return;
 
 
-    auto glyph_count = metadata.get("count").value().to_uint().value_or(0);
+    auto glyph_count = metadata.get("count").value().to_number<unsigned>().value_or(0);
     if (!glyph_count)
     if (!glyph_count)
         return;
         return;
 
 
-    auto height = metadata.get("height").value().to_uint().value_or(0);
+    auto height = metadata.get("height").value().to_number<unsigned>().value_or(0);
     if (!height)
     if (!height)
         return;
         return;
 
 

+ 6 - 6
Userland/Applications/Maps/SearchPanel.cpp

@@ -96,17 +96,17 @@ void SearchPanel::search(StringView query)
             // FIXME: Handle JSON parsing errors
             // FIXME: Handle JSON parsing errors
             auto const& json_place = json_places.at(i).as_object();
             auto const& json_place = json_places.at(i).as_object();
 
 
-            MapWidget::LatLng latlng = { json_place.get_byte_string("lat"sv).release_value().to_double().release_value(),
-                json_place.get_byte_string("lon"sv).release_value().to_double().release_value() };
+            MapWidget::LatLng latlng = { json_place.get_byte_string("lat"sv).release_value().to_number<double>().release_value(),
+                json_place.get_byte_string("lon"sv).release_value().to_number<double>().release_value() };
             String name = MUST(String::formatted("{}\n{:.5}, {:.5}", json_place.get_byte_string("display_name"sv).release_value(), latlng.latitude, latlng.longitude));
             String name = MUST(String::formatted("{}\n{:.5}, {:.5}", json_place.get_byte_string("display_name"sv).release_value(), latlng.latitude, latlng.longitude));
 
 
             // Calculate the right zoom level for bounding box
             // Calculate the right zoom level for bounding box
             auto const& json_boundingbox = json_place.get_array("boundingbox"sv);
             auto const& json_boundingbox = json_place.get_array("boundingbox"sv);
             MapWidget::LatLngBounds bounds = {
             MapWidget::LatLngBounds bounds = {
-                { json_boundingbox->at(0).as_string().to_double().release_value(),
-                    json_boundingbox->at(2).as_string().to_double().release_value() },
-                { json_boundingbox->at(1).as_string().to_double().release_value(),
-                    json_boundingbox->at(3).as_string().to_double().release_value() }
+                { json_boundingbox->at(0).as_string().to_number<double>().release_value(),
+                    json_boundingbox->at(2).as_string().to_number<double>().release_value() },
+                { json_boundingbox->at(1).as_string().to_number<double>().release_value(),
+                    json_boundingbox->at(3).as_string().to_number<double>().release_value() }
             };
             };
 
 
             m_places.append({ name, latlng, bounds.get_zoom() });
             m_places.append({ name, latlng, bounds.get_zoom() });

+ 2 - 2
Userland/Applications/Maps/main.cpp

@@ -60,8 +60,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
 
 
     // Map widget
     // Map widget
     Maps::UsersMapWidget::Options options {};
     Maps::UsersMapWidget::Options options {};
-    options.center.latitude = Config::read_string("Maps"sv, "MapView"sv, "CenterLatitude"sv, "30"sv).to_double().value_or(30.0);
-    options.center.longitude = Config::read_string("Maps"sv, "MapView"sv, "CenterLongitude"sv, "0"sv).to_double().value_or(0.0);
+    options.center.latitude = Config::read_string("Maps"sv, "MapView"sv, "CenterLatitude"sv, "30"sv).to_number<double>().value_or(30.0);
+    options.center.longitude = Config::read_string("Maps"sv, "MapView"sv, "CenterLongitude"sv, "0"sv).to_number<double>().value_or(0.0);
     options.zoom = Config::read_i32("Maps"sv, "MapView"sv, "Zoom"sv, MAP_ZOOM_DEFAULT);
     options.zoom = Config::read_i32("Maps"sv, "MapView"sv, "Zoom"sv, MAP_ZOOM_DEFAULT);
     auto& map_widget = main_widget.add<Maps::UsersMapWidget>(options);
     auto& map_widget = main_widget.add<Maps::UsersMapWidget>(options);
     map_widget.set_frame_style(Gfx::FrameStyle::SunkenContainer);
     map_widget.set_frame_style(Gfx::FrameStyle::SunkenContainer);

+ 2 - 2
Userland/Applications/PDFViewer/NumericInput.cpp

@@ -12,7 +12,7 @@ NumericInput::NumericInput()
     set_text("0"sv);
     set_text("0"sv);
 
 
     on_change = [&] {
     on_change = [&] {
-        auto number_opt = text().to_int();
+        auto number_opt = text().to_number<int>();
         if (number_opt.has_value()) {
         if (number_opt.has_value()) {
             set_current_number(number_opt.value(), GUI::AllowCallback::No);
             set_current_number(number_opt.value(), GUI::AllowCallback::No);
             return;
             return;
@@ -26,7 +26,7 @@ NumericInput::NumericInput()
             first = false;
             first = false;
         }
         }
 
 
-        auto new_number_opt = builder.to_byte_string().to_int();
+        auto new_number_opt = builder.to_byte_string().to_number<int>();
         if (!new_number_opt.has_value()) {
         if (!new_number_opt.has_value()) {
             m_needs_text_reset = true;
             m_needs_text_reset = true;
             return;
             return;

+ 2 - 2
Userland/Applications/PixelPaint/EditGuideDialog.cpp

@@ -80,7 +80,7 @@ Optional<float> EditGuideDialog::offset_as_pixel(ImageEditor const& editor)
 {
 {
     float offset = 0;
     float offset = 0;
     if (m_offset.ends_with('%')) {
     if (m_offset.ends_with('%')) {
-        auto percentage = m_offset.substring_view(0, m_offset.length() - 1).to_int();
+        auto percentage = m_offset.substring_view(0, m_offset.length() - 1).to_number<int>();
         if (!percentage.has_value())
         if (!percentage.has_value())
             return {};
             return {};
 
 
@@ -89,7 +89,7 @@ Optional<float> EditGuideDialog::offset_as_pixel(ImageEditor const& editor)
         else if (orientation() == PixelPaint::Guide::Orientation::Vertical)
         else if (orientation() == PixelPaint::Guide::Orientation::Vertical)
             offset = editor.image().size().width() * ((double)percentage.value() / 100.0);
             offset = editor.image().size().width() * ((double)percentage.value() / 100.0);
     } else {
     } else {
-        auto parsed_int = m_offset.to_int();
+        auto parsed_int = m_offset.to_number<int>();
         if (!parsed_int.has_value())
         if (!parsed_int.has_value())
             return {};
             return {};
         offset = parsed_int.value();
         offset = parsed_int.value();

+ 1 - 1
Userland/Applications/PixelPaint/ImageEditor.cpp

@@ -927,7 +927,7 @@ ByteString ImageEditor::generate_unique_layer_name(ByteString const& original_la
 
 
     auto after_copy_suffix_view = original_layer_name.substring_view(copy_suffix_index.value() + copy_string_view.length());
     auto after_copy_suffix_view = original_layer_name.substring_view(copy_suffix_index.value() + copy_string_view.length());
     if (!after_copy_suffix_view.is_empty()) {
     if (!after_copy_suffix_view.is_empty()) {
-        auto after_copy_suffix_number = after_copy_suffix_view.trim_whitespace().to_int();
+        auto after_copy_suffix_number = after_copy_suffix_view.trim_whitespace().to_number<int>();
         if (!after_copy_suffix_number.has_value())
         if (!after_copy_suffix_number.has_value())
             return ByteString::formatted("{}{}", original_layer_name, copy_string_view);
             return ByteString::formatted("{}{}", original_layer_name, copy_string_view);
     }
     }

+ 3 - 3
Userland/Applications/PixelPaint/MainWidget.cpp

@@ -370,8 +370,8 @@ ErrorOr<void> MainWidget::initialize_menubar(GUI::Window& window)
         auto layer_x_position = data_and_type.metadata.get("pixelpaint-layer-x");
         auto layer_x_position = data_and_type.metadata.get("pixelpaint-layer-x");
         auto layer_y_position = data_and_type.metadata.get("pixelpaint-layer-y");
         auto layer_y_position = data_and_type.metadata.get("pixelpaint-layer-y");
         if (layer_x_position.has_value() && layer_y_position.has_value()) {
         if (layer_x_position.has_value() && layer_y_position.has_value()) {
-            auto x = layer_x_position.value().to_int();
-            auto y = layer_y_position.value().to_int();
+            auto x = layer_x_position.value().to_number<int>();
+            auto y = layer_y_position.value().to_number<int>();
             if (x.has_value() && x.value()) {
             if (x.has_value() && x.value()) {
                 auto pasted_layer_location = Gfx::IntPoint { x.value(), y.value() };
                 auto pasted_layer_location = Gfx::IntPoint { x.value(), y.value() };
 
 
@@ -1211,7 +1211,7 @@ ErrorOr<void> MainWidget::initialize_menubar(GUI::Window& window)
             }
             }
         }
         }
 
 
-        auto zoom_level_optional = value.view().trim("%"sv, TrimMode::Right).to_int();
+        auto zoom_level_optional = value.view().trim("%"sv, TrimMode::Right).to_number<int>();
         if (!zoom_level_optional.has_value()) {
         if (!zoom_level_optional.has_value()) {
             // Indicate that a parse-error occurred by resetting the text to the current state.
             // Indicate that a parse-error occurred by resetting the text to the current state.
             editor->on_scale_change(editor->scale());
             editor->on_scale_change(editor->scale());

+ 3 - 2
Userland/Applications/PixelPaint/Tools/EllipseTool.cpp

@@ -1,4 +1,5 @@
 /*
 /*
+ * Copyright (c) 2019-2023, Shannon Booth <shannon@serenityos.org>
  * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
  * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
  * Copyright (c) 2021, Mustafa Quraish <mustafa@serenityos.org>
  * Copyright (c) 2021, Mustafa Quraish <mustafa@serenityos.org>
  * Copyright (c) 2022, the SerenityOS developers.
  * Copyright (c) 2022, the SerenityOS developers.
@@ -188,8 +189,8 @@ NonnullRefPtr<GUI::Widget> EllipseTool::get_properties_widget()
         m_aspect_w_textbox->set_fixed_height(20);
         m_aspect_w_textbox->set_fixed_height(20);
         m_aspect_w_textbox->set_fixed_width(25);
         m_aspect_w_textbox->set_fixed_width(25);
         m_aspect_w_textbox->on_change = [this] {
         m_aspect_w_textbox->on_change = [this] {
-            auto x = m_aspect_w_textbox->text().to_int().value_or(0);
-            auto y = m_aspect_h_textbox->text().to_int().value_or(0);
+            auto x = m_aspect_w_textbox->text().to_number<int>().value_or(0);
+            auto y = m_aspect_h_textbox->text().to_number<int>().value_or(0);
             if (x > 0 && y > 0) {
             if (x > 0 && y > 0) {
                 m_aspect_ratio = (float)x / (float)y;
                 m_aspect_ratio = (float)x / (float)y;
             } else {
             } else {

+ 2 - 2
Userland/Applications/PixelPaint/Tools/RectangleTool.cpp

@@ -237,8 +237,8 @@ NonnullRefPtr<GUI::Widget> RectangleTool::get_properties_widget()
         m_aspect_w_textbox->set_fixed_height(20);
         m_aspect_w_textbox->set_fixed_height(20);
         m_aspect_w_textbox->set_fixed_width(25);
         m_aspect_w_textbox->set_fixed_width(25);
         m_aspect_w_textbox->on_change = [this] {
         m_aspect_w_textbox->on_change = [this] {
-            auto x = m_aspect_w_textbox->text().to_int().value_or(0);
-            auto y = m_aspect_h_textbox->text().to_int().value_or(0);
+            auto x = m_aspect_w_textbox->text().to_number<int>().value_or(0);
+            auto y = m_aspect_h_textbox->text().to_number<int>().value_or(0);
             if (x > 0 && y > 0) {
             if (x > 0 && y > 0) {
                 m_aspect_ratio = (float)x / (float)y;
                 m_aspect_ratio = (float)x / (float)y;
             } else {
             } else {

+ 3 - 3
Userland/Applications/Presenter/Presentation.cpp

@@ -148,12 +148,12 @@ ErrorOr<Gfx::IntSize> Presentation::parse_presentation_size(JsonObject const& me
         return Error::from_string_view("Width or aspect in incorrect format"sv);
         return Error::from_string_view("Width or aspect in incorrect format"sv);
 
 
     // We intentionally discard floating-point data here. If you need more resolution, just use a larger width.
     // We intentionally discard floating-point data here. If you need more resolution, just use a larger width.
-    auto const width = maybe_width->to_int();
+    auto const width = maybe_width->to_number<int>();
     auto const aspect_parts = maybe_aspect->split_view(':');
     auto const aspect_parts = maybe_aspect->split_view(':');
     if (aspect_parts.size() != 2)
     if (aspect_parts.size() != 2)
         return Error::from_string_view("Aspect specification must have the exact format `width:height`"sv);
         return Error::from_string_view("Aspect specification must have the exact format `width:height`"sv);
-    auto aspect_width = aspect_parts[0].to_int<int>();
-    auto aspect_height = aspect_parts[1].to_int<int>();
+    auto aspect_width = aspect_parts[0].to_number<int>();
+    auto aspect_height = aspect_parts[1].to_number<int>();
     if (!aspect_width.has_value() || !aspect_height.has_value() || aspect_width.value() == 0 || aspect_height.value() == 0)
     if (!aspect_width.has_value() || !aspect_height.has_value() || aspect_width.value() == 0 || aspect_height.value() == 0)
         return Error::from_string_view("Aspect width and height must be non-zero integers"sv);
         return Error::from_string_view("Aspect width and height must be non-zero integers"sv);
 
 

+ 1 - 1
Userland/Applications/SoundPlayer/M3UParser.cpp

@@ -70,7 +70,7 @@ NonnullOwnPtr<Vector<M3UEntry>> M3UParser::parse(bool include_extended_info)
             VERIFY(separator.has_value());
             VERIFY(separator.has_value());
             auto seconds = ext_inf.value().substring_view(0, separator.value());
             auto seconds = ext_inf.value().substring_view(0, separator.value());
             VERIFY(!seconds.is_whitespace() && !seconds.is_null() && !seconds.is_empty());
             VERIFY(!seconds.is_whitespace() && !seconds.is_null() && !seconds.is_empty());
-            metadata_for_next_file.track_length_in_seconds = seconds.to_uint();
+            metadata_for_next_file.track_length_in_seconds = seconds.to_number<unsigned>();
             auto display_name = ext_inf.value().substring_view(seconds.length() + 1);
             auto display_name = ext_inf.value().substring_view(seconds.length() + 1);
             VERIFY(!display_name.is_empty() && !display_name.is_null() && !display_name.is_empty());
             VERIFY(!display_name.is_empty() && !display_name.is_null() && !display_name.is_empty());
             metadata_for_next_file.track_display_title = display_name;
             metadata_for_next_file.track_display_title = display_name;

+ 1 - 1
Userland/Applications/Spreadsheet/Cell.cpp

@@ -79,7 +79,7 @@ CellType const& Cell::type() const
         return *m_type;
         return *m_type;
 
 
     if (m_kind == LiteralString) {
     if (m_kind == LiteralString) {
-        if (m_data.to_int().has_value())
+        if (m_data.to_number<int>().has_value())
             return *CellType::get_by_name("Numeric"sv);
             return *CellType::get_by_name("Numeric"sv);
     }
     }
 
 

+ 1 - 1
Userland/Applications/Spreadsheet/Spreadsheet.cpp

@@ -204,7 +204,7 @@ Optional<Position> Sheet::parse_cell_name(StringView name) const
     if (it == m_columns.end())
     if (it == m_columns.end())
         return {};
         return {};
 
 
-    return Position { it.index(), row.to_uint().value() };
+    return Position { it.index(), row.to_number<unsigned>().value() };
 }
 }
 
 
 Optional<size_t> Sheet::column_index(StringView column_name) const
 Optional<size_t> Sheet::column_index(StringView column_name) const

+ 1 - 1
Userland/DevTools/HackStudio/Debugger/VariablesModel.cpp

@@ -112,7 +112,7 @@ static Optional<u32> string_to_variable_value(StringView string_value, Debug::De
     }
     }
 
 
     if (variable.type_name == "int") {
     if (variable.type_name == "int") {
-        auto value = string_value.to_int();
+        auto value = string_value.to_number<int>();
         if (value.has_value())
         if (value.has_value())
             return value.value();
             return value.value();
         return {};
         return {};

+ 1 - 1
Userland/Libraries/LibArchive/TarStream.h

@@ -90,7 +90,7 @@ inline ErrorOr<void> TarInputStream::for_each_extended_header(F func)
         Optional<size_t> length_end_index = file_contents.find(' ');
         Optional<size_t> length_end_index = file_contents.find(' ');
         if (!length_end_index.has_value())
         if (!length_end_index.has_value())
             return Error::from_string_literal("Malformed extended header: No length found.");
             return Error::from_string_literal("Malformed extended header: No length found.");
-        Optional<unsigned int> length = file_contents.substring_view(0, length_end_index.value()).to_uint();
+        Optional<unsigned> length = file_contents.substring_view(0, length_end_index.value()).to_number<unsigned>();
         if (!length.has_value())
         if (!length.has_value())
             return Error::from_string_literal("Malformed extended header: Could not parse length.");
             return Error::from_string_literal("Malformed extended header: Could not parse length.");
 
 

+ 1 - 1
Userland/Libraries/LibC/grp.cpp

@@ -88,7 +88,7 @@ static bool parse_grpdb_entry(char* buffer, size_t buffer_size, struct group& gr
     auto& gid_string = parts[2];
     auto& gid_string = parts[2];
     StringView members_string = parts[3];
     StringView members_string = parts[3];
 
 
-    auto gid = gid_string.to_uint();
+    auto gid = gid_string.to_number<gid_t>();
     if (!gid.has_value()) {
     if (!gid.has_value()) {
         warnln("parse_grpdb_entry(): Malformed GID on line {}", s_line_number);
         warnln("parse_grpdb_entry(): Malformed GID on line {}", s_line_number);
         return false;
         return false;

+ 1 - 1
Userland/Libraries/LibC/netdb.cpp

@@ -767,7 +767,7 @@ static bool fill_getproto_buffers(char const* line, ssize_t read)
     }
     }
     __getproto_name_buffer = split_line[0];
     __getproto_name_buffer = split_line[0];
 
 
-    auto number = split_line[1].to_int();
+    auto number = split_line[1].to_number<int>();
     if (!number.has_value())
     if (!number.has_value())
         return false;
         return false;
 
 

+ 2 - 2
Userland/Libraries/LibC/pwd.cpp

@@ -88,12 +88,12 @@ static bool parse_pwddb_entry(char* raw_line, struct passwd& passwd_entry)
     auto& dir = parts[5];
     auto& dir = parts[5];
     auto& shell = parts[6];
     auto& shell = parts[6];
 
 
-    auto uid = uid_string.to_uint();
+    auto uid = uid_string.to_number<uid_t>();
     if (!uid.has_value()) {
     if (!uid.has_value()) {
         dbgln("getpwent(): Malformed UID on line {}", s_line_number);
         dbgln("getpwent(): Malformed UID on line {}", s_line_number);
         return false;
         return false;
     }
     }
-    auto gid = gid_string.to_uint();
+    auto gid = gid_string.to_number<gid_t>();
     if (!gid.has_value()) {
     if (!gid.has_value()) {
         dbgln("getpwent(): Malformed GID on line {}", s_line_number);
         dbgln("getpwent(): Malformed GID on line {}", s_line_number);
         return false;
         return false;

+ 1 - 1
Userland/Libraries/LibC/scanf.cpp

@@ -410,7 +410,7 @@ extern "C" int vsscanf(char const* input, char const* format, va_list ap)
         [[maybe_unused]] int width_specifier = 0;
         [[maybe_unused]] int width_specifier = 0;
         if (format_lexer.next_is(isdigit)) {
         if (format_lexer.next_is(isdigit)) {
             auto width_digits = format_lexer.consume_while([](char c) { return isdigit(c); });
             auto width_digits = format_lexer.consume_while([](char c) { return isdigit(c); });
-            width_specifier = width_digits.to_int().value();
+            width_specifier = width_digits.to_number<int>().value();
             // FIXME: Actually use width specifier
             // FIXME: Actually use width specifier
         }
         }
 
 

+ 7 - 7
Userland/Libraries/LibC/shadow.cpp

@@ -79,7 +79,7 @@ static bool parse_shadow_entry(ByteString const& line)
     auto& expire_string = parts[7];
     auto& expire_string = parts[7];
     auto& flag_string = parts[8];
     auto& flag_string = parts[8];
 
 
-    auto lstchg = lstchg_string.to_int();
+    auto lstchg = lstchg_string.to_number<int>();
     if (!lstchg.has_value()) {
     if (!lstchg.has_value()) {
         dbgln("getspent(): Malformed lstchg on line {}", s_line_number);
         dbgln("getspent(): Malformed lstchg on line {}", s_line_number);
         return false;
         return false;
@@ -87,7 +87,7 @@ static bool parse_shadow_entry(ByteString const& line)
 
 
     if (min_string.is_empty())
     if (min_string.is_empty())
         min_string = "-1"sv;
         min_string = "-1"sv;
-    auto min_value = min_string.to_int();
+    auto min_value = min_string.to_number<int>();
     if (!min_value.has_value()) {
     if (!min_value.has_value()) {
         dbgln("getspent(): Malformed min value on line {}", s_line_number);
         dbgln("getspent(): Malformed min value on line {}", s_line_number);
         return false;
         return false;
@@ -95,7 +95,7 @@ static bool parse_shadow_entry(ByteString const& line)
 
 
     if (max_string.is_empty())
     if (max_string.is_empty())
         max_string = "-1"sv;
         max_string = "-1"sv;
-    auto max_value = max_string.to_int();
+    auto max_value = max_string.to_number<int>();
     if (!max_value.has_value()) {
     if (!max_value.has_value()) {
         dbgln("getspent(): Malformed max value on line {}", s_line_number);
         dbgln("getspent(): Malformed max value on line {}", s_line_number);
         return false;
         return false;
@@ -103,7 +103,7 @@ static bool parse_shadow_entry(ByteString const& line)
 
 
     if (warn_string.is_empty())
     if (warn_string.is_empty())
         warn_string = "-1"sv;
         warn_string = "-1"sv;
-    auto warn = warn_string.to_int();
+    auto warn = warn_string.to_number<int>();
     if (!warn.has_value()) {
     if (!warn.has_value()) {
         dbgln("getspent(): Malformed warn on line {}", s_line_number);
         dbgln("getspent(): Malformed warn on line {}", s_line_number);
         return false;
         return false;
@@ -111,7 +111,7 @@ static bool parse_shadow_entry(ByteString const& line)
 
 
     if (inact_string.is_empty())
     if (inact_string.is_empty())
         inact_string = "-1"sv;
         inact_string = "-1"sv;
-    auto inact = inact_string.to_int();
+    auto inact = inact_string.to_number<int>();
     if (!inact.has_value()) {
     if (!inact.has_value()) {
         dbgln("getspent(): Malformed inact on line {}", s_line_number);
         dbgln("getspent(): Malformed inact on line {}", s_line_number);
         return false;
         return false;
@@ -119,7 +119,7 @@ static bool parse_shadow_entry(ByteString const& line)
 
 
     if (expire_string.is_empty())
     if (expire_string.is_empty())
         expire_string = "-1"sv;
         expire_string = "-1"sv;
-    auto expire = expire_string.to_int();
+    auto expire = expire_string.to_number<int>();
     if (!expire.has_value()) {
     if (!expire.has_value()) {
         dbgln("getspent(): Malformed expire on line {}", s_line_number);
         dbgln("getspent(): Malformed expire on line {}", s_line_number);
         return false;
         return false;
@@ -127,7 +127,7 @@ static bool parse_shadow_entry(ByteString const& line)
 
 
     if (flag_string.is_empty())
     if (flag_string.is_empty())
         flag_string = "0"sv;
         flag_string = "0"sv;
-    auto flag = flag_string.to_int();
+    auto flag = flag_string.to_number<int>();
     if (!flag.has_value()) {
     if (!flag.has_value()) {
         dbgln("getspent(): Malformed flag on line {}", s_line_number);
         dbgln("getspent(): Malformed flag on line {}", s_line_number);
         return false;
         return false;

+ 10 - 10
Userland/Libraries/LibChess/UCICommand.cpp

@@ -161,31 +161,31 @@ ErrorOr<NonnullOwnPtr<GoCommand>> GoCommand::from_string(StringView command)
             go_command->ponder = true;
             go_command->ponder = true;
         } else if (tokens[i] == "wtime") {
         } else if (tokens[i] == "wtime") {
             VERIFY(i++ < tokens.size());
             VERIFY(i++ < tokens.size());
-            go_command->wtime = tokens[i].to_int().value();
+            go_command->wtime = tokens[i].to_number<int>().value();
         } else if (tokens[i] == "btime") {
         } else if (tokens[i] == "btime") {
             VERIFY(i++ < tokens.size());
             VERIFY(i++ < tokens.size());
-            go_command->btime = tokens[i].to_int().value();
+            go_command->btime = tokens[i].to_number<int>().value();
         } else if (tokens[i] == "winc") {
         } else if (tokens[i] == "winc") {
             VERIFY(i++ < tokens.size());
             VERIFY(i++ < tokens.size());
-            go_command->winc = tokens[i].to_int().value();
+            go_command->winc = tokens[i].to_number<int>().value();
         } else if (tokens[i] == "binc") {
         } else if (tokens[i] == "binc") {
             VERIFY(i++ < tokens.size());
             VERIFY(i++ < tokens.size());
-            go_command->binc = tokens[i].to_int().value();
+            go_command->binc = tokens[i].to_number<int>().value();
         } else if (tokens[i] == "movestogo") {
         } else if (tokens[i] == "movestogo") {
             VERIFY(i++ < tokens.size());
             VERIFY(i++ < tokens.size());
-            go_command->movestogo = tokens[i].to_int().value();
+            go_command->movestogo = tokens[i].to_number<int>().value();
         } else if (tokens[i] == "depth") {
         } else if (tokens[i] == "depth") {
             VERIFY(i++ < tokens.size());
             VERIFY(i++ < tokens.size());
-            go_command->depth = tokens[i].to_int().value();
+            go_command->depth = tokens[i].to_number<int>().value();
         } else if (tokens[i] == "nodes") {
         } else if (tokens[i] == "nodes") {
             VERIFY(i++ < tokens.size());
             VERIFY(i++ < tokens.size());
-            go_command->nodes = tokens[i].to_int().value();
+            go_command->nodes = tokens[i].to_number<int>().value();
         } else if (tokens[i] == "mate") {
         } else if (tokens[i] == "mate") {
             VERIFY(i++ < tokens.size());
             VERIFY(i++ < tokens.size());
-            go_command->mate = tokens[i].to_int().value();
+            go_command->mate = tokens[i].to_number<int>().value();
         } else if (tokens[i] == "movetime") {
         } else if (tokens[i] == "movetime") {
             VERIFY(i++ < tokens.size());
             VERIFY(i++ < tokens.size());
-            go_command->movetime = tokens[i].to_int().value();
+            go_command->movetime = tokens[i].to_number<int>().value();
         } else if (tokens[i] == "infinite") {
         } else if (tokens[i] == "infinite") {
             go_command->infinite = true;
             go_command->infinite = true;
         }
         }
@@ -344,7 +344,7 @@ ErrorOr<NonnullOwnPtr<InfoCommand>> InfoCommand::from_string(StringView command)
     auto info_command = TRY(try_make<InfoCommand>());
     auto info_command = TRY(try_make<InfoCommand>());
 
 
     auto parse_integer_token = [](StringView value_token) -> ErrorOr<int> {
     auto parse_integer_token = [](StringView value_token) -> ErrorOr<int> {
-        auto value_as_integer = value_token.to_int();
+        auto value_as_integer = value_token.to_number<int>();
         if (!value_as_integer.has_value())
         if (!value_as_integer.has_value())
             return Error::from_string_literal("Expected integer token");
             return Error::from_string_literal("Expected integer token");
 
 

+ 6 - 14
Userland/Libraries/LibCore/ArgsParser.cpp

@@ -500,11 +500,7 @@ void ArgsParser::add_option(I& value, char const* help_string, char const* long_
         short_name,
         short_name,
         value_name,
         value_name,
         [&value](StringView view) -> ErrorOr<bool> {
         [&value](StringView view) -> ErrorOr<bool> {
-            Optional<I> opt;
-            if constexpr (IsSigned<I>)
-                opt = view.to_int<I>();
-            else
-                opt = view.to_uint<I>();
+            Optional<I> opt = view.to_number<I>();
             value = opt.value_or(0);
             value = opt.value_or(0);
             return opt.has_value();
             return opt.has_value();
         },
         },
@@ -530,7 +526,7 @@ void ArgsParser::add_option(double& value, char const* help_string, char const*
         short_name,
         short_name,
         value_name,
         value_name,
         [&value](StringView s) -> ErrorOr<bool> {
         [&value](StringView s) -> ErrorOr<bool> {
-            auto opt = s.to_double();
+            auto opt = s.to_number<double>();
             value = opt.value_or(0.0);
             value = opt.value_or(0.0);
             return opt.has_value();
             return opt.has_value();
         },
         },
@@ -548,7 +544,7 @@ void ArgsParser::add_option(Optional<double>& value, char const* help_string, ch
         short_name,
         short_name,
         value_name,
         value_name,
         [&value](StringView s) -> ErrorOr<bool> {
         [&value](StringView s) -> ErrorOr<bool> {
-            value = s.to_double();
+            value = s.to_number<double>();
             return value.has_value();
             return value.has_value();
         },
         },
         hide_mode,
         hide_mode,
@@ -565,7 +561,7 @@ void ArgsParser::add_option(Optional<size_t>& value, char const* help_string, ch
         short_name,
         short_name,
         value_name,
         value_name,
         [&value](StringView s) -> ErrorOr<bool> {
         [&value](StringView s) -> ErrorOr<bool> {
-            value = AK::StringUtils::convert_to_uint<size_t>(s);
+            value = s.to_number<size_t>();
             return value.has_value();
             return value.has_value();
         },
         },
         hide_mode,
         hide_mode,
@@ -676,11 +672,7 @@ void ArgsParser::add_positional_argument(I& value, char const* help_string, char
         required == Required::Yes ? 1 : 0,
         required == Required::Yes ? 1 : 0,
         1,
         1,
         [&value](StringView view) -> ErrorOr<bool> {
         [&value](StringView view) -> ErrorOr<bool> {
-            Optional<I> opt;
-            if constexpr (IsSigned<I>)
-                opt = view.to_int<I>();
-            else
-                opt = view.to_uint<I>();
+            Optional<I> opt = view.to_number<I>();
             value = opt.value_or(0);
             value = opt.value_or(0);
             return opt.has_value();
             return opt.has_value();
         },
         },
@@ -705,7 +697,7 @@ void ArgsParser::add_positional_argument(double& value, char const* help_string,
         required == Required::Yes ? 1 : 0,
         required == Required::Yes ? 1 : 0,
         1,
         1,
         [&value](StringView s) -> ErrorOr<bool> {
         [&value](StringView s) -> ErrorOr<bool> {
-            auto opt = s.to_double();
+            auto opt = s.to_number<double>();
             value = opt.value_or(0.0);
             value = opt.value_or(0.0);
             return opt.has_value();
             return opt.has_value();
         }
         }

+ 1 - 4
Userland/Libraries/LibCore/ConfigFile.h

@@ -55,10 +55,7 @@ public:
         if (!has_key(group, key))
         if (!has_key(group, key))
             return default_value;
             return default_value;
 
 
-        if constexpr (IsSigned<T>)
-            return read_entry(group, key, "").to_int<T>().value_or(default_value);
-        else
-            return read_entry(group, key, "").to_uint<T>().value_or(default_value);
+        return read_entry(group, key, "").to_number<T>().value_or(default_value);
     }
     }
 
 
     void write_entry(ByteString const& group, ByteString const& key, ByteString const& value);
     void write_entry(ByteString const& group, ByteString const& key, ByteString const& value);

+ 1 - 1
Userland/Libraries/LibCore/Process.cpp

@@ -209,7 +209,7 @@ ErrorOr<bool> Process::is_being_debugged()
         auto const parts = line.split_view(':');
         auto const parts = line.split_view(':');
         if (parts.size() < 2 || parts[0] != "TracerPid"sv)
         if (parts.size() < 2 || parts[0] != "TracerPid"sv)
             continue;
             continue;
-        auto tracer_pid = parts[1].to_uint<u32>();
+        auto tracer_pid = parts[1].to_number<u32>();
         return (tracer_pid != 0UL);
         return (tracer_pid != 0UL);
     }
     }
     return false;
     return false;

+ 1 - 1
Userland/Libraries/LibCore/SystemServerTakeover.cpp

@@ -27,7 +27,7 @@ static void parse_sockets_from_system_server()
     for (auto const socket : StringView { sockets, strlen(sockets) }.split_view(';')) {
     for (auto const socket : StringView { sockets, strlen(sockets) }.split_view(';')) {
         auto params = socket.split_view(':');
         auto params = socket.split_view(':');
         VERIFY(params.size() == 2);
         VERIFY(params.size() == 2);
-        s_overtaken_sockets.set(params[0].to_byte_string(), params[1].to_int().value());
+        s_overtaken_sockets.set(params[0].to_byte_string(), params[1].to_number<int>().value());
     }
     }
 
 
     s_overtaken_sockets_parsed = true;
     s_overtaken_sockets_parsed = true;

+ 17 - 17
Userland/Libraries/LibCrypto/ASN1/ASN1.cpp

@@ -123,16 +123,16 @@ Optional<Core::DateTime> parse_utc_time(StringView time)
 {
 {
     // YYMMDDhhmm[ss]Z or YYMMDDhhmm[ss](+|-)hhmm
     // YYMMDDhhmm[ss]Z or YYMMDDhhmm[ss](+|-)hhmm
     GenericLexer lexer(time);
     GenericLexer lexer(time);
-    auto year_in_century = lexer.consume(2).to_uint();
-    auto month = lexer.consume(2).to_uint();
-    auto day = lexer.consume(2).to_uint();
-    auto hour = lexer.consume(2).to_uint();
-    auto minute = lexer.consume(2).to_uint();
+    auto year_in_century = lexer.consume(2).to_number<unsigned>();
+    auto month = lexer.consume(2).to_number<unsigned>();
+    auto day = lexer.consume(2).to_number<unsigned>();
+    auto hour = lexer.consume(2).to_number<unsigned>();
+    auto minute = lexer.consume(2).to_number<unsigned>();
     Optional<unsigned> seconds, offset_hours, offset_minutes;
     Optional<unsigned> seconds, offset_hours, offset_minutes;
     [[maybe_unused]] bool negative_offset = false;
     [[maybe_unused]] bool negative_offset = false;
 
 
     if (lexer.next_is(is_any_of("0123456789"sv))) {
     if (lexer.next_is(is_any_of("0123456789"sv))) {
-        seconds = lexer.consume(2).to_uint();
+        seconds = lexer.consume(2).to_number<unsigned>();
         if (!seconds.has_value()) {
         if (!seconds.has_value()) {
             return {};
             return {};
         }
         }
@@ -142,8 +142,8 @@ Optional<Core::DateTime> parse_utc_time(StringView time)
         lexer.consume();
         lexer.consume();
     } else if (lexer.next_is(is_any_of("+-"sv))) {
     } else if (lexer.next_is(is_any_of("+-"sv))) {
         negative_offset = lexer.consume() == '-';
         negative_offset = lexer.consume() == '-';
-        offset_hours = lexer.consume(2).to_uint();
-        offset_minutes = lexer.consume(2).to_uint();
+        offset_hours = lexer.consume(2).to_number<unsigned>();
+        offset_minutes = lexer.consume(2).to_number<unsigned>();
         if (!offset_hours.has_value() || !offset_minutes.has_value()) {
         if (!offset_hours.has_value() || !offset_minutes.has_value()) {
             return {};
             return {};
         }
         }
@@ -171,10 +171,10 @@ Optional<Core::DateTime> parse_generalized_time(StringView time)
 {
 {
     // YYYYMMDDhh[mm[ss[.fff]]] or YYYYMMDDhh[mm[ss[.fff]]]Z or YYYYMMDDhh[mm[ss[.fff]]](+|-)hhmm
     // YYYYMMDDhh[mm[ss[.fff]]] or YYYYMMDDhh[mm[ss[.fff]]]Z or YYYYMMDDhh[mm[ss[.fff]]](+|-)hhmm
     GenericLexer lexer(time);
     GenericLexer lexer(time);
-    auto year = lexer.consume(4).to_uint();
-    auto month = lexer.consume(2).to_uint();
-    auto day = lexer.consume(2).to_uint();
-    auto hour = lexer.consume(2).to_uint();
+    auto year = lexer.consume(4).to_number<unsigned>();
+    auto month = lexer.consume(2).to_number<unsigned>();
+    auto day = lexer.consume(2).to_number<unsigned>();
+    auto hour = lexer.consume(2).to_number<unsigned>();
     Optional<unsigned> minute, seconds, milliseconds, offset_hours, offset_minutes;
     Optional<unsigned> minute, seconds, milliseconds, offset_hours, offset_minutes;
     [[maybe_unused]] bool negative_offset = false;
     [[maybe_unused]] bool negative_offset = false;
     if (!lexer.is_eof()) {
     if (!lexer.is_eof()) {
@@ -182,7 +182,7 @@ Optional<Core::DateTime> parse_generalized_time(StringView time)
             goto done_parsing;
             goto done_parsing;
 
 
         if (!lexer.next_is(is_any_of("+-"sv))) {
         if (!lexer.next_is(is_any_of("+-"sv))) {
-            minute = lexer.consume(2).to_uint();
+            minute = lexer.consume(2).to_number<unsigned>();
             if (!minute.has_value()) {
             if (!minute.has_value()) {
                 return {};
                 return {};
             }
             }
@@ -191,7 +191,7 @@ Optional<Core::DateTime> parse_generalized_time(StringView time)
         }
         }
 
 
         if (!lexer.next_is(is_any_of("+-"sv))) {
         if (!lexer.next_is(is_any_of("+-"sv))) {
-            seconds = lexer.consume(2).to_uint();
+            seconds = lexer.consume(2).to_number<unsigned>();
             if (!seconds.has_value()) {
             if (!seconds.has_value()) {
                 return {};
                 return {};
             }
             }
@@ -200,7 +200,7 @@ Optional<Core::DateTime> parse_generalized_time(StringView time)
         }
         }
 
 
         if (lexer.consume_specific('.')) {
         if (lexer.consume_specific('.')) {
-            milliseconds = lexer.consume(3).to_uint();
+            milliseconds = lexer.consume(3).to_number<unsigned>();
             if (!milliseconds.has_value()) {
             if (!milliseconds.has_value()) {
                 return {};
                 return {};
             }
             }
@@ -210,8 +210,8 @@ Optional<Core::DateTime> parse_generalized_time(StringView time)
 
 
         if (lexer.next_is(is_any_of("+-"sv))) {
         if (lexer.next_is(is_any_of("+-"sv))) {
             negative_offset = lexer.consume() == '-';
             negative_offset = lexer.consume() == '-';
-            offset_hours = lexer.consume(2).to_uint();
-            offset_minutes = lexer.consume(2).to_uint();
+            offset_hours = lexer.consume(2).to_number<unsigned>();
+            offset_minutes = lexer.consume(2).to_number<unsigned>();
             if (!offset_hours.has_value() || !offset_minutes.has_value()) {
             if (!offset_hours.has_value() || !offset_minutes.has_value()) {
                 return {};
                 return {};
             }
             }

+ 1 - 1
Userland/Libraries/LibDiff/Hunks.cpp

@@ -50,7 +50,7 @@ bool Parser::consume_line_number(size_t& number)
 {
 {
     auto line = consume_while(is_ascii_digit);
     auto line = consume_while(is_ascii_digit);
 
 
-    auto maybe_number = line.to_uint<size_t>();
+    auto maybe_number = line.to_number<size_t>();
     if (!maybe_number.has_value())
     if (!maybe_number.has_value())
         return false;
         return false;
 
 

+ 1 - 1
Userland/Libraries/LibGUI/AbstractTableView.cpp

@@ -417,7 +417,7 @@ void AbstractTableView::set_visible_columns(StringView column_names)
         column_header().set_section_visible(column, false);
         column_header().set_section_visible(column, false);
 
 
     column_names.for_each_split_view(',', SplitBehavior::Nothing, [&, this](StringView column_id_string) {
     column_names.for_each_split_view(',', SplitBehavior::Nothing, [&, this](StringView column_id_string) {
-        if (auto column = column_id_string.to_int(); column.has_value()) {
+        if (auto column = column_id_string.to_number<int>(); column.has_value()) {
             column_header().set_section_visible(column.value(), true);
             column_header().set_section_visible(column.value(), true);
         }
         }
     });
     });

+ 5 - 5
Userland/Libraries/LibGUI/Clipboard.cpp

@@ -79,23 +79,23 @@ RefPtr<Gfx::Bitmap> Clipboard::DataAndType::as_bitmap() const
     if (mime_type != "image/x-serenityos")
     if (mime_type != "image/x-serenityos")
         return nullptr;
         return nullptr;
 
 
-    auto width = metadata.get("width").value_or("0").to_uint();
+    auto width = metadata.get("width").value_or("0").to_number<unsigned>();
     if (!width.has_value() || width.value() == 0)
     if (!width.has_value() || width.value() == 0)
         return nullptr;
         return nullptr;
 
 
-    auto height = metadata.get("height").value_or("0").to_uint();
+    auto height = metadata.get("height").value_or("0").to_number<unsigned>();
     if (!height.has_value() || height.value() == 0)
     if (!height.has_value() || height.value() == 0)
         return nullptr;
         return nullptr;
 
 
-    auto scale = metadata.get("scale").value_or("0").to_uint();
+    auto scale = metadata.get("scale").value_or("0").to_number<unsigned>();
     if (!scale.has_value() || scale.value() == 0)
     if (!scale.has_value() || scale.value() == 0)
         return nullptr;
         return nullptr;
 
 
-    auto pitch = metadata.get("pitch").value_or("0").to_uint();
+    auto pitch = metadata.get("pitch").value_or("0").to_number<unsigned>();
     if (!pitch.has_value() || pitch.value() == 0)
     if (!pitch.has_value() || pitch.value() == 0)
         return nullptr;
         return nullptr;
 
 
-    auto format = metadata.get("format").value_or("0").to_uint();
+    auto format = metadata.get("format").value_or("0").to_number<unsigned>();
     if (!format.has_value() || format.value() == 0)
     if (!format.has_value() || format.value() == 0)
         return nullptr;
         return nullptr;
 
 

+ 2 - 2
Userland/Libraries/LibGUI/SpinBox.cpp

@@ -24,7 +24,7 @@ SpinBox::SpinBox()
         if (!weak_this)
         if (!weak_this)
             return;
             return;
 
 
-        auto value = m_editor->text().to_uint();
+        auto value = m_editor->text().to_number<unsigned>();
         if (!value.has_value() && m_editor->text().length() > 0)
         if (!value.has_value() && m_editor->text().length() > 0)
             m_editor->do_delete();
             m_editor->do_delete();
     };
     };
@@ -81,7 +81,7 @@ void SpinBox::set_value_from_current_text()
     if (m_editor->text().is_empty())
     if (m_editor->text().is_empty())
         return;
         return;
 
 
-    auto value = m_editor->text().to_int();
+    auto value = m_editor->text().to_number<int>();
     if (value.has_value())
     if (value.has_value())
         set_value(value.value());
         set_value(value.value());
     else
     else

+ 1 - 1
Userland/Libraries/LibGUI/ValueSlider.cpp

@@ -35,7 +35,7 @@ ValueSlider::ValueSlider(Gfx::Orientation orientation, String suffix)
         ByteString value = m_textbox->text();
         ByteString value = m_textbox->text();
         if (value.ends_with(m_suffix, AK::CaseSensitivity::CaseInsensitive))
         if (value.ends_with(m_suffix, AK::CaseSensitivity::CaseInsensitive))
             value = value.substring_view(0, value.length() - m_suffix.bytes_as_string_view().length());
             value = value.substring_view(0, value.length() - m_suffix.bytes_as_string_view().length());
-        auto integer_value = value.to_int();
+        auto integer_value = value.to_number<int>();
         if (integer_value.has_value())
         if (integer_value.has_value())
             AbstractSlider::set_value(integer_value.value());
             AbstractSlider::set_value(integer_value.value());
     };
     };

+ 1 - 4
Userland/Libraries/LibGUI/Variant.h

@@ -120,10 +120,7 @@ public:
             [](FloatingPoint auto v) { return (T)v; },
             [](FloatingPoint auto v) { return (T)v; },
             [](Detail::Boolean v) -> T { return v.value ? 1 : 0; },
             [](Detail::Boolean v) -> T { return v.value ? 1 : 0; },
             [](ByteString const& v) {
             [](ByteString const& v) {
-                if constexpr (IsUnsigned<T>)
-                    return v.to_uint<T>().value_or(0u);
-                else
-                    return v.to_int<T>().value_or(0);
+                return v.to_number<T>().value_or(0);
             },
             },
             [](Enum auto const&) -> T { return 0; },
             [](Enum auto const&) -> T { return 0; },
             [](OneOf<Gfx::IntPoint, Gfx::IntRect, Gfx::IntSize, Color, NonnullRefPtr<Gfx::Font const>, NonnullRefPtr<Gfx::Bitmap const>, GUI::Icon> auto const&) -> T { return 0; });
             [](OneOf<Gfx::IntPoint, Gfx::IntRect, Gfx::IntSize, Color, NonnullRefPtr<Gfx::Font const>, NonnullRefPtr<Gfx::Bitmap const>, GUI::Icon> auto const&) -> T { return 0; });

+ 4 - 4
Userland/Libraries/LibGUI/Window.cpp

@@ -142,10 +142,10 @@ void Window::show()
         auto parts = StringView { launch_origin_rect_string, strlen(launch_origin_rect_string) }.split_view(',');
         auto parts = StringView { launch_origin_rect_string, strlen(launch_origin_rect_string) }.split_view(',');
         if (parts.size() == 4) {
         if (parts.size() == 4) {
             launch_origin_rect = Gfx::IntRect {
             launch_origin_rect = Gfx::IntRect {
-                parts[0].to_int().value_or(0),
-                parts[1].to_int().value_or(0),
-                parts[2].to_int().value_or(0),
-                parts[3].to_int().value_or(0),
+                parts[0].to_number<int>().value_or(0),
+                parts[1].to_number<int>().value_or(0),
+                parts[2].to_number<int>().value_or(0),
+                parts[3].to_number<int>().value_or(0),
             };
             };
         }
         }
         unsetenv("__libgui_launch_origin_rect");
         unsetenv("__libgui_launch_origin_rect");

+ 1 - 1
Userland/Libraries/LibGemini/Job.cpp

@@ -167,7 +167,7 @@ void Job::on_socket_connected()
             auto first_part = view.substring_view(0, space_index);
             auto first_part = view.substring_view(0, space_index);
             auto second_part = view.substring_view(space_index + 1);
             auto second_part = view.substring_view(space_index + 1);
 
 
-            auto status = first_part.to_uint();
+            auto status = first_part.to_number<unsigned>();
             if (!status.has_value()) {
             if (!status.has_value()) {
                 dbgln("Job: Expected numeric status code");
                 dbgln("Job: Expected numeric status code");
                 m_state = State::Failed;
                 m_state = State::Failed;

+ 6 - 6
Userland/Libraries/LibGfx/Color.cpp

@@ -49,9 +49,9 @@ static Optional<Color> parse_rgb_color(StringView string)
     if (parts.size() != 3)
     if (parts.size() != 3)
         return {};
         return {};
 
 
-    auto r = parts[0].to_double().map(AK::clamp_to<u8, double>);
-    auto g = parts[1].to_double().map(AK::clamp_to<u8, double>);
-    auto b = parts[2].to_double().map(AK::clamp_to<u8, double>);
+    auto r = parts[0].to_number<double>().map(AK::clamp_to<u8, double>);
+    auto g = parts[1].to_number<double>().map(AK::clamp_to<u8, double>);
+    auto b = parts[2].to_number<double>().map(AK::clamp_to<u8, double>);
 
 
     if (!r.has_value() || !g.has_value() || !b.has_value())
     if (!r.has_value() || !g.has_value() || !b.has_value())
         return {};
         return {};
@@ -70,9 +70,9 @@ static Optional<Color> parse_rgba_color(StringView string)
     if (parts.size() != 4)
     if (parts.size() != 4)
         return {};
         return {};
 
 
-    auto r = parts[0].to_double().map(AK::clamp_to<u8, double>);
-    auto g = parts[1].to_double().map(AK::clamp_to<u8, double>);
-    auto b = parts[2].to_double().map(AK::clamp_to<u8, double>);
+    auto r = parts[0].to_number<double>().map(AK::clamp_to<u8, double>);
+    auto g = parts[1].to_number<double>().map(AK::clamp_to<u8, double>);
+    auto b = parts[2].to_number<double>().map(AK::clamp_to<u8, double>);
 
 
     double alpha = 0;
     double alpha = 0;
     auto alpha_str = parts[3].trim_whitespace();
     auto alpha_str = parts[3].trim_whitespace();

+ 1 - 1
Userland/Libraries/LibGfx/CursorParams.cpp

@@ -37,7 +37,7 @@ CursorParams CursorParams::parse_from_filename(StringView cursor_path, Gfx::IntP
             }
             }
             if (k == i)
             if (k == i)
                 return {};
                 return {};
-            auto parsed_number = params_str.substring_view(i, k - i).to_uint();
+            auto parsed_number = params_str.substring_view(i, k - i).to_number<unsigned>();
             if (!parsed_number.has_value())
             if (!parsed_number.has_value())
                 return {};
                 return {};
             i = k;
             i = k;

+ 3 - 3
Userland/Libraries/LibGfx/Font/FontDatabase.cpp

@@ -180,9 +180,9 @@ RefPtr<Gfx::Font> FontDatabase::get_by_name(StringView name)
     if (it == m_private->full_name_to_font_map.end()) {
     if (it == m_private->full_name_to_font_map.end()) {
         auto parts = name.split_view(" "sv);
         auto parts = name.split_view(" "sv);
         if (parts.size() >= 4) {
         if (parts.size() >= 4) {
-            auto slope = parts.take_last().to_int().value_or(0);
-            auto weight = parts.take_last().to_int().value_or(0);
-            auto size = parts.take_last().to_int().value_or(0);
+            auto slope = parts.take_last().to_number<int>().value_or(0);
+            auto weight = parts.take_last().to_number<int>().value_or(0);
+            auto size = parts.take_last().to_number<int>().value_or(0);
             auto family = MUST(String::join(' ', parts));
             auto family = MUST(String::join(' ', parts));
             return get(family, size, weight, Gfx::FontWidth::Normal, slope);
             return get(family, size, weight, Gfx::FontWidth::Normal, slope);
         }
         }

+ 1 - 1
Userland/Libraries/LibHTTP/HttpRequest.cpp

@@ -183,7 +183,7 @@ ErrorOr<HttpRequest, HttpRequest::ParseError> HttpRequest::from_raw_request(Read
                 commit_and_advance_to(current_header.value, next_state);
                 commit_and_advance_to(current_header.value, next_state);
 
 
                 if (current_header.name.equals_ignoring_ascii_case("Content-Length"sv))
                 if (current_header.name.equals_ignoring_ascii_case("Content-Length"sv))
-                    content_length = current_header.value.to_uint();
+                    content_length = current_header.value.to_number<unsigned>();
 
 
                 headers.append(move(current_header));
                 headers.append(move(current_header));
                 break;
                 break;

+ 3 - 3
Userland/Libraries/LibHTTP/Job.cpp

@@ -263,7 +263,7 @@ void Job::on_socket_connected()
             auto http_minor_version = parse_ascii_digit(parts[0][7]);
             auto http_minor_version = parse_ascii_digit(parts[0][7]);
             m_legacy_connection = http_major_version < 1 || (http_major_version == 1 && http_minor_version == 0);
             m_legacy_connection = http_major_version < 1 || (http_major_version == 1 && http_minor_version == 0);
 
 
-            auto code = parts[1].to_uint();
+            auto code = parts[1].to_number<unsigned>();
             if (!code.has_value()) {
             if (!code.has_value()) {
                 dbgln("Job: Expected numeric HTTP status");
                 dbgln("Job: Expected numeric HTTP status");
                 return deferred_invoke([this] { did_fail(Core::NetworkJob::Error::ProtocolFailed); });
                 return deferred_invoke([this] { did_fail(Core::NetworkJob::Error::ProtocolFailed); });
@@ -312,7 +312,7 @@ void Job::on_socket_connected()
                 // We've reached the end of the headers, there's a possibility that the server
                 // We've reached the end of the headers, there's a possibility that the server
                 // responds with nothing (content-length = 0 with normal encoding); if that's the case,
                 // responds with nothing (content-length = 0 with normal encoding); if that's the case,
                 // quit early as we won't be reading anything anyway.
                 // quit early as we won't be reading anything anyway.
-                if (auto result = m_headers.get("Content-Length"sv).value_or(""sv).to_uint(); result.has_value()) {
+                if (auto result = m_headers.get("Content-Length"sv).value_or(""sv).to_number<unsigned>(); result.has_value()) {
                     if (result.value() == 0 && !m_headers.get("Transfer-Encoding"sv).value_or(""sv).view().trim_whitespace().equals_ignoring_ascii_case("chunked"sv))
                     if (result.value() == 0 && !m_headers.get("Transfer-Encoding"sv).value_or(""sv).view().trim_whitespace().equals_ignoring_ascii_case("chunked"sv))
                         return finish_up();
                         return finish_up();
                 }
                 }
@@ -370,7 +370,7 @@ void Job::on_socket_connected()
                 dbgln_if(JOB_DEBUG, "Content-Encoding {} detected, cannot stream output :(", value);
                 dbgln_if(JOB_DEBUG, "Content-Encoding {} detected, cannot stream output :(", value);
                 m_can_stream_response = false;
                 m_can_stream_response = false;
             } else if (name.equals_ignoring_ascii_case("Content-Length"sv)) {
             } else if (name.equals_ignoring_ascii_case("Content-Length"sv)) {
-                auto length = value.to_uint<u64>();
+                auto length = value.to_number<u64>();
                 if (length.has_value())
                 if (length.has_value())
                     m_content_length = length.value();
                     m_content_length = length.value();
             }
             }

+ 2 - 2
Userland/Libraries/LibIMAP/Parser.cpp

@@ -123,8 +123,8 @@ Optional<unsigned> Parser::try_parse_number()
 
 
     auto number = StringView(m_buffer.data() + m_position - number_matched, number_matched);
     auto number = StringView(m_buffer.data() + m_position - number_matched, number_matched);
 
 
-    dbgln_if(IMAP_PARSER_DEBUG, "p: {}, ret \"{}\"", m_position, number.to_uint());
-    return number.to_uint();
+    dbgln_if(IMAP_PARSER_DEBUG, "p: {}, ret \"{}\"", m_position, number.to_number<unsigned>());
+    return number.to_number<unsigned>();
 }
 }
 
 
 ErrorOr<unsigned> Parser::parse_number()
 ErrorOr<unsigned> Parser::parse_number()

+ 1 - 1
Userland/Libraries/LibJS/Runtime/AbstractOperations.cpp

@@ -1199,7 +1199,7 @@ CanonicalIndex canonical_numeric_index_string(PropertyKey const& property_key, C
         return CanonicalIndex(CanonicalIndex::Type::Undefined, 0);
         return CanonicalIndex(CanonicalIndex::Type::Undefined, 0);
 
 
     // 2. Let n be ! ToNumber(argument).
     // 2. Let n be ! ToNumber(argument).
-    auto maybe_double = argument.to_double(AK::TrimWhitespace::No);
+    auto maybe_double = argument.to_number<double>(AK::TrimWhitespace::No);
     if (!maybe_double.has_value())
     if (!maybe_double.has_value())
         return CanonicalIndex(CanonicalIndex::Type::Undefined, 0);
         return CanonicalIndex(CanonicalIndex::Type::Undefined, 0);
 
 

+ 1 - 1
Userland/Libraries/LibJS/Runtime/Date.cpp

@@ -377,7 +377,7 @@ static i64 clip_bigint_to_sane_time(Crypto::SignedBigInteger const& value)
         return NumericLimits<i64>::max();
         return NumericLimits<i64>::max();
 
 
     // FIXME: Can we do this without string conversion?
     // FIXME: Can we do this without string conversion?
-    return value.to_base_deprecated(10).to_int<i64>().value();
+    return value.to_base_deprecated(10).to_number<i64>().value();
 }
 }
 
 
 // 21.4.1.20 GetNamedTimeZoneEpochNanoseconds ( timeZoneIdentifier, year, month, day, hour, minute, second, millisecond, microsecond, nanosecond ), https://tc39.es/ecma262/#sec-getnamedtimezoneepochnanoseconds
 // 21.4.1.20 GetNamedTimeZoneEpochNanoseconds ( timeZoneIdentifier, year, month, day, hour, minute, second, millisecond, microsecond, nanosecond ), https://tc39.es/ecma262/#sec-getnamedtimezoneepochnanoseconds

+ 4 - 4
Userland/Libraries/LibJS/Runtime/Intl/NumberFormat.cpp

@@ -647,7 +647,7 @@ Vector<PatternPartition> partition_number_pattern(VM& vm, NumberFormat& number_f
         else if ((part.starts_with("unitIdentifier:"sv)) && (number_format.style() == NumberFormat::Style::Unit)) {
         else if ((part.starts_with("unitIdentifier:"sv)) && (number_format.style() == NumberFormat::Style::Unit)) {
             // Note: Our implementation combines "unitPrefix" and "unitSuffix" into one field, "unitIdentifier".
             // Note: Our implementation combines "unitPrefix" and "unitSuffix" into one field, "unitIdentifier".
 
 
-            auto identifier_index = part.substring_view("unitIdentifier:"sv.length()).to_uint();
+            auto identifier_index = part.substring_view("unitIdentifier:"sv.length()).to_number<unsigned>();
             VERIFY(identifier_index.has_value());
             VERIFY(identifier_index.has_value());
 
 
             // i. Let unit be numberFormat.[[Unit]].
             // i. Let unit be numberFormat.[[Unit]].
@@ -862,7 +862,7 @@ Vector<PatternPartition> partition_notation_sub_pattern(NumberFormat& number_for
             else if (part.starts_with("compactIdentifier:"sv)) {
             else if (part.starts_with("compactIdentifier:"sv)) {
                 // Note: Our implementation combines "compactSymbol" and "compactName" into one field, "compactIdentifier".
                 // Note: Our implementation combines "compactSymbol" and "compactName" into one field, "compactIdentifier".
 
 
-                auto identifier_index = part.substring_view("compactIdentifier:"sv.length()).to_uint();
+                auto identifier_index = part.substring_view("compactIdentifier:"sv.length()).to_number<unsigned>();
                 VERIFY(identifier_index.has_value());
                 VERIFY(identifier_index.has_value());
 
 
                 // 1. Let compactSymbol be an ILD string representing exponent in short form, which may depend on x in languages having different plural forms. The implementation must be able to provide this string, or else the pattern would not have a "{compactSymbol}" placeholder.
                 // 1. Let compactSymbol be an ILD string representing exponent in short form, which may depend on x in languages having different plural forms. The implementation must be able to provide this string, or else the pattern would not have a "{compactSymbol}" placeholder.
@@ -1034,7 +1034,7 @@ static RawPrecisionResult to_raw_precision_function(MathematicalValue const& num
 
 
         result.number = result.number.divided_by(10);
         result.number = result.number.divided_by(10);
 
 
-        if (mode == PreferredResult::GreaterThanNumber && digit.to_uint().value() != 0)
+        if (mode == PreferredResult::GreaterThanNumber && digit.to_number<unsigned>().value() != 0)
             result.number = result.number.plus(1);
             result.number = result.number.plus(1);
     }
     }
 
 
@@ -1183,7 +1183,7 @@ static RawFixedResult to_raw_fixed_function(MathematicalValue const& number, int
 
 
         result.number = result.number.multiplied_by(10);
         result.number = result.number.multiplied_by(10);
 
 
-        if (mode == PreferredResult::GreaterThanNumber && digit.to_uint().value() != 0)
+        if (mode == PreferredResult::GreaterThanNumber && digit.to_number<unsigned>().value() != 0)
             result.number = result.number.plus(1);
             result.number = result.number.plus(1);
     }
     }
 
 

+ 4 - 4
Userland/Libraries/LibJS/Runtime/Intl/PluralRules.cpp

@@ -23,7 +23,7 @@ PluralRules::PluralRules(Object& prototype)
 ::Locale::PluralOperands get_operands(StringView string)
 ::Locale::PluralOperands get_operands(StringView string)
 {
 {
     // 1.Let n be ! ToNumber(s).
     // 1.Let n be ! ToNumber(s).
-    auto number = string.to_double(AK::TrimWhitespace::Yes).release_value();
+    auto number = string.to_number<double>(AK::TrimWhitespace::Yes).release_value();
 
 
     // 2. Assert: n is finite.
     // 2. Assert: n is finite.
     VERIFY(isfinite(number));
     VERIFY(isfinite(number));
@@ -57,7 +57,7 @@ PluralRules::PluralRules(Object& prototype)
             return static_cast<u64>(fabs(value));
             return static_cast<u64>(fabs(value));
         },
         },
         [](StringView value) {
         [](StringView value) {
-            auto value_as_int = value.template to_int<i64>().value();
+            auto value_as_int = value.template to_number<i64>().value();
             return static_cast<u64>(value_as_int);
             return static_cast<u64>(value_as_int);
         });
         });
 
 
@@ -65,7 +65,7 @@ PluralRules::PluralRules(Object& prototype)
     auto fraction_digit_count = fraction_slice.length();
     auto fraction_digit_count = fraction_slice.length();
 
 
     // 8. Let f be ! ToNumber(fracSlice).
     // 8. Let f be ! ToNumber(fracSlice).
-    auto fraction = fraction_slice.is_empty() ? 0u : fraction_slice.template to_uint<u64>().value();
+    auto fraction = fraction_slice.is_empty() ? 0u : fraction_slice.template to_number<u64>().value();
 
 
     // 9. Let significantFracSlice be the value of fracSlice stripped of trailing "0".
     // 9. Let significantFracSlice be the value of fracSlice stripped of trailing "0".
     auto significant_fraction_slice = fraction_slice.trim("0"sv, TrimMode::Right);
     auto significant_fraction_slice = fraction_slice.trim("0"sv, TrimMode::Right);
@@ -74,7 +74,7 @@ PluralRules::PluralRules(Object& prototype)
     auto significant_fraction_digit_count = significant_fraction_slice.length();
     auto significant_fraction_digit_count = significant_fraction_slice.length();
 
 
     // 11. Let significantFrac be ! ToNumber(significantFracSlice).
     // 11. Let significantFrac be ! ToNumber(significantFracSlice).
-    auto significant_fraction = significant_fraction_slice.is_empty() ? 0u : significant_fraction_slice.template to_uint<u64>().value();
+    auto significant_fraction = significant_fraction_slice.is_empty() ? 0u : significant_fraction_slice.template to_number<u64>().value();
 
 
     // 12. Return a new Record { [[Number]]: abs(n), [[IntegerDigits]]: i, [[FractionDigits]]: f, [[NumberOfFractionDigits]]: fracDigitCount, [[FractionDigitsWithoutTrailing]]: significantFrac, [[NumberOfFractionDigitsWithoutTrailing]]: significantFracDigitCount }.
     // 12. Return a new Record { [[Number]]: abs(n), [[IntegerDigits]]: i, [[FractionDigits]]: f, [[NumberOfFractionDigits]]: fracDigitCount, [[FractionDigitsWithoutTrailing]]: significantFrac, [[NumberOfFractionDigitsWithoutTrailing]]: significantFracDigitCount }.
     return ::Locale::PluralOperands {
     return ::Locale::PluralOperands {

+ 1 - 1
Userland/Libraries/LibJS/Runtime/PropertyKey.h

@@ -136,7 +136,7 @@ public:
             return false;
             return false;
         }
         }
 
 
-        auto property_index = m_string.to_uint(TrimWhitespace::No);
+        auto property_index = m_string.to_number<unsigned>(TrimWhitespace::No);
         if (!property_index.has_value() || property_index.value() == NumericLimits<u32>::max()) {
         if (!property_index.has_value() || property_index.value() == NumericLimits<u32>::max()) {
             m_string_may_be_number = false;
             m_string_may_be_number = false;
             return false;
             return false;

+ 15 - 15
Userland/Libraries/LibJS/Runtime/Temporal/AbstractOperations.cpp

@@ -1276,22 +1276,22 @@ ThrowCompletionOr<ISODateTime> parse_iso_date_time(VM& vm, ParseResult const& pa
     //    a. Let monthMV be 1.
     //    a. Let monthMV be 1.
     // 9. Else,
     // 9. Else,
     //    a. Let monthMV be ! ToIntegerOrInfinity(CodePointsToString(month)).
     //    a. Let monthMV be ! ToIntegerOrInfinity(CodePointsToString(month)).
-    auto month_mv = *month.value_or("1"sv).to_uint<u8>();
+    auto month_mv = *month.value_or("1"sv).to_number<u8>();
 
 
     // 10. If day is empty, then
     // 10. If day is empty, then
     //    a. Let dayMV be 1.
     //    a. Let dayMV be 1.
     // 11. Else,
     // 11. Else,
     //    a. Let dayMV be ! ToIntegerOrInfinity(CodePointsToString(day)).
     //    a. Let dayMV be ! ToIntegerOrInfinity(CodePointsToString(day)).
-    auto day_mv = *day.value_or("1"sv).to_uint<u8>();
+    auto day_mv = *day.value_or("1"sv).to_number<u8>();
 
 
     // 12. Let hourMV be ! ToIntegerOrInfinity(CodePointsToString(hour)).
     // 12. Let hourMV be ! ToIntegerOrInfinity(CodePointsToString(hour)).
-    auto hour_mv = *hour.value_or("0"sv).to_uint<u8>();
+    auto hour_mv = *hour.value_or("0"sv).to_number<u8>();
 
 
     // 13. Let minuteMV be ! ToIntegerOrInfinity(CodePointsToString(minute)).
     // 13. Let minuteMV be ! ToIntegerOrInfinity(CodePointsToString(minute)).
-    auto minute_mv = *minute.value_or("0"sv).to_uint<u8>();
+    auto minute_mv = *minute.value_or("0"sv).to_number<u8>();
 
 
     // 14. Let secondMV be ! ToIntegerOrInfinity(CodePointsToString(second)).
     // 14. Let secondMV be ! ToIntegerOrInfinity(CodePointsToString(second)).
-    auto second_mv = *second.value_or("0"sv).to_uint<u8>();
+    auto second_mv = *second.value_or("0"sv).to_number<u8>();
 
 
     // 15. If secondMV is 60, then
     // 15. If secondMV is 60, then
     if (second_mv == 60) {
     if (second_mv == 60) {
@@ -1532,19 +1532,19 @@ ThrowCompletionOr<DurationRecord> parse_temporal_duration_string(VM& vm, StringV
     auto f_seconds_part = parse_result->duration_seconds_fraction;
     auto f_seconds_part = parse_result->duration_seconds_fraction;
 
 
     // 4. Let yearsMV be ! ToIntegerOrInfinity(CodePointsToString(years)).
     // 4. Let yearsMV be ! ToIntegerOrInfinity(CodePointsToString(years)).
-    auto years = years_part.value_or("0"sv).to_double().release_value();
+    auto years = years_part.value_or("0"sv).to_number<double>().release_value();
 
 
     // 5. Let monthsMV be ! ToIntegerOrInfinity(CodePointsToString(months)).
     // 5. Let monthsMV be ! ToIntegerOrInfinity(CodePointsToString(months)).
-    auto months = months_part.value_or("0"sv).to_double().release_value();
+    auto months = months_part.value_or("0"sv).to_number<double>().release_value();
 
 
     // 6. Let weeksMV be ! ToIntegerOrInfinity(CodePointsToString(weeks)).
     // 6. Let weeksMV be ! ToIntegerOrInfinity(CodePointsToString(weeks)).
-    auto weeks = weeks_part.value_or("0"sv).to_double().release_value();
+    auto weeks = weeks_part.value_or("0"sv).to_number<double>().release_value();
 
 
     // 7. Let daysMV be ! ToIntegerOrInfinity(CodePointsToString(days)).
     // 7. Let daysMV be ! ToIntegerOrInfinity(CodePointsToString(days)).
-    auto days = days_part.value_or("0"sv).to_double().release_value();
+    auto days = days_part.value_or("0"sv).to_number<double>().release_value();
 
 
     // 8. Let hoursMV be ! ToIntegerOrInfinity(CodePointsToString(hours)).
     // 8. Let hoursMV be ! ToIntegerOrInfinity(CodePointsToString(hours)).
-    auto hours = hours_part.value_or("0"sv).to_double().release_value();
+    auto hours = hours_part.value_or("0"sv).to_number<double>().release_value();
 
 
     double minutes;
     double minutes;
 
 
@@ -1561,12 +1561,12 @@ ThrowCompletionOr<DurationRecord> parse_temporal_duration_string(VM& vm, StringV
         auto f_hours_scale = (double)f_hours_digits.length();
         auto f_hours_scale = (double)f_hours_digits.length();
 
 
         // d. Let minutesMV be ! ToIntegerOrInfinity(fHoursDigits) / 10^fHoursScale × 60.
         // d. Let minutesMV be ! ToIntegerOrInfinity(fHoursDigits) / 10^fHoursScale × 60.
-        minutes = f_hours_digits.to_double().release_value() / pow(10., f_hours_scale) * 60;
+        minutes = f_hours_digits.to_number<double>().release_value() / pow(10., f_hours_scale) * 60;
     }
     }
     // 10. Else,
     // 10. Else,
     else {
     else {
         // a. Let minutesMV be ! ToIntegerOrInfinity(CodePointsToString(minutes)).
         // a. Let minutesMV be ! ToIntegerOrInfinity(CodePointsToString(minutes)).
-        minutes = minutes_part.value_or("0"sv).to_double().release_value();
+        minutes = minutes_part.value_or("0"sv).to_number<double>().release_value();
     }
     }
 
 
     double seconds;
     double seconds;
@@ -1584,12 +1584,12 @@ ThrowCompletionOr<DurationRecord> parse_temporal_duration_string(VM& vm, StringV
         auto f_minutes_scale = (double)f_minutes_digits.length();
         auto f_minutes_scale = (double)f_minutes_digits.length();
 
 
         // d. Let secondsMV be ! ToIntegerOrInfinity(fMinutesDigits) / 10^fMinutesScale × 60.
         // d. Let secondsMV be ! ToIntegerOrInfinity(fMinutesDigits) / 10^fMinutesScale × 60.
-        seconds = f_minutes_digits.to_double().release_value() / pow(10, f_minutes_scale) * 60;
+        seconds = f_minutes_digits.to_number<double>().release_value() / pow(10, f_minutes_scale) * 60;
     }
     }
     // 12. Else if seconds is not empty, then
     // 12. Else if seconds is not empty, then
     else if (seconds_part.has_value()) {
     else if (seconds_part.has_value()) {
         // a. Let secondsMV be ! ToIntegerOrInfinity(CodePointsToString(seconds)).
         // a. Let secondsMV be ! ToIntegerOrInfinity(CodePointsToString(seconds)).
-        seconds = seconds_part.value_or("0"sv).to_double().release_value();
+        seconds = seconds_part.value_or("0"sv).to_number<double>().release_value();
     }
     }
     // 13. Else,
     // 13. Else,
     else {
     else {
@@ -1608,7 +1608,7 @@ ThrowCompletionOr<DurationRecord> parse_temporal_duration_string(VM& vm, StringV
         auto f_seconds_scale = (double)f_seconds_digits.length();
         auto f_seconds_scale = (double)f_seconds_digits.length();
 
 
         // c. Let millisecondsMV be ! ToIntegerOrInfinity(fSecondsDigits) / 10^fSecondsScale × 1000.
         // c. Let millisecondsMV be ! ToIntegerOrInfinity(fSecondsDigits) / 10^fSecondsScale × 1000.
-        milliseconds = f_seconds_digits.to_double().release_value() / pow(10, f_seconds_scale) * 1000;
+        milliseconds = f_seconds_digits.to_number<double>().release_value() / pow(10, f_seconds_scale) * 1000;
     }
     }
     // 15. Else,
     // 15. Else,
     else {
     else {

+ 2 - 2
Userland/Libraries/LibJS/Runtime/Temporal/InstantPrototype.cpp

@@ -69,7 +69,7 @@ JS_DEFINE_NATIVE_FUNCTION(InstantPrototype::epoch_seconds_getter)
     auto [s, _] = ns.big_integer().divided_by(Crypto::UnsignedBigInteger { 1'000'000'000 });
     auto [s, _] = ns.big_integer().divided_by(Crypto::UnsignedBigInteger { 1'000'000'000 });
 
 
     // 5. Return 𝔽(s).
     // 5. Return 𝔽(s).
-    return Value((double)s.to_base_deprecated(10).to_int<i64>().value());
+    return Value((double)s.to_base_deprecated(10).to_number<i64>().value());
 }
 }
 
 
 // 8.3.4 get Temporal.Instant.prototype.epochMilliseconds, https://tc39.es/proposal-temporal/#sec-get-temporal.instant.prototype.epochmilliseconds
 // 8.3.4 get Temporal.Instant.prototype.epochMilliseconds, https://tc39.es/proposal-temporal/#sec-get-temporal.instant.prototype.epochmilliseconds
@@ -86,7 +86,7 @@ JS_DEFINE_NATIVE_FUNCTION(InstantPrototype::epoch_milliseconds_getter)
     auto [ms, _] = ns.big_integer().divided_by(Crypto::UnsignedBigInteger { 1'000'000 });
     auto [ms, _] = ns.big_integer().divided_by(Crypto::UnsignedBigInteger { 1'000'000 });
 
 
     // 5. Return 𝔽(ms).
     // 5. Return 𝔽(ms).
-    return Value((double)ms.to_base_deprecated(10).to_int<i64>().value());
+    return Value((double)ms.to_base_deprecated(10).to_number<i64>().value());
 }
 }
 
 
 // 8.3.5 get Temporal.Instant.prototype.epochMicroseconds, https://tc39.es/proposal-temporal/#sec-get-temporal.instant.prototype.epochmicroseconds
 // 8.3.5 get Temporal.Instant.prototype.epochMicroseconds, https://tc39.es/proposal-temporal/#sec-get-temporal.instant.prototype.epochmicroseconds

+ 2 - 2
Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTimePrototype.cpp

@@ -360,7 +360,7 @@ JS_DEFINE_NATIVE_FUNCTION(ZonedDateTimePrototype::epoch_seconds_getter)
     auto s = ns.big_integer().divided_by(Crypto::UnsignedBigInteger { 1'000'000'000 }).quotient;
     auto s = ns.big_integer().divided_by(Crypto::UnsignedBigInteger { 1'000'000'000 }).quotient;
 
 
     // 5. Return 𝔽(s).
     // 5. Return 𝔽(s).
-    return Value((double)s.to_base_deprecated(10).to_int<i64>().value());
+    return Value((double)s.to_base_deprecated(10).to_number<i64>().value());
 }
 }
 
 
 // 6.3.16 get Temporal.ZonedDateTime.prototype.epochMilliseconds, https://tc39.es/proposal-temporal/#sec-get-temporal.zoneddatetime.prototype.epochmilliseconds
 // 6.3.16 get Temporal.ZonedDateTime.prototype.epochMilliseconds, https://tc39.es/proposal-temporal/#sec-get-temporal.zoneddatetime.prototype.epochmilliseconds
@@ -377,7 +377,7 @@ JS_DEFINE_NATIVE_FUNCTION(ZonedDateTimePrototype::epoch_milliseconds_getter)
     auto ms = ns.big_integer().divided_by(Crypto::UnsignedBigInteger { 1'000'000 }).quotient;
     auto ms = ns.big_integer().divided_by(Crypto::UnsignedBigInteger { 1'000'000 }).quotient;
 
 
     // 5. Return 𝔽(ms).
     // 5. Return 𝔽(ms).
-    return Value((double)ms.to_base_deprecated(10).to_int<i64>().value());
+    return Value((double)ms.to_base_deprecated(10).to_number<i64>().value());
 }
 }
 
 
 // 6.3.17 get Temporal.ZonedDateTime.prototype.epochMicroseconds, https://tc39.es/proposal-temporal/#sec-get-temporal.zoneddatetime.prototype.epochmicroseconds
 // 6.3.17 get Temporal.ZonedDateTime.prototype.epochMicroseconds, https://tc39.es/proposal-temporal/#sec-get-temporal.zoneddatetime.prototype.epochmicroseconds

+ 1 - 1
Userland/Libraries/LibJS/Runtime/Value.cpp

@@ -677,7 +677,7 @@ double string_to_number(StringView string)
         return bigint.to_double();
         return bigint.to_double();
     }
     }
 
 
-    auto maybe_double = text.to_double(AK::TrimWhitespace::No);
+    auto maybe_double = text.to_number<double>(AK::TrimWhitespace::No);
     if (!maybe_double.has_value())
     if (!maybe_double.has_value())
         return NAN;
         return NAN;
 
 

+ 1 - 1
Userland/Libraries/LibJS/Token.cpp

@@ -82,7 +82,7 @@ double Token::double_value() const
         }
         }
     }
     }
     // This should always be a valid double
     // This should always be a valid double
-    return value_string.to_double().release_value();
+    return value_string.to_number<double>().release_value();
 }
 }
 
 
 static u32 hex2int(char x)
 static u32 hex2int(char x)

+ 4 - 4
Userland/Libraries/LibLine/Editor.cpp

@@ -263,7 +263,7 @@ ErrorOr<Vector<Editor::HistoryEntry>> Editor::try_load_history(StringView path)
     Vector<HistoryEntry> history;
     Vector<HistoryEntry> history;
     for (auto& str : hist.split_view("\n\n"sv)) {
     for (auto& str : hist.split_view("\n\n"sv)) {
         auto it = str.find("::"sv).value_or(0);
         auto it = str.find("::"sv).value_or(0);
-        auto time = str.substring_view(0, it).to_int<time_t>().value_or(0);
+        auto time = str.substring_view(0, it).to_number<time_t>().value_or(0);
         auto string = str.substring_view(it == 0 ? it : it + 2);
         auto string = str.substring_view(it == 0 ? it : it + 2);
         history.append({ string, time });
         history.append({ string, time });
     }
     }
@@ -945,7 +945,7 @@ ErrorOr<void> Editor::handle_read_event()
             m_state = m_previous_free_state;
             m_state = m_previous_free_state;
             auto is_in_paste = m_state == InputState::Paste;
             auto is_in_paste = m_state == InputState::Paste;
             for (auto& parameter : ByteString::copy(csi_parameter_bytes).split(';')) {
             for (auto& parameter : ByteString::copy(csi_parameter_bytes).split(';')) {
-                if (auto value = parameter.to_uint(); value.has_value())
+                if (auto value = parameter.to_number<unsigned>(); value.has_value())
                     csi_parameters.append(value.value());
                     csi_parameters.append(value.value());
                 else
                 else
                     csi_parameters.append(0);
                     csi_parameters.append(0);
@@ -2140,7 +2140,7 @@ Result<Vector<size_t, 2>, Editor::Error> Editor::vt_dsr()
                 continue;
                 continue;
             }
             }
             if (c == ';') {
             if (c == ';') {
-                auto maybe_row = StringView { coordinate_buffer.data(), coordinate_buffer.size() }.to_uint();
+                auto maybe_row = StringView { coordinate_buffer.data(), coordinate_buffer.size() }.to_number<unsigned>();
                 if (!maybe_row.has_value())
                 if (!maybe_row.has_value())
                     has_error = true;
                     has_error = true;
                 row = maybe_row.value_or(1u);
                 row = maybe_row.value_or(1u);
@@ -2166,7 +2166,7 @@ Result<Vector<size_t, 2>, Editor::Error> Editor::vt_dsr()
                 continue;
                 continue;
             }
             }
             if (c == 'R') {
             if (c == 'R') {
-                auto maybe_column = StringView { coordinate_buffer.data(), coordinate_buffer.size() }.to_uint();
+                auto maybe_column = StringView { coordinate_buffer.data(), coordinate_buffer.size() }.to_number<unsigned>();
                 if (!maybe_column.has_value())
                 if (!maybe_column.has_value())
                     has_error = true;
                     has_error = true;
                 col = maybe_column.value_or(1u);
                 col = maybe_column.value_or(1u);

+ 1 - 1
Userland/Libraries/LibManual/Node.cpp

@@ -88,7 +88,7 @@ ErrorOr<NonnullRefPtr<Node const>> Node::try_find_from_help_url(URL const& url)
         return Error::from_string_view("Bad help page URL"sv);
         return Error::from_string_view("Bad help page URL"sv);
 
 
     auto const section = url.path_segment_at_index(0);
     auto const section = url.path_segment_at_index(0);
-    auto maybe_section_number = section.to_uint();
+    auto maybe_section_number = section.to_number<unsigned>();
     if (!maybe_section_number.has_value())
     if (!maybe_section_number.has_value())
         return Error::from_string_view("Bad section number"sv);
         return Error::from_string_view("Bad section number"sv);
     auto section_number = maybe_section_number.value();
     auto section_number = maybe_section_number.value();

+ 1 - 1
Userland/Libraries/LibManual/SectionNode.cpp

@@ -18,7 +18,7 @@ namespace Manual {
 
 
 ErrorOr<NonnullRefPtr<SectionNode>> SectionNode::try_create_from_number(StringView section)
 ErrorOr<NonnullRefPtr<SectionNode>> SectionNode::try_create_from_number(StringView section)
 {
 {
-    auto maybe_section_number = section.to_uint<u32>();
+    auto maybe_section_number = section.to_number<u32>();
     if (!maybe_section_number.has_value())
     if (!maybe_section_number.has_value())
         return Error::from_string_literal("Section is not a number");
         return Error::from_string_literal("Section is not a number");
     auto section_number = maybe_section_number.release_value();
     auto section_number = maybe_section_number.release_value();

+ 1 - 1
Userland/Libraries/LibMarkdown/List.cpp

@@ -121,7 +121,7 @@ OwnPtr<List> List::parse(LineIterator& lines)
                 continue;
                 continue;
             if (ch == '.' || ch == ')')
             if (ch == '.' || ch == ')')
                 if (i + 1 < line.length() && line[i + 1] == ' ') {
                 if (i + 1 < line.length() && line[i + 1] == ' ') {
-                    auto maybe_start_number = line.substring_view(offset, i - offset).to_uint<size_t>();
+                    auto maybe_start_number = line.substring_view(offset, i - offset).to_number<size_t>();
                     if (!maybe_start_number.has_value())
                     if (!maybe_start_number.has_value())
                         break;
                         break;
                     if (first)
                     if (first)

+ 2 - 2
Userland/Libraries/LibMarkdown/Text.cpp

@@ -643,7 +643,7 @@ NonnullOwnPtr<Text::Node> Text::parse_link(Vector<Token>::ConstIterator& tokens)
 
 
         auto width_string = dimensions.substring_view(1, *dimension_seperator - 1);
         auto width_string = dimensions.substring_view(1, *dimension_seperator - 1);
         if (!width_string.is_empty()) {
         if (!width_string.is_empty()) {
-            auto width = width_string.to_int();
+            auto width = width_string.to_number<int>();
             if (!width.has_value())
             if (!width.has_value())
                 return false;
                 return false;
             image_width = width;
             image_width = width;
@@ -652,7 +652,7 @@ NonnullOwnPtr<Text::Node> Text::parse_link(Vector<Token>::ConstIterator& tokens)
         auto height_start = *dimension_seperator + 1;
         auto height_start = *dimension_seperator + 1;
         if (height_start < dimensions.length()) {
         if (height_start < dimensions.length()) {
             auto height_string = dimensions.substring_view(height_start);
             auto height_string = dimensions.substring_view(height_start);
-            auto height = height_string.to_int();
+            auto height = height_string.to_number<int>();
             if (!height.has_value())
             if (!height.has_value())
                 return false;
                 return false;
             image_height = height;
             image_height = height;

+ 2 - 2
Userland/Libraries/LibPDF/Fonts/PS1FontProgram.cpp

@@ -127,7 +127,7 @@ PDFErrorOr<Vector<ByteBuffer>> PS1FontProgram::parse_subroutines(Reader& reader)
                 return error("Array index out of bounds");
                 return error("Array index out of bounds");
 
 
             if (isdigit(entry[0])) {
             if (isdigit(entry[0])) {
-                auto maybe_encrypted_size = entry.to_int();
+                auto maybe_encrypted_size = entry.to_number<int>();
                 if (!maybe_encrypted_size.has_value())
                 if (!maybe_encrypted_size.has_value())
                     return error("Malformed array");
                     return error("Malformed array");
                 auto rd = TRY(parse_word(reader));
                 auto rd = TRY(parse_word(reader));
@@ -191,7 +191,7 @@ PDFErrorOr<float> PS1FontProgram::parse_float(Reader& reader)
 
 
 PDFErrorOr<int> PS1FontProgram::parse_int(Reader& reader)
 PDFErrorOr<int> PS1FontProgram::parse_int(Reader& reader)
 {
 {
-    auto maybe_int = TRY(parse_word(reader)).to_int();
+    auto maybe_int = TRY(parse_word(reader)).to_number<int>();
     if (!maybe_int.has_value())
     if (!maybe_int.has_value())
         return error("Invalid int");
         return error("Invalid int");
     return maybe_int.value();
     return maybe_int.value();

+ 1 - 1
Userland/Libraries/LibRegex/RegexMatcher.h

@@ -135,7 +135,7 @@ public:
                         continue;
                         continue;
                     }
                     }
                     auto number = lexer.consume_while(isdigit);
                     auto number = lexer.consume_while(isdigit);
-                    if (auto index = number.to_uint(); index.has_value() && result.n_capture_groups >= index.value()) {
+                    if (auto index = number.to_number<unsigned>(); index.has_value() && result.n_capture_groups >= index.value()) {
                         builder.append(result.capture_group_matches[i][index.value() - 1].view.to_byte_string());
                         builder.append(result.capture_group_matches[i][index.value() - 1].view.to_byte_string());
                     } else {
                     } else {
                         builder.appendff("\\{}", number);
                         builder.appendff("\\{}", number);

+ 8 - 8
Userland/Libraries/LibRegex/RegexParser.cpp

@@ -415,7 +415,7 @@ bool PosixBasicParser::parse_simple_re(ByteCode& bytecode, size_t& match_length_
             size_t value = 0;
             size_t value = 0;
             while (match(TokenType::Char)) {
             while (match(TokenType::Char)) {
                 auto c = m_parser_state.current_token.value().substring_view(0, 1);
                 auto c = m_parser_state.current_token.value().substring_view(0, 1);
-                auto c_value = c.to_uint();
+                auto c_value = c.to_number<unsigned>();
                 if (!c_value.has_value())
                 if (!c_value.has_value())
                     break;
                     break;
                 value *= 10;
                 value *= 10;
@@ -615,7 +615,7 @@ ALWAYS_INLINE bool PosixExtendedParser::parse_repetition_symbol(ByteCode& byteco
             number_builder.append(consume().value());
             number_builder.append(consume().value());
         }
         }
 
 
-        auto maybe_minimum = number_builder.to_byte_string().to_uint();
+        auto maybe_minimum = number_builder.to_byte_string().to_number<unsigned>();
         if (!maybe_minimum.has_value())
         if (!maybe_minimum.has_value())
             return set_error(Error::InvalidBraceContent);
             return set_error(Error::InvalidBraceContent);
 
 
@@ -644,7 +644,7 @@ ALWAYS_INLINE bool PosixExtendedParser::parse_repetition_symbol(ByteCode& byteco
             number_builder.append(consume().value());
             number_builder.append(consume().value());
         }
         }
         if (!number_builder.is_empty()) {
         if (!number_builder.is_empty()) {
-            auto value = number_builder.to_byte_string().to_uint();
+            auto value = number_builder.to_byte_string().to_number<unsigned>();
             if (!value.has_value() || minimum > value.value() || *value > s_maximum_repetition_count)
             if (!value.has_value() || minimum > value.value() || *value > s_maximum_repetition_count)
                 return set_error(Error::InvalidBraceContent);
                 return set_error(Error::InvalidBraceContent);
 
 
@@ -1206,7 +1206,7 @@ StringView ECMA262Parser::read_digits_as_string(ReadDigitsInitialZeroState initi
 
 
         if (hex && !AK::StringUtils::convert_to_uint_from_hex(c).has_value())
         if (hex && !AK::StringUtils::convert_to_uint_from_hex(c).has_value())
             break;
             break;
-        if (!hex && !c.to_uint().has_value())
+        if (!hex && !c.to_number<unsigned>().has_value())
             break;
             break;
 
 
         offset += consume().value().length();
         offset += consume().value().length();
@@ -1226,7 +1226,7 @@ Optional<unsigned> ECMA262Parser::read_digits(ECMA262Parser::ReadDigitsInitialZe
         return {};
         return {};
     if (hex)
     if (hex)
         return AK::StringUtils::convert_to_uint_from_hex(str);
         return AK::StringUtils::convert_to_uint_from_hex(str);
-    return str.to_uint();
+    return str.to_number<unsigned>();
 }
 }
 
 
 bool ECMA262Parser::parse_quantifier(ByteCode& stack, size_t& match_length_minimum, ParseFlags flags)
 bool ECMA262Parser::parse_quantifier(ByteCode& stack, size_t& match_length_minimum, ParseFlags flags)
@@ -1304,7 +1304,7 @@ bool ECMA262Parser::parse_interval_quantifier(Optional<u64>& repeat_min, Optiona
     auto low_bound_string = read_digits_as_string();
     auto low_bound_string = read_digits_as_string();
     chars_consumed += low_bound_string.length();
     chars_consumed += low_bound_string.length();
 
 
-    auto low_bound = low_bound_string.to_uint<u64>();
+    auto low_bound = low_bound_string.to_number<u64>();
 
 
     if (!low_bound.has_value()) {
     if (!low_bound.has_value()) {
         if (!m_should_use_browser_extended_grammar && done())
         if (!m_should_use_browser_extended_grammar && done())
@@ -1320,7 +1320,7 @@ bool ECMA262Parser::parse_interval_quantifier(Optional<u64>& repeat_min, Optiona
         consume();
         consume();
         ++chars_consumed;
         ++chars_consumed;
         auto high_bound_string = read_digits_as_string();
         auto high_bound_string = read_digits_as_string();
-        auto high_bound = high_bound_string.to_uint<u64>();
+        auto high_bound = high_bound_string.to_number<u64>();
         if (high_bound.has_value()) {
         if (high_bound.has_value()) {
             repeat_max = high_bound.value();
             repeat_max = high_bound.value();
             chars_consumed += high_bound_string.length();
             chars_consumed += high_bound_string.length();
@@ -1587,7 +1587,7 @@ bool ECMA262Parser::parse_character_escape(Vector<CompareTypeAndValuePair>& comp
 bool ECMA262Parser::parse_atom_escape(ByteCode& stack, size_t& match_length_minimum, ParseFlags flags)
 bool ECMA262Parser::parse_atom_escape(ByteCode& stack, size_t& match_length_minimum, ParseFlags flags)
 {
 {
     if (auto escape_str = read_digits_as_string(ReadDigitsInitialZeroState::Disallow); !escape_str.is_empty()) {
     if (auto escape_str = read_digits_as_string(ReadDigitsInitialZeroState::Disallow); !escape_str.is_empty()) {
-        if (auto escape = escape_str.to_uint(); escape.has_value()) {
+        if (auto escape = escape_str.to_number<unsigned>(); escape.has_value()) {
             // See if this is a "back"-reference (we've already parsed the group it refers to)
             // See if this is a "back"-reference (we've already parsed the group it refers to)
             auto maybe_length = m_parser_state.capture_group_minimum_lengths.get(escape.value());
             auto maybe_length = m_parser_state.capture_group_minimum_lengths.get(escape.value());
             if (maybe_length.has_value()) {
             if (maybe_length.has_value()) {

+ 1 - 1
Userland/Libraries/LibSQL/SQLClient.cpp

@@ -129,7 +129,7 @@ static ErrorOr<bool> should_launch_server(ByteString const& pid_path)
             return contents.release_error();
             return contents.release_error();
         }
         }
 
 
-        pid = StringView { contents.value() }.to_int<pid_t>();
+        pid = StringView { contents.value() }.to_number<pid_t>();
     }
     }
 
 
     if (!pid.has_value()) {
     if (!pid.has_value()) {

+ 1 - 1
Userland/Libraries/LibSQL/Value.cpp

@@ -241,7 +241,7 @@ Optional<double> Value::to_double() const
         return {};
         return {};
 
 
     return m_value->visit(
     return m_value->visit(
-        [](ByteString const& value) -> Optional<double> { return value.to_double(); },
+        [](ByteString const& value) -> Optional<double> { return value.to_number<double>(); },
         [](Integer auto value) -> Optional<double> { return static_cast<double>(value); },
         [](Integer auto value) -> Optional<double> { return static_cast<double>(value); },
         [](double value) -> Optional<double> { return value; },
         [](double value) -> Optional<double> { return value; },
         [](bool value) -> Optional<double> { return static_cast<double>(value); },
         [](bool value) -> Optional<double> { return static_cast<double>(value); },

+ 1 - 4
Userland/Libraries/LibSQL/Value.h

@@ -87,10 +87,7 @@ public:
 
 
         return m_value->visit(
         return m_value->visit(
             [](ByteString const& value) -> Optional<T> {
             [](ByteString const& value) -> Optional<T> {
-                if constexpr (IsSigned<T>)
-                    return value.to_int<T>();
-                else
-                    return value.to_uint<T>();
+                return value.to_number<T>();
             },
             },
             [](Integer auto value) -> Optional<T> {
             [](Integer auto value) -> Optional<T> {
                 if (!AK::is_within_range<T>(value))
                 if (!AK::is_within_range<T>(value))

+ 1 - 1
Userland/Libraries/LibSymbolication/Symbolication.cpp

@@ -52,7 +52,7 @@ Optional<FlatPtr> kernel_base()
 
 
         auto kernel_base_str = ByteString { file_content.value(), NoChomp };
         auto kernel_base_str = ByteString { file_content.value(), NoChomp };
         using AddressType = u64;
         using AddressType = u64;
-        auto maybe_kernel_base = kernel_base_str.to_uint<AddressType>();
+        auto maybe_kernel_base = kernel_base_str.to_number<AddressType>();
         if (!maybe_kernel_base.has_value()) {
         if (!maybe_kernel_base.has_value()) {
             s_kernel_base_state = KernelBaseState::Invalid;
             s_kernel_base_state = KernelBaseState::Invalid;
             return {};
             return {};

+ 3 - 3
Userland/Libraries/LibVT/Terminal.cpp

@@ -1248,7 +1248,7 @@ void Terminal::execute_osc_sequence(OscParameters parameters, u8 last_byte)
         return;
         return;
     }
     }
 
 
-    auto command_number = stringview_ify(0).to_uint();
+    auto command_number = stringview_ify(0).to_number<unsigned>();
     if (!command_number.has_value()) {
     if (!command_number.has_value()) {
         unimplemented_osc_sequence(parameters, last_byte);
         unimplemented_osc_sequence(parameters, last_byte);
         return;
         return;
@@ -1288,9 +1288,9 @@ void Terminal::execute_osc_sequence(OscParameters parameters, u8 last_byte)
         if (parameters.size() < 2)
         if (parameters.size() < 2)
             dbgln("Atttempted to set window progress but gave too few parameters");
             dbgln("Atttempted to set window progress but gave too few parameters");
         else if (parameters.size() == 2)
         else if (parameters.size() == 2)
-            m_client.set_window_progress(stringview_ify(1).to_int().value_or(-1), 0);
+            m_client.set_window_progress(stringview_ify(1).to_number<int>().value_or(-1), 0);
         else
         else
-            m_client.set_window_progress(stringview_ify(1).to_int().value_or(-1), stringview_ify(2).to_int().value_or(0));
+            m_client.set_window_progress(stringview_ify(1).to_number<int>().value_or(-1), stringview_ify(2).to_number<int>().value_or(0));
         break;
         break;
     default:
     default:
         unimplemented_osc_sequence(parameters, last_byte);
         unimplemented_osc_sequence(parameters, last_byte);

+ 1 - 1
Userland/Libraries/LibWasm/AbstractMachine/Validator.cpp

@@ -3858,7 +3858,7 @@ ByteString Validator::Errors::find_instruction_name(SourceLocation const& locati
     if (!index.has_value() || !end_index.has_value())
     if (!index.has_value() || !end_index.has_value())
         return ByteString::formatted("{}", location);
         return ByteString::formatted("{}", location);
 
 
-    auto opcode = location.function_name().substring_view(index.value() + 1, end_index.value() - index.value() - 1).to_uint();
+    auto opcode = location.function_name().substring_view(index.value() + 1, end_index.value() - index.value() - 1).to_number<unsigned>();
     if (!opcode.has_value())
     if (!opcode.has_value())
         return ByteString::formatted("{}", location);
         return ByteString::formatted("{}", location);
 
 

+ 2 - 2
Userland/Libraries/LibWeb/ARIA/AriaData.cpp

@@ -99,14 +99,14 @@ Optional<i32> AriaData::parse_integer(Optional<String> const& value)
 {
 {
     if (!value.has_value())
     if (!value.has_value())
         return {};
         return {};
-    return value->bytes_as_string_view().to_int();
+    return value->bytes_as_string_view().to_number<i32>();
 }
 }
 
 
 Optional<f64> AriaData::parse_number(Optional<String> const& value)
 Optional<f64> AriaData::parse_number(Optional<String> const& value)
 {
 {
     if (!value.has_value())
     if (!value.has_value())
         return {};
         return {};
-    return value->bytes_as_string_view().to_double(TrimWhitespace::Yes);
+    return value->to_number<double>(TrimWhitespace::Yes);
 }
 }
 
 
 Optional<String> AriaData::aria_active_descendant_or_default() const
 Optional<String> AriaData::aria_active_descendant_or_default() const

+ 3 - 3
Userland/Libraries/LibWeb/CSS/Parser/SelectorParsing.cpp

@@ -835,7 +835,7 @@ Optional<Selector::SimpleSelector::ANPlusBPattern> Parser::parse_a_n_plus_b_patt
     if (is_ndashdigit_dimension(first_value)) {
     if (is_ndashdigit_dimension(first_value)) {
         auto const& dimension = first_value.token();
         auto const& dimension = first_value.token();
         int a = dimension.dimension_value_int();
         int a = dimension.dimension_value_int();
-        auto maybe_b = dimension.dimension_unit().bytes_as_string_view().substring_view(1).to_int();
+        auto maybe_b = dimension.dimension_unit().bytes_as_string_view().substring_view(1).to_number<int>();
         if (maybe_b.has_value()) {
         if (maybe_b.has_value()) {
             transaction.commit();
             transaction.commit();
             return Selector::SimpleSelector::ANPlusBPattern { a, maybe_b.value() };
             return Selector::SimpleSelector::ANPlusBPattern { a, maybe_b.value() };
@@ -845,7 +845,7 @@ Optional<Selector::SimpleSelector::ANPlusBPattern> Parser::parse_a_n_plus_b_patt
     }
     }
     // <dashndashdigit-ident>
     // <dashndashdigit-ident>
     if (is_dashndashdigit_ident(first_value)) {
     if (is_dashndashdigit_ident(first_value)) {
-        auto maybe_b = first_value.token().ident().bytes_as_string_view().substring_view(2).to_int();
+        auto maybe_b = first_value.token().ident().bytes_as_string_view().substring_view(2).to_number<int>();
         if (maybe_b.has_value()) {
         if (maybe_b.has_value()) {
             transaction.commit();
             transaction.commit();
             return Selector::SimpleSelector::ANPlusBPattern { -1, maybe_b.value() };
             return Selector::SimpleSelector::ANPlusBPattern { -1, maybe_b.value() };
@@ -958,7 +958,7 @@ Optional<Selector::SimpleSelector::ANPlusBPattern> Parser::parse_a_n_plus_b_patt
 
 
     // '+'?† <ndashdigit-ident>
     // '+'?† <ndashdigit-ident>
     if (is_ndashdigit_ident(first_after_plus)) {
     if (is_ndashdigit_ident(first_after_plus)) {
-        auto maybe_b = first_after_plus.token().ident().bytes_as_string_view().substring_view(1).to_int();
+        auto maybe_b = first_after_plus.token().ident().bytes_as_string_view().substring_view(1).to_number<int>();
         if (maybe_b.has_value()) {
         if (maybe_b.has_value()) {
             transaction.commit();
             transaction.commit();
             return Selector::SimpleSelector::ANPlusBPattern { 1, maybe_b.value() };
             return Selector::SimpleSelector::ANPlusBPattern { 1, maybe_b.value() };

+ 1 - 1
Userland/Libraries/LibWeb/CSS/Parser/Tokenizer.cpp

@@ -578,7 +578,7 @@ double Tokenizer::convert_a_string_to_a_number(StringView string)
 {
 {
     // FIXME: We already found the whole part, fraction part and exponent during
     // FIXME: We already found the whole part, fraction part and exponent during
     //        validation, we could probably skip
     //        validation, we could probably skip
-    return string.to_double(AK::TrimWhitespace::No).release_value();
+    return string.to_number<double>(AK::TrimWhitespace::No).release_value();
 }
 }
 
 
 // https://www.w3.org/TR/css-syntax-3/#consume-name
 // https://www.w3.org/TR/css-syntax-3/#consume-name

+ 2 - 2
Userland/Libraries/LibWeb/Cookie/ParsedCookie.cpp

@@ -167,7 +167,7 @@ void on_max_age_attribute(ParsedCookie& parsed_cookie, StringView attribute_valu
         return;
         return;
 
 
     // Let delta-seconds be the attribute-value converted to an integer.
     // Let delta-seconds be the attribute-value converted to an integer.
-    if (auto delta_seconds = attribute_value.to_int(); delta_seconds.has_value()) {
+    if (auto delta_seconds = attribute_value.to_number<int>(); delta_seconds.has_value()) {
         if (*delta_seconds <= 0) {
         if (*delta_seconds <= 0) {
             // If delta-seconds is less than or equal to zero (0), let expiry-time be the earliest representable date and time.
             // If delta-seconds is less than or equal to zero (0), let expiry-time be the earliest representable date and time.
             parsed_cookie.expiry_time_from_max_age_attribute = UnixDateTime::earliest();
             parsed_cookie.expiry_time_from_max_age_attribute = UnixDateTime::earliest();
@@ -251,7 +251,7 @@ Optional<UnixDateTime> parse_date_time(StringView date_string)
         if (!all_of(token, isdigit))
         if (!all_of(token, isdigit))
             return false;
             return false;
 
 
-        if (auto converted = token.to_uint(); converted.has_value()) {
+        if (auto converted = token.to_number<unsigned>(); converted.has_value()) {
             result = *converted;
             result = *converted;
             return true;
             return true;
         }
         }

+ 4 - 4
Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/Headers.cpp

@@ -342,11 +342,11 @@ ErrorOr<HeaderList::ExtractLengthResult> HeaderList::extract_length() const
     }
     }
 
 
     // 5. If candidateValue is the empty string or has a code point that is not an ASCII digit, then return null.
     // 5. If candidateValue is the empty string or has a code point that is not an ASCII digit, then return null.
-    // NOTE: to_uint does this for us.
+    // NOTE: to_number does this for us.
     // 6. Return candidateValue, interpreted as decimal number.
     // 6. Return candidateValue, interpreted as decimal number.
     // NOTE: The spec doesn't say anything about trimming here, so we don't trim. If it contains a space, step 5 will cause us to return null.
     // NOTE: The spec doesn't say anything about trimming here, so we don't trim. If it contains a space, step 5 will cause us to return null.
     // FIXME: This will return an empty Optional if it cannot fit into a u64, is this correct?
     // FIXME: This will return an empty Optional if it cannot fit into a u64, is this correct?
-    auto conversion_result = AK::StringUtils::convert_to_uint<u64>(candidate_value.value(), TrimWhitespace::No);
+    auto conversion_result = candidate_value.value().to_number<u64>(TrimWhitespace::No);
     if (!conversion_result.has_value())
     if (!conversion_result.has_value())
         return Empty {};
         return Empty {};
     return ExtractLengthResult { conversion_result.release_value() };
     return ExtractLengthResult { conversion_result.release_value() };
@@ -851,7 +851,7 @@ Optional<RangeHeaderValue> parse_single_range_header_value(ReadonlyBytes value)
     auto range_start = lexer.consume_while(is_ascii_digit);
     auto range_start = lexer.consume_while(is_ascii_digit);
 
 
     // 5. Let rangeStartValue be rangeStart, interpreted as decimal number, if rangeStart is not the empty string; otherwise null.
     // 5. Let rangeStartValue be rangeStart, interpreted as decimal number, if rangeStart is not the empty string; otherwise null.
-    auto range_start_value = range_start.to_uint<u64>();
+    auto range_start_value = range_start.to_number<u64>();
 
 
     // 6. If the code point at position within data is not U+002D (-), then return failure.
     // 6. If the code point at position within data is not U+002D (-), then return failure.
     // 7. Advance position by 1.
     // 7. Advance position by 1.
@@ -862,7 +862,7 @@ Optional<RangeHeaderValue> parse_single_range_header_value(ReadonlyBytes value)
     auto range_end = lexer.consume_while(is_ascii_digit);
     auto range_end = lexer.consume_while(is_ascii_digit);
 
 
     // 9. Let rangeEndValue be rangeEnd, interpreted as decimal number, if rangeEnd is not the empty string; otherwise null.
     // 9. Let rangeEndValue be rangeEnd, interpreted as decimal number, if rangeEnd is not the empty string; otherwise null.
-    auto range_end_value = range_end.to_uint<u64>();
+    auto range_end_value = range_end.to_number<u64>();
 
 
     // 10. If position is not past the end of data, then return failure.
     // 10. If position is not past the end of data, then return failure.
     if (!lexer.is_eof())
     if (!lexer.is_eof())

+ 2 - 2
Userland/Libraries/LibWeb/HTML/HTMLImageElement.cpp

@@ -176,7 +176,7 @@ unsigned HTMLImageElement::width() const
 
 
     // NOTE: This step seems to not be in the spec, but all browsers do it.
     // NOTE: This step seems to not be in the spec, but all browsers do it.
     auto width_attr = deprecated_get_attribute(HTML::AttributeNames::width);
     auto width_attr = deprecated_get_attribute(HTML::AttributeNames::width);
-    if (auto converted = width_attr.to_uint(); converted.has_value())
+    if (auto converted = width_attr.to_number<unsigned>(); converted.has_value())
         return *converted;
         return *converted;
 
 
     // ...or else the density-corrected intrinsic width and height of the image, in CSS pixels,
     // ...or else the density-corrected intrinsic width and height of the image, in CSS pixels,
@@ -204,7 +204,7 @@ unsigned HTMLImageElement::height() const
 
 
     // NOTE: This step seems to not be in the spec, but all browsers do it.
     // NOTE: This step seems to not be in the spec, but all browsers do it.
     auto height_attr = deprecated_get_attribute(HTML::AttributeNames::height);
     auto height_attr = deprecated_get_attribute(HTML::AttributeNames::height);
-    if (auto converted = height_attr.to_uint(); converted.has_value())
+    if (auto converted = height_attr.to_number<unsigned>(); converted.has_value())
         return *converted;
         return *converted;
 
 
     // ...or else the density-corrected intrinsic height and height of the image, in CSS pixels,
     // ...or else the density-corrected intrinsic height and height of the image, in CSS pixels,

+ 1 - 1
Userland/Libraries/LibWeb/HTML/HTMLSelectElement.cpp

@@ -193,7 +193,7 @@ Optional<ARIA::Role> HTMLSelectElement::default_role() const
     if (has_attribute(AttributeNames::multiple))
     if (has_attribute(AttributeNames::multiple))
         return ARIA::Role::listbox;
         return ARIA::Role::listbox;
     if (has_attribute(AttributeNames::size)) {
     if (has_attribute(AttributeNames::size)) {
-        auto size_attribute = deprecated_attribute(AttributeNames::size).to_int();
+        auto size_attribute = deprecated_attribute(AttributeNames::size).to_number<int>();
         if (size_attribute.has_value() && size_attribute.value() > 1)
         if (size_attribute.has_value() && size_attribute.value() > 1)
             return ARIA::Role::listbox;
             return ARIA::Role::listbox;
     }
     }

+ 1 - 1
Userland/Libraries/LibWeb/HTML/HTMLTableElement.cpp

@@ -46,7 +46,7 @@ void HTMLTableElement::visit_edges(Cell::Visitor& visitor)
 
 
 static unsigned parse_border(ByteString const& value)
 static unsigned parse_border(ByteString const& value)
 {
 {
-    return value.to_uint().value_or(0);
+    return value.to_number<unsigned>().value_or(0);
 }
 }
 
 
 void HTMLTableElement::apply_presentational_hints(CSS::StyleProperties& style) const
 void HTMLTableElement::apply_presentational_hints(CSS::StyleProperties& style) const

+ 1 - 1
Userland/Libraries/LibWeb/HTML/Numbers.cpp

@@ -84,7 +84,7 @@ Optional<u32> parse_non_negative_integer(StringView string)
 Optional<double> parse_floating_point_number(StringView string)
 Optional<double> parse_floating_point_number(StringView string)
 {
 {
     // FIXME: Implement spec compliant floating point number parsing
     // FIXME: Implement spec compliant floating point number parsing
-    auto maybe_double = MUST(String::from_utf8(string)).to_number<double>(TrimWhitespace::Yes);
+    auto maybe_double = string.to_number<double>(TrimWhitespace::Yes);
     if (!maybe_double.has_value())
     if (!maybe_double.has_value())
         return {};
         return {};
     if (!isfinite(maybe_double.value()))
     if (!isfinite(maybe_double.value()))

+ 1 - 1
Userland/Libraries/LibWeb/HTML/Parser/HTMLParser.cpp

@@ -4475,7 +4475,7 @@ RefPtr<CSS::StyleValue> parse_dimension_value(StringView string)
         number_string.append(*position);
         number_string.append(*position);
         ++position;
         ++position;
     }
     }
-    auto integer_value = number_string.string_view().to_int();
+    auto integer_value = number_string.string_view().to_number<int>();
 
 
     // 6. If position is past the end of input, then return value as a length.
     // 6. If position is past the end of input, then return value as a length.
     if (position == input.end())
     if (position == input.end())

Some files were not shown because too many files changed in this diff