From 3e6ea1d141e88c0eaae005bfbfc4b355f3230182 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Wed, 5 Mar 2025 00:19:43 +0100 Subject: [PATCH 1/2] Refactor: change passing args --- include/argparse.h | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/include/argparse.h b/include/argparse.h index acd8617e..bfd655bf 100644 --- a/include/argparse.h +++ b/include/argparse.h @@ -385,7 +385,7 @@ namespace argparse for (auto const & arg : m_arguments | std::views::filter([](auto && arg){ return !arg->is_positional(); })) { - args = arg->parse_args(std::move(args)); + arg->parse_args(args); } return args; @@ -396,7 +396,7 @@ namespace argparse for (auto const & arg : m_arguments | std::views::filter([](auto && arg){ return arg->is_positional(); })) { - args = arg->parse_args(std::move(args)); + arg->parse_args(args); } return args; @@ -568,7 +568,7 @@ namespace argparse } virtual ~Argument() = default; - virtual auto parse_args(tokens args) -> tokens = 0; + virtual auto parse_args(tokens & args) -> void = 0; virtual auto get_dest_name() const -> std::string = 0; virtual auto get_metavar_name() const -> std::string = 0; virtual auto has_value() const -> bool = 0; @@ -685,7 +685,7 @@ namespace argparse { } - auto parse_args(tokens args) -> tokens override + auto parse_args(tokens & args) -> void override { auto consumable = args | std::views::drop_while([](auto const & token) { return token.m_consumed; }); if (has_nargs()) @@ -706,8 +706,6 @@ namespace argparse m_value = consume_arg(consumable.front()); } } - - return args; } auto get_dest_name() const -> std::string override @@ -827,7 +825,7 @@ namespace argparse { } - auto parse_args(tokens args) -> tokens override + auto parse_args(tokens & args) -> void override { auto consumable = args | std::views::drop_while([](auto const & token) { return token.m_consumed; }) @@ -910,8 +908,6 @@ namespace argparse break; } } - - return args; } auto get_dest_name() const -> std::string override From b0d42add91074cc9b1790574ea42da00b268b1e7 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Wed, 5 Mar 2025 00:23:34 +0100 Subject: [PATCH 2/2] Refactor: change passing args --- include/argparse.h | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/include/argparse.h b/include/argparse.h index bfd655bf..1f89750a 100644 --- a/include/argparse.h +++ b/include/argparse.h @@ -316,9 +316,9 @@ namespace argparse auto parse_args(tokens args) -> Parameters { - args = parse_optional_arguments(std::move(args)); - args = remove_pseudo_arguments(std::move(args)); - args = parse_positional_arguments(std::move(args)); + parse_optional_arguments(args); + remove_pseudo_arguments(args); + parse_positional_arguments(args); ensure_no_unrecognised_arguments(args); ensure_no_arguments_excluded(); @@ -380,33 +380,27 @@ namespace argparse return result; } - auto parse_optional_arguments(tokens args) -> tokens + auto parse_optional_arguments(tokens & args) -> void { for (auto const & arg : m_arguments | std::views::filter([](auto && arg){ return !arg->is_positional(); })) { arg->parse_args(args); } - - return args; } - auto parse_positional_arguments(tokens args) -> tokens + auto parse_positional_arguments(tokens & args) -> void { for (auto const & arg : m_arguments | std::views::filter([](auto && arg){ return arg->is_positional(); })) { arg->parse_args(args); } - - return args; } - static auto remove_pseudo_arguments(tokens args) -> tokens + static auto remove_pseudo_arguments(tokens & args) -> void { std::erase(args, Token{"--"}); - - return args; } auto ensure_no_unrecognised_arguments(tokens const & args) const -> void