1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 13:27:35 +00:00

AK: Implement String::to_int (#99)

This commit is contained in:
Faissal Bensefia 2019-05-26 03:08:36 +01:00 committed by Andreas Kling
parent 79dba9a545
commit 411cdf067b
2 changed files with 26 additions and 6 deletions

View file

@ -15,7 +15,7 @@ bool String::operator==(const String& other) const
if (length() != other.length())
return false;
return !memcmp(characters(), other.characters(), length());
}
@ -122,12 +122,32 @@ ByteBuffer String::to_byte_buffer() const
return ByteBuffer::copy(reinterpret_cast<const byte*>(characters()), length());
}
// FIXME: Duh.
int String::to_int(bool& ok) const
{
unsigned value = to_uint(ok);
ASSERT(ok);
return (int)value;
bool negative = false;
int value = 0;
ssize_t i = 0;
if (is_null()) {
ok = false;
return 0;
}
if (characters()[0] == '-') {
i++;
negative = true;
}
for (; i < length(); i++) {
if (characters()[i] < '0' || characters()[i] > '9') {
ok = false;
return 0;
}
value = value * 10;
value += characters()[i] - '0';
}
ok = true;
return negative ? -value : value;
}
unsigned String::to_uint(bool& ok) const