#ifndef HYPERION_OPTION_H #define HYPERION_OPTION_H #include #include namespace commandline { class Parser; /* Note, this class and all it's derivatives store the validated results for caching. This means that unlike the * regular QCommandLineOption it is _not_ idempotent! */ class Option: public QCommandLineOption { protected: QString _error; public: Option(const QString &name, const QString &description = QString(), const QString &valueName = QString::null, const QString &defaultValue = QString() ) : QCommandLineOption(name, description, valueName, defaultValue) {} Option(const QStringList &names, const QString &description = QString(), const QString &valueName = QString::null, const QString &defaultValue = QString() ) : QCommandLineOption(names, description, valueName, defaultValue) {} Option(const QCommandLineOption &other) : QCommandLineOption(other) {} virtual bool validate(Parser &parser, QString &value); QString name() { return this->names().last();} QString getError() { return this->_error; } QString value(Parser &parser); std::string getStdString(Parser &parser); std::wstring getStdWString(Parser &parser); const char* getCString(Parser &parser); }; } #endif //HYPERION_OPTION_H