hyperion.ng
SwitchOption.h
1 #pragma once
2 
3 #include <QtCore>
4 #include "Option.h"
5 
6 namespace commandline
7 {
8 
9 template <class T>
10 class SwitchOption: public Option
11 {
12 public:
13  SwitchOption(const QString &name,
14  const QString &description = QString(),
15  const QString &valueName = QString(),
16  const QString &defaultValue = QString(),
17  const QMap<QString, T> &switches=QMap<QString, T>())
18  : Option(name, description, valueName, defaultValue), _switches(switches)
19  {}
20 
21  SwitchOption(const QStringList &names,
22  const QString &description = QString(),
23  const QString &valueName = QString(),
24  const QString &defaultValue = QString(),
25  const QMap<QString, T> &switches=QMap<QString, T>())
26  : Option(names, description, valueName, defaultValue), _switches(switches)
27  {}
28 
29  SwitchOption(const QCommandLineOption &other, const QMap<QString, T> &switches)
30  : Option(other), _switches(switches)
31  {}
32 
33  virtual ~SwitchOption() {}
34 
35  const QMap<QString, T> &getSwitches() const { return _switches; }
36  virtual bool validate(Parser &parser, QString &switch_) override { return hasSwitch(switch_); }
37  bool hasSwitch(const QString &switch_) { return _switches.contains(switch_.toLower()); }
38  void setSwitches(const QMap<QString, T> &_switches) { this->_switches = _switches; }
39  void addSwitch(const QString &switch_, T value=T()) { _switches[switch_.toLower()] = value; }
40  void removeSwitch(const QString &switch_) { _switches.remove(switch_.toLower()); }
41  T & switchValue(Parser & parser) { return _switches[value(parser).toLower()]; }
42 
43 protected:
44  QMap<QString, T> _switches;
45 };
46 
47 }
Definition: Option.h:13
Definition: SwitchOption.h:10
Definition: BooleanOption.h:8
Definition: Parser.h:19