From 9eb1fe5cefa7b87e7f9d1c371e5eaf763d7955a3 Mon Sep 17 00:00:00 2001 From: Sean Robinson Date: Mon, 7 Feb 2022 14:29:25 -0700 Subject: [PATCH] Enable clang-tidy readability-magic-numbers check Adds names for integer bases used with details::parse_number. Signed-off-by: Sean Robinson --- .clang-tidy | 1 - include/argparse/argparse.hpp | 22 +++++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index e099fa8..812baac 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -3,7 +3,6 @@ Checks: readability-*, -readability-else-after-return, -readability-function-cognitive-complexity, - -readability-magic-numbers, -readability-named-parameter, -readability-qualified-auto, -readability-static-accessed-through-instance, diff --git a/include/argparse/argparse.hpp b/include/argparse/argparse.hpp index 317ed2b..ec27b9d 100644 --- a/include/argparse/argparse.hpp +++ b/include/argparse/argparse.hpp @@ -140,6 +140,10 @@ constexpr bool standard_unsigned_integer = true; } // namespace +constexpr int radix_8 = 8; +constexpr int radix_10 = 10; +constexpr int radix_16 = 16; + template constexpr bool standard_integer = standard_signed_integer || standard_unsigned_integer; @@ -219,10 +223,10 @@ template struct parse_number { } }; -template struct parse_number { +template struct parse_number { auto operator()(std::string_view s) -> T { if (auto [ok, rest] = consume_hex_prefix(s); ok) { - return do_from_chars(rest); + return do_from_chars(rest); } else { throw std::invalid_argument{"pattern not found"}; } @@ -232,11 +236,11 @@ template struct parse_number { template struct parse_number { auto operator()(std::string_view s) -> T { if (auto [ok, rest] = consume_hex_prefix(s); ok) { - return do_from_chars(rest); + return do_from_chars(rest); } else if (starts_with("0"sv, s)) { - return do_from_chars(rest); + return do_from_chars(rest); } else { - return do_from_chars(rest); + return do_from_chars(rest); } } }; @@ -418,18 +422,18 @@ public: }; if constexpr (is_one_of(Shape, 'd') && details::standard_integer) { - action(details::parse_number()); + action(details::parse_number()); } else if constexpr (is_one_of(Shape, 'i') && details::standard_integer) { action(details::parse_number()); } else if constexpr (is_one_of(Shape, 'u') && details::standard_unsigned_integer) { - action(details::parse_number()); + action(details::parse_number()); } else if constexpr (is_one_of(Shape, 'o') && details::standard_unsigned_integer) { - action(details::parse_number()); + action(details::parse_number()); } else if constexpr (is_one_of(Shape, 'x', 'X') && details::standard_unsigned_integer) { - action(details::parse_number()); + action(details::parse_number()); } else if constexpr (is_one_of(Shape, 'a', 'A') && std::is_floating_point_v) { action(details::parse_number());