1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 09:38:11 +00:00

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.
This commit is contained in:
Shannon Booth 2023-12-23 15:59:14 +13:00 committed by Andreas Kling
parent a4ecc65398
commit e2e7c4d574
155 changed files with 397 additions and 412 deletions

View file

@ -1052,7 +1052,7 @@ ErrorOr<RefPtr<AST::Node>> Shell::immediate_math(AST::ImmediateExpression& invok
view.byte_offset_of(it) - *integer_or_word_start_offset);
if (all_of(integer_or_word, is_ascii_digit))
tokens.append(*integer_or_word.as_string().to_int());
tokens.append(*integer_or_word.as_string().to_number<int>());
else
tokens.append(TRY(expression.substring_from_byte_offset_with_shared_superstring(*integer_or_word_start_offset, integer_or_word.length())));
@ -1239,7 +1239,7 @@ ErrorOr<RefPtr<AST::Node>> Shell::immediate_math(AST::ImmediateExpression& invok
auto integer_or_word = view.substring_view(*integer_or_word_start_offset);
if (all_of(integer_or_word, is_ascii_digit))
tokens.append(*integer_or_word.as_string().to_int());
tokens.append(*integer_or_word.as_string().to_number<int>());
else
tokens.append(TRY(expression.substring_from_byte_offset_with_shared_superstring(*integer_or_word_start_offset, integer_or_word.length())));
@ -1262,7 +1262,7 @@ ErrorOr<RefPtr<AST::Node>> Shell::immediate_math(AST::ImmediateExpression& invok
builder.join(' ', TRY(const_cast<AST::Value&>(*value).resolve_as_list(const_cast<Shell&>(*this))));
resolved_name = TRY(builder.to_string());
auto integer = resolved_name.bytes_as_string_view().to_int<i64>();
auto integer = resolved_name.to_number<i64>();
if (integer.has_value())
return *integer;
}