insilmaril@0: #include "options.h" insilmaril@0: #include insilmaril@0: insilmaril@0: #include insilmaril@0: insilmaril@0: using namespace std; insilmaril@0: insilmaril@0: insilmaril@0: Option::Option() insilmaril@0: { insilmaril@0: name=""; insilmaril@0: sName=""; insilmaril@0: lName=""; insilmaril@0: type=SwitchOption; insilmaril@0: sarg=""; insilmaril@0: active=false; insilmaril@0: } insilmaril@0: insilmaril@0: void Option::set(const QString &n, const OptionType &t, const QString &s, const QString &l) insilmaril@0: { insilmaril@0: sName="-"+s; insilmaril@0: lName="--"+l; insilmaril@0: type=t; insilmaril@0: name=n; insilmaril@0: } insilmaril@0: insilmaril@0: QString Option::getName () { return name; } insilmaril@0: QString Option::getShort () { return sName; } insilmaril@0: QString Option::getLong() { return lName; } insilmaril@0: OptionType Option::getType() { return type; } insilmaril@0: void Option::setArg(const QString& s) { sarg=s; } insilmaril@0: QString Option::getArg() { return sarg; } insilmaril@0: void Option::setActive() { active=true; } insilmaril@0: bool Option::isActive() { return active; } insilmaril@0: insilmaril@0: /////////////////////////////////////////////////////////////// insilmaril@0: Options::Options() {} insilmaril@0: insilmaril@0: int Options::parse() insilmaril@0: { insilmaril@0: QStringList arglist; insilmaril@0: int i=0; insilmaril@0: while (iargc()) insilmaril@0: { insilmaril@0: arglist.append (qApp->argv()[i]); insilmaril@0: i++; insilmaril@0: } insilmaril@0: insilmaril@0: // Get program name insilmaril@0: progname=arglist.first(); insilmaril@0: arglist.pop_front(); insilmaril@0: insilmaril@0: // Work through rest of options insilmaril@0: bool isFile; insilmaril@0: OptionList::iterator itopt; insilmaril@0: QStringList::iterator itarg; insilmaril@0: itarg=arglist.begin(); insilmaril@0: while (itarg!=arglist.end()) insilmaril@0: { insilmaril@0: isFile=true; insilmaril@0: if ((*itarg).left(1)=="-") insilmaril@0: { insilmaril@0: // Compare given option to all defined options insilmaril@0: itopt=optlist.begin(); insilmaril@0: while (itopt!=optlist.end()) insilmaril@0: { insilmaril@0: if ((*itarg)==(*itopt).getShort() || insilmaril@0: (*itarg)==(*itopt).getLong()) insilmaril@0: { insilmaril@0: (*itopt).setActive(); insilmaril@0: isFile=false; insilmaril@0: if ((*itopt).getType()==StringOption) insilmaril@0: { insilmaril@0: itarg++; insilmaril@0: if (itarg==arglist.end()) insilmaril@0: { insilmaril@0: cout << "Error: argument to option missing\n"; insilmaril@0: return 1; insilmaril@0: } insilmaril@0: (*itopt).setArg (*itarg); insilmaril@0: isFile=false; insilmaril@0: } insilmaril@0: break; insilmaril@0: } insilmaril@0: itopt++; insilmaril@0: } insilmaril@0: if (isFile) insilmaril@0: { insilmaril@0: cout << "Error: Unknown argument "<<*itarg<