(state_ptr_equal, state_ptr_hash): New functors. * src/tgba/statebdd.hh, src/tgba/statebdd.cc (state_bdd::hash): New method. * src/tgba/tgbaexplicit.hh, src/tgba/tgbaexplicit.cc (state_explicit::hash): New method. (ns_map, sn_map): Use Sgi::hash_map instead of std::map. * src/tgba/tgbaproduct.hh, src/tgba/tgbaproduct.cc (state_product::hash): New method. * src/tgba/tgbatba.cc (state_tba_proxy::hash): New method. * src/tgbaalgos/lbtt.cc (acp_seen, todo_set, seen_map): Redefine using Sgi::hash_map or Sgi::hash_set. (lbtt_reachable): Don't erase a key that is pointed to by an iterator. * src/tgbaalgos/reachiter.cc (tgba_reachable_iterator::~tgba_reachable_iterator): Likewise. * src/tgbaalgos/magic.cc (magic_search::~magic_search()): Likewise. * src/tgbaalgos/magic.hh (hash_type): Redefine using Sgi::hash_map. * src/tgbaalgos/reachiter.hh (seen_map): Redefine using Sgi::hash_map. * iface/gspn/gspn.cc (state_gspn::hash): New method. * src/misc/hash.hh (string_hash): New functor.
32 lines
606 B
C++
32 lines
606 B
C++
#include "statebdd.hh"
|
|
#include <bdd.h>
|
|
#include <cassert>
|
|
|
|
namespace spot
|
|
{
|
|
|
|
int
|
|
state_bdd::compare(const state* other) const
|
|
{
|
|
// This method should not be called to compare states from different
|
|
// automata, and all states from the same automaton will use the same
|
|
// state class.
|
|
const state_bdd* o = dynamic_cast<const state_bdd*>(other);
|
|
assert(o);
|
|
return o->as_bdd().id() - state_.id();
|
|
}
|
|
|
|
size_t
|
|
state_bdd::hash() const
|
|
{
|
|
return state_.id();
|
|
}
|
|
|
|
/// Duplicate a state.
|
|
state_bdd*
|
|
state_bdd::clone() const
|
|
{
|
|
return new state_bdd(*this);
|
|
}
|
|
|
|
}
|