find_arg cleanup

master
Daniel Kolesa 2017-05-21 15:08:23 +02:00
parent d1fbf02c42
commit 61fcdd4144
1 changed files with 5 additions and 17 deletions

View File

@ -326,20 +326,13 @@ struct arg_description_container {
protected:
arg_description_container() {}
arg_description *find_arg_ptr(string_range name) {
for (auto &p: p_opts) {
if (p->is_arg(name)) {
return &*p;
}
}
return nullptr;
}
template<typename AT>
AT &find_arg(string_range name) {
auto p = static_cast<AT *>(find_arg_ptr(name));
if (p) {
return *p;
for (auto &p: p_opts) {
auto *pp = static_cast<AT *>(p.get());
if (pp && pp->is_arg(name)) {
return *pp;
}
}
throw arg_error{format(
appender<std::string>(), "unknown argument '%s'", name
@ -414,11 +407,6 @@ struct basic_arg_parser: arg_description_container {
return find_arg<arg_argument>(name);
}
std::size_t used(string_range name) {
auto &arg = find_arg<arg_optional>(name);
return arg.p_used;
}
string_range get_progname() const {
return p_progname;
}