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;
203 FunctionWrongArgs = 2,
204 FunctionInvalidParams = 3,
205 FunctionNamedArgsError = 4
289 bool isValid() const;
292 bool hasParserError() const;
294 QString parserErrorString() const;
331 QSet<QString> referencedColumns() const;
343 QSet<QString> referencedVariables() const;
354 QSet<QString> referencedFunctions() const;
364 QList<const QgsExpressionNode *> nodes( )
const;
375 QList<const T *> lst;
376 const QList<const QgsExpressionNode *> allNodes( nodes() );
377 for (
const auto &node : allNodes )
379 const T *n =
dynamic_cast<const T *
>( node );
399 QSet<int> referencedAttributeIndexes(
const QgsFields &fields )
const;
402 bool needsGeometry()
const;
420 bool hasEvalError()
const;
422 QString evalErrorString()
const;
424 void setEvalErrorString(
const QString &
str );
431 bool isField()
const;
445 static int expressionToLayerFieldIndex(
const QString &expression,
const QgsVectorLayer *layer );
459 static QString quoteFieldExpression(
const QString &expression,
const QgsVectorLayer *layer );
474 void setExpression(
const QString &expression );
481 QString expression()
const;
489 QString dump()
const;
561 static QString replaceExpressionText(
const QString &action,
const QgsExpressionContext *context,
571 static QSet<QString> referencedVariables(
const QString &text );
582 static double evaluateToDouble(
const QString &text,
double fallbackValue );
597 static const QList<QgsExpressionFunction *> &Functions();
599 static const QStringList &BuiltinFunctions();
615 static bool unregisterFunction(
const QString &name );
620 static void cleanRegisteredFunctions();
623 static bool isFunctionName(
const QString &name );
626 static int functionIndex(
const QString &name );
632 static int functionCount();
639 static QString quotedColumnRef( QString name );
646 static QString quotedString( QString text );
655 static QString quotedValue(
const QVariant &value );
665 static QString quotedValue(
const QVariant &value, QMetaType::Type type );
676 Q_DECL_DEPRECATED
static QString quotedValue(
const QVariant &value, QVariant::Type type )
SIP_DEPRECATED;
682 static HelpTextHash &functionHelpTexts();
692 static QString helpText( QString name );
699 static QStringList tags(
const QString &name );
713 static bool addVariableHelpText(
const QString name,
const QString &description );
721 static QString variableHelpText(
const QString &variableName );
731 static QString
formatVariableHelp(
const QString &description,
bool showValue =
true,
const QVariant &value = QVariant() );
737 static QString group(
const QString &group );
747 static QString formatPreviewString(
const QVariant &value,
bool htmlOutput =
true,
int maximumPreviewLength = 60 );
757 static QString createFieldEqualityExpression(
const QString &fieldName,
const QVariant &value, QMetaType::Type fieldType = QMetaType::Type::UnknownType );
768 Q_DECL_DEPRECATED
static QString createFieldEqualityExpression(
const QString &fieldName,
const QVariant &value, QVariant::Type fieldType )
SIP_DEPRECATED;
780 static bool isFieldEqualityExpression(
const QString &expression, QString &field
SIP_OUT, QVariant &value
SIP_OUT );
796 static bool attemptReduceToInClause(
const QStringList &expressions, QString &result
SIP_OUT );
799 SIP_PYOBJECT __repr__();
801 QString
str = QStringLiteral(
"<QgsExpression: '%1'>" ).arg( sipCpp->expression() );
802 sipRes = PyUnicode_FromString(
str.toUtf8().constData() );
817 QgsExpressionPrivate *d =
nullptr;
819 static HelpTextHash sFunctionHelpTexts;
822 static
void initFunctionHelp()
SIP_SKIP;
824 static
void initVariableHelp()
SIP_SKIP;
827 static QRecursiveMutex sFunctionsMutex;
828 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.