16#ifndef QGSEXPRESSION_H
17#define QGSEXPRESSION_H
24#include <QDomDocument>
25#include <QCoreApplication>
27#include <QRecursiveMutex>
45class QgsExpressionPrivate;
52 HelpArg(
const QString &arg,
const QString &desc,
bool descOnly =
false,
bool syntaxOnly =
false,
53 bool optional =
false,
const QString &defaultVal = QString() )
55 , mDescription( desc )
56 , mDescOnly( descOnly )
57 , mSyntaxOnly( syntaxOnly )
58 , mOptional( optional )
59 , mDefaultVal( defaultVal )
72 HelpExample(
const QString &expression,
const QString &returns,
const QString ¬e = QString() )
73 : mExpression( expression )
86 HelpVariant(
const QString &name,
const QString &description,
87 const QList<HelpArg> &arguments = QList<HelpArg>(),
88 bool variableLenArguments =
false,
89 const QList<HelpExample> &examples = QList<HelpExample>(),
90 const QString ¬es = QString(),
91 const QStringList &tags = QStringList() )
93 , mDescription( description )
94 , mArguments( arguments )
95 , mVariableLenArguments( variableLenArguments )
96 , mExamples( examples )
102 QString mDescription;
103 QList<HelpArg> mArguments;
104 bool mVariableLenArguments;
105 QList<HelpExample> mExamples;
116 Help(
const QString &name,
const QString &type,
const QString &description,
const QList<HelpVariant> &variants )
119 , mDescription( description )
120 , mVariants( variants )
125 QString mDescription;
126 QList<HelpVariant> mVariants;
129typedef QHash<QString, Help> HelpTextHash;
204 FunctionWrongArgs = 2,
205 FunctionInvalidParams = 3,
206 FunctionNamedArgsError = 4
294 bool isValid() const;
297 bool hasParserError() const;
299 QString parserErrorString() const;
338 QSet<QString> referencedColumns() const;
351 QSet<QString> referencedVariables() const;
362 QSet<QString> referencedFunctions() const;
372 QList<const QgsExpressionNode *> nodes( )
const;
383 QList<const T *> lst;
384 const QList<const QgsExpressionNode *> allNodes( nodes() );
385 for (
const auto &node : allNodes )
387 const T *n =
dynamic_cast<const T *
>( node );
408 QSet<int> referencedAttributeIndexes(
const QgsFields &fields )
const;
411 bool needsGeometry()
const;
431 bool hasEvalError()
const;
433 QString evalErrorString()
const;
435 void setEvalErrorString(
const QString &
str );
443 bool isField()
const;
457 static int expressionToLayerFieldIndex(
const QString &expression,
const QgsVectorLayer *layer );
471 static QString quoteFieldExpression(
const QString &expression,
const QgsVectorLayer *layer );
488 void setExpression(
const QString &expression );
495 QString expression()
const;
503 QString dump()
const;
580 static QString replaceExpressionText(
const QString &action,
const QgsExpressionContext *context,
590 static QSet<QString> referencedVariables(
const QString &text );
602 static double evaluateToDouble(
const QString &text,
double fallbackValue );
617 static const QList<QgsExpressionFunction *> &Functions();
619 static const QStringList &BuiltinFunctions();
635 static bool unregisterFunction(
const QString &name );
641 static void cleanRegisteredFunctions();
644 static bool isFunctionName(
const QString &name );
647 static int functionIndex(
const QString &name );
653 static int functionCount();
660 static QString quotedColumnRef( QString name );
667 static QString quotedString( QString text );
677 static QString quotedValue(
const QVariant &value );
688 static QString quotedValue(
const QVariant &value, QVariant::Type type );
694 static HelpTextHash &functionHelpTexts();
704 static QString helpText( QString name );
711 static QStringList tags(
const QString &name );
725 static bool addVariableHelpText(
const QString name,
const QString &description );
734 static QString variableHelpText(
const QString &variableName );
745 static QString
formatVariableHelp(
const QString &description,
bool showValue =
true,
const QVariant &value = QVariant() );
751 static QString group(
const QString &group );
762 static QString formatPreviewString(
const QVariant &value,
bool htmlOutput =
true,
int maximumPreviewLength = 60 );
773 static QString createFieldEqualityExpression(
const QString &fieldName,
const QVariant &value, QVariant::Type fieldType = QVariant::Type::Invalid );
785 static bool isFieldEqualityExpression(
const QString &expression, QString &field
SIP_OUT, QVariant &value
SIP_OUT );
801 static bool attemptReduceToInClause(
const QStringList &expressions, QString &result
SIP_OUT );
804 SIP_PYOBJECT __repr__();
806 QString
str = QStringLiteral(
"<QgsExpression: '%1'>" ).arg( sipCpp->expression() );
807 sipRes = PyUnicode_FromString(
str.toUtf8().constData() );
822 QgsExpressionPrivate *d =
nullptr;
824 static HelpTextHash sFunctionHelpTexts;
827 static
void initFunctionHelp()
SIP_SKIP;
829 static
void initVariableHelp()
SIP_SKIP;
832 static QRecursiveMutex sFunctionsMutex;
833 static QMap< QString,
int> sFunctionIndexMap;
DistanceUnit
Units of distance.
A general purpose distance and area calculator, capable of performing ellipsoid based calculations.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
A abstract base class for defining QgsExpression functions.
An expression node for expression functions.
Abstract base class for all nodes that can appear in an expression.
Class for parsing and evaluation of expressions (formerly called "search strings").
QList< const T * > findNodes() const
Returns a list of all nodes of the given class which are used in this expression.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Encapsulate a field in an attribute table or data source.
Container of fields for a vector layer.
A geometry is the spatial representation of a feature.
The QgsOgcUtils class provides various utility functions for conversion between OGC (Open Geospatial ...
This is the base class for vector data providers.
Represents a vector layer which manages a vector based data sets.
Q_DECLARE_METATYPE(QgsDatabaseQueryLogEntry)
QString formatVariableHelp(const QString &variable, const QString &description, bool showValue, const QVariant &value)
Returns a HTML formatted string for use as a variable item help.
Details about any parser errors that were found when parsing the expression.
QString errorMsg
The message for the error at this location.