//----------------------------------------------------------------------------- // Function: IPXactValueParser::parseExpression() //----------------------------------------------------------------------------- QString IPXactValueParser::parseExpression(QString const& expression) const { QString format = getFormatForExpression(expression); if ((format == "bool" || format == "string" || format.isEmpty()) && isValidExpression(expression, format)) { return expression; } return QString::number(parseConstant(expression, format)); }
QString QgsFieldExpressionWidget::currentField( bool *isExpression, bool *isValid ) const { QString text = currentText(); if ( isValid ) { *isValid = isValidExpression(); } if ( isExpression ) { *isExpression = this->isExpression(); } return text; }
QString QgsFieldExpressionWidget::currentField( bool *isExpression, bool *isValid ) const { QString text = currentText(); bool valueIsExpression = this->isExpression(); if ( isValid ) { // valid if not an expression (ie, set to a field), or set to an expression and expression is valid *isValid = !valueIsExpression || isValidExpression(); } if ( isExpression ) { *isExpression = valueIsExpression; } return text; }
char* convertToReversedPolish(char* expression) { if(!isValidExpression(expression)) return NULL; stack<char*> operators_stack; char* converted = new char[getReversedPolishExpressionSize(expression)]; strcpy(converted, ""); for(char* i = expression; *i; i++) { //ignore multi-chars operators' 2nd char onwards if(*i == '>' || (*i == '-' && *(i - 1) == '<')) continue; int code = getCodeName(i); if(code == 0) { strncat(converted, i, 1); continue; } if(code == 6) { pushCharToStack(i, operators_stack); continue; } if(code == 7) { while(*operators_stack.top() != '(') { popStackToResult(converted, operators_stack); } //pop the '(' char operators_stack.pop(); continue; } if(operators_stack.empty()) { pushCharToStack(i, operators_stack); continue; } else if(*operators_stack.top() != '(') popStackToResult(converted, operators_stack); pushCharToStack(i, operators_stack); } while(!operators_stack.empty()) popStackToResult(converted, operators_stack); return converted; }
void QgsFieldExpressionWidget::expressionEdited( const QString& expression ) { updateLineEditStyle( expression ); emit fieldChanged( expression, isValidExpression() ); }