Add operator bool for ArgumentParser

This allows checking whether user input was processed into the parser
or any attached subparsers.

Closes #212

Signed-off-by: Sean Robinson <sean.robinson@scottsdalecc.edu>
This commit is contained in:
Sean Robinson
2022-10-07 14:04:43 -07:00
parent e9ae471ea4
commit f710bbdacf
4 changed files with 109 additions and 1 deletions
+15
View File
@@ -1104,6 +1104,21 @@ public:
return *this;
}
explicit operator bool() const {
auto arg_used = std::any_of(m_argument_map.cbegin(),
m_argument_map.cend(),
[](auto &it) {
return it.second->m_is_used;
});
auto subparser_used = std::any_of(m_subparser_used.cbegin(),
m_subparser_used.cend(),
[](auto &it) {
return it.second;
});
return m_is_parsed && (arg_used || subparser_used);
}
// Parameter packing
// Call add_argument with variadic number of string arguments
template <typename... Targs> Argument &add_argument(Targs... f_args) {