1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00

Add adapter class to let VC++ hash_map use GCC's hash struct.

llvm-svn: 20637
This commit is contained in:
Jeff Cohen 2005-03-16 05:25:09 +00:00
parent df020aaddf
commit f52b95ac20

View File

@ -108,4 +108,30 @@ using HASH_NAMESPACE::hash;
#include "llvm/ADT/HashExtras.h"
#ifdef _MSC_VER
// GCC and VC++ have differing ways of implementing hash_maps. As it's not
// standardized, that's to be expected. This adapter class allows VC++
// hash_map to use GCC's hash classes.
namespace stdext {
template<class Key> struct hash {
inline size_t operator()(const Key &) const {
return 0;
}
};
template<class Key> class hash_compare<Key, std::less<Key> > {
std::less<Key> comp;
public:
enum { bucket_size = 4 };
enum { min_buckets = 8 };
hash_compare() {}
hash_compare(std::less<Key> pred) : comp(pred) {}
size_t operator()(const Key& key) const { return hash<Key>()(key); }
bool operator()(const Key& k1, const Key& k2) const { return comp(k1, k2); }
};
}
#endif
#endif