15 #ifndef polybori_routines_pbori_routines_hash_h_
16 #define polybori_routines_pbori_routines_hash_h_
19 #include <boost/functional/hash.hpp>
26 template <
class HashType,
class NaviType>
30 if (navi.isConstant()) {
31 if (navi.terminalValue())
32 boost::hash_combine(seed, CTypes::max_index());
36 boost::hash_combine(seed, *navi);
42 template <
class NaviType>
52 template <
class HashType>
55 boost::hash_combine(seed, CTypes::max_index());
58 template <
class HashType,
class NaviType>
62 while (!navi.isConstant()) {
63 boost::hash_combine(seed, *navi);
66 if (navi.terminalValue())
71 template <
class NaviType>
81 template <
class HashType,
class Iterator>
84 boost::hash_range(seed, start, finish);
88 template <
class Iterator>
std::size_t stable_term_hash(Iterator start, Iterator finish)
Definition: pbori_routines_hash.h:90
#define END_NAMESPACE_PBORI
Finish project's namespace.
Definition: pbori_defs.h:77
#define BEGIN_NAMESPACE_PBORI
Start project's namespace.
Definition: pbori_defs.h:74
std::size_t stable_hash_range(NaviType navi)
Definition: pbori_routines_hash.h:44
std::size_t stable_first_hash_range(NaviType navi)
Definition: pbori_routines_hash.h:73
void finalize_term_hash(HashType &seed)
Definition: pbori_routines_hash.h:54