Пример #1
0
//-----------------------------------------------------------------------------
// 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));
}
Пример #2
0
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;
}
Пример #5
0
void QgsFieldExpressionWidget::expressionEdited( const QString& expression )
{
  updateLineEditStyle( expression );
  emit fieldChanged( expression, isValidExpression() );
}