From 14a267347cfdcb41f2dad70ce0694b390a77151b Mon Sep 17 00:00:00 2001 From: mjz19910 Date: Sun, 16 Jan 2022 18:06:07 -0700 Subject: [PATCH] LibCore: Add ArgsParser::add_option for Optional double --- Userland/Libraries/LibCore/ArgsParser.cpp | 17 +++++++++++++++++ Userland/Libraries/LibCore/ArgsParser.h | 1 + 2 files changed, 18 insertions(+) diff --git a/Userland/Libraries/LibCore/ArgsParser.cpp b/Userland/Libraries/LibCore/ArgsParser.cpp index f37e0a7d9b..64d3207e52 100644 --- a/Userland/Libraries/LibCore/ArgsParser.cpp +++ b/Userland/Libraries/LibCore/ArgsParser.cpp @@ -1,5 +1,6 @@ /* * Copyright (c) 2020, Sergey Bugaev + * Copyright (c) 2022, Matthias Zimmerman * * SPDX-License-Identifier: BSD-2-Clause */ @@ -467,6 +468,22 @@ void ArgsParser::add_option(double& value, const char* help_string, const char* 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 = convert_to_double(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 ffeafeb46b..ad6cc2212b 100644 --- a/Userland/Libraries/LibCore/ArgsParser.h +++ b/Userland/Libraries/LibCore/ArgsParser.h @@ -77,6 +77,7 @@ public: 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_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);