예제 #1
0
bool QgsDataDefined::prepareExpression( QgsVectorLayer* layer )
{
  if ( layer )
  {
    return prepareExpression( layer->fields() );
  }
  else
  {
    //preparing expression without a layer set, so pass empty field list
    QgsFields empty;
    return prepareExpression( empty );
  }
}
예제 #2
0
bool QgsDataDefined::prepareExpression( QgsVectorLayer* layer )
{
  if ( layer )
  {
    return prepareExpression( QgsExpressionContextUtils::createFeatureBasedContext( QgsFeature(), layer->fields() ) );
  }
  else
  {
    //preparing expression without a layer set, so pass empty context
    QgsExpressionContext empty;
    return prepareExpression( empty );
  }
}
예제 #3
0
파일: EXParser.cpp 프로젝트: sukovanej/qum
std::string EXParser::evaluate(std::string _expression)
{
	steps.clear(); //clear previous solve steps
	findAndReplaceVariables(_expression, this->variables);
	try{
		prepareExpression(_expression);
		priorityLoop(_expression); //main calculation loop
	}
	catch(EXError &error){
		steps.push_back(EXSolveStep(error.first, "stopped_evaluation"));
		return error.first;
	}
	return _expression;
}
예제 #4
0
std::string EXParser::evaluate(std::string _expression)

{

	steps.clear(); //clear previous solve steps

	findAndReplaceVariables(_expression, this->variables);

	prepareExpression(_expression);

	if(!priorityLoop(_expression)) //main calculation loop
	  return mErrorStr;

	return _expression;

}
예제 #5
0
QStringList QgsDataDefined::referencedColumns( QgsVectorLayer* layer )
{
  if ( !mExprRefColmuns.isEmpty() )
  {
    return mExprRefColmuns;
  }

  if ( mUseExpression )
  {
    if ( !mExpression || !mExpressionPrepared )
    {
      prepareExpression( layer );
    }
  }
  else if ( !mField.isEmpty() )
  {
    mExprRefColmuns << mField;
  }

  return mExprRefColmuns;
}
예제 #6
0
QStringList QgsDataDefined::referencedColumns( const QgsFields &fields )
{
  if ( !d->exprRefColumns.isEmpty() )
  {
    return d->exprRefColumns;
  }

  d.detach();
  if ( d->useExpression )
  {
    if ( !d->expression || !d->expressionPrepared )
    {
      prepareExpression( fields );
    }
  }
  else if ( !d->field.isEmpty() )
  {
    d->exprRefColumns << d->field;
  }

  return d->exprRefColumns;
}
예제 #7
0
bool QgsDataDefined::prepareExpression( const QgsFields &fields )
{
  return prepareExpression( QgsExpressionContextUtils::createFeatureBasedContext( QgsFeature(), fields ) );
}