@@ -3602,6 +3602,13 @@ static QVariant fcnArrayCat( const QVariantList &values, const QgsExpressionCont
3602
3602
return convertToSameType ( list, values.at ( 0 ).type () );
3603
3603
}
3604
3604
3605
+ static QVariant fcnArrayReverse ( const QVariantList &values, const QgsExpressionContext *, QgsExpression *parent )
3606
+ {
3607
+ QVariantList list = QgsExpressionUtils::getListValue ( values.at ( 0 ), parent );
3608
+ for ( int k = 0 , s = list.size (), max = ( s / 2 ); k < max; k++ ) list.swap ( k, s - ( 1 + k ) );
3609
+ return list;
3610
+ }
3611
+
3605
3612
static QVariant fcnArrayIntersect ( const QVariantList &values, const QgsExpressionContext *, QgsExpression *parent )
3606
3613
{
3607
3614
const QVariantList array1 = QgsExpressionUtils::getListValue ( values.at ( 0 ), parent );
@@ -3613,7 +3620,6 @@ static QVariant fcnArrayIntersect( const QVariantList &values, const QgsExpressi
3613
3620
return QVariant ( false );
3614
3621
}
3615
3622
3616
-
3617
3623
static QVariant fcnArrayDistinct ( const QVariantList &values, const QgsExpressionContext *, QgsExpression *parent )
3618
3624
{
3619
3625
QVariantList array = QgsExpressionUtils::getListValue ( values.at ( 0 ), parent );
@@ -4257,6 +4263,7 @@ const QList<QgsExpressionFunction *> &QgsExpression::Functions()
4257
4263
<< new QgsStaticExpressionFunction ( QStringLiteral ( " array_remove_at" ), QgsExpressionFunction::ParameterList () << QgsExpressionFunction::Parameter ( QStringLiteral ( " array" ) ) << QgsExpressionFunction::Parameter ( QStringLiteral ( " pos" ) ), fcnArrayRemoveAt, QStringLiteral ( " Arrays" ) )
4258
4264
<< new QgsStaticExpressionFunction ( QStringLiteral ( " array_remove_all" ), QgsExpressionFunction::ParameterList () << QgsExpressionFunction::Parameter ( QStringLiteral ( " array" ) ) << QgsExpressionFunction::Parameter ( QStringLiteral ( " value" ) ), fcnArrayRemoveAll, QStringLiteral ( " Arrays" ) )
4259
4265
<< new QgsStaticExpressionFunction ( QStringLiteral ( " array_cat" ), -1 , fcnArrayCat, QStringLiteral ( " Arrays" ) )
4266
+ << new QgsStaticExpressionFunction ( QStringLiteral ( " array_reverse" ), QgsExpressionFunction::ParameterList () << QgsExpressionFunction::Parameter ( QStringLiteral ( " array" ) ), fcnArrayReverse, QStringLiteral ( " Arrays" ) )
4260
4267
<< new QgsStaticExpressionFunction ( QStringLiteral ( " array_intersect" ), QgsExpressionFunction::ParameterList () << QgsExpressionFunction::Parameter ( QStringLiteral ( " array1" ) ) << QgsExpressionFunction::Parameter ( QStringLiteral ( " array2" ) ), fcnArrayIntersect, QStringLiteral ( " Arrays" ) )
4261
4268
<< new QgsStaticExpressionFunction ( QStringLiteral ( " array_distinct" ), 1 , fcnArrayDistinct, QStringLiteral ( " Arrays" ) )
4262
4269
<< new QgsStaticExpressionFunction ( QStringLiteral ( " array_to_string" ), QgsExpressionFunction::ParameterList () << QgsExpressionFunction::Parameter ( QStringLiteral ( " array" ) ) << QgsExpressionFunction::Parameter ( QStringLiteral ( " delimiter" ), true , " ," ) << QgsExpressionFunction::Parameter ( QStringLiteral ( " emptyvalue" ), true , " " ), fcnArrayToString, QStringLiteral ( " Arrays" ) )
0 commit comments