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; }