diff --git a/Userland/Libraries/LibCore/ArgsParser.cpp b/Userland/Libraries/LibCore/ArgsParser.cpp index c858bea4f0..96fac2dceb 100644 --- a/Userland/Libraries/LibCore/ArgsParser.cpp +++ b/Userland/Libraries/LibCore/ArgsParser.cpp @@ -322,6 +322,23 @@ void ArgsParser::add_option(int& value, const char* help_string, const char* lon add_option(move(option)); } +void ArgsParser::add_option(unsigned& 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) { + auto opt = StringView(s).to_uint(); + value = opt.value_or(0); + return opt.has_value(); + } + }; + add_option(move(option)); +} + void ArgsParser::add_option(double& value, const char* help_string, const char* long_name, char short_name, const char* value_name) { Option option { @@ -405,6 +422,22 @@ void ArgsParser::add_positional_argument(int& value, const char* help_string, co add_positional_argument(move(arg)); } +void ArgsParser::add_positional_argument(unsigned& value, const char* help_string, const char* name, Required required) +{ + Arg arg { + help_string, + name, + required == Required::Yes ? 1 : 0, + 1, + [&value](const char* s) { + auto opt = StringView(s).to_uint(); + value = opt.value_or(0); + return opt.has_value(); + } + }; + add_positional_argument(move(arg)); +} + void ArgsParser::add_positional_argument(double& 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 42a082ece8..66c0493efe 100644 --- a/Userland/Libraries/LibCore/ArgsParser.h +++ b/Userland/Libraries/LibCore/ArgsParser.h @@ -65,6 +65,7 @@ public: 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(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_positional_argument(Arg&&); @@ -72,6 +73,7 @@ public: 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(unsigned& 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); void add_positional_argument(Vector& value, const char* help_string, const char* name, Required required = Required::Yes);