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;
}
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<OptionDetails>& 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