From 6edb57512a8d29930ef715de7b06fe6341b0167e Mon Sep 17 00:00:00 2001 From: dimbo4ka Date: Wed, 13 Aug 2025 20:50:23 +0300 Subject: [PATCH] refactor: change integer argument type from int32 to int64 --- bin/main.cpp | 4 ++-- include/ArgParser/ArgParser.hpp | 4 ++-- include/Argument/Argument.hpp | 4 ++-- src/ArgParser/ArgParser.cpp | 10 +++++----- tests/argparser_test.cpp | 8 ++++---- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/bin/main.cpp b/bin/main.cpp index b65e17b..cc72de9 100644 --- a/bin/main.cpp +++ b/bin/main.cpp @@ -11,12 +11,12 @@ struct Options { int main(int argc, char** argv) { Options opt; - std::vector values; + std::vector values; ArgumentParser::ArgParser parser("Program"); parser.AddIntArgument("N").MultiValue(1).Positional().StoreValues(values); parser.AddFlag("sum", "add args").StoreValue(opt.sum); - parser.AddFlag("mult", "multiply args").StoreValue(opt.mult); + parser.AddFlag('m', "mult", "multiply args").StoreValue(opt.mult); parser.AddHelp('h', "help", "Program accumulate arguments"); if(!parser.Parse(argc, argv)) { diff --git a/include/ArgParser/ArgParser.hpp b/include/ArgParser/ArgParser.hpp index e48f4b6..f58bb19 100644 --- a/include/ArgParser/ArgParser.hpp +++ b/include/ArgParser/ArgParser.hpp @@ -23,7 +23,7 @@ class ArgParser { IntArg& AddIntArgument(char, std::string, std::string = ""); IntArg& AddIntArgument(std::string, std::string = ""); - int32_t GetIntValue(const std::string&, std::size_t = 0) const; + int64_t GetIntValue(const std::string&, std::size_t = 0) const; FlagArg& AddFlag(char, std::string, std::string = ""); FlagArg& AddFlag(std::string, std::string = ""); @@ -110,7 +110,7 @@ class ArgParser { bool IsCorrectMultiValue() const; bool AllHaveValues() const; - bool ConvertToNumber(const char* str, int32_t& number); + bool ConvertToNumber(const char* str, int64_t& number); }; template diff --git a/include/Argument/Argument.hpp b/include/Argument/Argument.hpp index 58659de..d5bf2fa 100644 --- a/include/Argument/Argument.hpp +++ b/include/Argument/Argument.hpp @@ -61,7 +61,7 @@ class Argument : public BaseArgument { using StringArg = Argument; using FlagArg = Argument; -using IntArg = Argument; +using IntArg = Argument; template Argument::Argument() @@ -135,7 +135,7 @@ template ArgumentType Argument::GetType() const { if constexpr (std::is_same_v) { return ArgumentType::kString; - } else if constexpr (std::is_same_v) { + } else if constexpr (std::is_same_v) { return ArgumentType::kInt; } else if constexpr (std::is_same_v) { return ArgumentType::kFlag; diff --git a/src/ArgParser/ArgParser.cpp b/src/ArgParser/ArgParser.cpp index fcb2961..c8e3482 100644 --- a/src/ArgParser/ArgParser.cpp +++ b/src/ArgParser/ArgParser.cpp @@ -35,7 +35,7 @@ IntArg& ArgParser::AddIntArgument(std::string full_name, std::string description return AddArgument(); } -int32_t ArgParser::GetIntValue(const std::string& full_name, std::size_t index) const { +int64_t ArgParser::GetIntValue(const std::string& full_name, std::size_t index) const { return GetArgumentAs(full_name, ArgumentType::kInt).GetValue(index); } @@ -237,7 +237,7 @@ bool ArgParser::ParseIntArgument(ParseContext& ctx) { ArgPtr& argument = GetArgument(ctx.full_name); if (!NextValueExists(ctx)) return false; - int32_t number; + int64_t number; const char* value_str = ctx.is_named ? ctx.args[ctx.index].c_str() + ctx.equal_pos + 1 : ctx.args[++ctx.index].c_str(); @@ -310,13 +310,13 @@ bool ArgParser::ParsePositionalStringArgument(ArgPtr& argument, const std::strin } bool ArgParser::ParsePositionalIntArgument(ArgPtr& argument, const std::string& str) { - int32_t number; + int64_t number; if (!ConvertToNumber(str.c_str(), number)) { std::cerr << "Invalid integer value for argument: " << positional_argument_name_ << std::endl; return false; } - dynamic_cast&>(*argument).AddValue(number); + dynamic_cast&>(*argument).AddValue(number); return true; } @@ -372,7 +372,7 @@ bool ArgParser::ParseShortFlags(const std::string& arg) { return true; } -bool ArgParser::ConvertToNumber(const char* str, int32_t& number) { +bool ArgParser::ConvertToNumber(const char* str, int64_t& number) { auto [_, ec] = std::from_chars(str, str + strlen(str), number); return ec == std::errc{}; } diff --git a/tests/argparser_test.cpp b/tests/argparser_test.cpp index 4bd7390..efb7b98 100644 --- a/tests/argparser_test.cpp +++ b/tests/argparser_test.cpp @@ -91,7 +91,7 @@ TEST(ArgParserTestSuite, IntTest) { TEST(ArgParserTestSuite, MultiValueTest) { ArgParser parser("My Parser"); - std::vector int_values; + std::vector int_values; parser.AddIntArgument('p', "param1").MultiValue().StoreValues(int_values); ASSERT_TRUE(parser.Parse(SplitString("app --param1=1 --param1=2 --param1=3"))); @@ -103,7 +103,7 @@ TEST(ArgParserTestSuite, MultiValueTest) { TEST(ArgParserTestSuite, MinCountMultiValueTest) { ArgParser parser("My Parser"); - std::vector int_values; + std::vector int_values; size_t MinArgsCount = 10; parser.AddIntArgument('p', "param1").MultiValue(MinArgsCount).StoreValues(int_values); @@ -136,7 +136,7 @@ TEST(ArgParserTestSuite, FlagsTest) { TEST(ArgParserTestSuite, PositionalArgTest) { ArgParser parser("My Parser"); - std::vector values; + std::vector values; parser.AddIntArgument("Param1").MultiValue(1).Positional().StoreValues(values); ASSERT_TRUE(parser.Parse(SplitString("app 1 2 3 4 5"))); @@ -148,7 +148,7 @@ TEST(ArgParserTestSuite, PositionalArgTest) { TEST(ArgParserTestSuite, PositionalAndNormalArgTest) { ArgParser parser("My Parser"); - std::vector values; + std::vector values; parser.AddFlag('f', "flag", "Flag"); parser.AddIntArgument('n', "number", "Some Number"); parser.AddIntArgument("Param1").MultiValue(1).Positional().StoreValues(values);