From c65bf731fde2532ad59b858f018662c4e78c5f6f Mon Sep 17 00:00:00 2001 From: Alexandre Duret-Lutz Date: Tue, 14 Apr 2015 20:27:15 +0200 Subject: [PATCH] acc: more helper functions * src/tgba/acc.hh: Make it possible to call acc_cond::mark_t({1,2,3}), and acc_code::fin({1,2,3}). --- src/tgba/acc.hh | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/src/tgba/acc.hh b/src/tgba/acc.hh index bccd3937a..b2b7ecee2 100644 --- a/src/tgba/acc.hh +++ b/src/tgba/acc.hh @@ -43,6 +43,19 @@ namespace spot { } + template + mark_t(const iterator& begin, const iterator& end) + { + id = 0U; + for (iterator i = begin; i != end; ++i) + set(*i); + } + + mark_t(std::initializer_list vals) + : mark_t(vals.begin(), vals.end()) + { + } + bool operator==(unsigned o) const { assert(o == 0U); @@ -368,6 +381,11 @@ namespace spot return res; } + static acc_code fin(std::initializer_list vals) + { + return fin(mark_t(vals)); + } + static acc_code fin_neg(mark_t m) { acc_code res; @@ -378,6 +396,11 @@ namespace spot return res; } + static acc_code fin_neg(std::initializer_list vals) + { + return fin_neg(mark_t(vals)); + } + static acc_code inf(mark_t m) { acc_code res; @@ -388,6 +411,11 @@ namespace spot return res; } + static acc_code inf(std::initializer_list vals) + { + return inf(mark_t(vals)); + } + static acc_code inf_neg(mark_t m) { acc_code res; @@ -398,6 +426,11 @@ namespace spot return res; } + static acc_code inf_neg(std::initializer_list vals) + { + return inf_neg(mark_t(vals)); + } + void append_and(acc_code&& r) { if (is_true() || r.is_false()) @@ -809,10 +842,7 @@ namespace spot template mark_t marks(const iterator& begin, const iterator& end) const { - mark_t::value_t res = 0U; - for (iterator i = begin; i != end; ++i) - res |= mark_(*i); - return res; + return mark_t(begin, end); } mark_t marks(std::initializer_list vals) const