|
|
@@ -111,7 +111,11 @@ template <typename Impl> auto Arguments<Impl>::Flag::operator=(bool && value) {
|
|
|
|
|
|
template <typename Impl> bool Arguments<Impl>::Flag::primed(bool inv) const {
|
|
|
if (self->primed_) { return self->flags.count(name); }
|
|
|
- self->add_options(name, abbrev, description, std::vector(inv, "no-" + name));
|
|
|
+ std::vector<std::string> aliases;
|
|
|
+ if (name.size() > 1 && inv) {
|
|
|
+ aliases.push_back("no-" + name);
|
|
|
+ }
|
|
|
+ self->add_options(name, abbrev, description, aliases);
|
|
|
self->flag_names.emplace(name);
|
|
|
return false;
|
|
|
}
|
|
|
@@ -227,7 +231,7 @@ void Arguments<Impl>::add_options(std::string const & name, char abbrev,
|
|
|
for (auto & str : aliases) {
|
|
|
str = "--" + str;
|
|
|
}
|
|
|
- aliases.push_back("--" + name);
|
|
|
+ if (name.size() > 1) { aliases.push_back("--" + name); }
|
|
|
if (abbrev) { aliases.push_back(std::string{'-', abbrev}); }
|
|
|
for (auto & str : aliases) {
|
|
|
if (!option_names.emplace(str, name).second) {
|
|
|
@@ -254,39 +258,46 @@ bool Arguments<Impl>::is_flag(std::string const & arg) const {
|
|
|
}
|
|
|
|
|
|
template <typename Impl>
|
|
|
-auto Arguments<Impl>::action(std::string const & name,
|
|
|
- std::string const & description) {
|
|
|
+auto Arguments<Impl>::action(LongArg name, std::string const & description) {
|
|
|
return Action{this, name, description};
|
|
|
}
|
|
|
|
|
|
template <typename Impl>
|
|
|
-auto Arguments<Impl>::argument(size_t index, std::string const & name,
|
|
|
+auto Arguments<Impl>::argument(size_t index, LongArg name,
|
|
|
std::string const & description) {
|
|
|
return Argument{this, index, false, name, description};
|
|
|
}
|
|
|
|
|
|
template <typename Impl>
|
|
|
-auto Arguments<Impl>::flag(std::string const & name,
|
|
|
- std::string const & description) {
|
|
|
+auto Arguments<Impl>::flag(LongArg name, std::string const & description) {
|
|
|
return Flag{this, name, 0, description, false};
|
|
|
}
|
|
|
|
|
|
template <typename Impl>
|
|
|
-auto Arguments<Impl>::flag(std::string const & name, char abbrev,
|
|
|
+auto Arguments<Impl>::flag(LongArg name, char abbrev,
|
|
|
std::string const & description) {
|
|
|
return Flag{this, name, abbrev, description, false};
|
|
|
}
|
|
|
|
|
|
template <typename Impl>
|
|
|
-auto Arguments<Impl>::option(std::string const & name,
|
|
|
- std::string const & description) {
|
|
|
+auto Arguments<Impl>::flag(char abbrev, std::string const & description) {
|
|
|
+ return Flag{this, {abbrev}, abbrev, description, false};
|
|
|
+}
|
|
|
+
|
|
|
+template <typename Impl>
|
|
|
+auto Arguments<Impl>::option(LongArg name, std::string const & description) {
|
|
|
return Option{this, name, 0, description};
|
|
|
}
|
|
|
|
|
|
template <typename Impl>
|
|
|
-auto Arguments<Impl>::option(std::string const & name, char abbrev,
|
|
|
+auto Arguments<Impl>::option(LongArg name, char abbrev,
|
|
|
std::string const & description) {
|
|
|
return Option{this, name, abbrev, description};
|
|
|
}
|
|
|
|
|
|
+template <typename Impl>
|
|
|
+auto Arguments<Impl>::option(char abbrev, std::string const & description) {
|
|
|
+ return Option{this, {abbrev}, abbrev, description};
|
|
|
+}
|
|
|
+
|
|
|
}
|