template get positional arg

This commit is contained in:
ackimixs
2024-05-20 13:01:32 +02:00
parent 2ab9feb6e9
commit ca71a11109

View File

@@ -13,6 +13,10 @@ public:
[[nodiscard]] bool hasOption(const std::string& option) const;
[[nodiscard]] std::optional<std::string> getOption(const std::string& option) const;
[[nodiscard]] std::string getOption(const std::string& option, const std::string& defaultValue) const;
template <typename T>
[[nodiscard]] T getOption(const std::string& option, T defaultValue) const {
if (!hasOption(option)) {
@@ -39,14 +43,23 @@ public:
}
}
[[nodiscard]] std::optional<std::string> getOption(const std::string& option) const;
[[nodiscard]] std::string getOption(const std::string& option, const std::string& defaultValue) const;
[[nodiscard]] bool hasPositionalArgument(int index) const;
[[nodiscard]] std::string getPositionalArgument(int index) const;
template <typename T>
[[nodiscard]] T getPositionalArgument(int index) const {
if (!hasPositionalArgument(index)) {
return T();
}
try {
return static_cast<T>(std::stod(_argv[index]));
} catch (std::exception& e) {
return T();
}
}
[[nodiscard]] int positionalArgumentsCount() const;
~CLParser();