summaryrefslogtreecommitdiff
path: root/impl/VariableAssignment.hpp
diff options
context:
space:
mode:
authorCarlo Zancanaro <carlo@pc-4w14-0.cs.usyd.edu.au>2012-11-21 02:10:41 +1100
committerCarlo Zancanaro <carlo@pc-4w14-0.cs.usyd.edu.au>2012-11-21 02:10:41 +1100
commitf7f83793c2d3f8f37b49bf1eab04f08f8118797e (patch)
tree8598f1c2fcca83515e50bf3e7a055c7bf1ed08a8 /impl/VariableAssignment.hpp
parent50f2130f18e86055892c870c14af5101feb568ff (diff)
Bug fixes for stupid things.
Diffstat (limited to 'impl/VariableAssignment.hpp')
-rw-r--r--impl/VariableAssignment.hpp22
1 files changed, 12 insertions, 10 deletions
diff --git a/impl/VariableAssignment.hpp b/impl/VariableAssignment.hpp
index 08002b8..67896ef 100644
--- a/impl/VariableAssignment.hpp
+++ b/impl/VariableAssignment.hpp
@@ -60,15 +60,17 @@ struct DynamicVariableAssignment : public VariableAssignment<Domain> {
IdSet<Variable<Domain> > get_changed() {
IdSet<Variable<Domain> > changed;
- for (typename IdSet<Variable<Domain> >::iterator
- it = _touched.begin(),
- ei = _touched.end();
- it != ei;
- ++it) {
- Variable<Domain>& var = _system.variable(*it);
- if (!_unstable.contains(var) && _old_values[var] != _values[var]) {
- changed.insert(var);
- _touched.remove(var);
+ if (_touched.size() > 0) {
+ for (typename IdSet<Variable<Domain> >::iterator
+ it = _touched.begin(),
+ ei = _touched.end();
+ it != ei;
+ ++it) {
+ Variable<Domain>& var = _system.variable(*it);
+ if (!_unstable.contains(var) && _old_values[var] != _values[var]) {
+ changed.insert(var);
+ _touched.remove(var);
+ }
}
}
//_touched.clear();
@@ -88,7 +90,6 @@ private:
const DynamicMaxStrategy<Domain>& const_strat = _strategy;
DependencyAssignment assignment(*this, x);
Domain val = _system[x]->eval(assignment, const_strat);
- stack_depth--;
if (val != _values[x]) {
log::fixpoint << x << " = " << val << std::endl;
@@ -108,6 +109,7 @@ private:
log::fixpoint << indent() << x << " did not change: "
<< x << " = " << val << std::endl;
}
+ stack_depth--;
} else {
log::fixpoint << indent() << x << " is stable: "
<< x << " = " << _values[x] << std::endl;