Skip to content

Commit ccbd7aa

Browse files
Sandro Santillimach0
Sandro Santilli
authored andcommittedDec 18, 2011
Add support for modulo operator (%) in rule based rendering. See ticket #3845.
1 parent cab91b5 commit ccbd7aa

File tree

4 files changed

+8
-1
lines changed

4 files changed

+8
-1
lines changed
 

‎src/core/qgssearchstringlexer.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ string "'"{str_char}*"'"
109109
110110
"||" { return CONCAT; }
111111
112-
[+-/*^] { return yytext[0]; }
112+
[+-/*^%] { return yytext[0]; }
113113
114114
[()] { return yytext[0]; }
115115

‎src/core/qgssearchstringparser.yy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ scalar_exp:
171171
}
172172
| scalar_exp '^' scalar_exp { $$ = new QgsSearchTreeNode(QgsSearchTreeNode::opPOW, $1, $3); joinTmpNodes($$,$1,$3); }
173173
| scalar_exp '*' scalar_exp { $$ = new QgsSearchTreeNode(QgsSearchTreeNode::opMUL, $1, $3); joinTmpNodes($$,$1,$3); }
174+
| scalar_exp '%' scalar_exp { $$ = new QgsSearchTreeNode(QgsSearchTreeNode::opMOD, $1, $3); joinTmpNodes($$,$1,$3); }
174175
| scalar_exp '/' scalar_exp { $$ = new QgsSearchTreeNode(QgsSearchTreeNode::opDIV, $1, $3); joinTmpNodes($$,$1,$3); }
175176
| scalar_exp '+' scalar_exp { $$ = new QgsSearchTreeNode(QgsSearchTreeNode::opPLUS, $1, $3); joinTmpNodes($$,$1,$3); }
176177
| scalar_exp '-' scalar_exp { $$ = new QgsSearchTreeNode(QgsSearchTreeNode::opMINUS,$1, $3); joinTmpNodes($$,$1,$3); }

‎src/core/qgssearchtreenode.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,7 @@ QString QgsSearchTreeNode::makeSearchString()
268268
case opPLUS: str += "+"; break;
269269
case opMINUS: str += "-"; break;
270270
case opMUL: str += "*"; break;
271+
case opMOD: str += "%"; break;
271272
case opDIV: str += "/"; break;
272273
case opPOW: str += "^"; break;
273274

@@ -776,6 +777,10 @@ QgsSearchTreeValue QgsSearchTreeNode::valueAgainst( const QgsFieldMap& fields, Q
776777
return QgsSearchTreeValue( val1 - val2 );
777778
case opMUL:
778779
return QgsSearchTreeValue( val1 * val2 );
780+
case opMOD:
781+
// NOTE: we _might_ support float operators, like postgresql does
782+
// see 83c94a886c059 commit in postgresql git repo for more info
783+
return QgsSearchTreeValue( int(val1) % int(val2) );
779784
case opDIV:
780785
if ( val2 == 0 )
781786
return QgsSearchTreeValue( 2, "" ); // division by zero

‎src/core/qgssearchtreenode.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ class CORE_EXPORT QgsSearchTreeNode
6666
opPLUS,
6767
opMINUS,
6868
opMUL,
69+
opMOD,
6970
opDIV,
7071
opPOW,
7172
opSQRT,

0 commit comments

Comments
 (0)
Please sign in to comment.