Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Added python bindings for QgsExpression
  • Loading branch information
wonder-sk committed Aug 9, 2011
1 parent 047ae03 commit 98a1c23
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 1 deletion.
1 change: 1 addition & 0 deletions python/core/core.sip
Expand Up @@ -35,6 +35,7 @@
%Include qgsdataprovider.sip
%Include qgsdatasourceuri.sip
%Include qgsdistancearea.sip
%Include qgsexpression.sip
%Include qgsfeature.sip
%Include qgsfield.sip
%Include qgsgeometry.sip
Expand Down
64 changes: 64 additions & 0 deletions python/core/qgsexpression.sip
@@ -0,0 +1,64 @@

class QgsExpression
{
%TypeHeaderCode
#include "qgsexpression.h"
%End

public:
QgsExpression( const QString& expr );
~QgsExpression();

//! Returns true if an error occurred when parsing the input expression
bool hasParserError() const;
//! Returns parser error
QString parserErrorString() const;

//! Get the expression ready for evaluation - find out column indexes.
bool prepare( const QgsFieldMap& fields );

//! Get list of columns referenced by the expression
QStringList referencedColumns();
//! Returns true if the expression uses feature geometry for some computation
bool needsGeometry();

// evaluation

//! Evaluate the feature and return the result
//! @note prepare() should be called before calling this method
QVariant evaluate( QgsFeature* f = NULL );

//! Evaluate the feature and return the result
//! @note this method does not expect that prepare() has been called on this instance
QVariant evaluate( QgsFeature* f, const QgsFieldMap& fields );

//! Returns true if an error occurred when evaluating last input
bool hasEvalError() const;
//! Returns evaluation error
QString evalErrorString() const;
//! Set evaluation error (used internally by evaluation functions)
void setEvalErrorString( QString str );

//! Set the number for $rownum special column
void setCurrentRowNumber( int rowNumber );
//! Return the number used for $rownum special column
int currentRowNumber();

//! Return the parsed expression as a string - useful for debugging
QString dump() const;

//! Return calculator used for distance and area calculations
//! (used by internal functions)
QgsDistanceArea* geomCalculator();

//

// tells whether the identifier is a name of existing function
static bool isFunctionName( QString name );

// return index of the function in BuiltinFunctions array
static int functionIndex( QString name );

//! return quoted column reference (in double quotes)
static QString quotedColumnRef( QString name );
};
5 changes: 4 additions & 1 deletion src/core/qgsexpression.h
Expand Up @@ -55,7 +55,7 @@ to find out indices of columns and then repeatedly call evaluate(feature).
@note added in 2.0
*/
class QgsExpression
class CORE_EXPORT QgsExpression
{
public:
QgsExpression( const QString& expr );
Expand Down Expand Up @@ -165,6 +165,9 @@ class QgsExpression
// return index of the function in BuiltinFunctions array
static int functionIndex( QString name );

//! return quoted column reference (in double quotes)
static QString quotedColumnRef( QString name ) { return QString( "\"%1\"" ).arg( name.replace( "\"", "\"\"" ) ); }

//////

class Node
Expand Down

0 comments on commit 98a1c23

Please sign in to comment.