diff -r 000000000000 -r caba269c3757 api.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api.cpp Thu Aug 31 12:51:20 2006 +0000 @@ -0,0 +1,147 @@ +#include "api.h" + +#include + +API::API() +{ + initCommand(); +} + +void API::initCommand() +{ + com=""; + paramList.clear(); + errorString=""; + noErr=true; +} + +void API::parseCommand (const QString &s) +{ + initCommand(); + QRegExp re; + int pos; + + // Get command + re.setPattern ("(.*)\\s"); + re.setMinimal (true); + pos=re.search (s); + if (pos>=0) + com=re.cap(1); + + // Get parameters + paramList.clear(); + re.setPattern ("\\((.*)\\)"); + pos=re.search (s); + if (pos>=0) + { + QString s=re.cap(1); + QString a; + bool inquote=false; + pos=0; + if (!s.isEmpty()) + { + while (pos paramList.count()) + { + errorString =QString("Parameter index %1 is outside of parameter list").arg(index); + noErr=false; + } else + { + paramList[index].toInt (&ok, 10); + if (!ok) + { + errorString=QString("Parameter %1 is not an integer").arg(index); + noErr=false; + } else + noErr=true; + } + return noErr; +} + +int API::parInt (bool &ok,const uint &index) +{ + if (checkParamIsInt (index)) + return paramList[index].toInt (&ok, 10); + ok=false; + return 0; +} + +QString API::parString (bool &ok,const uint &index) +{ + // return the string at index, this could be also stored in + // a variable later + QString r; + QRegExp re("\"(.*)\""); + int pos=re.search (paramList[index]); + if (pos>=0) + r=re.cap (1); + else + r=""; + ok=true; + return r; +}