src/tgba/dictunion.hh, src/tgba/ltl2tgba.cc, src/tgba/ltl2tgba.hh, src/tgba/tgbabddconcretefactory.hh, src/tgba/tgbabddconcreteproduct.cc, src/tgba/tgbabddconcreteproduct.hh, src/tgba/tgbabddfactory.hh, src/tgba/tgbabddtranslatefactory.hh, src/tgbaalgos/dotty.cc: Add Doxygen comments.
64 lines
1.4 KiB
C++
64 lines
1.4 KiB
C++
#include "tgbabddconcreteproduct.hh"
|
|
#include "tgbabddtranslatefactory.hh"
|
|
#include "dictunion.hh"
|
|
|
|
namespace spot
|
|
{
|
|
/// \brief Helper class for product().
|
|
///
|
|
/// As both automata are encoded using BDD, we just have
|
|
/// to homogenize the variable numbers before ANDing the
|
|
/// relations and initial states.
|
|
class tgba_bdd_product_factory: public tgba_bdd_factory
|
|
{
|
|
public:
|
|
tgba_bdd_product_factory(const tgba_bdd_concrete& left,
|
|
const tgba_bdd_concrete& right)
|
|
: dict_(tgba_bdd_dict_union(left.get_dict(),
|
|
right.get_dict())),
|
|
fact_left_(left, dict_),
|
|
fact_right_(right, dict_),
|
|
data_(fact_left_.get_core_data(), fact_right_.get_core_data()),
|
|
init_(fact_left_.get_init_state() & fact_right_.get_init_state())
|
|
{
|
|
}
|
|
|
|
virtual
|
|
~tgba_bdd_product_factory()
|
|
{
|
|
}
|
|
|
|
const tgba_bdd_core_data&
|
|
get_core_data() const
|
|
{
|
|
return data_;
|
|
}
|
|
|
|
const tgba_bdd_dict&
|
|
get_dict() const
|
|
{
|
|
return dict_;
|
|
}
|
|
|
|
bdd
|
|
get_init_state() const
|
|
{
|
|
return init_;
|
|
}
|
|
|
|
private:
|
|
tgba_bdd_dict dict_;
|
|
tgba_bdd_translate_factory fact_left_;
|
|
tgba_bdd_translate_factory fact_right_;
|
|
tgba_bdd_core_data data_;
|
|
bdd init_;
|
|
};
|
|
|
|
tgba_bdd_concrete
|
|
product(const tgba_bdd_concrete& left, const tgba_bdd_concrete& right)
|
|
{
|
|
|
|
tgba_bdd_product_factory p(left, right);
|
|
return tgba_bdd_concrete(p, p.get_init_state());
|
|
}
|
|
}
|