diff options
author | graehl <graehl@ec762483-ff6d-05da-a07a-a48fb63a330f> | 2010-08-13 08:28:58 +0000 |
---|---|---|
committer | graehl <graehl@ec762483-ff6d-05da-a07a-a48fb63a330f> | 2010-08-13 08:28:58 +0000 |
commit | 979188aaa06c13b05fcddf376f1253ebda54cdea (patch) | |
tree | 61a5cc4a5126b1b560553da46d89da91c9584fa3 | |
parent | 5fd3e970bf9ef0ce243a9c66c791c6b420b2a86a (diff) |
boost::hash
git-svn-id: https://ws10smt.googlecode.com/svn/trunk@540 ec762483-ff6d-05da-a07a-a48fb63a330f
-rwxr-xr-x | decoder/apply_fsa_models.cc | 5 | ||||
-rwxr-xr-x | utils/hash.h | 3 | ||||
-rw-r--r-- | utils/small_vector.h | 17 |
3 files changed, 15 insertions, 10 deletions
diff --git a/decoder/apply_fsa_models.cc b/decoder/apply_fsa_models.cc index c9bda68b..8771863c 100755 --- a/decoder/apply_fsa_models.cc +++ b/decoder/apply_fsa_models.cc @@ -10,6 +10,7 @@ #include "cfg.h" #include "hg_cfg.h" #include "utoa.h" +#include "hash.h" using namespace std; @@ -26,12 +27,12 @@ typedef CFG::RuleHandle RuleHandle; namespace { // if we don't greedy-binarize, we want to encode recognized prefixes p (X -> p . rest) efficiently. if we're doing this, we may as well also push costs so we can best-first select rules in a lazy fashion. this is effectively left-branching binarization, of course. -template <class K,class V> +template <class K,class V,class Hash> struct prefix_map_type { typedef std::map<K,V> type; }; //template typedef -#define PREFIX_MAP(k,v) prefix_map_type<k,v>::type +#define PREFIX_MAP(k,v) prefix_map_type<k,v,boost::hash<k> >::type typedef NTHandle LHS; struct PrefixTrieNode { prob_t backward; // (viterbi) backward prob (for cost pushing) 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> |