@@ -3602,6 +3602,13 @@ static QVariant fcnArrayCat( const QVariantList &values, const QgsExpressionCont
36023602 return convertToSameType ( list, values.at ( 0 ).type () );
36033603}
36043604
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+
36053612static QVariant fcnArrayIntersect ( const QVariantList &values, const QgsExpressionContext *, QgsExpression *parent )
36063613{
36073614 const QVariantList array1 = QgsExpressionUtils::getListValue ( values.at ( 0 ), parent );
@@ -3613,7 +3620,6 @@ static QVariant fcnArrayIntersect( const QVariantList &values, const QgsExpressi
36133620 return QVariant ( false );
36143621}
36153622
3616-
36173623static QVariant fcnArrayDistinct ( const QVariantList &values, const QgsExpressionContext *, QgsExpression *parent )
36183624{
36193625 QVariantList array = QgsExpressionUtils::getListValue ( values.at ( 0 ), parent );
@@ -4257,6 +4263,7 @@ const QList<QgsExpressionFunction *> &QgsExpression::Functions()
42574263 << new QgsStaticExpressionFunction ( QStringLiteral ( " array_remove_at" ), QgsExpressionFunction::ParameterList () << QgsExpressionFunction::Parameter ( QStringLiteral ( " array" ) ) << QgsExpressionFunction::Parameter ( QStringLiteral ( " pos" ) ), fcnArrayRemoveAt, QStringLiteral ( " Arrays" ) )
42584264 << new QgsStaticExpressionFunction ( QStringLiteral ( " array_remove_all" ), QgsExpressionFunction::ParameterList () << QgsExpressionFunction::Parameter ( QStringLiteral ( " array" ) ) << QgsExpressionFunction::Parameter ( QStringLiteral ( " value" ) ), fcnArrayRemoveAll, QStringLiteral ( " Arrays" ) )
42594265 << new QgsStaticExpressionFunction ( QStringLiteral ( " array_cat" ), -1 , fcnArrayCat, QStringLiteral ( " Arrays" ) )
4266+ << new QgsStaticExpressionFunction ( QStringLiteral ( " array_reverse" ), QgsExpressionFunction::ParameterList () << QgsExpressionFunction::Parameter ( QStringLiteral ( " array" ) ), fcnArrayReverse, QStringLiteral ( " Arrays" ) )
42604267 << new QgsStaticExpressionFunction ( QStringLiteral ( " array_intersect" ), QgsExpressionFunction::ParameterList () << QgsExpressionFunction::Parameter ( QStringLiteral ( " array1" ) ) << QgsExpressionFunction::Parameter ( QStringLiteral ( " array2" ) ), fcnArrayIntersect, QStringLiteral ( " Arrays" ) )
42614268 << new QgsStaticExpressionFunction ( QStringLiteral ( " array_distinct" ), 1 , fcnArrayDistinct, QStringLiteral ( " Arrays" ) )
42624269 << 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