Author: sapient
Date: Wed Mar 5 03:18:03 2008
New Revision: 24314
URL: http://svn.gna.org/viewcvs/wesnoth?rev=24314&view=rev
Log:
make formula.cpp compile on MSVC++6
Modified:
trunk/src/formula.cpp
Modified: trunk/src/formula.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/formula.cpp?rev=24314&r1=24313&r2=24314&view=diff
==============================================================================
--- trunk/src/formula.cpp (original)
+++ trunk/src/formula.cpp Wed Mar 5 03:18:03 2008
@@ -9,14 +9,16 @@
but WITHOUT ANY WARRANTY.
See the COPYING file for more details.
-*/
+*/
+#include "global.hpp"
+
#include <algorithm>
#include <boost/lexical_cast.hpp>
#include <cmath>
#include <iostream>
#include <vector>
-#include "foreach.hpp"
+//#include "foreach.hpp"
#include "formula.hpp"
#include "formula_callable.hpp"
#include "formula_function.hpp"
@@ -103,9 +105,11 @@
variant execute(const formula_callable& variables) const {
const variant res = operand_->evaluate(variables);
switch(op_) {
- case NOT: return res.as_bool() ? variant(0) : variant(1);
- case SUB: return -res;
- default: assert(false);
+ case NOT:
+ return res.as_bool() ? variant(0) : variant(1);
+ case SUB:
+ default:
+ return -res;
}
}
enum OP { NOT, SUB };
@@ -195,22 +199,37 @@
const variant left = left_->evaluate(variables);
const variant right = right_->evaluate(variables);
switch(op_) {
- case AND: return left.as_bool() == false ? left : right;
- case OR: return left.as_bool() ? left : right;
- case ADD: return left + right;
- case SUB: return left - right;
- case MUL: return left * right;
- case DIV: return left / right;
- case POW: return left ^ right;
- case EQ: return left == right ? variant(1) : variant(0);
- case NEQ: return left != right ? variant(1) : variant(0);
- case LTE: return left <= right ? variant(1) : variant(0);
- case GTE: return left >= right ? variant(1) : variant(0);
- case LT: return left < right ? variant(1) : variant(0);
- case GT: return left > right ? variant(1) : variant(0);
- case MOD: return left % right;
- case DICE:return variant(dice_roll(left.as_int(),
right.as_int()));
- default: assert(false);
+ case AND:
+ return left.as_bool() == false ? left : right;
+ case OR:
+ return left.as_bool() ? left : right;
+ case ADD:
+ return left + right;
+ case SUB:
+ return left - right;
+ case MUL:
+ return left * right;
+ case DIV:
+ return left / right;
+ case POW:
+ return left ^ right;
+ case EQ:
+ return left == right ? variant(1) : variant(0);
+ case NEQ:
+ return left != right ? variant(1) : variant(0);
+ case LTE:
+ return left <= right ? variant(1) : variant(0);
+ case GTE:
+ return left >= right ? variant(1) : variant(0);
+ case LT:
+ return left < right ? variant(1) : variant(0);
+ case GT:
+ return left > right ? variant(1) : variant(0);
+ case MOD:
+ return left % right;
+ case DICE:
+ default:
+ return variant(dice_roll(left.as_int(),
right.as_int()));
}
}
@@ -328,7 +347,8 @@
return str_;
} else {
std::string res = str_.as_string();
- foreach(const substitution& sub, subs_) {
+ for(int i=0; i < subs_.size(); ++i) {
+ const substitution& sub = subs_[i];
const std::string str =
sub.calculation->execute(variables).string_cast();
res.insert(sub.pos, str);
}
@@ -422,7 +442,7 @@
}
(*res)[var_name] = parse_expression(beg,i1,
symbols);
beg = i1+1;
- var_name.clear();
+ var_name = "";
} else if(i1->type == TOKEN_OPERATOR) {
std::string op_name(i1->begin, i1->end);
if(op_name == "=") {
@@ -590,7 +610,7 @@
if(tokens.back().type == TOKEN_WHITESPACE) {
tokens.pop_back();
}
- } catch(token_error& e) {
+ } catch(token_error& /*e*/) {
throw formula_error();
}
}
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits