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:
parent
5b7924b9e7
commit
90b1dafeff
Notes:
sideshowbarker
2024-07-19 09:36:01 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/90b1dafeff1
2 changed files with 31 additions and 20 deletions
|
@ -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);
|
||||||
|
|
19
AK/String.h
19
AK/String.h
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue