summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Burchell <robin+git@viroteck.net>2019-06-02 12:26:28 +0200
committerAndreas Kling <awesomekling@gmail.com>2019-06-02 12:55:51 +0200
commit7bce096afdf182216c9da4c94765e12662188c98 (patch)
treeb29607bbf3ad02d151f7a4ad7ca920636aaefb74
parentb55b6cd7fcaa8518e4901d4ec5bd0a9da5b28fc0 (diff)
downloadserenity-7bce096afdf182216c9da4c94765e12662188c98.zip
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.
-rw-r--r--AK/AKString.h6
-rw-r--r--AK/BufferStream.h10
-rw-r--r--AK/FileSystemPath.cpp2
-rw-r--r--AK/FileSystemPath.h2
-rw-r--r--AK/String.cpp10
-rw-r--r--AK/StringBuilder.cpp2
-rw-r--r--AK/StringBuilder.h2
-rw-r--r--Applications/FileManager/DirectoryView.cpp6
-rw-r--r--Applications/FileManager/DirectoryView.h10
-rw-r--r--Applications/FileManager/main.cpp4
-rw-r--r--LibCore/CDirIterator.cpp2
-rw-r--r--LibCore/CDirIterator.h2
-rw-r--r--LibCore/CFile.cpp2
-rw-r--r--LibCore/CFile.h4
14 files changed, 28 insertions, 36 deletions
diff --git a/AK/AKString.h b/AK/AKString.h
index a2a972ebf9..e75172a870 100644
--- a/AK/AKString.h
+++ b/AK/AKString.h
@@ -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;
};
diff --git a/AK/BufferStream.h b/AK/BufferStream.h
index db2907963f..7edc9f6e65 100644
--- a/AK/BufferStream.h
+++ b/AK/BufferStream.h
@@ -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];
diff --git a/AK/FileSystemPath.cpp b/AK/FileSystemPath.cpp
index 07d8d5ea82..fbef784160 100644
--- a/AK/FileSystemPath.cpp
+++ b/AK/FileSystemPath.cpp
@@ -5,7 +5,7 @@
namespace AK {
-FileSystemPath::FileSystemPath(const String& s)
+FileSystemPath::FileSystemPath(const StringView& s)
: m_string(s)
{
m_is_valid = canonicalize();
diff --git a/AK/FileSystemPath.h b/AK/FileSystemPath.h
index b62160a526..d985baded1 100644
--- a/AK/FileSystemPath.h
+++ b/AK/FileSystemPath.h
@@ -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; }
diff --git a/AK/String.cpp b/AK/String.cpp
index ed3943318c..8bfc787686 100644
--- a/AK/String.cpp
+++ b/AK/String.cpp
@@ -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();
diff --git a/AK/StringBuilder.cpp b/AK/StringBuilder.cpp
index 0fe550242e..6f6a86de26 100644
--- a/AK/StringBuilder.cpp
+++ b/AK/StringBuilder.cpp
@@ -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;
diff --git a/AK/StringBuilder.h b/AK/StringBuilder.h
index 700540942a..65bc8e2c07 100644
--- a/AK/StringBuilder.h
+++ b/AK/StringBuilder.h
@@ -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*, ...);
diff --git a/Applications/FileManager/DirectoryView.cpp b/Applications/FileManager/DirectoryView.cpp
index cf8187ecd4..9d13de521b 100644
--- a/Applications/FileManager/DirectoryView.cpp
+++ b/Applications/FileManager/DirectoryView.cpp
@@ -108,7 +108,7 @@ void DirectoryView::set_view_mode(ViewMode mode)
ASSERT_NOT_REACHED();
}
-void DirectoryView::add_path_to_history(const String& path)
+void DirectoryView::add_path_to_history(const StringView& path)
{
if (m_path_history_position < m_path_history.size())
m_path_history.resize(m_path_history_position + 1);
@@ -117,13 +117,13 @@ void DirectoryView::add_path_to_history(const String& path)
m_path_history_position = m_path_history.size() - 1;
}
-void DirectoryView::open(const String& path)
+void DirectoryView::open(const StringView& path)
{
add_path_to_history(path);
model().open(path);
}
-void DirectoryView::set_status_message(const String& message)
+void DirectoryView::set_status_message(const StringView& message)
{
if (on_status_message)
on_status_message(message);
diff --git a/Applications/FileManager/DirectoryView.h b/Applications/FileManager/DirectoryView.h
index c494419e5d..fa8d7cba10 100644
--- a/Applications/FileManager/DirectoryView.h
+++ b/Applications/FileManager/DirectoryView.h
@@ -12,7 +12,7 @@ public:
explicit DirectoryView(GWidget* parent);
virtual ~DirectoryView() override;
- void open(const String& path);
+ void open(const StringView& path);
String path() const { return model().path(); }
void open_parent_directory();
void open_previous_directory();
@@ -22,8 +22,8 @@ public:
void refresh();
- Function<void(const String&)> on_path_change;
- Function<void(String)> on_status_message;
+ Function<void(const StringView&)> on_path_change;
+ Function<void(const StringView&)> on_status_message;
Function<void(int done, int total)> on_thumbnail_progress;
enum ViewMode
@@ -41,14 +41,14 @@ private:
void handle_activation(const GModelIndex&);
- void set_status_message(const String&);
+ void set_status_message(const StringView&);
ViewMode m_view_mode { Invalid };
Retained<GDirectoryModel> m_model;
int m_path_history_position { 0 };
Vector<String> m_path_history;
- void add_path_to_history(const String& path);
+ void add_path_to_history(const StringView& path);
GTableView* m_table_view { nullptr };
GItemView* m_item_view { nullptr };
diff --git a/Applications/FileManager/main.cpp b/Applications/FileManager/main.cpp
index 7c6fe3bc73..258f178b5d 100644
--- a/Applications/FileManager/main.cpp
+++ b/Applications/FileManager/main.cpp
@@ -199,8 +199,8 @@ int main(int argc, char** argv)
go_back_action->set_enabled(directory_view->path_history_position() > 0);
};
- directory_view->on_status_message = [statusbar] (String message) {
- statusbar->set_text(move(message));
+ directory_view->on_status_message = [statusbar] (const StringView& message) {
+ statusbar->set_text(message);
};
directory_view->on_thumbnail_progress = [&] (int done, int total) {
diff --git a/LibCore/CDirIterator.cpp b/LibCore/CDirIterator.cpp
index aa64ea8b71..d76d52970d 100644
--- a/LibCore/CDirIterator.cpp
+++ b/LibCore/CDirIterator.cpp
@@ -1,7 +1,7 @@
#include "CDirIterator.h"
#include <cerrno>
-CDirIterator::CDirIterator(const String& path, Flags flags)
+CDirIterator::CDirIterator(const StringView& path, Flags flags)
: m_flags(flags)
{
m_dir = opendir(path.characters());
diff --git a/LibCore/CDirIterator.h b/LibCore/CDirIterator.h
index 72920c2c1f..1d3395ef13 100644
--- a/LibCore/CDirIterator.h
+++ b/LibCore/CDirIterator.h
@@ -11,7 +11,7 @@ public:
SkipDots = 0x1,
};
- CDirIterator(const String& path, Flags = Flags::NoFlags);
+ CDirIterator(const StringView& path, Flags = Flags::NoFlags);
~CDirIterator();
bool has_error() const { return m_error != 0; }
diff --git a/LibCore/CFile.cpp b/LibCore/CFile.cpp
index 44813e1c97..ce686ec416 100644
--- a/LibCore/CFile.cpp
+++ b/LibCore/CFile.cpp
@@ -3,7 +3,7 @@
#include <stdio.h>
#include <unistd.h>
-CFile::CFile(const String& filename)
+CFile::CFile(const StringView& filename)
: m_filename(filename)
{
}
diff --git a/LibCore/CFile.h b/LibCore/CFile.h
index fab396ac55..de051b3084 100644
--- a/LibCore/CFile.h
+++ b/LibCore/CFile.h
@@ -6,11 +6,11 @@
class CFile final : public CIODevice {
public:
CFile() {}
- explicit CFile(const String&);
+ explicit CFile(const StringView&);
virtual ~CFile() override;
String filename() const { return m_filename; }
- void set_filename(const String& filename) { m_filename = filename; }
+ void set_filename(const StringView& filename) { m_filename = filename; }
virtual bool open(CIODevice::OpenMode) override;