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

AK: Use size_t for the length of strings

Using int was a mistake. This patch changes String, StringImpl,
StringView and StringBuilder to use size_t instead of int for lengths.
Obviously a lot of code needs to change as a result of this.
This commit is contained in:
Andreas Kling 2019-12-09 17:45:40 +01:00
parent 1726c17d0d
commit 6f4c380d95
54 changed files with 387 additions and 377 deletions

View file

@ -76,7 +76,7 @@ String String::isolated_copy() const
return String(move(*impl));
}
String String::substring(int start, int length) const
String String::substring(size_t start, size_t length) const
{
if (!length)
return {};
@ -86,7 +86,7 @@ String String::substring(int start, int length) const
return { characters() + start, length };
}
StringView String::substring_view(int start, int length) const
StringView String::substring_view(size_t start, size_t length) const
{
if (!length)
return {};
@ -101,23 +101,23 @@ Vector<String> String::split(const char separator) const
return split_limit(separator, 0);
}
Vector<String> String::split_limit(const char separator, int limit) const
Vector<String> String::split_limit(const char separator, size_t limit) const
{
if (is_empty())
return {};
Vector<String> v;
int substart = 0;
for (int i = 0; i < length() && (v.size() + 1) != limit; ++i) {
size_t substart = 0;
for (size_t i = 0; i < length() && ((size_t)v.size() + 1) != limit; ++i) {
char ch = characters()[i];
if (ch == separator) {
int sublen = i - substart;
size_t sublen = i - substart;
if (sublen != 0)
v.append(substring(substart, sublen));
substart = i + 1;
}
}
int taillen = length() - substart;
size_t taillen = length() - substart;
if (taillen != 0)
v.append(substring(substart, taillen));
if (characters()[length() - 1] == separator)
@ -131,17 +131,17 @@ Vector<StringView> String::split_view(const char separator, bool keep_empty) con
return {};
Vector<StringView> v;
int substart = 0;
for (int i = 0; i < length(); ++i) {
size_t substart = 0;
for (size_t i = 0; i < length(); ++i) {
char ch = characters()[i];
if (ch == separator) {
int sublen = i - substart;
size_t sublen = i - substart;
if (sublen != 0 || keep_empty)
v.append(substring_view(substart, sublen));
substart = i + 1;
}
}
int taillen = length() - substart;
size_t taillen = length() - substart;
if (taillen != 0 || keep_empty)
v.append(substring_view(substart, taillen));
if (characters()[length() - 1] == separator && keep_empty)
@ -160,7 +160,7 @@ int String::to_int(bool& ok) const
{
bool negative = false;
int value = 0;
int i = 0;
size_t i = 0;
if (is_empty()) {
ok = false;
@ -187,7 +187,7 @@ int String::to_int(bool& ok) const
unsigned String::to_uint(bool& ok) const
{
unsigned value = 0;
for (int i = 0; i < length(); ++i) {
for (size_t i = 0; i < length(); ++i) {
if (characters()[i] < '0' || characters()[i] > '9') {
ok = false;
return 0;
@ -250,7 +250,7 @@ bool String::ends_with(const StringView& str) const
return !memcmp(characters() + (length() - str.length()), str.characters_without_null_termination(), str.length());
}
String String::repeated(char ch, int count)
String String::repeated(char ch, size_t count)
{
if (!count)
return empty();