* tgbaalgos/emptiness_stats.hh (unsigned_statistics): New base

class for ec_statistics and ars_statistics.
(acss_statistics): Inherit from ars_statistics.
* tgbaalgos/emptiness.cc, tgbaalgos/emptiness.hh:
(emptiness_check::statistics, emptiness_check_result::statistics):
New methods.
* tgbatest/randtgba.cc: Adjust to use the above.
* tgbaalgos/gv04.cc, tgbaalgos/ndfs_result.hxx, tgbaalgos/gtec/ce.cc,
tgbaalgos/gtec/ce.hh: Do not inherit from ars_statistics if
acss_statistics is used.
This commit is contained in:
Alexandre Duret-Lutz 2005-02-03 17:37:11 +00:00
parent ad9eec60f1
commit 9c2c3926c7
9 changed files with 135 additions and 50 deletions

View file

@ -67,15 +67,16 @@ namespace spot
// size() method (which we indicate using n==1).
template <typename T, int n>
struct acss_interface
struct stats_interface
: public ars_statistics
{
};
template <typename T>
struct acss_interface<T, 1>
struct stats_interface<T, 1>
: public acss_statistics
{
int
unsigned
acss_states() const
{
// all visited states are in the state space search
@ -89,9 +90,8 @@ namespace spot
template <typename ndfs_search, typename heap>
class ndfs_result:
public emptiness_check_result,
public ars_statistics,
// Conditionally inherit from acss_statistics.
public acss_interface<ndfs_result<ndfs_search, heap>, heap::Has_Size>
// Conditionally inherit from acss_statistics or ars_statistics.
public stats_interface<ndfs_result<ndfs_search, heap>, heap::Has_Size>
{
public:
ndfs_result(const ndfs_search& ms)
@ -216,7 +216,7 @@ namespace spot
const ndfs_search& ms_;
const heap& h_;
template <typename T, int n>
friend struct acss_interface;
friend struct stats_interface;
struct transition {
const state* source;
@ -286,7 +286,7 @@ namespace spot
}
else if (seen.find(s_prime) == seen.end())
{
inc_ars_cycle_states();
this->inc_ars_cycle_states();
ndfsr_trace << " it is not seen, go down" << std::endl;
seen.insert(s_prime);
tgba_succ_iterator* i = a_->succ_iter(s_prime);
@ -295,7 +295,7 @@ namespace spot
}
else if ((acc & covered_acc) != acc)
{
inc_ars_cycle_states();
this->inc_ars_cycle_states();
ndfsr_trace << " a propagation is needed, "
<< "start a search" << std::endl;
if (search(s_prime, target, dead))