Skip to content
Permalink
Browse files
Added optional geometry parameter when evaluating predicates
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@13433 c8812cc2-4d05-0410-92ff-de0c093fc19c
  • Loading branch information
wonder committed May 7, 2010
1 parent 13caae4 commit 9ff72e123c4e8fdec20942c5be6cfed72bc955b3
Showing with 16 additions and 12 deletions.
  1. +3 −1 python/core/qgssearchtreenode.sip
  2. +10 −10 src/core/qgssearchtreenode.cpp
  3. +3 −1 src/core/qgssearchtreenode.h
@@ -90,7 +90,8 @@ class QgsSearchTreeNode
QString makeSearchString();

//! checks whether the node tree is valid against supplied attributes
bool checkAgainst( const QMap<int,QgsField>& fields, const QMap<int, QVariant>& attributes );
//! @note optional geom parameter added in 1.5
bool checkAgainst( const QMap<int,QgsField>& fields, const QMap<int, QVariant>& attributes, QgsGeometry* geom = 0 );

//! checks if there were errors during evaluation
bool hasError();
@@ -99,6 +100,7 @@ class QgsSearchTreeNode
const QString& errorMsg();

//! wrapper around valueAgainst()
//! @note added in 1.4
bool getValue( QgsSearchTreeValue& value /Out/, QgsSearchTreeNode* node,
const QMap<int,QgsField>& fields, const QMap<int,QVariant>& attributes, QgsGeometry* geom = 0 );

@@ -250,7 +250,7 @@ QStringList QgsSearchTreeNode::referencedColumns()
}


bool QgsSearchTreeNode::checkAgainst( const QgsFieldMap& fields, const QgsAttributeMap& attributes )
bool QgsSearchTreeNode::checkAgainst( const QgsFieldMap& fields, const QgsAttributeMap& attributes, QgsGeometry* geom )
{
QgsDebugMsgLevel( "checkAgainst: " + makeSearchString(), 2 );

@@ -269,21 +269,21 @@ bool QgsSearchTreeNode::checkAgainst( const QgsFieldMap& fields, const QgsAttrib
switch ( mOp )
{
case opNOT:
return !mLeft->checkAgainst( fields, attributes );
return !mLeft->checkAgainst( fields, attributes, geom );

case opAND:
if ( !mLeft->checkAgainst( fields, attributes ) )
if ( !mLeft->checkAgainst( fields, attributes, geom ) )
return false;
return mRight->checkAgainst( fields, attributes );
return mRight->checkAgainst( fields, attributes, geom );

case opOR:
if ( mLeft->checkAgainst( fields, attributes ) )
if ( mLeft->checkAgainst( fields, attributes, geom ) )
return true;
return mRight->checkAgainst( fields, attributes );
return mRight->checkAgainst( fields, attributes, geom );

case opISNULL:
case opISNOTNULL:
if ( !getValue( value1, mLeft, fields, attributes ) )
if ( !getValue( value1, mLeft, fields, attributes, geom ) )
return false;

if ( mOp == opISNULL )
@@ -302,7 +302,7 @@ bool QgsSearchTreeNode::checkAgainst( const QgsFieldMap& fields, const QgsAttrib
case opGE:
case opLE:

if ( !getValue( value1, mLeft, fields, attributes ) || !getValue( value2, mRight, fields, attributes ) )
if ( !getValue( value1, mLeft, fields, attributes, geom ) || !getValue( value2, mRight, fields, attributes, geom ) )
return false;

if ( value1.isNull() || value2.isNull() )
@@ -329,8 +329,8 @@ bool QgsSearchTreeNode::checkAgainst( const QgsFieldMap& fields, const QgsAttrib
case opRegexp:
case opLike:
{
if ( !getValue( value1, mLeft, fields, attributes ) ||
!getValue( value2, mRight, fields, attributes ) )
if ( !getValue( value1, mLeft, fields, attributes, geom ) ||
!getValue( value2, mRight, fields, attributes, geom ) )
return false;

// value1 is string to be matched
@@ -127,7 +127,8 @@ class CORE_EXPORT QgsSearchTreeNode
QString makeSearchString();

//! checks whether the node tree is valid against supplied attributes
bool checkAgainst( const QgsFieldMap& fields, const QgsAttributeMap& attributes );
//! @note optional geom parameter added in 1.5
bool checkAgainst( const QgsFieldMap& fields, const QgsAttributeMap& attributes, QgsGeometry* geom = 0 );

//! checks if there were errors during evaluation
bool hasError() { return ( !mError.isEmpty() ); }
@@ -136,6 +137,7 @@ class CORE_EXPORT QgsSearchTreeNode
const QString& errorMsg() { return mError; }

//! wrapper around valueAgainst()
//! @note added in 1.4
bool getValue( QgsSearchTreeValue& value, QgsSearchTreeNode* node,
const QgsFieldMap& fields, const QgsAttributeMap& attributes, QgsGeometry* geom = 0 );

0 comments on commit 9ff72e1

Please sign in to comment.