AK: Break String::number() overloads into i/l/ll and u/ul/ull

Now that we're trying to be more portable, we can't only rely on using
i32/u32 and i64/u64 since different systems have different combinations
of int/long/long long and unsigned/unsigned long/unsigned long long.
This commit is contained in:
Andreas Kling 2020-02-05 19:07:53 +01:00
parent 5b7924b9e7
commit 90b1dafeff
Notes: sideshowbarker 2024-07-19 09:36:01 +09:00
2 changed files with 31 additions and 20 deletions

View file

@ -230,26 +230,44 @@ unsigned String::to_uint(bool& ok) const
return value; return value;
} }
String String::number(u64 value) String String::number(unsigned long long value)
{ {
int size; int size;
char buffer[32]; char buffer[32];
#ifdef __serenity__
size = sprintf(buffer, "%llu", value); size = sprintf(buffer, "%llu", value);
#else
size = sprintf(buffer, "%" PRIu64, value);
#endif
return String(buffer, size); return String(buffer, size);
} }
String String::number(u32 value) String String::number(unsigned long value)
{
int size;
char buffer[32];
size = sprintf(buffer, "%lu", value);
return String(buffer, size);
}
String String::number(unsigned value)
{ {
char buffer[32]; char buffer[32];
int size = sprintf(buffer, "%u", value); int size = sprintf(buffer, "%u", value);
return String(buffer, size); return String(buffer, size);
} }
String String::number(i32 value) String String::number(long long value)
{
char buffer[32];
int size = sprintf(buffer, "%lld", value);
return String(buffer, size);
}
String String::number(long value)
{
char buffer[32];
int size = sprintf(buffer, "%ld", value);
return String(buffer, size);
}
String String::number(int value)
{ {
char buffer[32]; char buffer[32];
int size = sprintf(buffer, "%d", value); int size = sprintf(buffer, "%d", value);

View file

@ -231,19 +231,12 @@ public:
} }
static String format(const char*, ...); static String format(const char*, ...);
static String number(u64); static String number(unsigned);
static String number(u32); static String number(unsigned long);
static String number(i32); static String number(unsigned long long);
static String number(i64); static String number(int);
static String number(long);
static String number(size_t n) static String number(long long);
{
if constexpr(sizeof(size_t) == 4)
return number((u32)n);
else if constexpr(sizeof(size_t) == 8)
return number((u64)n);
ASSERT_NOT_REACHED();
}
StringView view() const StringView view() const
{ {