All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Member Functions
QGpCoreTools::ExpressionString Class Reference

Brief description of class still missing. More...

#include <ExpressionString.h>

List of all members.

Public Member Functions

void clear ()
bool setPattern (QString pattern, ExpressionContext *context)
QString value ()
 ~ExpressionString ()

Detailed Description

Brief description of class still missing.

String containing header formulas between {Return=...}


Constructor & Destructor Documentation

{clear();}

Member Function Documentation

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

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

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines