From e6645ed6072784e875a3fab408fcf85353306e17 Mon Sep 17 00:00:00 2001 From: apio Date: Wed, 29 Mar 2023 22:10:01 +0200 Subject: [PATCH] StringView+apps: Add a _sv literal suffix to not confuse function overloads C++ was being naughty and implicitly casting our fallback const char* to a boolean. --- apps/date.cpp | 2 +- apps/edit.cpp | 2 +- apps/ls.cpp | 6 +++--- libluna/include/luna/StringView.h | 10 ++++++++++ 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/apps/date.cpp b/apps/date.cpp index 76bc5d79..e151ceac 100644 --- a/apps/date.cpp +++ b/apps/date.cpp @@ -10,7 +10,7 @@ int main(int argc, char** argv) StringView date; ArgumentParser parser; - parser.add_value_argument(date, 'd', "date", false); + parser.add_value_argument(date, 'd', "date"_sv, false); parser.parse(argc, argv); time_t now; diff --git a/apps/edit.cpp b/apps/edit.cpp index 08a49586..ae177cb8 100644 --- a/apps/edit.cpp +++ b/apps/edit.cpp @@ -10,7 +10,7 @@ int main(int argc, char** argv) StringView pathname; ArgumentParser parser; - parser.add_positional_argument(pathname, "file", true); + parser.add_positional_argument(pathname, "file"_sv, true); parser.parse(argc, argv); f = fopen(pathname.chars(), "w"); diff --git a/apps/ls.cpp b/apps/ls.cpp index bed6deed..cbd427f6 100644 --- a/apps/ls.cpp +++ b/apps/ls.cpp @@ -12,9 +12,9 @@ int main(int argc, char** argv) bool show_almost_all; ArgumentParser parser; - parser.add_positional_argument(pathname, "directory", "/"); - parser.add_switch_argument(show_all, 'a', "all"); - parser.add_switch_argument(show_almost_all, 'A', "almost-all"); + parser.add_positional_argument(pathname, "directory"_sv, "/"_sv); + parser.add_switch_argument(show_all, 'a', "all"_sv); + parser.add_switch_argument(show_almost_all, 'A', "almost-all"_sv); parser.parse(argc, argv); DIR* dp = opendir(pathname.chars()); diff --git a/libluna/include/luna/StringView.h b/libluna/include/luna/StringView.h index 790ace6e..a9a04d41 100644 --- a/libluna/include/luna/StringView.h +++ b/libluna/include/luna/StringView.h @@ -52,3 +52,13 @@ class StringView usize m_length { 0 }; }; + +inline StringView operator""_sv(const char* cstring) +{ + return StringView { cstring }; +} + +inline StringView operator""_sv(const char* cstring, usize length) +{ + return StringView { cstring, length }; +}