Solve arguments() showing empty keys when exsiting short-only option

This commit is contained in:
Long Deng 2021-12-03 16:20:32 +08:00
parent ad2d1a6b5f
commit c14de8a092

View File

@ -1287,6 +1287,13 @@ namespace cxxopts
return m_long; return m_long;
} }
CXXOPTS_NODISCARD
const std::string&
essential_name() const
{
return m_long.empty() ? m_short : m_long;
}
size_t size_t
hash() const hash() const
{ {
@ -2150,7 +2157,7 @@ OptionParser::parse_default(const std::shared_ptr<OptionDetails>& details)
// TODO: remove the duplicate code here // TODO: remove the duplicate code here
auto& store = m_parsed[details->hash()]; auto& store = m_parsed[details->hash()];
store.parse_default(details); 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 inline
@ -2174,7 +2181,7 @@ OptionParser::parse_option
auto& result = m_parsed[hash]; auto& result = m_parsed[hash];
result.parse(value, arg); result.parse(value, arg);
m_sequential.emplace_back(value->long_name(), arg); m_sequential.emplace_back(value->essential_name(), arg);
} }
inline inline