diff --git a/Userland/Libraries/LibCore/ArgsParser.cpp b/Userland/Libraries/LibCore/ArgsParser.cpp index 56fa4df5c68..3c8e3597a03 100644 --- a/Userland/Libraries/LibCore/ArgsParser.cpp +++ b/Userland/Libraries/LibCore/ArgsParser.cpp @@ -285,6 +285,22 @@ void ArgsParser::add_option(String& value, const char* help_string, const char* add_option(move(option)); } +void ArgsParser::add_option(StringView& value, char const* help_string, char const* long_name, char short_name, char const* value_name) +{ + Option option { + true, + help_string, + long_name, + short_name, + value_name, + [&value](const char* s) { + value = s; + return true; + } + }; + add_option(move(option)); +} + void ArgsParser::add_option(int& value, const char* help_string, const char* long_name, char short_name, const char* value_name) { Option option { @@ -354,6 +370,21 @@ void ArgsParser::add_positional_argument(String& value, const char* help_string, add_positional_argument(move(arg)); } +void ArgsParser::add_positional_argument(StringView& value, char const* help_string, char const* name, Required required) +{ + Arg arg { + help_string, + name, + required == Required::Yes ? 1 : 0, + 1, + [&value](const char* s) { + value = s; + return true; + } + }; + add_positional_argument(move(arg)); +} + void ArgsParser::add_positional_argument(int& value, const char* help_string, const char* name, Required required) { Arg arg { diff --git a/Userland/Libraries/LibCore/ArgsParser.h b/Userland/Libraries/LibCore/ArgsParser.h index 944ba5a78fe..5c734370645 100644 --- a/Userland/Libraries/LibCore/ArgsParser.h +++ b/Userland/Libraries/LibCore/ArgsParser.h @@ -55,12 +55,14 @@ public: void add_option(bool& value, const char* help_string, const char* long_name, char short_name); void add_option(const char*& value, const char* help_string, const char* long_name, char short_name, const char* value_name); void add_option(String& value, const char* help_string, const char* long_name, char short_name, const char* value_name); + void add_option(StringView& value, char const* help_string, char const* long_name, char short_name, char const* value_name); void add_option(int& value, const char* help_string, const char* long_name, char short_name, const char* value_name); void add_option(double& value, const char* help_string, const char* long_name, char short_name, const char* value_name); void add_positional_argument(Arg&&); void add_positional_argument(const char*& value, const char* help_string, const char* name, Required required = Required::Yes); void add_positional_argument(String& value, const char* help_string, const char* name, Required required = Required::Yes); + void add_positional_argument(StringView& value, char const* help_string, char const* name, Required required = Required::Yes); void add_positional_argument(int& value, const char* help_string, const char* name, Required required = Required::Yes); void add_positional_argument(double& value, const char* help_string, const char* name, Required required = Required::Yes); void add_positional_argument(Vector& value, const char* help_string, const char* name, Required required = Required::Yes);