Skip to content

Commit

Permalink
Merge pull request #9746 from rouault/argparse_store_into_GIntBig
Browse files Browse the repository at this point in the history
ogrinfo and ogr2ogr: update to use store_into(GIntBig&)
  • Loading branch information
rouault committed Apr 24, 2024
2 parents 7a4ab2d + abb68af commit fdf6e96
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 14 deletions.
2 changes: 1 addition & 1 deletion apps/argparse/README.TXT
@@ -1,3 +1,3 @@
Provenance: https://github.com/p-ranav/argparse

Retrieved from https://github.com/p-ranav/argparse/blob/a1c41c5537c919c1a56661ec1cdf5a49b9e99af6/include/argparse/argparse.hpp
Retrieved from https://github.com/p-ranav/argparse/blob/e54e4592867cb9ddb86edd1f18f7f9c401abb170/include/argparse/argparse.hpp
11 changes: 6 additions & 5 deletions apps/argparse/argparse.hpp
Expand Up @@ -698,12 +698,13 @@ class Argument {
return *this;
}

auto &store_into(int &var) {
template <typename T, typename std::enable_if<std::is_integral<T>::value>::type * = nullptr>
auto &store_into(T &var) {
if (m_default_value.has_value()) {
var = std::any_cast<int>(m_default_value);
var = std::any_cast<T>(m_default_value);
}
action([&var](const auto &s) {
var = details::parse_number<int, details::radix_10>()(s);
var = details::parse_number<T, details::radix_10>()(s);
});
return *this;
}
Expand Down Expand Up @@ -1771,8 +1772,8 @@ class ArgumentParser {
void parse_args(const std::vector<std::string> &arguments) {
parse_args_internal(arguments);
// Check if all arguments are parsed
for (const auto &iter : m_argument_map) {
iter.second->validate();
for ([[maybe_unused]] const auto &[unused, argument] : m_argument_map) {
argument->validate();
}

// Check each mutually exclusive group and make sure
Expand Down
6 changes: 2 additions & 4 deletions apps/ogr2ogr_lib.cpp
Expand Up @@ -7395,8 +7395,7 @@ static std::unique_ptr<GDALArgumentParser> GDALVectorTranslateOptionsGetParser(

argParser->add_argument("-fid")
.metavar("<FID>")
.action([psOptions](const std::string &s)
{ psOptions->nFIDToFetch = CPLAtoGIntBig(s.c_str()); })
.store_into(psOptions->nFIDToFetch)
.help(_("If provided, only the feature with the specified feature id "
"will be processed."));

Expand Down Expand Up @@ -7445,8 +7444,7 @@ static std::unique_ptr<GDALArgumentParser> GDALVectorTranslateOptionsGetParser(

argParser->add_argument("-limit")
.metavar("<nb_features>")
.action([psOptions](const std::string &s)
{ psOptions->nLimit = CPLAtoGIntBig(s.c_str()); })
.store_into(psOptions->nLimit)
.help(_("Limit the number of features per layer."));

argParser->add_argument("-ds_transaction")
Expand Down
6 changes: 2 additions & 4 deletions apps/ogrinfo_lib.cpp
Expand Up @@ -2261,8 +2261,7 @@ static std::unique_ptr<GDALArgumentParser> GDALVectorInfoOptionsGetParser(

argParser->add_argument("-fid")
.metavar("<FID>")
.action([psOptions](const std::string &s)
{ psOptions->nFetchFID = CPLAtoGIntBig(s.c_str()); })
.store_into(psOptions->nFetchFID)
.help(_("Only the feature with this feature id will be reported."));

argParser->add_argument("-spat")
Expand Down Expand Up @@ -2328,8 +2327,7 @@ static std::unique_ptr<GDALArgumentParser> GDALVectorInfoOptionsGetParser(

argParser->add_argument("-limit")
.metavar("<nb_features>")
.action([psOptions](const std::string &s)
{ psOptions->nLimit = CPLAtoGIntBig(s.c_str()); })
.store_into(psOptions->nLimit)
.help(_("Limit the number of features per layer."));

argParser->add_argument("-fields")
Expand Down

0 comments on commit fdf6e96

Please sign in to comment.