mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 06:17:35 +00:00
LibCore: Add Vector<size_t> variant of add_option()
This adds a Vector<size_t> variant of add_option(). The signature includes a separator parameter which defaults to ','.
This commit is contained in:
parent
269f9c6863
commit
23a87a41ff
2 changed files with 27 additions and 0 deletions
|
@ -520,6 +520,32 @@ void ArgsParser::add_option(Optional<size_t>& value, const char* help_string, co
|
||||||
add_option(move(option));
|
add_option(move(option));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ArgsParser::add_option(Vector<size_t>& values, char const* help_string, char const* long_name, char short_name, char const* value_name, char separator, bool hidden)
|
||||||
|
{
|
||||||
|
Option option {
|
||||||
|
true,
|
||||||
|
help_string,
|
||||||
|
long_name,
|
||||||
|
short_name,
|
||||||
|
value_name,
|
||||||
|
[&values, separator](char const* s) {
|
||||||
|
bool parsed_all_values = true;
|
||||||
|
|
||||||
|
StringView { s }.for_each_split_view(separator, false, [&](auto value) {
|
||||||
|
if (auto maybe_value = AK::StringUtils::convert_to_uint<size_t>(value); maybe_value.has_value())
|
||||||
|
values.append(*maybe_value);
|
||||||
|
else
|
||||||
|
parsed_all_values = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
return parsed_all_values;
|
||||||
|
},
|
||||||
|
hidden
|
||||||
|
};
|
||||||
|
|
||||||
|
add_option(move(option));
|
||||||
|
}
|
||||||
|
|
||||||
void ArgsParser::add_positional_argument(Arg&& arg)
|
void ArgsParser::add_positional_argument(Arg&& arg)
|
||||||
{
|
{
|
||||||
m_positional_args.append(move(arg));
|
m_positional_args.append(move(arg));
|
||||||
|
|
|
@ -80,6 +80,7 @@ public:
|
||||||
void add_option(double& value, char const* help_string, char const* long_name, char short_name, char const* value_name, bool hidden = false);
|
void add_option(double& value, char const* help_string, char const* long_name, char short_name, char const* value_name, bool hidden = false);
|
||||||
void add_option(Optional<double>& value, char const* help_string, char const* long_name, char short_name, char const* value_name, bool hidden = false);
|
void add_option(Optional<double>& value, char const* help_string, char const* long_name, char short_name, char const* value_name, bool hidden = false);
|
||||||
void add_option(Optional<size_t>& value, char const* help_string, char const* long_name, char short_name, char const* value_name, bool hidden = false);
|
void add_option(Optional<size_t>& value, char const* help_string, char const* long_name, char short_name, char const* value_name, bool hidden = false);
|
||||||
|
void add_option(Vector<size_t>& values, char const* help_string, char const* long_name, char short_name, char const* value_name, char separator = ',', bool hidden = false);
|
||||||
|
|
||||||
void add_positional_argument(Arg&&);
|
void add_positional_argument(Arg&&);
|
||||||
void add_positional_argument(char const*& value, char const* help_string, char const* name, Required required = Required::Yes);
|
void add_positional_argument(char const*& value, char const* help_string, char const* name, Required required = Required::Yes);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue