insilmaril@18: #include "api.h" insilmaril@18: insilmaril@18: #include insilmaril@18: insilmaril@18: API::API() insilmaril@18: { insilmaril@18: initCommand(); insilmaril@18: } insilmaril@18: insilmaril@18: void API::initCommand() insilmaril@18: { insilmaril@18: com=""; insilmaril@18: paramList.clear(); insilmaril@18: errorString=""; insilmaril@18: noErr=true; insilmaril@18: } insilmaril@18: insilmaril@18: void API::parseCommand (const QString &s) insilmaril@18: { insilmaril@18: initCommand(); insilmaril@18: QRegExp re; insilmaril@18: int pos; insilmaril@18: insilmaril@18: // Get command insilmaril@18: re.setPattern ("(.*)\\s"); insilmaril@18: re.setMinimal (true); insilmaril@18: pos=re.search (s); insilmaril@18: if (pos>=0) insilmaril@18: com=re.cap(1); insilmaril@18: insilmaril@18: // Get parameters insilmaril@18: paramList.clear(); insilmaril@18: re.setPattern ("\\((.*)\\)"); insilmaril@18: pos=re.search (s); insilmaril@18: if (pos>=0) insilmaril@18: { insilmaril@18: QString s=re.cap(1); insilmaril@18: QString a; insilmaril@18: bool inquote=false; insilmaril@18: pos=0; insilmaril@18: if (!s.isEmpty()) insilmaril@18: { insilmaril@18: while (pos paramList.count()) insilmaril@18: { insilmaril@18: errorString =QString("Parameter index %1 is outside of parameter list").arg(index); insilmaril@18: noErr=false; insilmaril@18: } else insilmaril@18: { insilmaril@18: paramList[index].toInt (&ok, 10); insilmaril@18: if (!ok) insilmaril@18: { insilmaril@18: errorString=QString("Parameter %1 is not an integer").arg(index); insilmaril@18: noErr=false; insilmaril@18: } else insilmaril@18: noErr=true; insilmaril@18: } insilmaril@18: return noErr; insilmaril@18: } insilmaril@18: insilmaril@18: int API::parInt (bool &ok,const uint &index) insilmaril@18: { insilmaril@18: if (checkParamIsInt (index)) insilmaril@18: return paramList[index].toInt (&ok, 10); insilmaril@18: ok=false; insilmaril@18: return 0; insilmaril@18: } insilmaril@18: insilmaril@18: QString API::parString (bool &ok,const uint &index) insilmaril@18: { insilmaril@18: // return the string at index, this could be also stored in insilmaril@18: // a variable later insilmaril@18: QString r; insilmaril@18: QRegExp re("\"(.*)\""); insilmaril@18: int pos=re.search (paramList[index]); insilmaril@18: if (pos>=0) insilmaril@18: r=re.cap (1); insilmaril@18: else insilmaril@18: r=""; insilmaril@18: ok=true; insilmaril@18: return r; insilmaril@18: }