From c14de8a09210b94db2ca4f0aea9c37f06622daa8 Mon Sep 17 00:00:00 2001 From: Long Deng Date: Fri, 3 Dec 2021 16:20:32 +0800 Subject: [PATCH] Solve arguments() showing empty keys when exsiting short-only option --- include/cxxopts.hpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/include/cxxopts.hpp b/include/cxxopts.hpp index d247ba7..868d23d 100644 --- a/include/cxxopts.hpp +++ b/include/cxxopts.hpp @@ -1287,6 +1287,13 @@ namespace cxxopts return m_long; } + CXXOPTS_NODISCARD + const std::string& + essential_name() const + { + return m_long.empty() ? m_short : m_long; + } + size_t hash() const { @@ -2150,7 +2157,7 @@ OptionParser::parse_default(const std::shared_ptr& details) // TODO: remove the duplicate code here auto& store = m_parsed[details->hash()]; store.parse_default(details); - m_defaults.emplace_back(details->long_name(), details->value().get_default_value()); + m_defaults.emplace_back(details->essential_name(), details->value().get_default_value()); } inline @@ -2174,7 +2181,7 @@ OptionParser::parse_option auto& result = m_parsed[hash]; result.parse(value, arg); - m_sequential.emplace_back(value->long_name(), arg); + m_sequential.emplace_back(value->essential_name(), arg); } inline