All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Brief description of class still missing. More...
#include <ExpressionString.h>
Public Member Functions | |
| void | clear () |
| bool | setPattern (QString pattern, ExpressionContext *context) |
| QString | value () |
| ~ExpressionString () | |
Brief description of class still missing.
String containing header formulas between {Return=...}
| QGpCoreTools::ExpressionString::~ExpressionString | ( | ) | [inline] |
{clear();}
References TRACE.
Referenced by SourceCoordinates::initLookup().
{
TRACE;
for(QList<ExpressionActions>::iterator ite=_engines.begin();ite!=_engines.end();ite++ ) {
qDeleteAll(*ite);
}
_engines.clear();
}
| bool QGpCoreTools::ExpressionString::setPattern | ( | QString | pattern, |
| ExpressionContext * | context | ||
| ) |
References QGpCoreTools::StringSection::appendTo(), QGpCoreTools::endl(), QGpCoreTools::ExpressionParser::parse(), QGpCoreTools::App::stream(), QGpCoreTools::tr(), and TRACE.
Referenced by GeopsyMainWindow::createNewGroup(), and SourceCoordinates::initLookup().
{
TRACE;
_pattern="";
const QChar * startExpression=0;
const QChar * startString=pattern.data();
const QChar * ptr=startString;
while(true) {
switch (ptr->unicode()) {
case 0x0000: // '\0'
if(startString) {
StringSection(startString, ptr).appendTo(_pattern);
} else if(startExpression) {
App::stream() << tr("Unmatched '{' before reaching the end of buffer") << endl;
return false;
}
return true;
case 0x007B: // '{'
StringSection(startString, ptr).appendTo(_pattern);
startExpression=ptr+1;
startString=0;
break;
case 0x007D: // '}'
{
ExpressionParser p;
ExpressionActions e=p.parse(StringSection(startExpression, ptr).toString(), context);
if(e.isEmpty()) {
return false;
}
_pattern += "%"+QString::number(_engines.count());
_engines.append(e);
}
startExpression=0;
startString=ptr+1;
break;
case 0x0022: // '"'
if(startExpression) {
if(!skipString(ptr)) return false;
}
break;
default:
break;
}
ptr++;
}
}
| QString QGpCoreTools::ExpressionString::value | ( | ) |
References QGpCoreTools::ExpressionActions::context(), TRACE, and QGpCoreTools::ExpressionContext::variableValue().
Referenced by SourceCoordinates::keyName().
{
TRACE;
QString s=_pattern;
for(QList<ExpressionActions>::iterator ite=_engines.begin();ite!=_engines.end();ite++ ) {
ExpressionActions& a=*ite;
for(ExpressionActions::iterator ita=a.begin();ita!=a.end();++ita) {
(*ita)->value();
}
s=s.arg(a.context()->variableValue("Return").toString());
}
return s;
}