diff options
Diffstat (limited to 'utils')
-rwxr-xr-x | utils/hash.h | 3 | ||||
-rw-r--r-- | utils/small_vector.h | 17 |
2 files changed, 12 insertions, 8 deletions
diff --git a/utils/hash.h b/utils/hash.h index b0b1c43e..20764860 100755 --- a/utils/hash.h +++ b/utils/hash.h @@ -1,6 +1,8 @@ #ifndef CDEC_HASH_H #define CDEC_HASH_H +#include <boost/functional/hash.hpp> + #include "murmur_hash.h" #include "config.h" @@ -16,7 +18,6 @@ # define HASH_MAP_EMPTY(h,empty) #endif -#include <boost/functional/hash.hpp> // assumes C is POD template <class C> diff --git a/utils/small_vector.h b/utils/small_vector.h index 8c1c3bfe..f1e53a51 100644 --- a/utils/small_vector.h +++ b/utils/small_vector.h @@ -252,13 +252,12 @@ public: swap_pod(*this,o); } - inline std::size_t hash() const { - using namespace boost; + inline std::size_t hash_impl() const { if (size_==0) return 0; - if (size_==1) return hash_value(data_.vals[0]); +// if (size_==1) return boost::hash_value(data_.vals[0]); if (size<= SV_MAX) - return hash_range(data_.vals,data_.vals+size_); - return hash_range(data_.ptr,data_.ptr+size_); + return boost::hash_range(data_.vals,data_.vals+size_); + return boost::hash_range(data_.ptr,data_.ptr+size_); } private: @@ -271,9 +270,13 @@ public: uint16_t capacity_; // only defined when size_ > __SV_MAX_STATIC }; +namespace boost { +// shouldn't need to nest this, but getting into trouble with tr1::hash linkage +} + template <class T,int M> -std::size_t hash_value(SmallVector<T,M> const& x) { - return x.hash(); +inline std::size_t hash_value(SmallVector<T,M> const& x) { + return x.hash_impl(); } template <class T,int M> |