Author: dragonking
Date: Wed Apr 8 00:30:06 2009
New Revision: 34627
URL: http://svn.gna.org/viewcvs/wesnoth?rev=34627&view=rev
Log:
Improved formula if function
Modified:
trunk/src/formula_function.cpp
Modified: trunk/src/formula_function.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/formula_function.cpp?rev=34627&r1=34626&r2=34627&view=diff
==============================================================================
--- trunk/src/formula_function.cpp (original)
+++ trunk/src/formula_function.cpp Wed Apr 8 00:30:06 2009
@@ -55,13 +55,23 @@
class if_function : public function_expression {
public:
explicit if_function(const args_list& args)
- : function_expression("if", args, 3, 3)
- {}
-
-private:
- variant execute(const formula_callable& variables) const {
- const int i = args()[0]->evaluate(variables).as_bool() ? 1 : 2;
- return args()[i]->evaluate(variables);
+ : function_expression("if", args, 3, -1)
+ {}
+
+private:
+ variant execute(const formula_callable& variables) const {
+ for(size_t n = 0; n < args().size()-1; n += 2) {
+ if( args()[n]->evaluate(variables).as_bool() ) {
+ return args()[n+1]->evaluate(variables);
+ }
+ }
+
+ if((args().size()%2) != 0) {
+ return args().back()->evaluate(variables);
+ } else {
+ return variant();
+ }
+
}
};
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits