|
|
@@ -8,39 +8,6 @@
|
|
|
|
|
|
namespace program {
|
|
|
|
|
|
-template <typename Impl>
|
|
|
-template <typename T>
|
|
|
-Arguments<Impl>::Option::operator T() const {
|
|
|
- return (*this) ? convert<T>(self->options.at(name)) : T();
|
|
|
-}
|
|
|
-
|
|
|
-template <typename Impl> Arguments<Impl>::Option::operator bool() const {
|
|
|
- return primed() && self->options.count(name);
|
|
|
-}
|
|
|
-
|
|
|
-template <typename Impl>
|
|
|
-template <typename T>
|
|
|
-auto Arguments<Impl>::Option::operator=(T && value) {
|
|
|
- return WithDefault<Option, T>{*this, std::forward<T>(value)};
|
|
|
-}
|
|
|
-
|
|
|
-template <typename Impl> bool Arguments<Impl>::Option::primed() const {
|
|
|
- if (self->primed_) { return true; }
|
|
|
- std::vector<std::string> aliases{"--" + name};
|
|
|
- if (abbrev) { aliases.emplace_back(std::string{'-', abbrev}); }
|
|
|
- for (auto & alias : aliases) {
|
|
|
- if (!self->option_name_mapping.emplace(alias, name).second) {
|
|
|
- throw ArgumentStructureError("Duplicate option string", alias);
|
|
|
- }
|
|
|
- }
|
|
|
- self->option_descriptions.emplace(join("/", aliases), description);
|
|
|
- return false;
|
|
|
-}
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
-namespace program {
|
|
|
-
|
|
|
template <typename Impl>
|
|
|
template <typename T>
|
|
|
Arguments<Impl>::Argument::operator T() const {
|
|
|
@@ -78,6 +45,39 @@ template <typename Impl> bool Arguments<Impl>::Argument::primed() const {
|
|
|
|
|
|
}
|
|
|
|
|
|
+namespace program {
|
|
|
+
|
|
|
+template <typename Impl>
|
|
|
+template <typename T>
|
|
|
+Arguments<Impl>::Option::operator T() const {
|
|
|
+ return (*this) ? convert<T>(self->options.at(name)) : T();
|
|
|
+}
|
|
|
+
|
|
|
+template <typename Impl> Arguments<Impl>::Option::operator bool() const {
|
|
|
+ return primed() && self->options.count(name);
|
|
|
+}
|
|
|
+
|
|
|
+template <typename Impl>
|
|
|
+template <typename T>
|
|
|
+auto Arguments<Impl>::Option::operator=(T && value) {
|
|
|
+ return WithDefault<Option, T>{*this, std::forward<T>(value)};
|
|
|
+}
|
|
|
+
|
|
|
+template <typename Impl> bool Arguments<Impl>::Option::primed() const {
|
|
|
+ if (self->primed_) { return true; }
|
|
|
+ std::vector<std::string> aliases{"--" + name};
|
|
|
+ if (abbrev) { aliases.emplace_back(std::string{'-', abbrev}); }
|
|
|
+ for (auto & alias : aliases) {
|
|
|
+ if (!self->option_name_mapping.emplace(alias, name).second) {
|
|
|
+ throw ArgumentStructureError("Duplicate option string", alias);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ self->option_descriptions.emplace(join("/", aliases), description);
|
|
|
+ return false;
|
|
|
+}
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
#define arg_equals(str) !strncmp(argv[i], str, sizeof(str))
|
|
|
namespace program {
|
|
|
|