Commit cf5d2c2b authored by Alexandre Duret-Lutz's avatar Alexandre Duret-Lutz

acc: make mark_t::operator bool() explicit

This avoids a few conversion problems, and also made the bug of
sbacc (fixed by 37fc948b) obvious.

Reported by Thomas Medioni.

* spot/twa/acc.hh (mark_t::operator bool): Make it explicit.
* spot/twaalgos/remfin.cc: Adjust.
parent 37fc948b
...@@ -30,6 +30,12 @@ New in spot 2.3.1.dev (not yet released) ...@@ -30,6 +30,12 @@ New in spot 2.3.1.dev (not yet released)
anymore and should be replaced by the newly-introduced --format=%x anymore and should be replaced by the newly-introduced --format=%x
for consistency with tools producing automata. for consistency with tools producing automata.
Backward-incompatible changes:
- spot::acc_cond::mark_t::operator bool() has been marked as
explicit. The implicit converion to bool (and, via bool, to int)
was a source of bugs.
New in spot 2.3.1 (2017-02-20) New in spot 2.3.1 (2017-02-20)
......
...@@ -98,7 +98,7 @@ namespace spot ...@@ -98,7 +98,7 @@ namespace spot
return id >= o.id; return id >= o.id;
} }
operator bool() const explicit operator bool() const
{ {
return id != 0; return id != 0;
} }
......
...@@ -260,7 +260,7 @@ namespace spot ...@@ -260,7 +260,7 @@ namespace spot
i -= f; i -= f;
for (auto s: states) for (auto s: states)
{ {
bool acc = aut->state_acc_sets(s) & i; bool acc{aut->state_acc_sets(s) & i};
for (auto& t: aut->out(s)) for (auto& t: aut->out(s))
res->new_acc_edge(s, t.dst, t.cond, acc); res->new_acc_edge(s, t.dst, t.cond, acc);
} }
...@@ -282,7 +282,7 @@ namespace spot ...@@ -282,7 +282,7 @@ namespace spot
acc_cond::mark_t acc = aut->state_acc_sets(s); acc_cond::mark_t acc = aut->state_acc_sets(s);
if (acc.has(r)) if (acc.has(r))
continue; continue;
bool jacc = acc & inf_alone; bool jacc{acc & inf_alone};
bool cacc = fin_alone.has(r) || acc.has(r + 1); bool cacc = fin_alone.has(r) || acc.has(r + 1);
for (auto& t: aut->out(s)) for (auto& t: aut->out(s))
{ {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment