QVariant CLIOptions::value(const QString &name) const { Option opt = option(name, qf::core::Exception::Throw); QVariant ret = opt.value(); if(!ret.isValid()) ret = opt.defaultValue(); if(!ret.isValid()) ret = QVariant(opt.type()); return ret; }
void CLIOptions::printHelp(QTextStream& os) const { os << applicationName() << " [OPTIONS]" << endl << endl; os << "OPTIONS:" << endl << endl; QMapIterator<QString, Option> it(m_options); while(it.hasNext()) { it.next(); Option opt = it.value(); os << opt.names().join(", "); if(opt.type() != QVariant::Bool) { if(opt.type() == QVariant::Int || opt.type() == QVariant::Double) os << " " << "number"; else os << " " << "'string'"; } os << ':'; QVariant def_val = opt.defaultValue(); if(def_val.isValid()) os << " [default(" << def_val.toString() << ")]"; if(opt.isMandatory()) os << " [MANDATORY]"; os << endl; QString oc = opt.comment(); if(!oc.isEmpty()) os << "\t" << opt.comment() << endl; } }