tgba_digraph: force selection of properties kept on copy
* src/tgba/tgba.hh: Declare a prop_set to specify the types. * src/tgba/tgbagraph.hh: Use prop_set for all copy constructors. * iface/ltsmin/ltsmin.cc, src/bin/autfilt.cc, src/bin/randaut.cc, src/tgbaalgos/are_isomorphic.cc, src/tgbaalgos/closure.cc, src/tgbaalgos/complete.cc, src/tgbaalgos/degen.cc, src/tgbaalgos/dotty.cc, src/tgbaalgos/dtgbacomp.cc, src/tgbaalgos/dupexp.cc, src/tgbaalgos/dupexp.hh, src/tgbaalgos/sccfilter.cc, src/tgbaalgos/simulation.cc, src/tgbaalgos/stutterize.cc, src/tgbatest/checkpsl.cc, src/tgbatest/emptchk.cc, src/tgbatest/ltl2tgba.cc, wrap/python/spot.i,src/graphtest/tgbagraph.test: Adjust all uses.
This commit is contained in:
parent
77cb836e47
commit
87c2b291ed
21 changed files with 309 additions and 162 deletions
|
|
@ -36,12 +36,12 @@ namespace spot
|
|||
class dupexp_iter: public T
|
||||
{
|
||||
public:
|
||||
dupexp_iter(const const_tgba_ptr& a)
|
||||
dupexp_iter(const const_tgba_ptr& a, tgba::prop_set p)
|
||||
: T(a), out_(make_tgba_digraph(a->get_dict()))
|
||||
{
|
||||
out_->copy_acceptance_conditions_of(a);
|
||||
out_->copy_ap_of(a);
|
||||
out_->prop_copy(a, true, true, true, true);
|
||||
out_->prop_copy(a, p);
|
||||
}
|
||||
|
||||
tgba_digraph_ptr
|
||||
|
|
@ -77,8 +77,9 @@ namespace spot
|
|||
{
|
||||
public:
|
||||
dupexp_iter_save(const const_tgba_ptr& a,
|
||||
tgba::prop_set p,
|
||||
std::vector<const state*>& relation)
|
||||
: dupexp_iter<T>(a), relation_(relation)
|
||||
: dupexp_iter<T>(a, p), relation_(relation)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -96,37 +97,39 @@ namespace spot
|
|||
} // anonymous
|
||||
|
||||
tgba_digraph_ptr
|
||||
tgba_dupexp_bfs(const const_tgba_ptr& aut)
|
||||
tgba_dupexp_bfs(const const_tgba_ptr& aut, tgba::prop_set p)
|
||||
{
|
||||
dupexp_iter<tgba_reachable_iterator_breadth_first> di(aut);
|
||||
dupexp_iter<tgba_reachable_iterator_breadth_first> di(aut, p);
|
||||
di.run();
|
||||
return di.result();
|
||||
}
|
||||
|
||||
tgba_digraph_ptr
|
||||
tgba_dupexp_dfs(const const_tgba_ptr& aut)
|
||||
tgba_dupexp_dfs(const const_tgba_ptr& aut, tgba::prop_set p)
|
||||
{
|
||||
dupexp_iter<tgba_reachable_iterator_depth_first> di(aut);
|
||||
dupexp_iter<tgba_reachable_iterator_depth_first> di(aut, p);
|
||||
di.run();
|
||||
return di.result();
|
||||
}
|
||||
|
||||
tgba_digraph_ptr
|
||||
tgba_dupexp_bfs(const const_tgba_ptr& aut, std::vector<const state*>& rel)
|
||||
tgba_dupexp_bfs(const const_tgba_ptr& aut, tgba::prop_set p,
|
||||
std::vector<const state*>& rel)
|
||||
{
|
||||
dupexp_iter_save<tgba_reachable_iterator_breadth_first> di(aut, rel);
|
||||
dupexp_iter_save<tgba_reachable_iterator_breadth_first> di(aut, p, rel);
|
||||
di.run();
|
||||
return di.result();
|
||||
}
|
||||
|
||||
tgba_digraph_ptr
|
||||
tgba_dupexp_dfs(const const_tgba_ptr& aut, std::vector<const state*>& rel)
|
||||
tgba_dupexp_dfs(const const_tgba_ptr& aut, tgba::prop_set p,
|
||||
std::vector<const state*>& rel)
|
||||
{
|
||||
auto aa = std::dynamic_pointer_cast<const spot::tgba_digraph>(aut);
|
||||
auto aa = std::dynamic_pointer_cast<const tgba_digraph>(aut);
|
||||
if (aa)
|
||||
{
|
||||
aa->get_init_state_number(); // Create an initial state if needed.
|
||||
auto res = make_tgba_digraph(aa);
|
||||
auto res = make_tgba_digraph(aa, p);
|
||||
unsigned ns = aa->num_states();
|
||||
rel.reserve(ns);
|
||||
// The state numbers are common to both automata, but
|
||||
|
|
@ -136,7 +139,7 @@ namespace spot
|
|||
return res;
|
||||
}
|
||||
|
||||
dupexp_iter_save<tgba_reachable_iterator_depth_first> di(aut, rel);
|
||||
dupexp_iter_save<tgba_reachable_iterator_depth_first> di(aut, p, rel);
|
||||
di.run();
|
||||
return di.result();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue