mirror of
https://github.com/qgis/QGIS.git
synced 2025-06-18 00:04:02 -04:00
QgsExpression takes const QgsFeature as pointer and by reference
This commit is contained in:
parent
e9e06b9e05
commit
75896d922d
@ -28,11 +28,11 @@ class QgsExpression
|
||||
|
||||
//! Evaluate the feature and return the result
|
||||
//! @note prepare() should be called before calling this method
|
||||
QVariant evaluate( QgsFeature* f = NULL );
|
||||
QVariant evaluate( const QgsFeature* f = NULL );
|
||||
|
||||
//! Evaluate the feature and return the result
|
||||
//! @note this method does not expect that prepare() has been called on this instance
|
||||
QVariant evaluate( QgsFeature* f, const QgsFields& fields );
|
||||
QVariant evaluate( const QgsFeature* f, const QgsFields& fields );
|
||||
|
||||
//! Returns true if an error occurred when evaluating last input
|
||||
bool hasEvalError() const;
|
||||
@ -136,7 +136,7 @@ class QgsExpression
|
||||
/** The help text for the function. */
|
||||
QString helptext();
|
||||
|
||||
virtual QVariant func(const QVariantList& values, QgsFeature* f, QgsExpression* parent) = 0;
|
||||
virtual QVariant func(const QVariantList& values, const QgsFeature* f, QgsExpression* parent) = 0;
|
||||
};
|
||||
|
||||
static const QList<QgsExpression::Function *> &Functions();
|
||||
@ -185,7 +185,7 @@ class QgsExpression
|
||||
virtual QgsExpression::NodeType nodeType() const = 0;
|
||||
// abstract virtual eval function
|
||||
// errors are reported to the parent
|
||||
virtual QVariant eval( QgsExpression* parent, QgsFeature* f ) = 0;
|
||||
virtual QVariant eval( QgsExpression* parent, const QgsFeature* f ) = 0;
|
||||
|
||||
// abstract virtual preparation function
|
||||
// errors are reported to the parent
|
||||
@ -242,7 +242,7 @@ class QgsExpression
|
||||
|
||||
virtual QgsExpression::NodeType nodeType() const;
|
||||
virtual bool prepare( QgsExpression* parent, const QgsFields &fields );
|
||||
virtual QVariant eval( QgsExpression* parent, QgsFeature* f );
|
||||
virtual QVariant eval( QgsExpression* parent, const QgsFeature* f );
|
||||
virtual QString dump() const;
|
||||
|
||||
virtual QStringList referencedColumns() const;
|
||||
@ -262,7 +262,7 @@ class QgsExpression
|
||||
|
||||
virtual QgsExpression::NodeType nodeType() const;
|
||||
virtual bool prepare( QgsExpression* parent, const QgsFields &fields );
|
||||
virtual QVariant eval( QgsExpression* parent, QgsFeature* f );
|
||||
virtual QVariant eval( QgsExpression* parent, const QgsFeature* f );
|
||||
virtual QString dump() const;
|
||||
|
||||
virtual QStringList referencedColumns() const;
|
||||
@ -282,7 +282,7 @@ class QgsExpression
|
||||
|
||||
virtual QgsExpression::NodeType nodeType() const;
|
||||
virtual bool prepare( QgsExpression* parent, const QgsFields &fields );
|
||||
virtual QVariant eval( QgsExpression* parent, QgsFeature* f );
|
||||
virtual QVariant eval( QgsExpression* parent, const QgsFeature* f );
|
||||
virtual QString dump() const;
|
||||
|
||||
virtual QStringList referencedColumns() const;
|
||||
@ -302,7 +302,7 @@ class QgsExpression
|
||||
|
||||
virtual QgsExpression::NodeType nodeType() const;
|
||||
virtual bool prepare( QgsExpression* parent, const QgsFields &fields );
|
||||
virtual QVariant eval( QgsExpression* parent, QgsFeature* f );
|
||||
virtual QVariant eval( QgsExpression* parent, const QgsFeature* f );
|
||||
virtual QString dump() const;
|
||||
|
||||
virtual QStringList referencedColumns() const;
|
||||
@ -319,7 +319,7 @@ class QgsExpression
|
||||
|
||||
virtual QgsExpression::NodeType nodeType() const;
|
||||
virtual bool prepare( QgsExpression* parent, const QgsFields &fields );
|
||||
virtual QVariant eval( QgsExpression* parent, QgsFeature* f );
|
||||
virtual QVariant eval( QgsExpression* parent, const QgsFeature* f );
|
||||
virtual QString dump() const;
|
||||
|
||||
virtual QStringList referencedColumns() const;
|
||||
@ -336,7 +336,7 @@ class QgsExpression
|
||||
|
||||
virtual QgsExpression::NodeType nodeType() const;
|
||||
virtual bool prepare( QgsExpression* parent, const QgsFields &fields );
|
||||
virtual QVariant eval( QgsExpression* parent, QgsFeature* f );
|
||||
virtual QVariant eval( QgsExpression* parent, const QgsFeature* f );
|
||||
virtual QString dump() const;
|
||||
|
||||
virtual QStringList referencedColumns() const;
|
||||
@ -363,7 +363,7 @@ class QgsExpression
|
||||
~NodeCondition();
|
||||
|
||||
virtual QgsExpression::NodeType nodeType() const;
|
||||
virtual QVariant eval( QgsExpression* parent, QgsFeature* f );
|
||||
virtual QVariant eval( QgsExpression* parent, const QgsFeature* f );
|
||||
virtual bool prepare( QgsExpression* parent, const QgsFields &fields );
|
||||
virtual QString dump() const;
|
||||
|
||||
|
@ -342,74 +342,74 @@ static TVL getTVLValue( const QVariant& value, QgsExpression* parent )
|
||||
|
||||
//////
|
||||
|
||||
static QVariant fcnSqrt( const QVariantList& values, QgsFeature* /*f*/, QgsExpression* parent )
|
||||
static QVariant fcnSqrt( const QVariantList& values, const QgsFeature* /*f*/, QgsExpression* parent )
|
||||
{
|
||||
double x = getDoubleValue( values.at( 0 ), parent );
|
||||
return QVariant( sqrt( x ) );
|
||||
}
|
||||
|
||||
static QVariant fcnAbs( const QVariantList& values, QgsFeature*, QgsExpression* parent )
|
||||
static QVariant fcnAbs( const QVariantList& values, const QgsFeature*, QgsExpression* parent )
|
||||
{
|
||||
double val = getDoubleValue( values.at( 0 ), parent );
|
||||
return QVariant( fabs( val ) );
|
||||
}
|
||||
|
||||
static QVariant fcnSin( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnSin( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
double x = getDoubleValue( values.at( 0 ), parent );
|
||||
return QVariant( sin( x ) );
|
||||
}
|
||||
static QVariant fcnCos( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnCos( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
double x = getDoubleValue( values.at( 0 ), parent );
|
||||
return QVariant( cos( x ) );
|
||||
}
|
||||
static QVariant fcnTan( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnTan( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
double x = getDoubleValue( values.at( 0 ), parent );
|
||||
return QVariant( tan( x ) );
|
||||
}
|
||||
static QVariant fcnAsin( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnAsin( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
double x = getDoubleValue( values.at( 0 ), parent );
|
||||
return QVariant( asin( x ) );
|
||||
}
|
||||
static QVariant fcnAcos( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnAcos( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
double x = getDoubleValue( values.at( 0 ), parent );
|
||||
return QVariant( acos( x ) );
|
||||
}
|
||||
static QVariant fcnAtan( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnAtan( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
double x = getDoubleValue( values.at( 0 ), parent );
|
||||
return QVariant( atan( x ) );
|
||||
}
|
||||
static QVariant fcnAtan2( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnAtan2( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
double y = getDoubleValue( values.at( 0 ), parent );
|
||||
double x = getDoubleValue( values.at( 1 ), parent );
|
||||
return QVariant( atan2( y, x ) );
|
||||
}
|
||||
static QVariant fcnExp( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnExp( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
double x = getDoubleValue( values.at( 0 ), parent );
|
||||
return QVariant( exp( x ) );
|
||||
}
|
||||
static QVariant fcnLn( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnLn( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
double x = getDoubleValue( values.at( 0 ), parent );
|
||||
if ( x <= 0 )
|
||||
return QVariant();
|
||||
return QVariant( log( x ) );
|
||||
}
|
||||
static QVariant fcnLog10( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnLog10( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
double x = getDoubleValue( values.at( 0 ), parent );
|
||||
if ( x <= 0 )
|
||||
return QVariant();
|
||||
return QVariant( log10( x ) );
|
||||
}
|
||||
static QVariant fcnLog( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnLog( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
double b = getDoubleValue( values.at( 0 ), parent );
|
||||
double x = getDoubleValue( values.at( 1 ), parent );
|
||||
@ -417,7 +417,7 @@ static QVariant fcnLog( const QVariantList& values, QgsFeature* , QgsExpression*
|
||||
return QVariant();
|
||||
return QVariant( log( x ) / log( b ) );
|
||||
}
|
||||
static QVariant fcnRndF( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnRndF( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
double min = getDoubleValue( values.at( 0 ), parent );
|
||||
double max = getDoubleValue( values.at( 1 ), parent );
|
||||
@ -428,7 +428,7 @@ static QVariant fcnRndF( const QVariantList& values, QgsFeature* , QgsExpression
|
||||
double f = ( double )rand() / RAND_MAX;
|
||||
return QVariant( min + f * ( max - min ) ) ;
|
||||
}
|
||||
static QVariant fcnRnd( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnRnd( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
int min = getIntValue( values.at( 0 ), parent );
|
||||
int max = getIntValue( values.at( 1 ), parent );
|
||||
@ -439,7 +439,7 @@ static QVariant fcnRnd( const QVariantList& values, QgsFeature* , QgsExpression*
|
||||
return QVariant( min + ( rand() % ( int )( max - min + 1 ) ) );
|
||||
}
|
||||
|
||||
static QVariant fcnLinearScale( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnLinearScale( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
double val = getDoubleValue( values.at( 0 ), parent );
|
||||
double domainMin = getDoubleValue( values.at( 1 ), parent );
|
||||
@ -471,7 +471,7 @@ static QVariant fcnLinearScale( const QVariantList& values, QgsFeature* , QgsExp
|
||||
return QVariant( m * val + c );
|
||||
}
|
||||
|
||||
static QVariant fcnExpScale( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnExpScale( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
double val = getDoubleValue( values.at( 0 ), parent );
|
||||
double domainMin = getDoubleValue( values.at( 1 ), parent );
|
||||
@ -505,7 +505,7 @@ static QVariant fcnExpScale( const QVariantList& values, QgsFeature* , QgsExpres
|
||||
return QVariant((( rangeMax - rangeMin ) / pow( domainMax - domainMin, exponent ) ) * pow( val - domainMin, exponent ) + rangeMin );
|
||||
}
|
||||
|
||||
static QVariant fcnMax( const QVariantList& values, QgsFeature* , QgsExpression *parent )
|
||||
static QVariant fcnMax( const QVariantList& values, const QgsFeature* , QgsExpression *parent )
|
||||
{
|
||||
//initially set max as first value
|
||||
double maxVal = getDoubleValue( values.at( 0 ), parent );
|
||||
@ -523,7 +523,7 @@ static QVariant fcnMax( const QVariantList& values, QgsFeature* , QgsExpression
|
||||
return QVariant( maxVal );
|
||||
}
|
||||
|
||||
static QVariant fcnMin( const QVariantList& values, QgsFeature* , QgsExpression *parent )
|
||||
static QVariant fcnMin( const QVariantList& values, const QgsFeature* , QgsExpression *parent )
|
||||
{
|
||||
//initially set min as first value
|
||||
double minVal = getDoubleValue( values.at( 0 ), parent );
|
||||
@ -541,7 +541,7 @@ static QVariant fcnMin( const QVariantList& values, QgsFeature* , QgsExpression
|
||||
return QVariant( minVal );
|
||||
}
|
||||
|
||||
static QVariant fcnClamp( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnClamp( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
double minValue = getDoubleValue( values.at( 0 ), parent );
|
||||
double testValue = getDoubleValue( values.at( 1 ), parent );
|
||||
@ -562,37 +562,37 @@ static QVariant fcnClamp( const QVariantList& values, QgsFeature* , QgsExpressio
|
||||
}
|
||||
}
|
||||
|
||||
static QVariant fcnFloor( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnFloor( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
double x = getDoubleValue( values.at( 0 ), parent );
|
||||
return QVariant( floor( x ) );
|
||||
}
|
||||
|
||||
static QVariant fcnCeil( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnCeil( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
double x = getDoubleValue( values.at( 0 ), parent );
|
||||
return QVariant( ceil( x ) );
|
||||
}
|
||||
|
||||
static QVariant fcnToInt( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnToInt( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
return QVariant( getIntValue( values.at( 0 ), parent ) );
|
||||
}
|
||||
static QVariant fcnToReal( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnToReal( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
return QVariant( getDoubleValue( values.at( 0 ), parent ) );
|
||||
}
|
||||
static QVariant fcnToString( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnToString( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
return QVariant( getStringValue( values.at( 0 ), parent ) );
|
||||
}
|
||||
|
||||
static QVariant fcnToDateTime( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnToDateTime( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
return QVariant( getDateTimeValue( values.at( 0 ), parent ) );
|
||||
}
|
||||
|
||||
static QVariant fcnCoalesce( const QVariantList& values, QgsFeature* , QgsExpression* )
|
||||
static QVariant fcnCoalesce( const QVariantList& values, const QgsFeature* , QgsExpression* )
|
||||
{
|
||||
foreach ( const QVariant &value, values )
|
||||
{
|
||||
@ -602,17 +602,17 @@ static QVariant fcnCoalesce( const QVariantList& values, QgsFeature* , QgsExpres
|
||||
}
|
||||
return QVariant();
|
||||
}
|
||||
static QVariant fcnLower( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnLower( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QString str = getStringValue( values.at( 0 ), parent );
|
||||
return QVariant( str.toLower() );
|
||||
}
|
||||
static QVariant fcnUpper( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnUpper( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QString str = getStringValue( values.at( 0 ), parent );
|
||||
return QVariant( str.toUpper() );
|
||||
}
|
||||
static QVariant fcnTitle( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnTitle( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QString str = getStringValue( values.at( 0 ), parent );
|
||||
QStringList elems = str.split( " " );
|
||||
@ -624,25 +624,25 @@ static QVariant fcnTitle( const QVariantList& values, QgsFeature* , QgsExpressio
|
||||
return QVariant( elems.join( " " ) );
|
||||
}
|
||||
|
||||
static QVariant fcnTrim( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnTrim( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QString str = getStringValue( values.at( 0 ), parent );
|
||||
return QVariant( str.trimmed() );
|
||||
}
|
||||
|
||||
static QVariant fcnLength( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnLength( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QString str = getStringValue( values.at( 0 ), parent );
|
||||
return QVariant( str.length() );
|
||||
}
|
||||
static QVariant fcnReplace( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnReplace( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QString str = getStringValue( values.at( 0 ), parent );
|
||||
QString before = getStringValue( values.at( 1 ), parent );
|
||||
QString after = getStringValue( values.at( 2 ), parent );
|
||||
return QVariant( str.replace( before, after ) );
|
||||
}
|
||||
static QVariant fcnRegexpReplace( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnRegexpReplace( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QString str = getStringValue( values.at( 0 ), parent );
|
||||
QString regexp = getStringValue( values.at( 1 ), parent );
|
||||
@ -657,7 +657,7 @@ static QVariant fcnRegexpReplace( const QVariantList& values, QgsFeature* , QgsE
|
||||
return QVariant( str.replace( re, after ) );
|
||||
}
|
||||
|
||||
static QVariant fcnRegexpMatch( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnRegexpMatch( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QString str = getStringValue( values.at( 0 ), parent );
|
||||
QString regexp = getStringValue( values.at( 1 ), parent );
|
||||
@ -671,7 +671,7 @@ static QVariant fcnRegexpMatch( const QVariantList& values, QgsFeature* , QgsExp
|
||||
return QVariant( str.contains( re ) ? 1 : 0 );
|
||||
}
|
||||
|
||||
static QVariant fcnRegexpSubstr( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnRegexpSubstr( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QString str = getStringValue( values.at( 0 ), parent );
|
||||
QString regexp = getStringValue( values.at( 1 ), parent );
|
||||
@ -696,7 +696,7 @@ static QVariant fcnRegexpSubstr( const QVariantList& values, QgsFeature* , QgsEx
|
||||
}
|
||||
}
|
||||
|
||||
static QVariant fcnSubstr( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnSubstr( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QString str = getStringValue( values.at( 0 ), parent );
|
||||
int from = getIntValue( values.at( 1 ), parent );
|
||||
@ -704,18 +704,18 @@ static QVariant fcnSubstr( const QVariantList& values, QgsFeature* , QgsExpressi
|
||||
return QVariant( str.mid( from -1, len ) );
|
||||
}
|
||||
|
||||
static QVariant fcnRowNumber( const QVariantList& , QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnRowNumber( const QVariantList& , const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
return QVariant( parent->currentRowNumber() );
|
||||
}
|
||||
|
||||
static QVariant fcnFeatureId( const QVariantList& , QgsFeature* f, QgsExpression* )
|
||||
static QVariant fcnFeatureId( const QVariantList& , const QgsFeature* f, QgsExpression* )
|
||||
{
|
||||
// TODO: handling of 64-bit feature ids?
|
||||
return f ? QVariant(( int )f->id() ) : QVariant();
|
||||
}
|
||||
|
||||
static QVariant fcnConcat( const QVariantList& values, QgsFeature* , QgsExpression *parent )
|
||||
static QVariant fcnConcat( const QVariantList& values, const QgsFeature* , QgsExpression *parent )
|
||||
{
|
||||
QString concat;
|
||||
foreach ( const QVariant &value, values )
|
||||
@ -725,27 +725,27 @@ static QVariant fcnConcat( const QVariantList& values, QgsFeature* , QgsExpressi
|
||||
return concat;
|
||||
}
|
||||
|
||||
static QVariant fcnStrpos( const QVariantList& values, QgsFeature* , QgsExpression *parent )
|
||||
static QVariant fcnStrpos( const QVariantList& values, const QgsFeature* , QgsExpression *parent )
|
||||
{
|
||||
QString string = getStringValue( values.at( 0 ), parent );
|
||||
return string.indexOf( QRegExp( getStringValue( values.at( 1 ), parent ) ) );
|
||||
}
|
||||
|
||||
static QVariant fcnRight( const QVariantList& values, QgsFeature* , QgsExpression *parent )
|
||||
static QVariant fcnRight( const QVariantList& values, const QgsFeature* , QgsExpression *parent )
|
||||
{
|
||||
QString string = getStringValue( values.at( 0 ), parent );
|
||||
int pos = getIntValue( values.at( 1 ), parent );
|
||||
return string.right( pos );
|
||||
}
|
||||
|
||||
static QVariant fcnLeft( const QVariantList& values, QgsFeature* , QgsExpression *parent )
|
||||
static QVariant fcnLeft( const QVariantList& values, const QgsFeature* , QgsExpression *parent )
|
||||
{
|
||||
QString string = getStringValue( values.at( 0 ), parent );
|
||||
int pos = getIntValue( values.at( 1 ), parent );
|
||||
return string.left( pos );
|
||||
}
|
||||
|
||||
static QVariant fcnRPad( const QVariantList& values, QgsFeature* , QgsExpression *parent )
|
||||
static QVariant fcnRPad( const QVariantList& values, const QgsFeature* , QgsExpression *parent )
|
||||
{
|
||||
QString string = getStringValue( values.at( 0 ), parent );
|
||||
int length = getIntValue( values.at( 1 ), parent );
|
||||
@ -753,7 +753,7 @@ static QVariant fcnRPad( const QVariantList& values, QgsFeature* , QgsExpression
|
||||
return string.rightJustified( length, fill.at( 0 ), true );
|
||||
}
|
||||
|
||||
static QVariant fcnLPad( const QVariantList& values, QgsFeature* , QgsExpression *parent )
|
||||
static QVariant fcnLPad( const QVariantList& values, const QgsFeature* , QgsExpression *parent )
|
||||
{
|
||||
QString string = getStringValue( values.at( 0 ), parent );
|
||||
int length = getIntValue( values.at( 1 ), parent );
|
||||
@ -761,7 +761,7 @@ static QVariant fcnLPad( const QVariantList& values, QgsFeature* , QgsExpression
|
||||
return string.leftJustified( length, fill.at( 0 ), true );
|
||||
}
|
||||
|
||||
static QVariant fcnFormatString( const QVariantList& values, QgsFeature* , QgsExpression *parent )
|
||||
static QVariant fcnFormatString( const QVariantList& values, const QgsFeature* , QgsExpression *parent )
|
||||
{
|
||||
QString string = getStringValue( values.at( 0 ), parent );
|
||||
for ( int n = 1; n < values.length(); n++ )
|
||||
@ -772,27 +772,27 @@ static QVariant fcnFormatString( const QVariantList& values, QgsFeature* , QgsEx
|
||||
}
|
||||
|
||||
|
||||
static QVariant fcnNow( const QVariantList&, QgsFeature* , QgsExpression * )
|
||||
static QVariant fcnNow( const QVariantList&, const QgsFeature* , QgsExpression * )
|
||||
{
|
||||
return QVariant( QDateTime::currentDateTime() );
|
||||
}
|
||||
|
||||
static QVariant fcnToDate( const QVariantList& values, QgsFeature* , QgsExpression * parent )
|
||||
static QVariant fcnToDate( const QVariantList& values, const QgsFeature* , QgsExpression * parent )
|
||||
{
|
||||
return QVariant( getDateValue( values.at( 0 ), parent ) );
|
||||
}
|
||||
|
||||
static QVariant fcnToTime( const QVariantList& values, QgsFeature* , QgsExpression * parent )
|
||||
static QVariant fcnToTime( const QVariantList& values, const QgsFeature* , QgsExpression * parent )
|
||||
{
|
||||
return QVariant( getTimeValue( values.at( 0 ), parent ) );
|
||||
}
|
||||
|
||||
static QVariant fcnToInterval( const QVariantList& values, QgsFeature* , QgsExpression * parent )
|
||||
static QVariant fcnToInterval( const QVariantList& values, const QgsFeature* , QgsExpression * parent )
|
||||
{
|
||||
return QVariant::fromValue( getInterval( values.at( 0 ), parent ) );
|
||||
}
|
||||
|
||||
static QVariant fcnAge( const QVariantList& values, QgsFeature* , QgsExpression *parent )
|
||||
static QVariant fcnAge( const QVariantList& values, const QgsFeature* , QgsExpression *parent )
|
||||
{
|
||||
QDateTime d1 = getDateTimeValue( values.at( 0 ), parent );
|
||||
QDateTime d2 = getDateTimeValue( values.at( 1 ), parent );
|
||||
@ -800,7 +800,7 @@ static QVariant fcnAge( const QVariantList& values, QgsFeature* , QgsExpression
|
||||
return QVariant::fromValue( QgsExpression::Interval( seconds ) );
|
||||
}
|
||||
|
||||
static QVariant fcnDay( const QVariantList& values, QgsFeature* , QgsExpression *parent )
|
||||
static QVariant fcnDay( const QVariantList& values, const QgsFeature* , QgsExpression *parent )
|
||||
{
|
||||
QVariant value = values.at( 0 );
|
||||
QgsExpression::Interval inter = getInterval( value, parent, false );
|
||||
@ -815,7 +815,7 @@ static QVariant fcnDay( const QVariantList& values, QgsFeature* , QgsExpression
|
||||
}
|
||||
}
|
||||
|
||||
static QVariant fcnYear( const QVariantList& values, QgsFeature* , QgsExpression *parent )
|
||||
static QVariant fcnYear( const QVariantList& values, const QgsFeature* , QgsExpression *parent )
|
||||
{
|
||||
QVariant value = values.at( 0 );
|
||||
QgsExpression::Interval inter = getInterval( value, parent, false );
|
||||
@ -830,7 +830,7 @@ static QVariant fcnYear( const QVariantList& values, QgsFeature* , QgsExpression
|
||||
}
|
||||
}
|
||||
|
||||
static QVariant fcnMonth( const QVariantList& values, QgsFeature* , QgsExpression *parent )
|
||||
static QVariant fcnMonth( const QVariantList& values, const QgsFeature* , QgsExpression *parent )
|
||||
{
|
||||
QVariant value = values.at( 0 );
|
||||
QgsExpression::Interval inter = getInterval( value, parent, false );
|
||||
@ -845,7 +845,7 @@ static QVariant fcnMonth( const QVariantList& values, QgsFeature* , QgsExpressio
|
||||
}
|
||||
}
|
||||
|
||||
static QVariant fcnWeek( const QVariantList& values, QgsFeature* , QgsExpression *parent )
|
||||
static QVariant fcnWeek( const QVariantList& values, const QgsFeature* , QgsExpression *parent )
|
||||
{
|
||||
QVariant value = values.at( 0 );
|
||||
QgsExpression::Interval inter = getInterval( value, parent, false );
|
||||
@ -860,7 +860,7 @@ static QVariant fcnWeek( const QVariantList& values, QgsFeature* , QgsExpression
|
||||
}
|
||||
}
|
||||
|
||||
static QVariant fcnHour( const QVariantList& values, QgsFeature* , QgsExpression *parent )
|
||||
static QVariant fcnHour( const QVariantList& values, const QgsFeature* , QgsExpression *parent )
|
||||
{
|
||||
QVariant value = values.at( 0 );
|
||||
QgsExpression::Interval inter = getInterval( value, parent, false );
|
||||
@ -875,7 +875,7 @@ static QVariant fcnHour( const QVariantList& values, QgsFeature* , QgsExpression
|
||||
}
|
||||
}
|
||||
|
||||
static QVariant fcnMinute( const QVariantList& values, QgsFeature* , QgsExpression *parent )
|
||||
static QVariant fcnMinute( const QVariantList& values, const QgsFeature* , QgsExpression *parent )
|
||||
{
|
||||
QVariant value = values.at( 0 );
|
||||
QgsExpression::Interval inter = getInterval( value, parent, false );
|
||||
@ -890,7 +890,7 @@ static QVariant fcnMinute( const QVariantList& values, QgsFeature* , QgsExpressi
|
||||
}
|
||||
}
|
||||
|
||||
static QVariant fcnSeconds( const QVariantList& values, QgsFeature* , QgsExpression *parent )
|
||||
static QVariant fcnSeconds( const QVariantList& values, const QgsFeature* , QgsExpression *parent )
|
||||
{
|
||||
QVariant value = values.at( 0 );
|
||||
QgsExpression::Interval inter = getInterval( value, parent, false );
|
||||
@ -911,7 +911,7 @@ static QVariant fcnSeconds( const QVariantList& values, QgsFeature* , QgsExpress
|
||||
if (!g || g->type() != geomtype) return QVariant();
|
||||
|
||||
|
||||
static QVariant fcnX( const QVariantList& , QgsFeature* f, QgsExpression* )
|
||||
static QVariant fcnX( const QVariantList& , const QgsFeature* f, QgsExpression* )
|
||||
{
|
||||
ENSURE_GEOM_TYPE( f, g, QGis::Point );
|
||||
if ( g->isMultipart() )
|
||||
@ -923,7 +923,7 @@ static QVariant fcnX( const QVariantList& , QgsFeature* f, QgsExpression* )
|
||||
return g->asPoint().x();
|
||||
}
|
||||
}
|
||||
static QVariant fcnY( const QVariantList& , QgsFeature* f, QgsExpression* )
|
||||
static QVariant fcnY( const QVariantList& , const QgsFeature* f, QgsExpression* )
|
||||
{
|
||||
ENSURE_GEOM_TYPE( f, g, QGis::Point );
|
||||
if ( g->isMultipart() )
|
||||
@ -936,7 +936,7 @@ static QVariant fcnY( const QVariantList& , QgsFeature* f, QgsExpression* )
|
||||
}
|
||||
}
|
||||
|
||||
static QVariant pointAt( const QVariantList& values, QgsFeature* f, QgsExpression* parent ) // helper function
|
||||
static QVariant pointAt( const QVariantList& values, const QgsFeature* f, QgsExpression* parent ) // helper function
|
||||
{
|
||||
int idx = getIntValue( values.at( 0 ), parent );
|
||||
ENSURE_GEOM_TYPE( f, g, QGis::Line );
|
||||
@ -952,7 +952,7 @@ static QVariant pointAt( const QVariantList& values, QgsFeature* f, QgsExpressio
|
||||
return QVariant( QPointF( polyline[idx].x(), polyline[idx].y() ) );
|
||||
}
|
||||
|
||||
static QVariant fcnXat( const QVariantList& values, QgsFeature* f, QgsExpression* parent )
|
||||
static QVariant fcnXat( const QVariantList& values, const QgsFeature* f, QgsExpression* parent )
|
||||
{
|
||||
QVariant v = pointAt( values, f, parent );
|
||||
if ( v.type() == QVariant::PointF )
|
||||
@ -960,7 +960,7 @@ static QVariant fcnXat( const QVariantList& values, QgsFeature* f, QgsExpression
|
||||
else
|
||||
return QVariant();
|
||||
}
|
||||
static QVariant fcnYat( const QVariantList& values, QgsFeature* f, QgsExpression* parent )
|
||||
static QVariant fcnYat( const QVariantList& values, const QgsFeature* f, QgsExpression* parent )
|
||||
{
|
||||
QVariant v = pointAt( values, f, parent );
|
||||
if ( v.type() == QVariant::PointF )
|
||||
@ -968,7 +968,7 @@ static QVariant fcnYat( const QVariantList& values, QgsFeature* f, QgsExpression
|
||||
else
|
||||
return QVariant();
|
||||
}
|
||||
static QVariant fcnGeometry( const QVariantList& , QgsFeature* f, QgsExpression* )
|
||||
static QVariant fcnGeometry( const QVariantList& , const QgsFeature* f, QgsExpression* )
|
||||
{
|
||||
QgsGeometry* geom = f->geometry();
|
||||
if ( geom )
|
||||
@ -976,7 +976,7 @@ static QVariant fcnGeometry( const QVariantList& , QgsFeature* f, QgsExpression*
|
||||
else
|
||||
return QVariant();
|
||||
}
|
||||
static QVariant fcnGeomFromWKT( const QVariantList& values, QgsFeature*, QgsExpression* parent )
|
||||
static QVariant fcnGeomFromWKT( const QVariantList& values, const QgsFeature*, QgsExpression* parent )
|
||||
{
|
||||
QString wkt = getStringValue( values.at( 0 ), parent );
|
||||
QgsGeometry* geom = QgsGeometry::fromWkt( wkt );
|
||||
@ -985,7 +985,7 @@ static QVariant fcnGeomFromWKT( const QVariantList& values, QgsFeature*, QgsExpr
|
||||
else
|
||||
return QVariant();
|
||||
}
|
||||
static QVariant fcnGeomFromGML( const QVariantList& values, QgsFeature*, QgsExpression* parent )
|
||||
static QVariant fcnGeomFromGML( const QVariantList& values, const QgsFeature*, QgsExpression* parent )
|
||||
{
|
||||
QString gml = getStringValue( values.at( 0 ), parent );
|
||||
QgsGeometry* geom = QgsOgcUtils::geometryFromGML( gml );
|
||||
@ -996,74 +996,74 @@ static QVariant fcnGeomFromGML( const QVariantList& values, QgsFeature*, QgsExpr
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
static QVariant fcnGeomArea( const QVariantList& , QgsFeature* f, QgsExpression* parent )
|
||||
static QVariant fcnGeomArea( const QVariantList& , const QgsFeature* f, QgsExpression* parent )
|
||||
{
|
||||
ENSURE_GEOM_TYPE( f, g, QGis::Polygon );
|
||||
QgsDistanceArea* calc = parent->geomCalculator();
|
||||
return QVariant( calc->measure( f->geometry() ) );
|
||||
}
|
||||
static QVariant fcnGeomLength( const QVariantList& , QgsFeature* f, QgsExpression* parent )
|
||||
static QVariant fcnGeomLength( const QVariantList& , const QgsFeature* f, QgsExpression* parent )
|
||||
{
|
||||
ENSURE_GEOM_TYPE( f, g, QGis::Line );
|
||||
QgsDistanceArea* calc = parent->geomCalculator();
|
||||
return QVariant( calc->measure( f->geometry() ) );
|
||||
}
|
||||
static QVariant fcnGeomPerimeter( const QVariantList& , QgsFeature* f, QgsExpression* parent )
|
||||
static QVariant fcnGeomPerimeter( const QVariantList& , const QgsFeature* f, QgsExpression* parent )
|
||||
{
|
||||
ENSURE_GEOM_TYPE( f, g, QGis::Polygon );
|
||||
QgsDistanceArea* calc = parent->geomCalculator();
|
||||
return QVariant( calc->measurePerimeter( f->geometry() ) );
|
||||
}
|
||||
|
||||
static QVariant fcnBbox( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnBbox( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QgsGeometry fGeom = getGeometry( values.at( 0 ), parent );
|
||||
QgsGeometry sGeom = getGeometry( values.at( 1 ), parent );
|
||||
return fGeom.intersects( sGeom.boundingBox() ) ? TVL_True : TVL_False;
|
||||
}
|
||||
static QVariant fcnDisjoint( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnDisjoint( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QgsGeometry fGeom = getGeometry( values.at( 0 ), parent );
|
||||
QgsGeometry sGeom = getGeometry( values.at( 1 ), parent );
|
||||
return fGeom.disjoint( &sGeom ) ? TVL_True : TVL_False;
|
||||
}
|
||||
static QVariant fcnIntersects( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnIntersects( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QgsGeometry fGeom = getGeometry( values.at( 0 ), parent );
|
||||
QgsGeometry sGeom = getGeometry( values.at( 1 ), parent );
|
||||
return fGeom.intersects( &sGeom ) ? TVL_True : TVL_False;
|
||||
}
|
||||
static QVariant fcnTouches( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnTouches( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QgsGeometry fGeom = getGeometry( values.at( 0 ), parent );
|
||||
QgsGeometry sGeom = getGeometry( values.at( 1 ), parent );
|
||||
return fGeom.touches( &sGeom ) ? TVL_True : TVL_False;
|
||||
}
|
||||
static QVariant fcnCrosses( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnCrosses( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QgsGeometry fGeom = getGeometry( values.at( 0 ), parent );
|
||||
QgsGeometry sGeom = getGeometry( values.at( 1 ), parent );
|
||||
return fGeom.crosses( &sGeom ) ? TVL_True : TVL_False;
|
||||
}
|
||||
static QVariant fcnContains( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnContains( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QgsGeometry fGeom = getGeometry( values.at( 0 ), parent );
|
||||
QgsGeometry sGeom = getGeometry( values.at( 1 ), parent );
|
||||
return fGeom.contains( &sGeom ) ? TVL_True : TVL_False;
|
||||
}
|
||||
static QVariant fcnOverlaps( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnOverlaps( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QgsGeometry fGeom = getGeometry( values.at( 0 ), parent );
|
||||
QgsGeometry sGeom = getGeometry( values.at( 1 ), parent );
|
||||
return fGeom.overlaps( &sGeom ) ? TVL_True : TVL_False;
|
||||
}
|
||||
static QVariant fcnWithin( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnWithin( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QgsGeometry fGeom = getGeometry( values.at( 0 ), parent );
|
||||
QgsGeometry sGeom = getGeometry( values.at( 1 ), parent );
|
||||
return fGeom.within( &sGeom ) ? TVL_True : TVL_False;
|
||||
}
|
||||
static QVariant fcnBuffer( const QVariantList& values, QgsFeature*, QgsExpression* parent )
|
||||
static QVariant fcnBuffer( const QVariantList& values, const QgsFeature*, QgsExpression* parent )
|
||||
{
|
||||
if ( values.length() < 2 || values.length() > 3 )
|
||||
return QVariant();
|
||||
@ -1079,7 +1079,7 @@ static QVariant fcnBuffer( const QVariantList& values, QgsFeature*, QgsExpressio
|
||||
return QVariant::fromValue( *geom );
|
||||
return QVariant();
|
||||
}
|
||||
static QVariant fcnCentroid( const QVariantList& values, QgsFeature*, QgsExpression* parent )
|
||||
static QVariant fcnCentroid( const QVariantList& values, const QgsFeature*, QgsExpression* parent )
|
||||
{
|
||||
QgsGeometry fGeom = getGeometry( values.at( 0 ), parent );
|
||||
QgsGeometry* geom = fGeom.centroid();
|
||||
@ -1087,7 +1087,7 @@ static QVariant fcnCentroid( const QVariantList& values, QgsFeature*, QgsExpress
|
||||
return QVariant::fromValue( *geom );
|
||||
return QVariant();
|
||||
}
|
||||
static QVariant fcnConvexHull( const QVariantList& values, QgsFeature*, QgsExpression* parent )
|
||||
static QVariant fcnConvexHull( const QVariantList& values, const QgsFeature*, QgsExpression* parent )
|
||||
{
|
||||
QgsGeometry fGeom = getGeometry( values.at( 0 ), parent );
|
||||
QgsGeometry* geom = fGeom.convexHull();
|
||||
@ -1095,7 +1095,7 @@ static QVariant fcnConvexHull( const QVariantList& values, QgsFeature*, QgsExpre
|
||||
return QVariant::fromValue( *geom );
|
||||
return QVariant();
|
||||
}
|
||||
static QVariant fcnDifference( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnDifference( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QgsGeometry fGeom = getGeometry( values.at( 0 ), parent );
|
||||
QgsGeometry sGeom = getGeometry( values.at( 1 ), parent );
|
||||
@ -1104,13 +1104,13 @@ static QVariant fcnDifference( const QVariantList& values, QgsFeature* , QgsExpr
|
||||
return QVariant::fromValue( *geom );
|
||||
return QVariant();
|
||||
}
|
||||
static QVariant fcnDistance( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnDistance( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QgsGeometry fGeom = getGeometry( values.at( 0 ), parent );
|
||||
QgsGeometry sGeom = getGeometry( values.at( 1 ), parent );
|
||||
return QVariant( fGeom.distance( sGeom ) );
|
||||
}
|
||||
static QVariant fcnIntersection( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnIntersection( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QgsGeometry fGeom = getGeometry( values.at( 0 ), parent );
|
||||
QgsGeometry sGeom = getGeometry( values.at( 1 ), parent );
|
||||
@ -1119,7 +1119,7 @@ static QVariant fcnIntersection( const QVariantList& values, QgsFeature* , QgsEx
|
||||
return QVariant::fromValue( *geom );
|
||||
return QVariant();
|
||||
}
|
||||
static QVariant fcnSymDifference( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnSymDifference( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QgsGeometry fGeom = getGeometry( values.at( 0 ), parent );
|
||||
QgsGeometry sGeom = getGeometry( values.at( 1 ), parent );
|
||||
@ -1128,7 +1128,7 @@ static QVariant fcnSymDifference( const QVariantList& values, QgsFeature* , QgsE
|
||||
return QVariant::fromValue( *geom );
|
||||
return QVariant();
|
||||
}
|
||||
static QVariant fcnCombine( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnCombine( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QgsGeometry fGeom = getGeometry( values.at( 0 ), parent );
|
||||
QgsGeometry sGeom = getGeometry( values.at( 1 ), parent );
|
||||
@ -1137,14 +1137,14 @@ static QVariant fcnCombine( const QVariantList& values, QgsFeature* , QgsExpress
|
||||
return QVariant::fromValue( *geom );
|
||||
return QVariant();
|
||||
}
|
||||
static QVariant fcnGeomToWKT( const QVariantList& values, QgsFeature* , QgsExpression* parent )
|
||||
static QVariant fcnGeomToWKT( const QVariantList& values, const QgsFeature* , QgsExpression* parent )
|
||||
{
|
||||
QgsGeometry fGeom = getGeometry( values.at( 0 ), parent );
|
||||
QString wkt = fGeom.exportToWkt();
|
||||
return QVariant( wkt );
|
||||
}
|
||||
|
||||
static QVariant fcnRound( const QVariantList& values , QgsFeature *f, QgsExpression* parent )
|
||||
static QVariant fcnRound( const QVariantList& values , const QgsFeature *f, QgsExpression* parent )
|
||||
{
|
||||
Q_UNUSED( f );
|
||||
if ( values.length() == 2 )
|
||||
@ -1163,7 +1163,7 @@ static QVariant fcnRound( const QVariantList& values , QgsFeature *f, QgsExpress
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
static QVariant fcnPi( const QVariantList& values , QgsFeature *f, QgsExpression* parent )
|
||||
static QVariant fcnPi( const QVariantList& values , const QgsFeature *f, QgsExpression* parent )
|
||||
{
|
||||
Q_UNUSED( values );
|
||||
Q_UNUSED( f );
|
||||
@ -1171,26 +1171,26 @@ static QVariant fcnPi( const QVariantList& values , QgsFeature *f, QgsExpression
|
||||
return M_PI;
|
||||
}
|
||||
|
||||
static QVariant fcnScale( const QVariantList&, QgsFeature*, QgsExpression* parent )
|
||||
static QVariant fcnScale( const QVariantList&, const QgsFeature*, QgsExpression* parent )
|
||||
{
|
||||
return QVariant( parent->scale() );
|
||||
}
|
||||
|
||||
static QVariant fcnFormatNumber( const QVariantList& values, QgsFeature*, QgsExpression* parent )
|
||||
static QVariant fcnFormatNumber( const QVariantList& values, const QgsFeature*, QgsExpression* parent )
|
||||
{
|
||||
double value = getDoubleValue( values.at( 0 ), parent );
|
||||
int places = getIntValue( values.at( 1 ), parent );
|
||||
return QString( "%L1" ).arg( value, 0, 'f', places );
|
||||
}
|
||||
|
||||
static QVariant fcnFormatDate( const QVariantList& values, QgsFeature*, QgsExpression* parent )
|
||||
static QVariant fcnFormatDate( const QVariantList& values, const QgsFeature*, QgsExpression* parent )
|
||||
{
|
||||
QDateTime dt = getDateTimeValue( values.at( 0 ), parent );
|
||||
QString format = getStringValue( values.at( 1 ), parent );
|
||||
return dt.toString( format );
|
||||
}
|
||||
|
||||
static QVariant fcnColorRgb( const QVariantList &values, QgsFeature *, QgsExpression *parent )
|
||||
static QVariant fcnColorRgb( const QVariantList &values, const QgsFeature *, QgsExpression *parent )
|
||||
{
|
||||
int red = getIntValue( values.at( 0 ), parent );
|
||||
int green = getIntValue( values.at( 1 ), parent );
|
||||
@ -1205,7 +1205,7 @@ static QVariant fcnColorRgb( const QVariantList &values, QgsFeature *, QgsExpres
|
||||
return QString( "%1,%2,%3" ).arg( color.red() ).arg( color.green() ).arg( color.blue() );
|
||||
}
|
||||
|
||||
static QVariant fncColorRgba( const QVariantList &values, QgsFeature *, QgsExpression *parent )
|
||||
static QVariant fncColorRgba( const QVariantList &values, const QgsFeature *, QgsExpression *parent )
|
||||
{
|
||||
int red = getIntValue( values.at( 0 ), parent );
|
||||
int green = getIntValue( values.at( 1 ), parent );
|
||||
@ -1220,7 +1220,7 @@ static QVariant fncColorRgba( const QVariantList &values, QgsFeature *, QgsExpre
|
||||
return QgsSymbolLayerV2Utils::encodeColor( color );
|
||||
}
|
||||
|
||||
QVariant fcnRampColor( const QVariantList &values, QgsFeature *, QgsExpression *parent )
|
||||
QVariant fcnRampColor( const QVariantList &values, const QgsFeature *, QgsExpression *parent )
|
||||
{
|
||||
QString rampName = getStringValue( values.at( 0 ), parent );
|
||||
const QgsVectorColorRampV2 *mRamp = QgsStyleV2::defaultStyle()->colorRampRef( rampName );
|
||||
@ -1234,7 +1234,7 @@ QVariant fcnRampColor( const QVariantList &values, QgsFeature *, QgsExpression *
|
||||
return QgsSymbolLayerV2Utils::encodeColor( color );
|
||||
}
|
||||
|
||||
static QVariant fcnColorHsl( const QVariantList &values, QgsFeature *, QgsExpression *parent )
|
||||
static QVariant fcnColorHsl( const QVariantList &values, const QgsFeature *, QgsExpression *parent )
|
||||
{
|
||||
// Hue ranges from 0 - 360
|
||||
double hue = getIntValue( values.at( 0 ), parent ) / 360.0;
|
||||
@ -1254,7 +1254,7 @@ static QVariant fcnColorHsl( const QVariantList &values, QgsFeature *, QgsExpres
|
||||
return QString( "%1,%2,%3" ).arg( color.red() ).arg( color.green() ).arg( color.blue() );
|
||||
}
|
||||
|
||||
static QVariant fncColorHsla( const QVariantList &values, QgsFeature *, QgsExpression *parent )
|
||||
static QVariant fncColorHsla( const QVariantList &values, const QgsFeature *, QgsExpression *parent )
|
||||
{
|
||||
// Hue ranges from 0 - 360
|
||||
double hue = getIntValue( values.at( 0 ), parent ) / 360.0;
|
||||
@ -1274,7 +1274,7 @@ static QVariant fncColorHsla( const QVariantList &values, QgsFeature *, QgsExpre
|
||||
return QgsSymbolLayerV2Utils::encodeColor( color );
|
||||
}
|
||||
|
||||
static QVariant fcnColorHsv( const QVariantList &values, QgsFeature *, QgsExpression *parent )
|
||||
static QVariant fcnColorHsv( const QVariantList &values, const QgsFeature *, QgsExpression *parent )
|
||||
{
|
||||
// Hue ranges from 0 - 360
|
||||
double hue = getIntValue( values.at( 0 ), parent ) / 360.0;
|
||||
@ -1294,7 +1294,7 @@ static QVariant fcnColorHsv( const QVariantList &values, QgsFeature *, QgsExpres
|
||||
return QString( "%1,%2,%3" ).arg( color.red() ).arg( color.green() ).arg( color.blue() );
|
||||
}
|
||||
|
||||
static QVariant fncColorHsva( const QVariantList &values, QgsFeature *, QgsExpression *parent )
|
||||
static QVariant fncColorHsva( const QVariantList &values, const QgsFeature *, QgsExpression *parent )
|
||||
{
|
||||
// Hue ranges from 0 - 360
|
||||
double hue = getIntValue( values.at( 0 ), parent ) / 360.0;
|
||||
@ -1314,7 +1314,7 @@ static QVariant fncColorHsva( const QVariantList &values, QgsFeature *, QgsExpre
|
||||
return QgsSymbolLayerV2Utils::encodeColor( color );
|
||||
}
|
||||
|
||||
static QVariant fcnColorCmyk( const QVariantList &values, QgsFeature *, QgsExpression *parent )
|
||||
static QVariant fcnColorCmyk( const QVariantList &values, const QgsFeature *, QgsExpression *parent )
|
||||
{
|
||||
// Cyan ranges from 0 - 100
|
||||
double cyan = getIntValue( values.at( 0 ), parent ) / 100.0;
|
||||
@ -1336,7 +1336,7 @@ static QVariant fcnColorCmyk( const QVariantList &values, QgsFeature *, QgsExpre
|
||||
return QString( "%1,%2,%3" ).arg( color.red() ).arg( color.green() ).arg( color.blue() );
|
||||
}
|
||||
|
||||
static QVariant fncColorCmyka( const QVariantList &values, QgsFeature *, QgsExpression *parent )
|
||||
static QVariant fncColorCmyka( const QVariantList &values, const QgsFeature *, QgsExpression *parent )
|
||||
{
|
||||
// Cyan ranges from 0 - 100
|
||||
double cyan = getIntValue( values.at( 0 ), parent ) / 100.0;
|
||||
@ -1358,7 +1358,7 @@ static QVariant fncColorCmyka( const QVariantList &values, QgsFeature *, QgsExpr
|
||||
return QgsSymbolLayerV2Utils::encodeColor( color );
|
||||
}
|
||||
|
||||
static QVariant fcnSpecialColumn( const QVariantList& values, QgsFeature* /*f*/, QgsExpression* parent )
|
||||
static QVariant fcnSpecialColumn( const QVariantList& values, const QgsFeature* /*f*/, QgsExpression* parent )
|
||||
{
|
||||
QString varName = getStringValue( values.at( 0 ), parent );
|
||||
return QgsExpression::specialColumn( varName );
|
||||
@ -1685,7 +1685,7 @@ bool QgsExpression::prepare( const QgsFields& fields )
|
||||
return mRootNode->prepare( this, fields );
|
||||
}
|
||||
|
||||
QVariant QgsExpression::evaluate( QgsFeature* f )
|
||||
QVariant QgsExpression::evaluate( const QgsFeature* f )
|
||||
{
|
||||
mEvalErrorString = QString();
|
||||
if ( !mRootNode )
|
||||
@ -1697,7 +1697,7 @@ QVariant QgsExpression::evaluate( QgsFeature* f )
|
||||
return mRootNode->eval( this, f );
|
||||
}
|
||||
|
||||
QVariant QgsExpression::evaluate( QgsFeature* f, const QgsFields& fields )
|
||||
QVariant QgsExpression::evaluate( const QgsFeature* f, const QgsFields& fields )
|
||||
{
|
||||
// first prepare
|
||||
bool res = prepare( fields );
|
||||
@ -1822,7 +1822,7 @@ QString QgsExpression::NodeList::dump() const
|
||||
|
||||
//
|
||||
|
||||
QVariant QgsExpression::NodeUnaryOperator::eval( QgsExpression* parent, QgsFeature* f )
|
||||
QVariant QgsExpression::NodeUnaryOperator::eval( QgsExpression* parent, const QgsFeature* f )
|
||||
{
|
||||
QVariant val = mOperand->eval( parent, f );
|
||||
ENSURE_NO_EVAL_ERROR;
|
||||
@ -1862,7 +1862,7 @@ QString QgsExpression::NodeUnaryOperator::dump() const
|
||||
|
||||
//
|
||||
|
||||
QVariant QgsExpression::NodeBinaryOperator::eval( QgsExpression* parent, QgsFeature* f )
|
||||
QVariant QgsExpression::NodeBinaryOperator::eval( QgsExpression* parent, const QgsFeature* f )
|
||||
{
|
||||
QVariant vL = mOpLeft->eval( parent, f );
|
||||
ENSURE_NO_EVAL_ERROR;
|
||||
@ -2099,7 +2099,7 @@ QString QgsExpression::NodeBinaryOperator::dump() const
|
||||
|
||||
//
|
||||
|
||||
QVariant QgsExpression::NodeInOperator::eval( QgsExpression* parent, QgsFeature* f )
|
||||
QVariant QgsExpression::NodeInOperator::eval( QgsExpression* parent, const QgsFeature* f )
|
||||
{
|
||||
if ( mList->count() == 0 )
|
||||
return mNotIn ? TVL_True : TVL_False;
|
||||
@ -2162,7 +2162,7 @@ QString QgsExpression::NodeInOperator::dump() const
|
||||
|
||||
//
|
||||
|
||||
QVariant QgsExpression::NodeFunction::eval( QgsExpression* parent, QgsFeature* f )
|
||||
QVariant QgsExpression::NodeFunction::eval( QgsExpression* parent, const QgsFeature* f )
|
||||
{
|
||||
Function* fd = Functions()[mFnIndex];
|
||||
|
||||
@ -2212,7 +2212,7 @@ QString QgsExpression::NodeFunction::dump() const
|
||||
|
||||
//
|
||||
|
||||
QVariant QgsExpression::NodeLiteral::eval( QgsExpression* , QgsFeature* )
|
||||
QVariant QgsExpression::NodeLiteral::eval( QgsExpression* , const QgsFeature* )
|
||||
{
|
||||
return mValue;
|
||||
}
|
||||
@ -2239,7 +2239,7 @@ QString QgsExpression::NodeLiteral::dump() const
|
||||
|
||||
//
|
||||
|
||||
QVariant QgsExpression::NodeColumnRef::eval( QgsExpression* /*parent*/, QgsFeature* f )
|
||||
QVariant QgsExpression::NodeColumnRef::eval( QgsExpression* /*parent*/, const QgsFeature* f )
|
||||
{
|
||||
if ( f )
|
||||
{
|
||||
@ -2273,7 +2273,7 @@ QString QgsExpression::NodeColumnRef::dump() const
|
||||
|
||||
//
|
||||
|
||||
QVariant QgsExpression::NodeCondition::eval( QgsExpression* parent, QgsFeature* f )
|
||||
QVariant QgsExpression::NodeCondition::eval( QgsExpression* parent, const QgsFeature* f )
|
||||
{
|
||||
foreach ( WhenThen* cond, mConditions )
|
||||
{
|
||||
|
@ -113,11 +113,19 @@ class CORE_EXPORT QgsExpression
|
||||
|
||||
//! Evaluate the feature and return the result
|
||||
//! @note prepare() should be called before calling this method
|
||||
QVariant evaluate( QgsFeature* f = NULL );
|
||||
QVariant evaluate( const QgsFeature* f = NULL );
|
||||
|
||||
//! Evaluate the feature and return the result
|
||||
//! @note prepare() should be called before calling this method
|
||||
inline QVariant evaluate( const QgsFeature& f ) { return evaluate( &f ); }
|
||||
|
||||
//! Evaluate the feature and return the result
|
||||
//! @note this method does not expect that prepare() has been called on this instance
|
||||
QVariant evaluate( QgsFeature* f, const QgsFields& fields );
|
||||
QVariant evaluate( const QgsFeature* f, const QgsFields& fields );
|
||||
|
||||
//! Evaluate the feature and return the result
|
||||
//! @note this method does not expect that prepare() has been called on this instance
|
||||
inline QVariant evaluate( const QgsFeature& f, const QgsFields& fields ) { return evaluate( &f, fields ); }
|
||||
|
||||
//! Returns true if an error occurred when evaluating last input
|
||||
bool hasEvalError() const { return !mEvalErrorString.isNull(); }
|
||||
@ -223,7 +231,7 @@ class CORE_EXPORT QgsExpression
|
||||
static const char* BinaryOperatorText[];
|
||||
static const char* UnaryOperatorText[];
|
||||
|
||||
typedef QVariant( *FcnEval )( const QVariantList& values, QgsFeature* f, QgsExpression* parent );
|
||||
typedef QVariant( *FcnEval )( const QVariantList& values, const QgsFeature* f, QgsExpression* parent );
|
||||
|
||||
|
||||
/**
|
||||
@ -245,7 +253,7 @@ class CORE_EXPORT QgsExpression
|
||||
/** The help text for the function. */
|
||||
QString helptext() { return mHelpText.isEmpty() ? QgsExpression::helptext( mName ) : mHelpText; }
|
||||
|
||||
virtual QVariant func( const QVariantList& values, QgsFeature* f, QgsExpression* parent ) = 0;
|
||||
virtual QVariant func( const QVariantList& values, const QgsFeature* f, QgsExpression* parent ) = 0;
|
||||
|
||||
bool operator==( const Function& other ) const
|
||||
{
|
||||
@ -269,7 +277,7 @@ class CORE_EXPORT QgsExpression
|
||||
StaticFunction( QString fnname, int params, FcnEval fcn, QString group, QString helpText = QString(), bool usesGeometry = false )
|
||||
: Function( fnname, params, group, helpText, usesGeometry ), mFnc( fcn ) {}
|
||||
|
||||
virtual QVariant func( const QVariantList& values, QgsFeature* f, QgsExpression* parent )
|
||||
virtual QVariant func( const QVariantList& values, const QgsFeature* f, QgsExpression* parent )
|
||||
{
|
||||
return mFnc( values, f, parent );
|
||||
}
|
||||
@ -330,7 +338,7 @@ class CORE_EXPORT QgsExpression
|
||||
virtual NodeType nodeType() const = 0;
|
||||
// abstract virtual eval function
|
||||
// errors are reported to the parent
|
||||
virtual QVariant eval( QgsExpression* parent, QgsFeature* f ) = 0;
|
||||
virtual QVariant eval( QgsExpression* parent, const QgsFeature* f ) = 0;
|
||||
|
||||
// abstract virtual preparation function
|
||||
// errors are reported to the parent
|
||||
@ -401,7 +409,7 @@ class CORE_EXPORT QgsExpression
|
||||
|
||||
virtual NodeType nodeType() const { return ntUnaryOperator; }
|
||||
virtual bool prepare( QgsExpression* parent, const QgsFields& fields );
|
||||
virtual QVariant eval( QgsExpression* parent, QgsFeature* f );
|
||||
virtual QVariant eval( QgsExpression* parent, const QgsFeature* f );
|
||||
virtual QString dump() const;
|
||||
|
||||
virtual QStringList referencedColumns() const { return mOperand->referencedColumns(); }
|
||||
@ -425,7 +433,7 @@ class CORE_EXPORT QgsExpression
|
||||
|
||||
virtual NodeType nodeType() const { return ntBinaryOperator; }
|
||||
virtual bool prepare( QgsExpression* parent, const QgsFields& fields );
|
||||
virtual QVariant eval( QgsExpression* parent, QgsFeature* f );
|
||||
virtual QVariant eval( QgsExpression* parent, const QgsFeature* f );
|
||||
virtual QString dump() const;
|
||||
|
||||
virtual QStringList referencedColumns() const { return mOpLeft->referencedColumns() + mOpRight->referencedColumns(); }
|
||||
@ -455,7 +463,7 @@ class CORE_EXPORT QgsExpression
|
||||
|
||||
virtual NodeType nodeType() const { return ntInOperator; }
|
||||
virtual bool prepare( QgsExpression* parent, const QgsFields& fields );
|
||||
virtual QVariant eval( QgsExpression* parent, QgsFeature* f );
|
||||
virtual QVariant eval( QgsExpression* parent, const QgsFeature* f );
|
||||
virtual QString dump() const;
|
||||
|
||||
virtual QStringList referencedColumns() const { QStringList lst( mNode->referencedColumns() ); foreach ( Node* n, mList->list() ) lst.append( n->referencedColumns() ); return lst; }
|
||||
@ -480,7 +488,7 @@ class CORE_EXPORT QgsExpression
|
||||
|
||||
virtual NodeType nodeType() const { return ntFunction; }
|
||||
virtual bool prepare( QgsExpression* parent, const QgsFields& fields );
|
||||
virtual QVariant eval( QgsExpression* parent, QgsFeature* f );
|
||||
virtual QVariant eval( QgsExpression* parent, const QgsFeature* f );
|
||||
virtual QString dump() const;
|
||||
|
||||
virtual QStringList referencedColumns() const { QStringList lst; if ( !mArgs ) return lst; foreach ( Node* n, mArgs->list() ) lst.append( n->referencedColumns() ); return lst; }
|
||||
@ -502,7 +510,7 @@ class CORE_EXPORT QgsExpression
|
||||
|
||||
virtual NodeType nodeType() const { return ntLiteral; }
|
||||
virtual bool prepare( QgsExpression* parent, const QgsFields& fields );
|
||||
virtual QVariant eval( QgsExpression* parent, QgsFeature* f );
|
||||
virtual QVariant eval( QgsExpression* parent, const QgsFeature* f );
|
||||
virtual QString dump() const;
|
||||
|
||||
virtual QStringList referencedColumns() const { return QStringList(); }
|
||||
@ -522,7 +530,7 @@ class CORE_EXPORT QgsExpression
|
||||
|
||||
virtual NodeType nodeType() const { return ntColumnRef; }
|
||||
virtual bool prepare( QgsExpression* parent, const QgsFields& fields );
|
||||
virtual QVariant eval( QgsExpression* parent, QgsFeature* f );
|
||||
virtual QVariant eval( QgsExpression* parent, const QgsFeature* f );
|
||||
virtual QString dump() const;
|
||||
|
||||
virtual QStringList referencedColumns() const { return QStringList( mName ); }
|
||||
@ -553,7 +561,7 @@ class CORE_EXPORT QgsExpression
|
||||
~NodeCondition() { delete mElseExp; foreach ( WhenThen* cond, mConditions ) delete cond; }
|
||||
|
||||
virtual NodeType nodeType() const { return ntCondition; }
|
||||
virtual QVariant eval( QgsExpression* parent, QgsFeature* f );
|
||||
virtual QVariant eval( QgsExpression* parent, const QgsFeature* f );
|
||||
virtual bool prepare( QgsExpression* parent, const QgsFields& fields );
|
||||
virtual QString dump() const;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user