QgsScopedExpressionFunction class

Expression function for use within a QgsExpressionContextScope.

This differs from a standard QgsExpression::Function in that it requires an implemented clone() method.

Base classes

class QgsExpressionFunction
A abstract base class for defining QgsExpression functions.

Constructors, destructors, conversion operators

QgsScopedExpressionFunction(const QString& fnname, int params, const QString& group, const QString& helpText = QString(), bool usesGeometry = false, const QSet<QString>& referencedColumns = QSet<QString>(), bool lazyEval = false, bool handlesNull = false, bool isContextual = true)
Create a new QgsScopedExpressionFunction.
QgsScopedExpressionFunction(const QString& fnname, const QgsExpressionFunction::ParameterList& params, const QString& group, const QString& helpText = QString(), bool usesGeometry = false, const QSet<QString>& referencedColumns = QSet<QString>(), bool lazyEval = false, bool handlesNull = false, bool isContextual = true)
Create a new QgsScopedExpressionFunction using named parameters.

Public functions

auto clone() const -> QgsScopedExpressionFunction* pure virtual
Returns a clone of the function.
auto func(const QVariantList& values, const QgsExpressionContext* context, QgsExpression* parent, const QgsExpressionNodeFunction* node) -> QVariant override
Returns result of evaluating the function.
auto isStatic(const QgsExpressionNodeFunction* node, QgsExpression* parent, const QgsExpressionContext* context) const -> bool override
Will be called during prepare to determine if the function is static.
auto referencedColumns(const QgsExpressionNodeFunction* node) const -> QSet<QString> override
Returns a set of field names which are required for this function.
auto usesGeometry(const QgsExpressionNodeFunction* node) const -> bool override
Does this function use a geometry object.

Function documentation

QgsScopedExpressionFunction::QgsScopedExpressionFunction(const QString& fnname, int params, const QString& group, const QString& helpText = QString(), bool usesGeometry = false, const QSet<QString>& referencedColumns = QSet<QString>(), bool lazyEval = false, bool handlesNull = false, bool isContextual = true)

Create a new QgsScopedExpressionFunction.

QgsScopedExpressionFunction::QgsScopedExpressionFunction(const QString& fnname, const QgsExpressionFunction::ParameterList& params, const QString& group, const QString& helpText = QString(), bool usesGeometry = false, const QSet<QString>& referencedColumns = QSet<QString>(), bool lazyEval = false, bool handlesNull = false, bool isContextual = true)

Create a new QgsScopedExpressionFunction using named parameters.

QVariant QgsScopedExpressionFunction::func(const QVariantList& values, const QgsExpressionContext* context, QgsExpression* parent, const QgsExpressionNodeFunction* node) override

Returns result of evaluating the function.

Parameters
values list of values passed to the function
context context expression is being evaluated against
parent parent expression
node expression node
Returns result of function

bool QgsScopedExpressionFunction::isStatic(const QgsExpressionNodeFunction* node, QgsExpression* parent, const QgsExpressionContext* context) const override

Will be called during prepare to determine if the function is static.

A function is static if it will return the same value for every feature with different attributes and/or geometry.

By default this will return true, if all arguments that have been passed to the function are also static.

QSet<QString> QgsScopedExpressionFunction::referencedColumns(const QgsExpressionNodeFunction* node) const override

Returns a set of field names which are required for this function.

May contain QgsFeatureRequest::AllAttributes to signal that all attributes are required. If in doubt this will return more fields than strictly required.