From b55b6cd7fcaa8518e4901d4ec5bd0a9da5b28fc0 Mon Sep 17 00:00:00 2001 From: Robin Burchell Date: Sun, 2 Jun 2019 12:19:21 +0200 Subject: [PATCH] AK: Add implicit String -> StringView conversion And tidy up existing view() users. --- AK/String.cpp | 2 +- AK/StringView.cpp | 8 +++++++- AK/StringView.h | 1 + Kernel/Process.cpp | 2 +- Servers/LookupServer/main.cpp | 4 ++-- Userland/sysctl.cpp | 2 +- 6 files changed, 13 insertions(+), 6 deletions(-) diff --git a/AK/String.cpp b/AK/String.cpp index 5ec6f355ee1..ed3943318c2 100644 --- a/AK/String.cpp +++ b/AK/String.cpp @@ -111,7 +111,7 @@ Vector String::split_view(const char separator) const if (taillen != 0) v.append(substring_view(substart, taillen)); if (characters()[length() - 1] == separator) - v.append(empty().view()); + v.append(empty()); return v; } diff --git a/AK/StringView.cpp b/AK/StringView.cpp index 77fc057c391..c2f538be849 100644 --- a/AK/StringView.cpp +++ b/AK/StringView.cpp @@ -3,6 +3,12 @@ namespace AK { +StringView::StringView(const AK::String& string) + : m_characters(string.characters()) + , m_length(string.length()) +{ +} + Vector StringView::split_view(const char separator) const { if (is_empty()) @@ -23,7 +29,7 @@ Vector StringView::split_view(const char separator) const if (taillen != 0) v.append(substring_view(substart, taillen)); if (characters()[length() - 1] == separator) - v.append(String::empty().view()); + v.append(String::empty()); return v; } diff --git a/AK/StringView.h b/AK/StringView.h index ced68488a02..4ef404c8e08 100644 --- a/AK/StringView.h +++ b/AK/StringView.h @@ -27,6 +27,7 @@ public: ++m_length; } } + StringView(const AK::String& string); bool is_empty() const { return m_length == 0; } const char* characters() const { return m_characters; } diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 5b84737ac27..6a71c312ad1 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -312,7 +312,7 @@ int Process::do_exec(String path, Vector arguments, Vector envir if (parts.is_empty()) return -ENOENT; - auto result = VFS::the().open(path.view(), 0, 0, current_directory()); + auto result = VFS::the().open(path, 0, 0, current_directory()); if (result.is_error()) return result.error(); auto descriptor = result.value(); diff --git a/Servers/LookupServer/main.cpp b/Servers/LookupServer/main.cpp index 11e2ab49d04..283aadec911 100644 --- a/Servers/LookupServer/main.cpp +++ b/Servers/LookupServer/main.cpp @@ -101,7 +101,7 @@ int main(int argc, char**argv) auto hostname = String(client_buffer, nrecv, Chomp); dbgprintf("LookupServer: Got request for '%s' (using IP %s)\n", hostname.characters(), - DNS_IP.view().characters()); + DNS_IP.characters()); Vector addresses; @@ -194,7 +194,7 @@ Vector lookup(const String& hostname, bool& did_timeout, const Stri dst_addr.sin_family = AF_INET; dst_addr.sin_port = htons(53); - rc = inet_pton(AF_INET, DNS_IP.view().characters(), &dst_addr.sin_addr); + rc = inet_pton(AF_INET, DNS_IP.characters(), &dst_addr.sin_addr); int nsent = sendto(fd, buffer.pointer(), buffer.size(), 0,(const struct sockaddr *)&dst_addr, sizeof(dst_addr)); if (nsent < 0) { diff --git a/Userland/sysctl.cpp b/Userland/sysctl.cpp index 7b6a55d450b..90fead0f2d7 100644 --- a/Userland/sysctl.cpp +++ b/Userland/sysctl.cpp @@ -41,7 +41,7 @@ static void write_var(const String& name, const String& value) fprintf(stderr, "open: %s", f.error_string()); exit(1); } - f.write(value.view()); + f.write(value); if (f.error() < 0) { fprintf(stderr, "write: %s", f.error_string()); exit(1);