#ifndef HYPERION_SWITCHCOMMANDLINEOPTION_H #define HYPERION_SWITCHCOMMANDLINEOPTION_H #include #include "Option.h" namespace commandline { template class SwitchOption: public Option { protected: QMap _switches; public: SwitchOption(const QString &name, const QString &description = QString(), const QString &valueName = QString(), const QString &defaultValue = QString(), const QMap &switches=QMap()) : Option(name, description, valueName, defaultValue), _switches(switches) {} SwitchOption(const QStringList &names, const QString &description = QString(), const QString &valueName = QString(), const QString &defaultValue = QString(), const QMap &switches=QMap()) : Option(names, description, valueName, defaultValue), _switches(switches) {} SwitchOption(const QCommandLineOption &other, const QMap &switches) : Option(other), _switches(switches) {} const QMap &getSwitches() const{return _switches;}; virtual bool validate(Parser &parser, QString &switch_) override{return hasSwitch(switch_);} bool hasSwitch(const QString &switch_){return _switches.contains(switch_.toLower());} void setSwitches(const QMap &_switches){this->_switches = _switches;} void addSwitch(const QString &switch_, T value=T()){_switches[switch_.toLower()] = value;} void removeSwitch(const QString &switch_){_switches.remove(switch_.toLower());} T & switchValue(Parser & parser){return _switches[value(parser).toLower()];} }; } #endif //HYPERION_SWITCHCOMMANDLINEOPTION_H