Hide the safra_tree_automaton type from the public interface.

We do that because the declaration of this type, which is local to
src/tgba/tgbasafracomplement.cc has a member in an anonymous
namespace, and some versions of g++-4.2 issue a very annoying
warning about this legitimate code.  See Bug 29365 on GCC's
Bugzilla.  Report by Silien Hong <silien.hong@lip6.fr>.

* src/tgba/tgbasafracomplement.hh (safra_tree_automaton): Do not
forward declare.
(tgba_safra_complement): Use void* instead of
safra_tree_automaton*.
* src/tgba/tgbasafracomplement.cc: static_cast void* to
safra_tree_automaton* anywhere needed.
This commit is contained in:
Alexandre Duret-Lutz 2010-10-07 15:17:18 +02:00
parent 498b44f742
commit 1fa1621a6b
4 changed files with 63 additions and 48 deletions

View file

@ -31,8 +31,6 @@
namespace spot
{
struct safra_tree_automaton;
/// \brief Build a complemented automaton.
/// \ingroup tgba_on_the_fly_algorithms
///
@ -56,11 +54,6 @@ namespace spot
tgba_safra_complement(const tgba* a);
virtual ~tgba_safra_complement();
safra_tree_automaton* get_safra() const
{
return safra_;
}
// tgba interface.
virtual state* get_init_state() const;
virtual tgba_succ_iterator*
@ -73,12 +66,17 @@ namespace spot
virtual bdd all_acceptance_conditions() const;
virtual bdd neg_acceptance_conditions() const;
void* get_safra() const
{
return safra_;
}
protected:
virtual bdd compute_support_conditions(const state* state) const;
virtual bdd compute_support_variables(const state* state) const;
private:
const tgba* automaton_;
safra_tree_automaton* safra_;
void* safra_;
#if TRANSFORM_TO_TBA
bdd the_acceptance_cond_;
#endif
@ -88,7 +86,6 @@ namespace spot
// Map to i the i-th acceptance condition of the final automaton.
std::vector<int> acceptance_cond_vec_;
#endif
};
/// \brief Produce a dot output of the Safra automaton associated