1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 15:27:34 +00:00

Take StringView in more places

We should work towards a pattern where we take StringView as function
arguments, and store String as member, to push the String construction
to the last possible moment.
This commit is contained in:
Robin Burchell 2019-06-02 12:26:28 +02:00 committed by Andreas Kling
parent b55b6cd7fc
commit 7bce096afd
14 changed files with 28 additions and 36 deletions

View file

@ -87,7 +87,7 @@ public:
};
static String repeated(char, int count);
bool matches(const String& pattern, CaseSensitivity = CaseSensitivity::CaseInsensitive) const;
bool matches(const StringView& pattern, CaseSensitivity = CaseSensitivity::CaseInsensitive) const;
int to_int(bool& ok) const;
unsigned to_uint(bool& ok) const;
@ -122,7 +122,7 @@ public:
return (*m_impl)[i];
}
bool ends_with(const String&) const;
bool ends_with(const StringView&) const;
bool operator==(const String&) const;
bool operator!=(const String& other) const { return !(*this == other); }
@ -166,7 +166,7 @@ public:
StringView view() const { return { characters(), length() }; }
private:
bool match_helper(const String& mask) const;
bool match_helper(const StringView& mask) const;
RetainPtr<StringImpl> m_impl;
};

View file

@ -36,15 +36,7 @@ public:
m_buffer[m_offset++] = (byte)(value >> 24) & 0xffu;
}
void operator<<(const char* str)
{
ssize_t len = strlen(str);
ASSERT(len >= 0);
for (ssize_t i = 0; i < len; ++i)
m_buffer[m_offset++] = str[i];
}
void operator<<(const String& value)
void operator<<(const StringView& value)
{
for (ssize_t i = 0; i < value.length(); ++i)
m_buffer[m_offset++] = value[i];

View file

@ -5,7 +5,7 @@
namespace AK {
FileSystemPath::FileSystemPath(const String& s)
FileSystemPath::FileSystemPath(const StringView& s)
: m_string(s)
{
m_is_valid = canonicalize();

View file

@ -7,7 +7,7 @@ namespace AK {
class FileSystemPath {
public:
FileSystemPath() {}
explicit FileSystemPath(const String&);
explicit FileSystemPath(const StringView&);
bool is_valid() const { return m_is_valid; }
String string() const { return m_string; }

View file

@ -175,7 +175,7 @@ String String::format(const char* fmt, ...)
return builder.to_string();
}
bool String::ends_with(const String& str) const
bool String::ends_with(const StringView& str) const
{
if (str.is_empty())
return true;
@ -196,20 +196,20 @@ String String::repeated(char ch, int count)
return *impl;
}
bool String::matches(const String& mask, CaseSensitivity case_sensitivity) const
bool String::matches(const StringView& mask, CaseSensitivity case_sensitivity) const
{
if (case_sensitivity == CaseSensitivity::CaseInsensitive) {
String this_lower = this->to_lowercase();
String mask_lower = mask.to_lowercase();
String mask_lower = String(mask).to_lowercase();
return this_lower.match_helper(mask_lower);
}
return match_helper(mask);
}
bool String::match_helper(const String& mask) const
bool String::match_helper(const StringView& mask) const
{
if (is_null() || mask.is_null())
if (is_null())
return false;
const char* string_ptr = characters();

View file

@ -16,7 +16,7 @@ StringBuilder::StringBuilder(ssize_t initial_capacity)
m_buffer.grow(initial_capacity);
}
void StringBuilder::append(const String& str)
void StringBuilder::append(const StringView& str)
{
if (str.is_empty())
return;

View file

@ -11,7 +11,7 @@ public:
explicit StringBuilder(ssize_t initial_capacity = 16);
~StringBuilder() {}
void append(const String&);
void append(const StringView&);
void append(char);
void append(const char*, ssize_t);
void appendf(const char*, ...);