From 24da85d0593082e65d67817dee968afb3d1ed338 Mon Sep 17 00:00:00 2001 From: brapru Date: Thu, 17 Feb 2022 06:05:16 -0500 Subject: [PATCH] ArgsParser: Add support for Optional --- Userland/Libraries/LibCore/ArgsParser.cpp | 16 ++++++++++++++++ Userland/Libraries/LibCore/ArgsParser.h | 1 + 2 files changed, 17 insertions(+) diff --git a/Userland/Libraries/LibCore/ArgsParser.cpp b/Userland/Libraries/LibCore/ArgsParser.cpp index 64d3207e52..4a331453d1 100644 --- a/Userland/Libraries/LibCore/ArgsParser.cpp +++ b/Userland/Libraries/LibCore/ArgsParser.cpp @@ -484,6 +484,22 @@ void ArgsParser::add_option(Optional& value, const char* help_string, co add_option(move(option)); } +void ArgsParser::add_option(Optional& value, const char* help_string, const char* long_name, char short_name, const char* value_name) +{ + Option option { + true, + help_string, + long_name, + short_name, + value_name, + [&value](const char* s) { + value = AK::StringUtils::convert_to_uint(s); + return value.has_value(); + } + }; + add_option(move(option)); +} + void ArgsParser::add_positional_argument(Arg&& arg) { m_positional_args.append(move(arg)); diff --git a/Userland/Libraries/LibCore/ArgsParser.h b/Userland/Libraries/LibCore/ArgsParser.h index ad6cc2212b..bdc2d63a84 100644 --- a/Userland/Libraries/LibCore/ArgsParser.h +++ b/Userland/Libraries/LibCore/ArgsParser.h @@ -78,6 +78,7 @@ public: void add_option(unsigned& 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_option(Optional& value, const char* help_string, const char* long_name, char short_name, const char* value_name); + void add_option(Optional& 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);