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, QVariant::Type type );
 
  671    static HelpTextHash &functionHelpTexts();
 
  681    static QString helpText( QString name );
 
  688    static QStringList tags( 
const QString &name );
 
  702    static bool addVariableHelpText( 
const QString name, 
const QString &description );
 
  710    static QString variableHelpText( 
const QString &variableName );
 
  720    static QString 
formatVariableHelp( 
const QString &description, 
bool showValue = 
true, 
const QVariant &value = QVariant() );
 
  726    static QString group( 
const QString &group );
 
  736    static QString formatPreviewString( 
const QVariant &value, 
bool htmlOutput = 
true, 
int maximumPreviewLength = 60 );
 
  746    static QString createFieldEqualityExpression( 
const QString &fieldName, 
const QVariant &value, QVariant::Type fieldType = QVariant::Type::Invalid );
 
  758    static bool isFieldEqualityExpression( 
const QString &expression, QString &field 
SIP_OUT, QVariant &value 
SIP_OUT );
 
  774    static bool attemptReduceToInClause( 
const QStringList &expressions, QString &result 
SIP_OUT );
 
  777    SIP_PYOBJECT __repr__();
 
  779    QString 
str = QStringLiteral( 
"<QgsExpression: '%1'>" ).arg( sipCpp->expression() );
 
  780    sipRes = PyUnicode_FromString( 
str.toUtf8().constData() );
 
  795    QgsExpressionPrivate *d = 
nullptr;
 
  797    static HelpTextHash sFunctionHelpTexts;
 
  800    static 
void initFunctionHelp() 
SIP_SKIP;
 
  802    static 
void initVariableHelp() 
SIP_SKIP;
 
  805    static QRecursiveMutex sFunctionsMutex;
 
  806    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.