diff options
author | Niklas Söderlund <niklas.soderlund@ragnatech.se> | 2019-01-28 00:35:12 +0100 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-02-01 11:41:55 +0200 |
commit | c6468e45d1dedb295f6e67b3a49d2d4f4dfeee1c (patch) | |
tree | 8339946ea925852335c2d08e65df9cbaa0571cef /src/cam/options.h | |
parent | 377516a084467692cb275526a16d43b25f773e46 (diff) |
cam: options: Create a template class for options
In preparation to adding more parsers create a template class to hold
the parsed information. The rational for making it a template are that
different parsers can index the options using different data types.
The OptionsParser index its options using an int while the upcoming
KeyValyeParser will index its options using strings for example.
Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/cam/options.h')
-rw-r--r-- | src/cam/options.h | 28 |
1 files changed, 16 insertions, 12 deletions
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, |