summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cam/options.cpp50
-rw-r--r--src/cam/options.h28
2 files changed, 42 insertions, 36 deletions
diff --git a/src/cam/options.cpp b/src/cam/options.cpp
index 83601270..f48bd1fc 100644
--- a/src/cam/options.cpp
+++ b/src/cam/options.cpp
@@ -12,6 +12,32 @@
#include "options.h"
+template <typename T>
+bool OptionsBase<T>::valid() const
+{
+ return !values_.empty();
+}
+
+template <typename T>
+bool OptionsBase<T>::isSet(const T &opt) const
+{
+ return values_.find(opt) != values_.end();
+}
+
+template <typename T>
+const std::string &OptionsBase<T>::operator[](const T &opt) const
+{
+ return values_.find(opt)->second;
+}
+
+template <typename T>
+void OptionsBase<T>::clear()
+{
+ values_.clear();
+}
+
+template class OptionsBase<int>;
+
void OptionsParser::addOption(int opt, const char *help, const char *name,
OptionArgument argument, const char *argumentName)
{
@@ -166,27 +192,3 @@ void OptionsParser::usage()
}
}
}
-
-OptionsParser::Options::Options()
-{
-}
-
-bool OptionsParser::Options::valid() const
-{
- return !values_.empty();
-}
-
-bool OptionsParser::Options::isSet(int opt) const
-{
- return values_.find(opt) != values_.end();
-}
-
-const std::string &OptionsParser::Options::operator[](int opt) const
-{
- return values_.find(opt)->second;
-}
-
-void OptionsParser::Options::clear()
-{
- values_.clear();
-}
diff --git a/src/cam/options.h b/src/cam/options.h
index 6d1b12d2..2bf1f160 100644
--- a/src/cam/options.h
+++ b/src/cam/options.h
@@ -28,21 +28,25 @@ struct Option {
bool hasLongOption() const { return name != nullptr; }
};
+template <typename T>
+class OptionsBase
+{
+public:
+ bool valid() const;
+ bool isSet(const T &opt) const;
+ const std::string &operator[](const T &opt) const;
+
+private:
+ friend class OptionsParser;
+ std::map<T, std::string> values_;
+ void clear();
+};
+
class OptionsParser
{
public:
- class Options {
- public:
- Options();
-
- bool valid() const;
- bool isSet(int opt) const;
- const std::string &operator[](int opt) const;
-
- private:
- friend class OptionsParser;
- std::map<int, std::string> values_;
- void clear();
+ class Options : public OptionsBase<int>
+ {
};
void addOption(int opt, const char *help, const char *name = nullptr,